Регулятор громкости на ардуино с управлением по i2c

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Схема регулировки громкости с использованием PT2258 и Arduino

Регулятор громкости на Arduino своими руками

Потенциометр – это механическое устройство, с помощью которого можно установить сопротивление в соответствии с желаемым значением, тем самым изменяя ток, проходящий через него. Существует множество приложений для потенциометра, но в основном потенциометр используется для усилителей звука.

Потенциометр не контролирует усиление сигнала, но формирует делитель напряжения, из-за которого входной сигнал ослабляется. В этом проекте мы покажем вам, как собрать цифровой регулятор громкости с микросхемой PT2258 и связать его с Arduino для управления громкостью схемы усилителя.

PT2258 – это микросхема, предназначенная для использования в качестве 6-канального электронного регулятора громкости, данная микросхема использует технологию КМОП, специально разработанную для многоканальных аудио-видео приложений.

Эта микросхема обеспечивает интерфейс управления I2C с диапазоном затухания от 0 до -79 дБ при 1 дБ/шаг и поставляется в 20-контактном корпусе DIP или SOP. Она передает и принимает данные от микроконтроллера по линиям SCL и SDA. Линии SDA и SCL составляют интерфейс шины. Эти линии должны быть подтянуты двумя резисторами 4,7 КОм, чтобы обеспечить стабильную работу.

Полная принципиальная схема подключения Arduino и PT2258 для сборки устройства регулировки громкости звука представлена на следующем рисунке.

Желательно, чтобы все компоненты были расположены как можно ближе, чтобы уменьшить индуктивность и сопротивление паразитной емкости.

Для простоты программирования мы используем библиотеку Arduino для работы PT2258, представленную на GitHub (https://github.com/sunrutcon/PT2258). Это довольно хорошо написанная библиотека, поэтому мы решили использовать ее, но поскольку она очень старая, она немного глючит, и нам нужно исправить ее, прежде чем мы сможем ее использовать полноценно. Итак, сначала загрузите и извлеките библиотеку из репозитория GitHub.

Вы получите два необходимых нам файла после извлечения (PT2258.cpp и PT2258.h). Затем откройте файл PT2258.cpp вашим любимым текстовым редактором, например, Notepad++. Вы можете видеть, что буква w библиотеки wire.h написана строчными буквами, что несовместимо с последними версиями Arduino, и вам нужно заменить ее заглавной буквой «W», вот и все.

Полный код регулятора громкости на основе Arduino и PT2258 имеет следующий вид.

После сборки схемы и загрузки кода в Arduino можно протестировать устройство. Для проверки схемы использовалось следующее аппаратное обеспечение: трансформатор, два динамика 4 Ом 20 Вт в качестве нагрузки, источник звука (телефон).

Мы разобрали механический потенциометр и замкнули два провода двумя маленькими перемычками. Теперь с помощью двух кнопок можно регулировать громкость усилителя.

Источник

Цифровой регулятор уровня звука на Arduino и микросхеме PT2258

Потенциометр представляет собой механическое устройство, с помощью которого можно получить необходимое значение сопротивления, что приведет к изменению величины протекающего через него тока. В электронных схемах у потенциометра достаточно много применений, но одно из наиболее частых – это управление уровнем звука в усилителях звуковой частоты.

Потенциометр не усиливает сигнал, он образует делитель напряжения, с помощью которого входной сигнал ослабляется на заданную величину. В этой статье мы рассмотрим цифровой регулятор уровня звука на микросхеме PT2258 и плате Arduino. Также вы можете посмотреть следующие проекты на аналогичную тематику на нашем сайте:

Микросхема PT2258

Микросхема PT2258 представляет собой 6-ти канальный электронный контроллер звука и построена на основе CMOS технологии. Микросхема PT2258 изначально была спроектирована для работы с многоканальными аудио-видео приложениями.

Микросхема работает по интерфейсу I2C и обеспечивает диапазон ослабления от 0 до -79dB с шагом 1dB. Изготовляется в 20-ти контактном корпусе DIP или SOP.

Основные технические характеристики микросхемы:

  • 6 входных и выходных каналов (для домашних аудио систем формата 5.1);
  • выбираемый адрес I2C;
  • хорошая развязка между каналами (для приложений с малым уровнем шума);
  • отношение сигнал/шум (S/N ratio) более 100 дБ;
  • рабочее напряжение от 5 до 9 В.

Как работает микросхема PT2258

Данная микросхема передает и принимает данные от микроконтроллера по линиям интерфейса I2C SCL и SDA, которые образуют шину. Для устойчивой работы рекомендуется данные линии использовать с подтягивающими резисторами сопротивлением 4,7 кОм.

Далее мы кратком рассмотрим принципы работы микросхемы PT2258 по линиям интерфейса I2C. Если вам неинтересна данная информация, то вы можете ее пропустить потому что всю эту работу берет на себя библиотека для Arduino.

Валидация (подтверждение) данных

  • данные на линии SDA считаются правильными (подтвержденными) только когда на линии SCL состояние HIGH;
  • состояния линии SDA (HIGH и LOW) изменяются только когда на линии SCL состояние LOW.

Условия начала и окончания передачи

Условие начала передачи (Start Condition) активируется когда:

  1. На линии SCL установлено состояние HIGH.
  2. Линия SDA переключается из состояния HIGH в LOW.

Условие окончания передачи (Stop Condition) активируется когда:

  1. Линия SCL установлена в состояние HIGH.
  2. Линия SDA переключается из состояния LOW в HIGH.

Примечание : эта информация очень полезна для отладки сигналов.

Формат данных

Каждый байт, передаваемый по линии SDA, состоит из 8 бит. Каждый байт должен заканчиваться битом подтверждения.

Подтверждение

Подтверждение (Acknowledgment) гарантирует устойчивое и правильное функционирование. Во время импульса подтверждения (Acknowledge Clock Pulse) микроконтроллер устанавливает контакт SDA в состояние HIGH и в этот же самый момент периферийное устройство (к примеру, аудио процессор) устанавливает на контакте SDA состояние LOW.

Периферийное устройство (в нашем случае PT2258) должно сформировать подтверждение после приема байта, линия SDA будет оставаться в состоянии HIGH во время девятого (9th) импульса синхронизации (Clock Pulse). После этого передатчик ведущего устройства (master) должен сформировать сигнал STOP для прекращения передачи.

Выбор адреса (Address Selection)

Адрес I2C микросхемы PT2258 зависит от состояния CODE1 (контакт № 17) и CODE2 (контакт № 4). Возможные при этом адреса представлены в следующей таблице.

CODE1 (PIN No. 17) CODE2 (PIN No. 4) HEX ADDRESS
0 0 0X80
0 1 0X84
1 0 0X88
1 1 0X8C

Протокол интерфейса

Состоит из следующих элементов:

  • стартовый бит;
  • байт адреса чипа;
  • бит подтверждения (ACK);
  • байт данных;
  • стоповый бит.

Вспомогательные операции

После того, как на микросхему будет подано питание, необходимо подождать, по меньшей мере, 200ms перед тем как передавать первый бит данных, иначе передача данных может окончиться передачей.

После этой задержки первое, что нужно сделать, это очистить регистр при помощи передачи “0XC0” по линии I2C, это гарантирует в дальнейшем правильное функционирование устройства.

Описанная операция очищает целый регистр, теперь нам необходимо установить значение в регистре, иначе регистр будет хранить устаревшее значение и мы получим неправильное значение на выходе.

Чтобы обеспечить правильную настройку звука необходимо последовательно передавать коды 10dB и 1dB на аттенюатор, иначе микросхема может работать неправильно. Более наглядно это процесс представлен на следующей диаграмме:

Чтобы обеспечить правильное функционирование микросхемы PT2258 убедитесь в том, скорость (частота) передачи данных по интерфейсу I2C никогда не будет превышать 100KHz.

Более подробно принципы функционирования микросхемы PT2258 можно изучить в даташите на нее.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Микросхема PT2258 (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.
  5. Кнопки.
  6. Резистор 4,7 кОм, 5% — 2 шт. (купить на AliExpress).
  7. Резистор 150 кОм, 5% — 4 шт.
  8. Резистор 10 кОм, 5% — 2 шт.
  9. Конденсатор 10 мкФ – 6 шт. (купить на AliExpress).
  10. Конденсатор 0,1 мкФ – 1 шт. (купить на AliExpress).

Схема проекта

Схема цифрового регулятора уровня звука на Arduino и микросхеме PT2258 представлена на следующем рисунке.

В демонстрационных целях схема собрана на макетной плате.

Примечание : все компоненты на макетной плате следует размещать как можно ближе друг к другу чтобы уменьшить влияние паразитных емкостей и индуктивностей.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Для упрощения написания программы для нашего проекта мы использовали библиотеку PT2258 с сервиса GitHub, написанную пользователем с ником sunrutcon.

Это отлично написанная библиотека, но поскольку она очень старая и содержит некоторые баги, мы решили пофиксить их прежде чем использовать ее в нашем проекте.

Сначала скачайте эту библиотеку с GitHub и распакуйте ее.

После извлечения ее из архива вы увидите в ней два файла. Откройте файл PT2258.cpp любым текстовым редактором, мы использовали Notepad++.

Вы увидите в нем, что буква “w” библиотеки для работы с протоколом I2C (wire library) написана с маленькой буквы, что несовместимо с последними версиями Arduino, вам следует заменить ее на большую букву “W”. Это все, что необходимо сделать с данным файлом.

Источник

Моя записная книжка

суббота, 8 сентября 2018 г.

Регулятор громкости: Arduino, энкодер и pt2257. Версии 2, 3, 4 и 5

Функционально эти платы идентичны и собраны на одном микроконтроллере, поэтому скетчи (прошивки) подходят к обоим. Также подойдут другие платы Arduino и их клоны, собранные на микроконтроллерах ATmega168/328, например, Arduino mini, Arduino pro mini, Arduino pro и т.д.
Далее пойдут изменения, коснувшиеся программной части. Выбирайте тот скетч, который Вам больше нравится по функционалу:
Версия 2:
В данном скетче часть программы, отвечающая за передачу данных от микроконтроллера в микросхему регулировки громкости выведена в отдельную функцию (подпрограмму) и обращаться к ней после каждого поворота ручки энкодера или нажатия на его кнопку. Это позволило чуть-чуть уменьшить размер скетча. Также я заметил, что в режиме «MUTE» звук продолжает регулироваться. В некоторых случаях это очень удобно: допустим у Вас в семье спит маленький ребенок или кто-то из домочадцев, а Вы захотели тихонько послушать музыку. Включаете магнитофон, а звук по умолчанию, громче желаемого, и чтобы не крутить 1-3 оборота энкодера, плавно уменьшая громкость, вы нажимаете на ручку регулировки громкости, звук выключается. Вы уменьшаете громкость (в режиме «MUTE») и нажимаете еще раз на ручку энкодера. Включается музыка, но уже намного тише.
Текст программы версии 2:

Скачать скетч можно тут.

Версия 3:
От версии 2 отличается тем, что в режиме «MUTE» регулировка громкости не осуществляется. Т.е. на какой громкости вы включили режим «MUTE» на такой еe и включите, независимо от того, крутили ли Вы в этом режиме ручку регулировки громкости или нет.
Текст программы версии 3:

Скачать скетч можно тут.

Версия 4:
Режим «MUTE» включается кнопкой энкодера, выход из режима осуществляется либо повторным нажатием кнопки, либо поворотом ручки регулировки громкости в любую сторону. На мой взгляд, самый удобный алгоритм, из всех ранее предложенных.
Текст программы версии 4:

Скачать скетч можно тут.

Версия 5:
Самое интересное, как всегда в конце. Во всех предыдущих версиях программ громкость при включении была фиксированной и составляла 50% от максимальной. Первоначальный уровень громкости задавался в первой строке программы:
int Volume=40;
Но микроконтроллеры ATmega168/328 имеют собственную энергонезависимую память EEPROM. Таким образом, добавив в программу библиотеку EEPROM.h удалось добиться того, что при включении магнитофона громкость такая, какая была при выключении. Алгоритм включения-выключения режима «MUTE» полностью соответствует описанному в программе версии 4. Т.е. режим «MUTE» включается кнопкой энкодера, а выход из режима осуществляется либо повторным нажатием кнопки, либо поворотом ручки регулировки громкости в любую сторону.
Текст программы версии 5:

Источник

Adblock
detector