| Ваш IP: 3.226.251.205 | Online(16) - гости: 8, боты: 8 | Загрузка сервера: 0.48 ::::::::::::

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

ИМС TDA7448 представляет собой шести канальный регулятор громкости, регулировка громкости независимая для каждого канала.

Технические характеристики TDA7448:

  • Напряжение питания от 4,75 до 10 В (9 рекомендуемое)
  • Ток потребления 7 мА
  • Максимальное входное напряжение (THD = 0.3%) 2.5 Vrms
  • Отношение сигнал / шум 100 дБ
  • Частотный диапазон от 20 до 20000 Гц
  • КНИ при входном напряжении 1Vrms не более 0,01%
  • Диапазон регулировки громкости от -79 до 0 дБ

Плата Arduino Nano аудиопроцессор TDA7448 обмениваются данными на шине I2C по линиям SDA (data — данные) и SCL (clock — синхронизация).

Плата Пин SDA Пин SCL
Arduino Uno, Nano, Pro и Pro Mini A4 A5

Библиотека — TDA7448.zip

Тестовый скетч

#include <Wire.h>
#include <TDA7448.h>
 TDA7448 tda;
 
 void setup(){Wire.begin();}
 
 void loop(){
  audio_tda();
  delay(1000);
  }
 void audio_tda(){
  tda.setAtt(1,0);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,0);
  tda.setAtt(3,0);
  tda.setAtt(4,0);
  tda.setAtt(5,0);
  tda.setAtt(6,0);
  }

tda.setAtt(1,0) : первый параметр номер канала, второй параметр уровень ослабления сигнала от 0 до -79 дБ

TDA7448.pdf

Пример использования библиотеки

Дополнительные библиотеки

MsTimer2.ZIP

Encoder.zip

#include <Wire.h>
#include <MsTimer2.h>
#include <LiquidCrystal.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <TDA7448.h>
 TDA7448 tda;
  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};
   unsigned long newPosition,time,oldPosition  = -999;
   int vol1,vol2,vol3,vol4,vol5,vol6,vol1_d,vol2_d,vol3_d,vol4_d,vol5_d,vol6_d;
   int w,w2,menu,z,z0,z1;
 
 void setup(){
 Wire.begin();
 lcd.begin(16, 2);
 lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
   vol1 = -EEPROM.read(0);
   vol2 = -EEPROM.read(1);
   vol3 = -EEPROM.read(2);
   vol4 = -EEPROM.read(3);
   vol5 = -EEPROM.read(4);
   vol6 = -EEPROM.read(5);
 pinMode(A0,INPUT);// КНОПКА ЭНКОДЕРA
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   lcd.setCursor(0,0);lcd.print("    TDA7448    ");delay(1000);lcd.clear();audio_tda();
 }
 
 void loop(){
   if(analogRead(A0)<900){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu>5){menu=0;}}// меню
 
    if(menu==0){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol1=vol1+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol1>0){vol1=0;}if(vol1<-79){vol1=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 1    ");
  lcd.print(" ");lcd.print(vol1);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol1_d=vol1+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol1_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);}w2=0;}}
 
   if(menu==1){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol2=vol2+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol2>0){vol2=0;}if(vol2<-79){vol2=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 2    ");
  lcd.print(" ");lcd.print(vol2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol2_d=vol2+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol2_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);}w2=0;}}
 
   if(menu==2){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol3=vol3+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol3>0){vol3=0;}if(vol3<-79){vol3=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 3    ");
  lcd.print(" ");lcd.print(vol3);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol3_d=vol3+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol3_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);}w2=0;}}
 
   if(menu==3){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol4=vol4+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol4>0){vol4=0;}if(vol4<-79){vol4=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 4    ");
  lcd.print(" ");lcd.print(vol4);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol4_d=vol4+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol4_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);}w2=0;}}
 
   if(menu==4){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol5=vol5+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol5>0){vol5=0;}if(vol5<-79){vol5=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 5    ");
  lcd.print(" ");lcd.print(vol5);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol5_d=vol5+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol5_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);}w2=0;}}
 
   if(menu==5){
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol6=vol6+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol6>0){vol6=0;}if(vol6<-79){vol6=-79;}audio_tda();}
  lcd.setCursor(0,0);lcd.print("Vol 6    ");
  lcd.print(" ");lcd.print(vol6);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol6_d=vol6+48;
    if(w2==1){
   for(z=0,z0=0,z1=0;z<=vol6_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);}w2=0;}}
 
 
   if(millis()-time>10000 && w==1){
     EEPROM.update(0,abs(vol1));
     EEPROM.update(1,abs(vol2));
     EEPROM.update(2,abs(vol3));
     EEPROM.update(3,abs(vol4));
     EEPROM.update(4,abs(vol5));
     EEPROM.update(5,abs(vol6));
     w=0;}
  }
 void audio_tda(){
  tda.setAtt(1,vol1); // 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol2);
  tda.setAtt(3,vol3);
  tda.setAtt(4,vol4);
  tda.setAtt(5,vol5);
  tda.setAtt(6,vol6);
  }
 void cl(){delay(300);lcd.clear();}
 void to_Timer(){newPosition = myEnc.read()/4;}

Скетч не тестировался на TDA7448, возможно потребуется правка кода!!!

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

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

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

  • Триодный двухтактный усилитель мощностью 8 Вт

    Триодный двухтактный усилитель мощностью 8 Вт

    Предложенный усилитель прост в изготовлении и не содержит дефицитных деталей. Главным достоинством данного усилителя является низкий уровень нелинейных искажений даже без введения ООС, так же очень малое выходное сопротивление от 2 до 10 Ом. Усилитель имеет три каскада усиления — предварительный каскад на половине двойного триода 6Н2П, фазоинвертор на основе …Подробнее...
  • LM3915 — 10-и разрядный индикатор уровня

    LM3915 — 10-и разрядный индикатор уровня

    На рисунке показана схема простого десятиразрядного индикатора уровней. Основа схемы ИМС LM3915, напряжение питания от 5 до 20В, при напряжении питания 5В стабилизатор 7805 из схемы можно исключить. Устройство подключается непосредственно к линейному выходу.Подробнее...
  • Входной делитель для частотомера

    Входной делитель для частотомера

    Данная приставка позволяет расширить диапазон частотомера до 100-300МГц при верхнем пределе частотомера в 10-30МГц, то есть приставка представляет собой ВЧ делитель частоты на 10. Входное сопротивление приставки 75 Ом, чувствительность по входу 0,5В. VD1 VD2 совместно с R1 представляют собой ограничитель входного напряжения. Далее следует ВЧ дифференциальный усилитель на D1.1, …Подробнее...
  • Экономичный LED фонарик

    При изготовлении малогабаритного фонарика главным является его экономичность. При применении светодиода с током потребления 24мВт 4-х щелочных батареек типа АА хватит до одного месяца непрерывной работы. Фонарик основан на таймере 7555 который работает в автоколебательном режиме (не использовать 555). Белый светодиод 400 mcd имеет малый ток потребления и яркое направленное …Подробнее...
  • Входной предварительный усилитель с регулировкой тембра, громкости и баланса на NE5532

    Входной предварительный усилитель с регулировкой тембра, громкости и баланса на NE5532

    На рисунке показана схема предварительного усилителя с трех полосным регулятором тембра, баланса и громкости. Усилитель построен по простой схеме и содержит одну ИМС типа NE5532. Напряжения питания схемы 12 В, ток потребления не более 80мA. Источник: www.eleccircuit.com/pre-tone-control-stereo-bass-mid-range-treble-by-ic-ne5532+изображение печатной платыПодробнее...