- IC PT2258
- Як працює мікросхема PT2258
- Схема
- Потрібні компоненти
- Код Arduino
- Тестування схеми регулювання гучності цифрового звуку
- Подальше вдосконалення
Потенціометр - це механічний пристрій, за допомогою якого можна встановити опір відповідно до бажаного значення, змінюючи таким чином струм, що проходить через нього. Існує багато додатків для потенціометра, але здебільшого потенціометр використовується як регулятор гучності для підсилювачів звуку.
Потенціометр не контролює коефіцієнт посилення сигналу, але він утворює дільник напруги, і саме тому вхідний сигнал послаблюється. Отже, у цьому проекті я збираюся показати вам, як створити цифровий регулятор гучності за допомогою мікросхеми PT2258 та підключити його до Arduino для управління гучністю схеми підсилювача. Ви також можете тут перевірити різні схеми, пов'язані зі звуком, включаючи вимірювач VU, схему управління тоном тощо.
IC PT2258
Як я вже згадував раніше, PT2258 - це мікросхема, призначена для використання в якості 6- канального електронного регулятора гучності, вона використовує технологію CMOS, спеціально розроблену для багатоканальних аудіо-відео програм.
Цей ІС забезпечує інтерфейс управління I2C з діапазоном загасання від 0 до -79 дБ на 1 дБ / крок і поставляється в 20-контактному DIP або SOP пакеті.
Деякі основні функції включають,
- 6-вхідні та вихідні канали (для домашніх аудіосистем 5.1)
- Вибір адреси I2C (для додатків з ланцюжком)
- Розділення високих каналів (для застосування з низьким рівнем шуму)
- Співвідношення сигнал / шум> 100 дБ
- Робоча напруга становить від 5 до 9 В
Як працює мікросхема PT2258
Цей ІС передає та отримує дані від мікроконтролера через лінії SCL та SDA. SDA і SCL складають інтерфейс шини. Ці лінії повинні бути витягнуті двома резисторами 4,7 Кб, щоб забезпечити стабільну роботу.
Перш ніж перейти до власне апаратної роботи, ось докладний функціональний опис ІС. якщо ви не хочете знати всього цього, ви можете пропустити цю частину, оскільки всією функціональною частиною керує бібліотека Arduino.
Перевірка даних
- Дані по лінії SDA вважаються стабільними, коли сигнал SCL ВИСОКИЙ.
- Стани HIGH і LOW лінії SDA змінюються лише тоді, коли SCL LOW.
Умова запуску та зупинки
Умова запуску активується, коли
- SCL встановлено на HIGH і
- SDA переходить з високого в низький стан.
Умова зупинки активується, коли
- Для SCL встановлено значення HIGH та
- SDA переходить з НИЗЬКОГО у ВИСОКИЙ стан
Примітка! Ця інформація дуже корисна для налагодження сигналів.
Формат даних
Кожен байт, переданий на лінію SDA, складається з 8 бітів, які утворюють байт. Кожен байт повинен супроводжуватися бітом підтвердження.
Подяка
Підтвердження забезпечує стабільну та належну роботу. Під час імпульсу підтвердження годинника мікроконтролер витягує штифт SDA ВИСОКО в цей самий момент, коли периферійний пристрій (аудіопроцесор) витягує (НИЗЬКО) лінію SDA.
Тепер адресується периферійний пристрій (PT2258), і він повинен генерувати підтвердження після отримання байта, інакше лінія SDA залишатиметься на високому рівні протягом дев'ятого (9-го) імпульсу годинника. Якщо це трапиться, головний передавач генерує інформацію STOP, щоб перервати передачу.
Це позбавляє вас від необхідності мати дійсну передачу даних.
Вибір адреси
Адреса I2C цього ІС залежить від стану CODE1 (контакт No 17) та CODE2 (контакт No 4).
КОД1 (PIN-код No 17) |
КОД2 (PIN-код No 4) |
ШЕСТИГРАДНА АДРЕСА |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Логіка Висока = 1
Логіка низька = 0
Протокол інтерфейсу
Протокол інтерфейсу складається з наступного:
- Початковий біт
- Байт адреси мікросхеми
- ACK = біт підтвердження
- Байт даних
- Стоп-біт
Трохи прибирання
Після включення мікросхеми йому потрібно зачекати принаймні 200 мс, перш ніж передавати перший біт даних, інакше передача даних може не вдатися.
Після затримки перше, що потрібно зробити, це очистити реєстр, відправивши на лінію I2C “0XC0” vi, це забезпечує належну роботу.
Наведений вище крок очищає весь регістр, тепер нам потрібно встановити значення для реєстру, інакше реєстр зберігає значення сміття, і ми отримуємо ластовинні результати.
Щоб забезпечити належне регулювання гучності, необхідно послідовно відправити кратне значення 10 дБ з кодом 1 дБ до аттенюатора, інакше ІС може поводитися ненормально. Наведена нижче діаграма це більше пояснює.
Обидва вищезазначені методи працюватимуть належним чином.
Щоб забезпечити належну роботу, переконайтесь, що швидкість передачі даних I2C ніколи не перевищує 100 кГц.
Ось так ви можете передати байт на мікросхему і послабити вхідний сигнал. У наведеному вище розділі слід дізнатись, як функціонує ІС, але, як я вже говорив раніше, ми збираємось використовувати бібліотеку Arduino для спілкування з ІС, яка управляє всім жорстким кодом, і нам просто потрібно зробити деякі виклики функції.
Вся вищезазначена інформація взята з таблиці даних, будь ласка, зверніться до неї для отримання додаткової інформації.
Схема
На зображенні вище показано схему тесту ланцюга регулювання гучності на основі PT2258. Вона взята з таблиці та модифікована відповідно до потреб.
Для демонстрації схема побудована на безпаяній макетній платі за допомогою схеми, показаної вище.
Примітка! Всі компоненти розміщені якомога ближче для зменшення індуктивності та опору паразитної ємності.
Потрібні компоненти
- PT2258 IC - 1
- Контролер Arduino Nano - 1
- Загальний макет - 1
- Гвинтова клема 5 мм x 3 - 1
- Кнопка - 1
- 4.7K резистор, 5% - 2
- Резистор 150 К, 5% - 4
- 10k резистор, 5% - 2
- Конденсатор 10 мкФ - 6
- Конденсатор 0,1 мкФ - 1
- Провід перемичок - 10
Код Arduino
Для простоти я збираюся використовувати бібліотеку PT2258 від GitHub, яку створив sunrutcon.
Це дуже добре написана бібліотека, тому я вирішив користуватися нею, але оскільки вона дуже стара, це трохи глючить, і нам потрібно її виправити, перш ніж ми зможемо нею користуватися.
Спочатку завантажте та витягніть бібліотеку зі сховища GitHub.
Ви отримаєте вищезазначені два файли після вилучення.
# включити # включити
Далі відкрийте файл PT2258.cpp за допомогою улюбленого текстового редактора, я використовую Notepad ++.
Ви бачите, що “w” в дротовій бібліотеці написано малими літерами, що несумісно з останніми версіями Arduino, і вам потрібно замінити його на заголовки “W”, ось і все.
Повний код регулятора гучності PT2258 можна знайти в кінці цього розділу. Тут пояснюються важливі частини програми.
Ми починаємо код, включаючи всі необхідні файли бібліотек. Бібліотека проводів використовується для зв'язку між Arduino та PT2258. Бібліотека PT2258 містить всю важливу інформацію про час і підтвердження I2C. Бібліотека ezButton використовується для взаємодії з кнопками.
Замість використання зображень коду нижче скопіюйте всі екземпляри коду з файлу коду та зробіть їх відформатованими, як це робилося в інших проектах
#включати
Далі зробіть об’єкти для двох кнопок і самої бібліотеки PT2258.
PT2258 pt2258; кнопка ezButton_1 (2); кнопка ezButton_2 (4);
Далі визначте рівень гучності. Це рівень гучності за замовчуванням, з якого почнеться цей ІС.
Внутрішній обсяг = 40;
Далі ініціюйте UART та встановіть тактову частоту для шини I2C.
Serial.begin (9600); Wire.setClock (100000);
Дуже важливо встановити годинник I2C, інакше мікросхема не працюватиме, оскільки максимальна тактова частота, що підтримується цією мікросхемою, становить 100 кГц.
Далі ми проводимо невелику домашню роботу з оператором if else , щоб забезпечити належну комунікацію мікросхеми з шиною I2C.
Якщо (! Pt2258.init ()) Serial.printIn (“PT2258 успішно ініційовано”); Else Serial.printIn (“Не вдалося ініціювати PT2258”);
Далі ми встановлюємо затримку розриву для кнопок.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Нарешті, ініціюйте мікросхему PT2258, встановивши його за замовчуванням для гучності каналу та номера контактів.
/ * Початок PT із типовим обсягом та Pin * / Pt2258.setChannelVolume (гучність, 4); Pt2258.setChannelVolume (том, 5);
Це означає кінець розділу Void Setup () .
У розділі Loop нам потрібно викликати функцію циклу з класу button; це бібліотечна норма.
Button_1.loop (); // Бібліотечні норми Button_2.loop (); // Бібліотечні норми
Нижче, якщо розділ призначений для зменшення гучності.
/ * якщо натиснута кнопка 1, якщо умова істинна * / Якщо (button_1.ispressed ()) {Volume ++; // Збільшення лічильника гучності. // Це оператор if гарантує, що обсяг не перевищує 79 If (volume> = 79) {Volume = 79; } Serial.print (“том:“); // друк рівня гучності Serial.printIn (volume); / * встановити гучність для каналу 4, який міститься в PIN-коді 9 мікросхеми PT2558 * / Pt2558.setChannelVolume (гучність, 4); / * встановити гучність для каналу 5, який є PIN-кодом 10 мікросхеми PT2558 * / 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 Ом 20 Вт як навантаження.
- Джерело звуку (телефон)
У попередній статті я показав вам, як зробити простий підсилювач звуку 2x32 Вт з мікросхемою TDA2050, я також використаю це для цієї демонстрації.
Я розлаштував механічний потенціометр і замикав два провідники двома маленькими перемичними кабелями.
Тепер за допомогою двох кнопок можна регулювати гучність підсилювача.
Подальше вдосконалення
Схему можна додатково модифікувати для поліпшення її продуктивності. Поліпшення, такі як схема, можуть бути внесені в друковану плату для подальшого усунення шуму, створюваного цифровою секцією ІС. Ми також можемо додати додатковий фільтр, щоб відхилити високочастотні шуми. Також перевірте інші схеми підсилювача аудіо та інші проекти, пов’язані із аудіо.
Сподіваюся, вам сподобалась ця стаття і ви дізналися з неї щось нове. Якщо у вас є якісь сумніви, ви можете запитати в коментарях нижче або скористатися нашими форумами для детального обговорення.