Режим работы: пн-пт 9:00-18:00
Потенциометр - это механическое устройство, с помощью которого можно установить сопротивление в соответствии с желаемым значением, тем самым изменяя ток, проходящий через него. Существует множество приложений для потенциометра, но в основном потенциометр используется в качестве регулятора громкости для аудиоусилителей.
Потенциометр не регулирует усиление сигнала, но он образует делитель напряжения, поэтому входной сигнал ослабляется. Итак, рассмотрим, как создать цифровой контроллер громкости с помощью ИС PT2258 и связать его с Arduino для управления громкостью схемы усилителя.
PT2258 - это ИС, предназначенная для использования в качестве 6-канального электронного регулятора громкости, в этой ИС используется технология КМОП, специально разработанная для многоканальных аудио-видео приложений. Эта микросхема обеспечивает интерфейс управления I2C с диапазоном ослабления от 0 до -79 дБ при 1 дБ / шаг и поставляется в 20-контактном корпусе DIP или SOP. Некоторые из основных функций включают:
Эта ИС передает и принимает данные от микроконтроллера по транзисторно-транзисторные логические схемы с диодами Шоттки (SCL) и адаптер синхронной передачи данных (SDA). SDA и SCL составляют интерфейс шины. Эти линии должны быть подтянуты двумя резисторами 4,7 кОм для обеспечения стабильной работы.
Прежде чем мы перейдем к реальной работе оборудования, вот подробное функциональное описание ИС. если вы не хотите знать все это, вы можете пропустить эту часть, потому что вся функциональная часть управляется библиотекой Arduino.
Подтверждение правильности данных:
- данные на линии SDA считаются стабильными, когда сигнал SCL указывает HIGH.
- состояние SDA на HIGH и LOW меняется только тогда, когда SCL находится на позиции LOW
Условие запуска активируется, когда
1. SCL установлен на HIGH и
2. SDA переходит из HIGH в LOW.
Условие остановки активируется, когда
1. SCL установлен на HIGH и
2. SDA переходит из HIGH в LOW.
Внимание! Эта информация очень полезна для отладки сигналов.
Каждый байт, передаваемый в линию SDA, состоит из 8 бит, которые образуют байт. За каждым байтом должен следовать бит подтверждения.
Подтверждение гарантирует стабильную и правильную работу. Во время тактового импульса подтверждения микроконтроллер переводит вывод SDA в положение HIGH, именно в этот момент периферийное устройство (аудиопроцессор) опускает линию SDA в позицию LOW.
Теперь можно адресоваться к периферийному устройству (PT2258), и оно должно генерировать подтверждение после получения байта, в противном случае линия SDA останется на уровне HIGH в течение девятого (9-го) импульса синхронизации. Если это произойдет, главный передатчик сгенерирует информацию СТОП, чтобы прервать передачу.
Адрес I2C этой ИС зависит от состояния CODE1 (контакт № 17) и CODE2 (контакт № 4).
Логический уровень высокий = 1
Низкий уровень логический = 0
Протокол интерфейса состоит из следующего:
- Начальный бит
- Байт адреса чипа
- ACK = бит подтверждения
- Байт данных
- Стоп-бит
После включения ИС необходимо подождать не менее 200 мс перед передачей первого бита данных, в противном случае передача данных может завершится ошибкой.
После задержки первое, что нужно сделать, это очистить регистр, отправив «0XC0» в строку I2C, это гарантирует правильную работу.
Вышеупомянутый шаг очищает весь регистр, теперь нам нужно установить значение в регистр, иначе регистр сохранит значение мусора, и мы получим неровный вывод.
Чтобы обеспечить правильную регулировку громкости, необходимо последовательно послать на делитель мощности значение, кратное 10 дБ, за которым следует код 1 дБ, в противном случае ИС может работать неправильно.
Чтобы обеспечить правильную работу, убедитесь, что скорость передачи данных I2C никогда не превышает 100 кГц.
Вот как вы можете передать байт на ИС и ослабить входной сигнал. Вышеупомянутый раздел предназначен для того, чтобы узнать, как работает ИС, но, как было упомянуто ранее, мы собираемся использовать библиотеку Arduino для связи с ИС, которая управляет всем жестким кодом, и нам просто нужно сделать некоторые обращения к функциям.
Для демонстрации схема может быть построена на макетной плате без пайки.
Внимание! Все компоненты следует размещать как можно ближе, чтобы уменьшить индуктивность и сопротивление паразитной емкости.
Необходимые компоненты:
1. PT2258 ИС - 1
2. Контроллер Arduino Nano - 1
3. Общая макетная плата - 1
4. Винтовой зажим 5 мм x 3 - 1
5. Кнопка - 1
6. Резистор 4,7 кОм, 5% - 2
7. Резистор 150 кОм, 5% - 4
8. Резистор 10 кОм, 5% - 2
9. Конденсатор 10 мкФ - 6 шт.
10. Конденсатор 0,1 мкФ - 1 шт.
11. Навесной монтажный провод - 10
Для простоты используйте библиотеку PT2258 с GitHub, созданную sunrutcon.
Это очень хорошо написанная библиотека, но, поскольку она очень старая, в ней есть небольшие ошибки, и нужно их исправить, прежде чем мы сможем ее использовать.
Сначала загрузите и извлеките библиотеку из репозитория GitHub.
#include <arduino.h>
#include <wire.h>
#include <PT2258.h>
Затем откройте файл PT2258.cpp в вашем любимом текстовом редакторе. Вы можете видеть, что буква «w» в библиотеке проводов написана маленькими буквами, что несовместимо с последними версиями Arduino, и вам нужно заменить ее заглавной буквой «W», вот и все.
Полный код для регулятора объема PT2258 можно найти в конце этого раздела. Здесь объясняются важные части программы.
Мы начинаем код с включения всех необходимых файлов библиотек. Библиотека Wire используется для связи между Arduino и PT2258. Библиотека PT2258 содержит всю важную информацию о времени I2C и подтверждения. Библиотека ezButton используется для взаимодействия с кнопками.
Вместо того, чтобы использовать изображения кода ниже, скопируйте все экземпляры кода из файла кода и отформатируйте их.
#include <PT2258.h>
#include <ezButton.h>
#include <Wire.h>
Затем создайте объекты для двух кнопок и самой библиотеки PT2258.
PT2258 pt2258;
ezButton button_1(2);
ezButton button_2(4);
Затем, определите уровень громкости. Эта громкость, с которой будет начинать работу Ваша ИС.
Int volume = 40;
Затем активируйте UART и установите тактовую частоту для шины I2C.
Serial.begin(9600);
Wire.setClock(100000);
Очень важно установить тактовую частоту I2C, в противном случае ИС не будет работать, потому что максимальная тактовая частота, поддерживаемая этой ИС, составляет 100 кГц. Затем мы делаем небольшую техническую проверку с помощью оператора if else, чтобы убедиться, что ИС правильно взаимодействует с шиной I2C.
If (!pt2258.init())
Serial.printIn(“PT2258 Successfully Initiated”);
Else
Serial.printIn(“Failed to Initiate PT2258”);
Затем мы устанавливаем задержку дребезга для кнопок.
Button_1.setDebounceTime(50);
Button_2.setDebounceTime(50);
Наконец, запустите ИС PT2258 , установив для нее громкость канала по умолчанию и номер контакта.
/* Iniciating PT with default volume and Pin*/
Pt2258.setChannelVolume(volume,4);
Pt2258.setChannelVolume(volume,5);
Это означает конец раздела Void Setup ().
В разделе «Цикл» нам нужно вызвать функцию цикла из класса кнопки; это стандарт библиотеки.
Button_1.loop(); //Library norms
Button_2.loop(); //Library norms
Секция if ниже предназначена для уменьшения громкости.
/* if button 1 is pressed if condition is true */
If (button_1.ispressed())
{
Volume++; // Incrementing the volume counter.
// This if statement ensures the volume does not goes above 79
If (volume >= 79)
{
Volume = 79;
}
Serial.print(“volume: “); // printing the volume level
Serial.printIn(volume);
/* set the volume for channel 4
Which is in PIN 9 of the PT2558 IC
*/
Pt2558.setChannelVolume(volume,4);
/*set the volume for channel 5
Which is in PIN 9 of the PT2558 IC
*/
Pt2558.setChannelVolume(volume,5);
}
Нижеследующая секция if для увеличения звука
// The same happens for the button 2
If (button_2.isPressed())
{
Volume--;
// this if statement ensures the volume level does not go below zero.
If (volume <= 0)
Volume = 0;
Serial.print(“volume: “);
Serial.printIn(volume);
Pt2258.setChannelVolume(volume,4);
Pt2558.setChannelVolume(volume,5);
}
Для тестирования схемы использовалась следующая аппаратура:
1. Трансформатор с отводом 13-0-13
2. 2 динамика 4Ω 20Вт в качестве нагрузки.
3. Источник звука (телефон)
4. Простой усилитель звука 2x32 Вт с микросхемой TDA2050
Далее нужно переставить механический потенциометр и закоротить два провода двумя небольшими перемычками.
Теперь с помощью двух кнопок можно регулировать громкость усилителя.
Режим работы: пн-пт 9:00-18:00
Способы оплаты:
Санкт-Петербург
Крапивный переулок, д. 5, литер А