- IC PT2258
- Как работает микросхема PT2258
- Схема
- Необходимые компоненты
- Код Arduino
- Тестирование цепи регулировки громкости цифрового звука
- Дальнейшее улучшение
Потенциометр - это механическое устройство, с помощью которого можно установить сопротивление в соответствии с желаемым значением, тем самым изменяя ток, проходящий через него. Существует множество приложений для потенциометра, но в основном потенциометр используется в качестве регулятора громкости для аудиоусилителей.
Потенциометр не контролирует усиление сигнала, но он формирует делитель напряжения, поэтому входной сигнал ослабляется. Итак, в этом проекте я собираюсь показать вам, как построить цифровой контроллер громкости с помощью IC PT2258 и связать его с Arduino для управления громкостью схемы усилителя. Вы также можете проверить здесь различные схемы, связанные со звуком, включая измеритель громкости, схему регулировки тембра и т. Д.
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 в ВЫСОКОЕ, именно в этот момент периферийное устройство (аудиопроцессор) понижает (LOW) линию SDA.
Периферийное устройство (PT2258) теперь адресовано, и оно должно генерировать подтверждение после получения байта, в противном случае линия SDA останется на высоком уровне в течение девятого (9-го) тактового импульса. Если это произойдет, главный передатчик сгенерирует информацию STOP, чтобы прервать передачу.
Это устраняет необходимость наличия действительной передачи данных.
Выбор адреса
Адрес I2C этой ИС зависит от состояния CODE1 (контакт № 17) и CODE2 (контакт № 4).
CODE1 (PIN № 17) |
КОД 2 (ПИН № 4) |
ШЕСТИГРАННЫЙ АДРЕС |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Логический высокий = 1
Низкий логический уровень = 0
Протокол интерфейса
Протокол интерфейса состоит из следующего:
- Начальный бит
- Байт адреса чипа
- ACK = бит подтверждения
- Байт данных
- Стоп-бит
Небольшая уборка
После включения ИС необходимо подождать не менее 200 мс перед передачей первого бита данных, в противном случае передача данных может завершиться ошибкой.
После задержки первое, что нужно сделать, это очистить регистр, отправив «0XC0» в строку I2C, это гарантирует правильную работу.
Вышеупомянутый шаг очищает весь регистр, теперь нам нужно установить значение в регистр, в противном случае регистр сохраняет значение мусора, и мы получаем веснушчатый вывод.
Чтобы обеспечить правильную регулировку громкости, необходимо последовательно послать на аттенюатор значение, кратное 10 дБ, за которым следует код 1 дБ, в противном случае ИС может вести себя ненормально. Диаграмма ниже поясняет это больше.
Оба вышеуказанных метода будут работать правильно.
Чтобы обеспечить правильную работу, убедитесь, что скорость передачи данных I2C никогда не превышает 100 кГц.
Вот как вы можете передать байт на ИС и ослабить входной сигнал. Вышеупомянутый раздел предназначен для того, чтобы узнать, как работает IC, но, как я сказал ранее, мы собираемся использовать библиотеку Arduino для связи с IC, которая управляет всем жестким кодом, и нам просто нужно сделать некоторые вызовы функций.
Вся приведенная выше информация взята из таблицы данных, пожалуйста, обратитесь к ней для получения дополнительной информации.
Схема
На изображении выше показана тестовая схема цепи регулировки громкости на основе PT2258. Он взят из таблицы и модифицируется при необходимости.
Для демонстрации схема построена на макетной плате без пайки с помощью схемы, показанной выше.
Запись! Все компоненты размещены как можно ближе, чтобы уменьшить индуктивность и сопротивление паразитной емкости.
Необходимые компоненты
- PT2258 IC - 1
- Контроллер Arduino Nano - 1
- Общая макетная плата - 1
- Винтовой зажим 5 мм x 3 - 1
- Кнопка - 1
- Резистор 4,7 кОм, 5% - 2
- Резистор 150К, 5% - 4
- Резистор 10 кОм, 5% - 2
- Конденсатор 10 мкФ - 6
- Конденсатор 0,1 мкФ - 1
- Провода перемычки - 10
Код Arduino
Для простоты я буду использовать библиотеку PT2258 с GitHub, созданную sunrutcon.
Это очень хорошо написанная библиотека, поэтому я решил использовать ее, но поскольку она очень старая, в ней есть небольшие ошибки, и нам нужно исправить ее, прежде чем мы сможем ее использовать.
Сначала загрузите и извлеките библиотеку из репозитория GitHub.
После извлечения вы получите два указанных выше файла.
#include #include
Затем откройте файл PT2258.cpp в вашем любимом текстовом редакторе, я использую Notepad ++.
Вы можете видеть, что буква «w» библиотеки проводов написана строчными буквами, что несовместимо с последними версиями Arduino, и вам нужно заменить ее заглавной буквой «W», вот и все.
Полный код для регулятора объема PT2258 можно найти в конце этого раздела. Здесь объясняются важные части программы.
Мы начинаем код с включения всех необходимых файлов библиотек. Библиотека Wire используется для связи между Arduino и PT2258. Библиотека PT2258 содержит всю важную информацию о синхронизации I2C и подтверждения. Библиотека ezButton используется для взаимодействия с кнопками.
Вместо использования изображений кода ниже скопируйте все экземпляры кода из файла кода и сделайте их отформатированными, как мы это делали в других проектах.
#включают
Затем создайте объекты для двух кнопок и самой библиотеки PT2258.
PT2258 pt2258; ezButton button_1 (2); ezButton button_2 (4);
Затем определите уровень громкости. Это уровень громкости по умолчанию, с которого будет начинаться эта микросхема.
Int volume = 40;
Затем активируйте UART и установите тактовую частоту для шины I2C.
Serial.begin (9600); Wire.setClock (100000);
Очень важно установить часы I2C, иначе IC не будет работать, потому что максимальная тактовая частота, поддерживаемая этой IC, составляет 100 кГц.
Затем мы делаем небольшую уборку с помощью оператора 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 (volume, 4); Pt2258.setChannelVolume (объем, 5);
Это знаменует конец раздела Void Setup () .
В разделе « Цикл » нам нужно вызвать функцию цикла из класса кнопки; это норма библиотеки.
Button_1.loop (); // Нормы библиотеки Button_2.loop (); // Библиотечные нормы
Нижеследующий раздел if предназначен для уменьшения громкости.
/ * если кнопка 1 нажата, если условие истинно * / If (button_1.ispressed ()) {Volume ++; // Увеличение счетчика объема. // Этот оператор if гарантирует, что объем не превышает 79 If (volume> = 79) {Volume = 79; } Serial.print («объем:»); // печать уровня громкости Serial.printIn (volume); / * установить громкость для канала 4, который находится в PIN 9 микросхемы PT2558 * / Pt2558.setChannelVolume (volume, 4); / * установить громкость для канала 5, который является PIN 10 микросхемы PT2558 * / Pt2558.setChannelVolume (volume, 5); }
Нижеследующий раздел if предназначен для увеличения громкости.
// То же самое и с кнопкой 2 If (button_2.isPressed ()) {Volume--; // этот оператор if гарантирует, что уровень громкости не опустится ниже нуля. Если (объем <= 0) Объем = 0; Serial.print («том:»); Serial.printIn (объем); Pt2258.setChannelVolume (объем, 4); Pt2558.setChannelVolume (объем, 5); }
Тестирование цепи регулировки громкости цифрового звука
Для проверки схемы использовалась следующая аппаратура
- Трансформатор с отводом 13-0-13
- 2 динамика 4Ω 20W в качестве нагрузки.
- Источник звука (телефон)
В предыдущей статье я показал вам, как сделать простой усилитель звука 2x32 Вт с микросхемой TDA2050, я собираюсь использовать его также для этой демонстрации.
Я не переставил механический потенциометр и закоротил два провода двумя небольшими перемычками.
Теперь с помощью двух кнопок можно регулировать громкость усилителя.
Дальнейшее улучшение
Схема может быть дополнительно модифицирована для улучшения ее характеристик. Такие улучшения, как схема, могут быть внесены в печатную плату для дальнейшего устранения шума, создаваемого цифровой частью IC. Мы также можем добавить дополнительный фильтр для подавления высокочастотных шумов. Также ознакомьтесь с другими схемами усилителя звука и другими проектами, связанными со звуком.
Надеюсь, вам понравилась эта статья и вы узнали из нее что-то новое. Если у вас есть сомнения, вы можете задать вопрос в комментариях ниже или воспользоваться нашим форумом для подробного обсуждения.