| Ваш IP: 3.231.229.89 | Online(26) - гости: 9, боты: 17 | Загрузка сервера: 0.57 ::::::::::::


Регулятор громкости M62429 (Arduino)

Микросхема M62429 при совместном использовании с Arduino Nano (Uno) позволяет регулировать громкость (стерео) в диапазоне от -83 до 0 дБ, регулировка громкости осуществляется одновременно по двум каналам, так и раздельно. Для управления микросхемой M62429 используется последовательный интерфейс с пакетной передачей данных.

Основные характеристики M62429 (m62429.pdf):

  • Напряжение питания 4.5 … 5.5 В
  • THD = 0.01 % Typ. (V0 = 0.5 Vrms)
  • Разделение каналов 80 дБ
  • Диапазон регулировки громкости от -83 до дБ с шагом 1 дБ
  • Ток потребления 8 мА
  • Максимальное входное напряжение 1.7 Vrms

Выходной сигнал необходимо подавать на нагрузку (наушники или вход усилителя) через разделительный конденсатор 2.2 мкФ.

Функция библиотеки setVolume содержит несколько переменных, значения которых необходимо указать:

setVolume (1,2,3,4,5);

  1. I/O вывод Arduino для CLK
  2. I/O выводы Arduino для DATA
  3. Регулировка громкости раздельная 0, одновременно оба канала 1
  4. Номер канала 1,2 ПК ЛК (1 в 3 пункте, эта функция не активна)
  5. Уровень громкости от 83 (можно указывать -83) до 0 (макс.)

Библиотеки

M62429.zip

MsTimer2.ZIP

Encoder.zip

#include <M62429.h>
void setup(){}
void loop(){
audio();
delay(1000);
}
 
void audio(){
setVolume (11,12,0,0,5); 
setVolume (11,12,0,1,5);
/* pin CLK
   pin DATA
   0 - по одному каналу, 1 - оба вместе
   0 ПК 1 ЛК
   83 ... 0 громкость 83 = -83 дБ */  
}

Ниже показан пример использования M62429 в качестве регулятора громкости. Регулировка громкости происходит при помощи энкодера KY-040, информация выводится на LCD дисплея LCD1602 на базе контроллера HD44780.

Кнопка энкодера позволяет переключать режимы настроек между громкостью и балансом. Уровень громкости и баланса сохраняются в энергонезависимой памяти.

#include <M62429.h>
#include <MsTimer2.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <EEPROMex.h>
   Encoder myEnc(9, 8);//CLK, DT подключение энкодера
   LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7 подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
   int z,z0,z1,vol,vol_d,w,menu,balans;
   unsigned long newPosition,time,oldPosition  = -999;
 
   void to_Timer(){newPosition = myEnc.read()/4;}
 
void setup(){
  lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(A0,INPUT);// КНОПКА ЭНКОДЕРA
  vol = EEPROM.read(0)-83;balans = EEPROM.read(1)-4;
  MsTimer2::set(3, to_Timer);MsTimer2::start();
}
 
void loop(){
    if(analogRead(A0)<900){menu++;cl();myEnc.write(0);time=millis();w=1;if(menu>1){menu=0;}}// меню
 
if(menu==0){ delay(10);
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol>0){vol=0;}if(vol<-83){vol=-83;}audio();}
  lcd.setCursor(0,0);lcd.print("Volume  ");
  lcd.print(" ");lcd.print(vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol+48;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
 
    if(menu==1){
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    balans=balans+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;if(balans>4){balans=4;}if(balans<-4){balans=-4;}audio();}
  lcd.setCursor(0,0);
   if(balans>=0){lcd.print("-");}else{lcd.print("+");}
  lcd.print(abs(balans));lcd.print(" dB ");
  lcd.print(" <>  ");
   if(balans>=0){lcd.print("+");}else{lcd.print("-");}
  lcd.print(abs(balans));lcd.print(" dB ");
  lcd.setCursor(0,1);lcd.print("L");
  lcd.setCursor(15,1);lcd.print("R");
   if(balans<0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
   if(balans>0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
   if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}
}
 
 if(millis()-time>10000 && w==1){// сохранение всех настроек в eeprom через 10 сек неактивности
     EEPROM.update(0,vol+83);
     EEPROM.update(1,balans+4);
     w=0;menu=0;lcd.clear();}
}
 
void cl(){delay(300);lcd.clear();}
void audio(){
setVolume (11,12,0,0,vol-4+balans); 
setVolume (11,12,0,1,vol-4-balans);
/* pin CLK
   pin DATA
   0 - по одному каналу, 1 - оба вместе
   0 ПК 1 ЛК
   83 ... 0 громкость 83 = -83 дБ */  
}

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

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

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

  • Экономичный усилитель для наушников (3В)

    Экономичный усилитель для наушников (3В)

    Усилитель для наушников может быть напрямую подключен к CD-проигрывателю, тюнеру и магнитофону. Подходит к разным моделям наушников различный — импеданс: 32, 100, 245, 300, 600 & 2000 Ом. R3 рассчитан для импеданса наушников до 300 ом. Свыше 600 ом нагрузки или выше необходимо изменить R3 на 100K. Технические данные: Потребляемый …Подробнее...
  • ЭЛЕКТРИЧЕСКИЕ ПАРАМЕТРЫ ТРИОДНЫХ ТИРИСТОРОВ ТИПОВ КУ104А — КУ104Г

    Тип Наибольшее прямое напряжение, В КУ104А 15 КУ104Б 30 КУ104В 60 КУ104Г 100 Для тиристоров этого типа Ток в закрытом состоянии 1 не более…… 0,12 мА Обратное постоянное напряжение не более …. 6 В Импульсный отпирающий ток управления 1 не более . . 15 мА Импульсное отпирающее напряжение управления 1 …Подробнее...
  • Регулятор для паяльника

    Регулятор позволяет плавно регулировать температуру от 50 до 100% от номинальной. Открыванием тиристора управляет мультивибратор с регулируемой R3 скважностью. Транзисторы любые германиевые НЧ — МП39-42, диоды Д226 Д237 и др., тиристор КУ201 КУ202 И-Н. Общее сопротивление гасящих резисторов R6-R8 — 12…14кОм, суммарная мощность рассеивания не менее 5 Вт. Внимание!!! Схема …Подробнее...
  • Приставка — стереодетектор

    Монофонический приемник можно легко переделать в стереофонический с помощью простой приставки.  Подробнее...
  • Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ

    Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ

    Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ (микросхема понижающего широтно-импульсного (ШИМ) регулируемого стабилизатора напряжения) имеет широкий диапазон регулируемого выходного напряжения от 1,2 до 50В с выходным максимальным током 3А. Так как стабилизатор работает в импульсном режиме, он имеет высокий КПД и как правило оснащается небольшим радиатором площадью не более 100 см2. Устройство …Подробнее...