- IC PT2258
- Как работи PT2258 IC
- Схемата
- Необходими компоненти
- Код на Arduino
- Тестване на веригата за контрол на силата на звука на цифрово аудио
- По-нататъшно подобрение
Потенциометърът е механично устройство, с помощта на което може да се настрои съпротивлението според желаната стойност, като по този начин се променя токът, преминаващ през него. Съществуват много приложения за потенциометър, но най-вече потенциометърът се използва като регулатор на силата на звука за аудио усилватели.
Потенциометърът не контролира усилването на сигнала, но образува делител на напрежението и затова входният сигнал се отслабва. Така че в този проект ще ви покажа как да изградите вашия цифров контролер на звука с IC PT2258 и да го свържете с Arduino за контрол на силата на звука на усилвателна верига. Тук можете също да проверите различни аудио вериги, включително VU метър, схема за управление на тона и др.
IC PT2258
Както споменах по-рано, PT2258 е интегрална схема, създадена да се използва като електронен контролер на звука с 6 канала , тази интегрална схема използва CMOS технология, специално проектирана за многоканални аудио-видео приложения.
Този IC осигурява интерфейс за управление I2C с обхват на затихване от 0 до -79dB при 1dB / стъпка и се предлага в 20-пинов DIP или SOP пакет.
Някои от основните функции включват,
- 6-входни и изходни канали (за 5.1 домашни аудио системи)
- Избираем I2C адрес (за приложение на Daisy-chain)
- Разделяне на високи канали (за приложение с ниско ниво на шум)
- S / N съотношение> 100dB
- Работното напрежение е от 5 до 9V
Как работи PT2258 IC
Този IC предава и получава данни от микроконтролера чрез SCL и SDA линии. SDA и SCL съставляват интерфейса на шината. Тези линии трябва да бъдат изтеглени високо от два 4.7K резистора, за да се осигури стабилна работа.
Преди да преминем към действителната хардуерна операция, ето подробното функционално описание на интегралната схема. ако не искате да знаете всичко това, можете да пропуснете тази част, защото цялата функционална част се управлява от библиотеката Arduino.
Потвърждаване на данни
- Данните по линията SDA се считат за стабилни, когато SCL сигналът е ВИСОК.
- Състоянията HIGH и LOW на линията SDA се променят само когато SCL е LOW.
Условие за стартиране и спиране
Условие за стартиране се активира, когато
- SCL е настроен на HIGH и
- SDA преминава от HIGH към LOW State.
Условието за спиране се активира, когато
- SCL е настроен на HIGH и
- SDA преминава от НИСКО към ВИСОКО състояние
Забележка! Тази информация е много полезна за отстраняване на грешки в сигналите.
Формат на данните
Всеки байт, предаден на линията SDA, се състои от 8 бита, които образуват байт. Всеки байт трябва да бъде последван от бит за потвърждение.
Признание
Потвърждението гарантира стабилна и правилна работа. По време на импулса за потвърждение на часовника, микроконтролерът издърпва SDA щифта HIGH в точно този момент, когато периферното устройство (аудио процесор) изтегля надолу (LOW) линията SDA.
Вече е адресирано периферното устройство (PT2258) и то трябва да генерира потвърждение след получаване на байт, в противен случай линията SDA ще остане на високо ниво по време на деветия (9-ти) импулс на часовника. Ако това се случи, главният предавател ще генерира STOP информация, за да прекрати трансфера.
Това изчиства нуждата от валиден трансфер на данни.
Избор на адрес
Адресът на I2C на този IC зависи от състоянието на CODE1 (Пин № 17) и CODE2 (Пин № 4).
КОД1 (ПИН № 17) |
КОД2 (ПИН № 4) |
ХЕКСАЛЕН АДРЕС |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logic High = 1
Ниска логика = 0
Протокол за интерфейс
Интерфейсният протокол се състои от следното:
- Стартов бит
- Байт за чип адрес
- ACK = бит за потвърждение
- Байт данни
- Стоп бит
Малко домакинство
След като IC се включи, трябва да изчака поне 200 ms, преди да предаде първия бит данни, в противен случай прехвърлянето на данни може да се провали.
След закъснението първото нещо, което трябва да направите, е да изчистите регистъра, като изпратите “0XC0” vi на линията I2C, това гарантира правилна работа.
Горната стъпка изчиства целия регистър, сега трябва да зададем стойност на регистъра, в противен случай регистърът съхранява стойността на боклука и получаваме луничав изход.
За да се осигурят правилни корекции на силата на звука, е необходимо последователно да се изпрати кратно на 10dB, последвано от 1dB код до атенюатора, в противен случай IC може да се държи необичайно. Диаграмата по-долу го изяснява повече.
И двата горни метода ще работят правилно.
За да осигурите правилна работа, уверете се, че скоростта на пренос на данни I2C никога не надвишава 100KHz.
По този начин можете да предадете байт на интегралната схема и да затихнете входния сигнал. Горният раздел е да научите как функционира IC, но както казах по-рано, ще използваме библиотека Arduino, за да комуникираме с IC, която управлява целия твърд код, и просто трябва да осъществим някои извиквания на функции.
Цялата горепосочена информация е взета от листа с данни, моля, обърнете се към него за допълнителна информация.
Схемата
Горното изображение показва тестовата схема на базирана на PT2258 схема за регулиране на силата на звука. Взето е от листа с данни и модифицирано според нуждите.
За демонстрация веригата е конструирана върху без запояване макет с помощта на схемата, показана по-горе.
Забележка! Всички компоненти са разположени възможно най-близо, за да се намали индуктивността и съпротивлението на паразитния капацитет.
Необходими компоненти
- PT2258 IC - 1
- Arduino Nano Controller - 1
- Обща таблица - 1
- Винтова клема 5 mm x 3 - 1
- Бутон - 1
- 4.7K резистор, 5% - 2
- 150K резистор, 5% - 4
- 10k резистор, 5% - 2
- Кондензатор 10uF - 6
- Кондензатор 0.1uF - 1
- Джъмперни проводници - 10
Код на Arduino
За простота ще използвам библиотека PT2258 от GitHub, която е направена от sunrutcon.
Това е много добре написана библиотека, затова реших да я използвам, но тъй като е много стара, е малко бъги и трябва да я поправим, преди да можем да я използваме.
Първо изтеглете и извлечете библиотеката от хранилището на GitHub.
Ще получите горните два файла след извличане.
#include #include
След това отворете файла PT2258.cpp с любимия си текстов редактор, използвам Notepad ++.
Можете да видите, че “w” на жичната библиотека е с малки букви, което е несъвместимо с най-новите версии на Arduino, и трябва да го замените с капачка “W”, това е.
Пълен код за контролера за сила на звука PT2258 можете да намерите в края на този раздел. Тук са обяснени важни части от програмата.
Започваме кода, като включваме всички необходими библиотечни файлове. Wire библиотеката се използва за комуникация между Arduino и PT2258. Библиотеката PT2258 съдържа цялата критична информация за I2C синхронизация и потвърждения. В ezButton библиотеката се използва за интерфейс с бутоните.
Вместо да използвате по-долу кодови изображения, копирайте всички екземпляри на кода от кодов файл и ги направете форматирани, както правехме в други проекти
#include
След това направете обектите за двата бутона и самата библиотека PT2258.
PT2258 pt2258; бутон ezButton_1 (2); ezButton бутон_2 (4);
След това определете нивото на звука. Това е нивото на звука по подразбиране, с което този IC ще започне.
Int обем = 40;
След това инициирайте UART и задайте тактовата честота за I2C шината.
Serial.begin (9600); Wire.setClock (100000);
Много е важно да настроите I2C часовник, в противен случай интегралната схема няма да работи, тъй като максималната тактова честота, поддържана от този IC, е 100KHz.
След това правим малко домакинство с оператор if else , за да гарантираме, че IC комуникира правилно с I2C шината.
Ако (! Pt2258.init ()) Serial.printIn („PT2258 Успешно стартиран“); Else Serial.printIn („Неуспешно иницииране на PT2258“);
След това задаваме закъснението на дебюнса за бутоните.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
И накрая, инициирайте PT2258 IC, като го настроите с обем на канала по подразбиране и номер на ПИН.
/ * Иницииране на PT с обем по подразбиране и Pin * / Pt2258.setChannelVolume (обем, 4); Pt2258.setChannelVolume (том, 5);
Това отбелязва края на раздела Void Setup () .
В раздела Loop трябва да извикаме цикличната функция от класа на бутона; това е библиотечна норма.
Button_1.loop (); // Библиотечни норми Button_2.loop (); // Библиотечни норми
Разделът по-долу, ако трябва да намали силата на звука.
/ * ако е натиснат бутон 1, ако условието е вярно * / Ако (button_1.ispressed ()) {Volume ++; // Увеличаване на брояча на силата на звука. // Този оператор if гарантира, че обемът не надвишава 79 If (обем> = 79) {Volume = 79; } Serial.print („том:“); // отпечатване на нивото на силата на звука Serial.printIn (обем); / * задайте силата на звука за канал 4, който е в ПИН 9 на PT2558 IC * / Pt2558.setChannelVolume (обем, 4); / * задайте силата на звука за канал 5 Който е ПИН 10 на PT2558 IC * / Pt2558.setChannelVolume (обем, 5); }
Разделът по-долу, ако е за увеличаване на силата на звука.
// Същото се случва и с бутона 2 If (button_2.isPress ()) {Volume--; // това, ако операторът гарантира, че нивото на звука не е под нулата. Ако (обем <= 0) Обем = 0; Serial.print („том:“); Serial.printIn (обем); Pt2258.setChannelVolume (том, 4); Pt2558.setChannelVolume (том, 5); }
Тестване на веригата за контрол на силата на звука на цифрово аудио
За тестване на веригата беше използван следният апарат
- Трансформатор, който има кран 13-0-13
- 2 4Ω 20W високоговорител като товар.
- Аудио източник (телефон)
В предишна статия ви показах как да направите обикновен аудио усилвател 2x32 вата с TDA2050 IC, ще го използвам и за тази демонстрация.
Разредил съм механичния потенциометър и съм закъсал два проводника с два малки джъмперни кабела.
Сега с помощта на два бутона можете да контролирате силата на звука на усилвателя.
По-нататъшно подобрение
Веригата може да бъде допълнително модифицирана, за да се подобрят нейните характеристики. Подобрения като веригата могат да бъдат направени на печатни платки, за да се елиминира допълнително шумът, генериран от цифровия участък на интегралната схема. Можем да добавим и допълнителен филтър, за да отхвърлим високочестотните шумове. Също така проверете други схеми на аудио усилвателя и други проекти, свързани с аудио.
Надявам се тази статия да ви е харесала и да сте научили нещо ново от нея. Ако имате някакви съмнения, можете да попитате в коментарите по-долу или да използвате нашите форуми за подробна дискусия.