TC9260P  — двухканальный регулятор громкости (Arduino)

TC9260P — интегральная схема (ИС) для электронного управления громкостью аудиооборудования. Произведена компанией Toshiba Semiconductor.
Характеристики:
  • диапазон регулировки громкости от 0 dB до –78 дБ с шагом 2 дБ
  • тонкомпенсация (loudness)
  • управление громкостью, баланса при помощи последовательных данных
  • вход выбора микросхемы позволяет управлять до двух таких микросхем на одной шине
  • поликремниевые резисторы обеспечивают регулировку громкости с низкими искажениями и высокой производительностью
  • напряжение питания от 4,5 до 12 В (9 В — номинальное)
  • коэффициент нелинейных искажений — 0,01%
  • разделение каналов 100 дБ
  • диапазон рабочих температур — от –40 °С до +85 °С
  • можно регулировать громкость без цифрового управления

Регулировка громкости и функции loudness без цифрового управления

Цифровое управление 3-Wire

Управление по шине данных 3-Wire осуществляется при помощи 13 битного байта, которые состоит из битов выбора каналов (биты L и R), битов регулировки громкости (D1…D6), выбора уровня вывода CS (задают биты С1 С2 С3 С4) и активации функции тонкомпенсации (LD).

Выбор уровня вывода CS

Выбор уровня вывода CS позволяет использовать до 2 микросхем на одной шине данных 3-Wire.

Схема подключения с функцией loudness (на вывод CS подать напряжение VDD (+B))

Используя платформу Arduino (Atmega328), можно управлять TC9260P. Ниже показан тестовый скетч который позволяет регулировать громкость поканально, а так же активировать функцию loudness.

#define STB   2
#define DATA  3
#define CK   4
 
void setup() {
  Serial.begin(9600);
  pinMode(STB, OUTPUT);digitalWrite(STB, LOW);
  pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
  pinMode(CK, OUTPUT);digitalWrite(CK, LOW);
  delay(100);
}
 
void loop() {
  byte_tc9260(1,0, 1, 0);
  byte_tc9260(0,1, 39, 0);
  delay(1000);Serial.println();
  }
 
  void byte_tc9260(bool lh, bool rh, int vol, bool ld){
    vol = 40-vol;
    int vol_1 =  ((vol&0b100000)>>5)<<0|((vol&0b010000)>>4)<<1|((vol&0b001000)>>3)<<2|((vol&0b000100)>>2)<<3|((vol&0b000010)>>1)<<4|(vol&0b000001)<<5;
    vol_1 = vol_1;
    Serial.println(vol_1,BIN);
    unsigned long data_byte = (lh<<12)|(rh<<11)|((vol_1)<<5)|(ld<<4)|0b1011;
    // vol 0...40
    // lh rh 0...1
    // ld 0...1
    writeByte(data_byte);  
    }
 
 
void writeByte(uint16_t data){
    digitalWrite(STB, LOW); delayMicroseconds(3);
    for (int i = 12; i >= 0; i--) {
        digitalWrite(DATA, (data >> i) & 1); delayMicroseconds(3);
        Serial.print((data >> i) & 1);
        digitalWrite(CK, HIGH); delayMicroseconds(3);
        digitalWrite(CK, LOW); delayMicroseconds(3);
    }
    digitalWrite(STB, HIGH); delayMicroseconds(3);
    digitalWrite(STB, LOW); 
    Serial.println();
}

Функция управления

byte_tc9260(1,0, 1, 0); // активация левого канала (1 активно, 0 — неактивно), активация правого канала (1 активно, 0 — неактивно), уровень громкости 0-40, loudness (1 активно, 0 — неактивно)

byte_tc9260(0,1, 39, 0); // активация левого канала (1 активно, 0 — неактивно), активация правого канала (1 активно, 0 — неактивно), уровень громкости 0-40, loudness (1 активно, 0 — неактивно)

Для раздельной регулировки громкости необходимо функцию отдельно для каждого канала, как видно сначала отправляем данные для левого канала (1, 0), указываем уровень громкости (0 мин, 40 максимальная громкость) и отключаем loudness (0), далее во втором байте отправляем данные для правого канала (0, 1). Если регулировать громкость поканально нет необходимости, то достаточно отправлять один байт: byte_tc9260(1,1, 14, 0);

Схема подключения без функции loudness

Даташит — TC9260P.pdf

Форум — tc9260 (Страница 1) — Тестирование скетчей — forum.rcl-radio.ru

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

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