| Ваш IP: 3.236.132.132 | Online(25) - гости: 18, боты: 7 | Загрузка сервера: 0.47 ::::::::::::

PT2258 — 6-и канальный регулятор громкости (Arduino)

ИМС PT2258 — шести канальный регулятор громкости с микроконтроллерным управлением. Управление PT2258 осуществляется при помощи шины I2C. Регулятор громкости обладает низким уровнем шума и малым коэффициентом нелинейных искажений. Регулировка громкости может быть как независимая для каждого канала, так и общая для всех каналов.

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

  • Напряжение питания от 5 до 10 В, 9 В — рекомендуемое
  • Ток потребления 8 мА
  • Входное сопротивление 30 кОм
  • Максимальное входное напряжение 2,8 Vrms
  • Разделение каналов 100 дБ
  • Коэффициент нелинейных искажений 0,005%
  • Диапазон регулировки громкости от -79 до 0 дБ
  • Шаг регулировки громкости 1 дБ
  • Режим MUTE
  • Отношение сигнал/шум 105 дБ

Схема регулятора громкости достаточно проста, выводы 4 и 17 (CODE2 и CODE1) в зависимости от подключения к GND или VCC позволяют изменять адрес микросхемы при работе с I2C шиной, что дает возможность подключения других утс-в на шину I2С, у которых нет возможности изменить адрес:

  • CODE1 = GND, CODE2 = GND 80H
  • CODE1 = GND, CODE2 = VCC 84H
  • CODE1 = VCC, CODE2 = GND 88H
  • CODE1 = VCC, CODE2 = VCC 8CH

Для управления работой аудиопроцессора используется несколько регистров:

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

Производитель рекомендует перед отправкой информации об уровне громкости производить очистку регистров:

Далее идет оправка данных об уровне громкости:

При использовании платформы Arduino можно сделать простой регулятор громкости, управление громкостью осуществляется при помощи энкодера, а информация от текущем уровне громкости выводится на дисплей TM1637 (часовой с двумя точками).

энкодер ky-040

Регулировка громкости общая для всех каналов, но имеется возможность изменять усиление для каждого канала, для этого необходимо нажать кнопку энкодера для выбора канала и поворотом ручки энкодера установить необходимое усиление. Диапазон общей регулировки громкости от 0 до 64 единиц (-79… -15 дБ), поканальная регулировка от 0 до 15 дБ.

TM1637 Режим MUTE
#include <Wire.h> // Входит в состав Arduino IDE
#include <Encoder.h> // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <EEPROM.h> // Входит в состав Arduino IDE
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <PT2258.h> // https://github.com/liman324/PT2258.git
#include <STM32_TM1637.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=452&download=1
    STM32_TM1637 tm(2,3);// CLK, DIO
    PT2258 pt;
    Encoder myEnc(9, 8);// DT, CLK
 
    int vol,w,w1,mute,menu;
    unsigned long time,oldPosition  = -999,newPosition; 
    int ch[6],ch_vol[7]; 
 
void setup() {
  pinMode(10,INPUT);  // МЕНЮ КНОПКА SW энкодера
  pinMode(11,INPUT_PULLUP);  // КНОПКА MUTE
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
  tm.brig(7); // ЯРКОСТЬ 0...7
  tm.print_float(0,0,  0b01000000,0b01110011,0b01111000,0b01000000);
  delay(2000);
  tm.print_float(2258,0,  0,0,0,0);
  delay(2000);
  vol = EEPROM.read(0);
  ch_vol[1] = EEPROM.read(1);ch_vol[2] = EEPROM.read(2);ch_vol[3] = EEPROM.read(3);ch_vol[4] = EEPROM.read(4);ch_vol[5] = EEPROM.read(5);ch_vol[6] = EEPROM.read(6);
  audio();
}
 
void loop() {
  if(digitalRead(10)==LOW){menu++;w=1;delay(200);if(menu>6){menu=0;}}
 
 if(menu == 0){ 
  ////////// VOLUME //////////////
 if(newPosition != oldPosition&&mute==0){oldPosition = newPosition;vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;vol_func();} 
 if(w==1){w=0;audio();tm.print_float(vol-15,1,  0b00001000,0,0,0b00001000);}
 }
 
  if(menu>0){ 
  ////////// VOLUME //////////////
 if(newPosition != oldPosition&&mute==0){oldPosition = newPosition;ch_vol[menu]=ch_vol[menu]+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w1=1;ch_vol_func();} 
 if(w==1){w=0;audio();tm.print_float(menu*1000+ch_vol[menu],1,  0,0b00001000,0,0);}
 }
 
 ///////// MUTE //////////// 
  if(digitalRead(11)==LOW&&mute==0){mute=1; audio();tm.print_float(0,0,  0b01000000,0b01000000,0b01000000,0b01000000);delay(500);}
  if(digitalRead(11)==LOW&&mute==1){mute=0; audio();w=1;delay(500);}
 
  ///////// EEPROM /////////////
 if(millis()-time>5000 && w1==1){w1=0;EEPROM.update(0,vol);
 EEPROM.update(1,ch_vol[1]);EEPROM.update(2,ch_vol[2]);EEPROM.update(3,ch_vol[3]);
 EEPROM.update(4,ch_vol[4]);EEPROM.update(5,ch_vol[5]);EEPROM.update(6,ch_vol[6]);
 }
 delay(10);
}
 
void audio(){
        pt.clear(); 
      //  pt.setVolume(75); //  int 0...79     
        pt.setVol1(vol-15+ch_vol[1]); //  int 0...79       
        pt.setVol2(vol-15+ch_vol[2]); //  int 0...79 
        pt.setVol3(vol-15+ch_vol[3]); //  int 0...79 
        pt.setVol4(vol-15+ch_vol[4]); //  int 0...79 
        pt.setVol5(vol-15+ch_vol[5]); //  int 0...79 
        pt.setVol6(vol-15+ch_vol[6]); //  int 0...79 
        pt.setMute(mute); // mute 0 - off / 1 - on
  }
 
void to_Timer(){newPosition = myEnc.read()/4;} 
void vol_func(){if(vol<15){vol=15;}if(vol>79){vol=79;}}
void ch_vol_func(){if(ch_vol[menu]<0){ch_vol[menu]=0;}if(ch_vol[menu]>15){ch_vol[menu]=15;}}

pt2258.pdf

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=110

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Удвоитель напряжения на микросхеме NE555

    Описание. Схема простейшего удвоителя напряжения использованием микросхемы NE555 показана на рисунке. Здесь IC NE555 подключен в схеме как нестабильный мультивибратор с частотой генерации около 9KHz. Базы двух транзисторов (Q1 и Q2) подключены напрямую к выходу мультивибратора (контакт 3). При выходе сигнала из мультивибратора в первый момент Q1 будет OFF и …Подробнее...
  • Преобразователь =12В\ 220В

    Преобразователь =12В\ 220В

    Схема преобразователя состоит из 3-х узлов: задающего мультивибратора, двухтактного транзисторного ключевого усилителя и повышающего трансформатора. Мультивибратор выполнен на микросхеме D1(D1.1  D1.2). Его частота зависит от R1 C1. На выходе мультивибратора включен инвертор на D1.4 который создает противофазные сигналы поступающие на базы VT1 VT2. Затем следует двухтактный усилитель на VT3 VT4 …Подробнее...
  • Термопары

    Термопары

    Термопара (термоэлектрический преобразователь) — устройство, применяемое для измерения температуры в промышленности, научных исследованиях, медицине, в системах автоматики. Принцип действия основан на эффекте Зеебека или, иначе, термоэлектрическом эффекте. Между соединёнными проводниками имеется контактная разность потенциалов; если стыки связанных в кольцо проводников находятся при одинаковой температуре, сумма таких разностей потенциалов равна нулю. …Подробнее...
  • TDA7499 — УМЗЧ 2х6 Вт

    TDA7499 — УМЗЧ 2х6 Вт

    TDA7499 — усилитель мощности звуковой частоты (класс АВ), с выходной мощность 6 Вт на канал (стерео). Усилитель относиться к классу Hi-Fi аппаратуры. В усилителе имеются функции STANDBY и MUTE, беззвучное включение и выключение (отсутствие щелчков), защита выхода от КЗ на землю, тепловая защита и защита от перегрузки. ИМС TDA7499 может …Подробнее...
  • Логический пробник для ТТЛ и ТТЛШ

    Схема отличается высокой точностью и возможностью контроля логических уровней «1» и «0», К3 и «Не определено». При неподключенном входе пробника светится светодиод «Не определено». Резисторы R1.R4 желательно применить с допуском 1%. ОУ любые, со своими частотными коррекциями, важно только, чтобы выходной ток был не менее 15 мА и Rвх не …Подробнее...