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





