Microlab SOLO 6C. Сигналы управления
реклама
Содержание:
Введение
Уточнение по схеме SOLO 6C
Дистанционное управление
Интерфейс связи NSR2251 и R2S15904SP
Подведение итогов
Честно говоря, тематика SOLO меня уже не очень интересует в плане качества звука или попыток его улучшения, ибо в своих статьях и на форуме я уже свое мнение подробно высказал. Остановимся на том, что это — добротная ММ акустика. И самое для себя интересное по отличию их звучания от бюджетного Hi-Fi я тоже выяснил и услышал. Некоторые люди, не разбирающиеся в том, что я делал, на разных форумах утверждали, что я провожу сравнение, которое и так ясно, но такие злопыхатели, ничего другого не умеющие, кроме как бурчать, найдутся всегда и везде.
А вернулся я к теме SOLO потому, что в начале года приобрел простенький двухканальный цифровой запоминающий осциллограф, подробнее о котором написано в статье «Моя домашняя лаборатория», и появилась возможность посмотреть, каким образом микроконтроллер NSR2251, установленный на плату предварительного усилителя SOLO 6C, работает с пультом ДУ и управляет, совместно со специализированной микросхемой, переключением входов, громкостью и тембром.
Вот об этом и пойдет речь в статье.
Прежде, чем приступить к описанию проведенных экспериментов, сделаем небольшое уточнение — в схеме предварительного усилителя микросхема выбора входов, регулятора громкости и тембра была ошибочно указана как R2SI5904SP, тогда как правильно будет R2S15904SP. В этом случае легко находится производитель микросхемы — японская компания Renesas. В ассортимент ее продукции входит большое число позиций, на странице сайта http://eu.renesas.com с микросхемами для аудиотрактов можно обнаружить и искомую R2S15904SP.
К сожалению, в отличие от большинства других микросхем в списке на сайте производителя, ссылка на PDF-документ с техническими характеристиками R2S15904SP выключена, не обнаруживается она и в списке устаревших изделий. Поиск в интернете тоже не привел к положительному результату. Возможно, она изготовлялась на специальных условиях с заказчиком, и поэтому данные не опубликованы. С другой стороны, она использовалась достаточно широко и установлена во все изделия Microlab SOLO с индексом С, а также и в другие мультимедийные колонки, к примеру, под брендом SVEN. Запрос в техподдержку компании остался без ответа, впрочем, я и не был особенно настойчив.
Просмотр доступных данных на микросхемы серии R2S1590хх в очередной раз показал, что даже одна буковка в названии может в корне изменить состав и назначение микросхемы. Отличия и есть по назначению, по цоколевке и интерфейсам управления — для связи с микроконтроллером используется где I2C, где SPI, а иногда и свои варианты, причем как двух-, так и трех проводные. Не очень здорово, но где наша не пропадала! Прорвемся и без японского даташита.
Единственным устройством SOLO 6C, которое еще не подвергалось разборке с моей стороны, остался пульт ДУ. Исправить это упущение совсем нетрудно — пульт собран в пластмассовом корпусе и крышкой служит сама бумажно-пластиковая панель с кнопками, обратная сторона которой сделана липкой и просто прилеплена на печатную плату. Аккуратно поддев ножом или отверткой, снимаем эту панель:
Разобранный пульт ДУ
Печатная плата прикручена пятью шурупчиками к корпусу (один в центре китайцы сэкономили). Другая сторона платы выглядит следующим образом:
Ничего примечательного, микросхема бескорпусная и маркировка ее неизвестна, но она нам особо не интересна.
Типовая схема пульта ДУ выглядит следующим образом, пример с микропроцессором от Philips для кодирования RC5, но и для других стандартов аналогично, в нашем случае добавлены два керамических конденсатора и электролит:
Собираем все обратно и посмотрим, какие команды этот пульт ДУ посылает в активную колонку SOLO 6C.
Для удобства работы снимем полностью плату предварительного усилителя. Питание будем подавать однополярное, так как отрицательное напряжение необходимо только для ОУ предварительного усилителя и в интересующих нас цифровых цепях не используется. По показаниям цифрового индикатора использованного блока питания, потребляемый ток не превышает 60мА. Вот как это выглядело на столе:
Снятый предварительный усилитель подключен к питанию
Без предварительного опыта работы с ИК устройствами (не считая более 20 лет назад собранного ИК управления для телевизора УСЦТ, где для отладки даже осциллограф не применялся), определим, какие команды посылает пульт ДУ и что они из себя представляют.
Для этого подключим осциллограф к сигнальному проводу ИК-приемника FPS 6038. Это можно сделать непосредственно на плате индикатора, где он установлен, но, вероятно, удобнее будет это сделать на плате предварительного усилителя, подключив щуп осциллографа к 4-й ножке микроконтроллера NSR2251 или к соответствующему выводу трехпроводного разъема, к которому подключается ИК-приемник.
Мне было удобнее это делать вообще с другим устройством (для отладки микроконтроллеров PIC) и с другим ИК-приемником (FPS 50-й серии), но это не принципиально:
Считывать ИК сигнал от пульта SOLO можно любым подходящим устройством
Когда все готово (не забываем на осциллографе установить запуск по спаду импульсов канала данных), нажимаем на кнопку INPUT пульта ДУ и получаем следующую картинку:
Осциллограмма IR сигнала "Input"
Кроме канала данных (№2, красного цвета), на рисунке присутствует и осциллограмма синхроканала (№1, синего цвета), связывающего микроконтроллер с микросхемой R2S15904SP, который прямого отношения к ИК интерфесу не имеет. Видно, что после передачи по ИК всего кадра, на шине синхроканала формируется импульс. Зачем он нужен? По логике, польза от него может быть только для формировании сигнала пробуждения «wake-up» цепей приема R2S15904SP, так как, обработав принятый по ИК каналу сигнал, микроконтроллер пошлет соответствующую команду в R2S15904SP. Без даташита правды нам не узнать, а проверить можно эмуляцией сигнала или программированием своего микроконтроллера, но пока мы этого делать не будем. Поэтому на «синий импульс» внимания больше не обращаем, отметим только, что, к сожалению, это не интерфейс I2C, так как сигнал ожидания, как видно на синей осциллограмме, низкого уровня. Но интерфейсом связи NSR2251 с R2S15904SP мы займемся детально чуть ниже, вернемся обратно к «красному сигналу».
Для того, чтобы понять, какого стандарта сигнал мы приняли, все-таки пришлось немного поизучать распространенные форматы ИК каналов. Это было уже сделано после написания и опубликования статьи, поэтому пришлось сделать исправления в первоначальный вариант.
Учитывая то, что ИК-приемник выдает инверсный сигнал, становится очевидным, что мы имеем дело с протоколом передачи NEC. Как подсказывает Wikipedia, это самый распространенный формат для бытовой техники.
Принимая во внимание общую инверсию сигнала, кадр передачи начинается импульсом 9мс (в 16 раз превышающим длительность информационного бита), который остался для совместимости со старым оборудованием и дает возможность принимающей стороне правильно настроить уровни напряжения. Затем идет пауза 4.5мс, после нее передается восьмибитный адрес, определяющий конкретное оборудование, для которого и предназначен этот ИК сигнал, затем тот же адрес в инверсном виде, следующие восемь бит — команда, и, в заключение, команда в инверсном виде.
Через 108мс (некоторые производители ИК систем связи варьируют туда-сюда пару мс) виден еще один импульс 9мс и 4.5мс пауза (не забываем про инверсию), говорящий о том, что та же клавиша все еще нажата, в этом случае информационные биты не передаются.
Биты кодируются длительностью паузы между импульсами. Сами импульсы имеют одинаковую длительность 562.5мкс, импульс и пауза одинаковой длительности дают логический 0, импульс и пауза тройной длительноти (1.6875 мс) определяют логическую единицу.
Так как передается прямой и инвертированный байты для адреса и для команды, то общая длительность информационного кадра составляет 54мс, с учетом первого импульса и паузы — 67.5 мс.
Для того, чтобы было удобнее пересчитать импульсы посмотрим на осциллограммы в более крупном масштабе, на примере «Volume +» и «Mute»:
Сигнал "Volume +"
Сигнал "Mute"
Стандарт определяет, что байт передается, начиная с младшего номера бита (LSB). Так как дешифрировать сигнал можно по длительности пауз, то в нашем случае, так как ИК приемник дает инверсную картину сигнала, это можно сделать по длительности импульсов на осциллограмме, более длинный импульс будет соответствовать единичному биту.
Поэтому, отбросив второй и четвертый информационные байты, как комплементарные к первому и третьему, адрес на верхней осциллограмме, в порядке получаемых бит, определяется как 1000 0000, что соответствует двоичному коду 0000 0001, десятичному 1 и шестнадцатеричному (HEX) 0x01. Команда, в порядке получаемых бит, выглядит как 1000 1000, что соответствует двоичному коду 0001 0001, десятичному 17 и шестнадцатеричному (HEX) 0x11. Кстати, код громкости совпадает и с кодом стандарта Philips RС5.
Проделав тот же нехитрый расчет по данным для осциллограммы сигнала «Mute», получаем последовательность битов адреса 1000 0000 , что соотвествует двоичному коду 0000 0001, десятичному 1 и шестнадцатеричному (HEX) 0x01. Команда в порядке получаемых бит выглядит как 0100 0000, что соотвествует двоичному коду 0000 0010, десятичному 2 и шестнадцатеричному (HEX) 0x02.
Адрес можно было и не дешифрировать, от нашего пульта он будет все время приходить один и тот же.
Таким образом, перенажимав все кнопки и сняв все возможные осциллограммы, получаем следующую таблицу HEX кодов управления и их инверсных значений, для команд получаемых с пульта ДУ (адрес всегда равен 01 FE):
Кнопка | Третий байт | Четвертый байт |
---|---|---|
Volume+ | 11 | 77 |
Volume- | 10 | 7F |
Input | 04 | FC |
Mute | 02 | FB |
Bass+ | 0A | F5 |
Bass- | 0E | F1 |
Treble+ | 09 | F6 |
Treble- | 0B | F2 |
В конце главы приведу три осциллограммы напряжения, снятого с ИК диода передатчика, при увеличении разрешения по времени, чтобы можно было увидеть несущую частоту 38КГц, используемую по стандарту NEC (осциллограф определил ее как 37.8КГц):
Развертка 10мс
Развертка 5мс
Развертка 1мс
Выше мы выяснили, какие сигналы поступают по инфракрасному каналу связи в микроконтроллер. На основании этих сигналов (и по сигналам регулятора громкости, представляющего две замыкающих контактных пары), микроконтроллер NSR2251 посылает в микросхему R2S15904SP соответствующую информацию. Используется двухпроводная линия, но, как уже мы выяснили, это не I2C, в состоянии покоя на обеих шинах низкий уровень.
Просмотрев несколько микросхем от Renesas, использующих связь с микропроцессором по двухпроводной шине, наиболее подходящей отправной точкой была выбрана информация, содержащаяся в документации к микросхеме R2S15902FP :
Фрагмент описания интерфейса R2S15902FP
Видно, что обе шины имеют низкий уровень напряжения в неактивном состоянии. Для R2S15902FP должно передаваться 23 бита и характерный стоповый импульс по линии данных. Считывание данных производится по фронту синхроимпульсов. Условимся считать низкий уровень напряжения логическим нулем, а высокий уровень - логической единицей.
Без двухканального осциллографа не обойтись, подключаем входы к выводам 21 и 22 микросхемы R2S15904SP (или к соответствующим выводам микроконтроллера, принципиальная схема приведена в статье «Акустика SOLO 6C. Потрошим и составляем принципиальную схему»). Ставим на осциллографе запуск по нарастанию для канала, подозреваемого в формировании синхроимпульсов (синий цвет), нажимаем на пульте ДУ кнопку «INPUT», на табло загорается «AU» (Выбор AUX входа), а осциллограф показывает следующую картинку:
Выбор входа «AU»
Нажимаем кнопку «INPUT» еще раз, на табло загорается «РС» (Выбор РС входа), а осциллограф показывает:
Выбор входа «РС»
Делаем вывод, что выбор интерфейса от R2S15902FP как основы был верным. Отчетливо виден последний импульс «latch» (самый правый красный), синхронизируемый по спаду предпоследнего синхронизирующего импульса. Также видно, что оба сигнала отличаются числом и позицией импульсов.
Так как число синхроимпульсов, появившихся до стоп-сигнала «latch», определяет число передаваемых бит, то пересчитав их, получаем, что передаваемое от микроконтроллера в R2S15904SP слово имеет длину 16 бит (в отличие от 23 бит у R2S15902FP). Дополнительно убеждаемся в этом, попробовав передать и другие команды с помощью пульта ДУ и регулятора громкости.
На длительность синхроимпульсов внимание обращать не стоит, она может варьироваться. Нижняя частота следования синхроимпульсов не оговорена, если осторожно ориентироваться на данные для других подобных микросхем от Renesas, то максимальная частота там оговаривается в 100КГц. В нашем случае типовая частота около 40КГц с выпадением длительности отдельных импульсов или пауз между ними, но это выпадение и паузы ни на что не влияют (оно, скорее всего, вызвано работой микроконтроллера по обслуживанию других задач и не оптимальным программным кодом при таком простом алгоритме).
Дальше — совсем просто. Устанавливаем регулятор громкости на максимум (на индикаторе горит «60»):
Уровень «60»
Мы видим данные — одни нули под первыми 14 (0:13) синхроимпульсами, следующий, пятнадцатый бит, имеющий порядковый номер 14, так как отсчет с 0, — единицу (он и определяет признак того, что регулируется громкость). Шестнадцатый бит (с номером 15) равен нулю. Не забываем, что самый правый красный импульс не считается — это стоп-бит.
Уменьшаем громкость до «57» по индикатору, получаем следующую картину:
Уровень «57»
Мы видим синхронное появление пары импульсов в двух местах (опять отбрасываем самый правый красный импульс — стоп-бит и предыдущий — признак регулировки громкости). Это означает, что громкость правого и левого канала регулируется одновременно. Перепрограммировав контроллер, можно сделать раздельную регулировку или предустановку уровней громкости в зависимости от инсталляции акустики.
Продолжаем снижение громкости до «02»:
Уровень «02»
И до «00»:
Уровень «00»
Все четырнадцать первых бит, отвечающих за громкость (по семь бит на стереоканал) установлены в единицу, следующий бит — признак управления громкостью также единица, последний бит нулевой, за ним следует импульс стоп-бита.
Таким образом, для регулировки громкости нужно в микросхему R2S15904SP передать следующие данные, считая, что первым передается бит D0, последним — D15:
Громкость левого канала D0 : D6 и правого канала D7 : D13. Код 1111111 соответствует минимальной громкости, код 0000000 соответствует максимальной громкости. Так как число градаций по установке громкости в SOLO 6C 61 (0...60), а 7 бит на канал допускают 128 комбинаций кода, то в диапазоне громкости по индикатору 1...11 идет нелинейное приращение (точнее, снижение числа, представляющего код), с индикации 12 по 60 — линейное, с уменьшающимся на единицу значением с каждым шагом.
Данные для уровней громкости 0...12 сведены в таблицу:
Уровень | D0(D7) | D1(D8) | D2(D9) | D3(D10) | D4(D11) | D5(D12) | D6(D13) |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
3 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
4 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
5 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
6 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
7 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
8 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
9 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
10 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
11 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
12 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
Нет нужды придерживаться этой таблицы при программировании и вы вольны установить свой закон регулировки.
Сигнал «Mute» приводит к подаче кода громкости 1111111 по каждому каналу, при этом на индикаторе мигают два минуса, повторная подача сигнала «Mute» восстанавливает уровень громкости, который был на момент подачи первого сигнала.
При регулировании громкости управляющие биты D14 : D15 устанавливаются как 1 : 0.
Как видно из первых двух осциллограмм этой главы, для переключения входов D14 : D15 надо устанавливать 0 : 0, вход «AU» включается посылкой сигнала D0 : D13 с установленным битом D6, вход «PC» включается посылкой сигнала D0 : D13 с установленными битами D2 и D6. Перепрограммировав микроконтроллер, можно добавить в схему управления и дополнительные входы (обычно их три плюс два выхода на запись, которые также программируются как входы, надо поэкспериментировать с битами D3 : D5).
Ну и, напоследок, регулировка тембра.
Она включается установкой управляющей комбинации D14 : D15 в 0 : 1.
Биты D0 : D4 устанавливают низкие частоты, D5 : D9 — высокие.
Коды сведены в таблицу:
Уровень | D0(D5) | D1(D6) | D2(D7) | D3(D8) | D4(D9) |
---|---|---|---|---|---|
8 | 1 | 1 | 0 | 0 | 0 |
7 | 1 | 0 | 1 | 1 | 1 |
6 | 1 | 0 | 1 | 1 | 0 |
5 | 1 | 0 | 1 | 0 | 1 |
4 | 1 | 0 | 1 | 0 | 0 |
3 | 1 | 0 | 0 | 1 | 1 |
2 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 0 |
-1 | 0 | 0 | 0 | 0 | 1 |
-2 | 0 | 0 | 0 | 1 | 0 |
-3 | 0 | 0 | 0 | 1 | 1 |
-4 | 0 | 0 | 1 | 0 | 0 |
-5 | 0 | 0 | 1 | 0 | 1 |
-6 | 0 | 0 | 1 | 1 | 0 |
-7 | 0 | 0 | 1 | 1 | 1 |
-8 | 0 | 1 | 0 | 0 | 0 |
Очевидно, что диапазон кодов использован только наполовину, интересно выяснить, работают ли коды x1001...x1111.
Нужно сделать оговорку, что, посылая команду на регулировку тембра, например, по НЧ, необходимо по ВЧ каналу повторить имеющуюся установку, иначе она сбросится к нулевому уровню. Вот как выглядит сигнал на увеличение тембра НЧ с 6 до 7 при уже установленном тембре по ВЧ на 7:
Регулировка тембра
С точки зрения привычной упорядоченности сигналов, в рассмотренном интерфейсе правильно было бы считать низкий уровень напряжения логической единицей, а высокий уровень напряжения - логическим нулем. Впрочем, все в мире относительно, и никто не мешает вам это сделать самостоятельно.
Вероятно, что какие-то возможности откроются и при управляющей комбинации D14 : D15 в 1 : 1. А может, у кого-то есть и даташит на R2S15904SP, где все это уже написано.
Мое небольшое исследование было направлено на три цели. Прежде всего — это получение практического опыта, как возвращенца в клуб радиолюбителей и друзей паяльника (что дается мне с большим трудом). Вторая цель — миссионерство, я хочу показать, какое это интересное, увлекательное и полезное хобби (не знаю как мне это удается, но надеюсь, что кого-то заинтересую). Ну и третье — на основании приведенных данных легко можно сделать программу и запрограммировать свой микроконтроллер (PIC, AVR или другой) и сделать свою схему управления, увеличив число входов, сделав регулировку баланса, сделать так, чтобы запоминались профили настройки громкости и тембра и включались автоматически при включении, расширить индикацию, да и еще все что угодно. К примеру, можно поставить часы реального времени, собрав часы и будильник, микросхему ЧМ-приемника и т.д.
Если у кого-то возникнут вопросы по данным или по реализации — обращайтесь, что-нибудь придумаем вместе.
Пара слов о параметрах микросхем серии R2S159хх. Хоть дело и неблагодарное судить о параметрах «по аналогии», тем не менее, думается, что не сильно ошибусь, сказав, что R2S15904SP самое слабое звено в схеме SOLO 6C. Типовое значение коэффициента нелинейных искажение от 0.01% до 0.5% на сигнале 250мВ в диапазоне от 400Гц до 30КГц. Задумайтесь, почему не взят стандартный диапазон от 20Гц, ведь усилительная часть в лице предварительного каскада на ОУ 5532 и оконечника прекрасно там отработают. А на низах динамики SOLO особенно плохо звучат, и даже без помощи звонкого корпуса и нелинейностей R2S15904SP. Я бы и переключение входов заменил на механическое (не случайно коммутация в NAD C325 и в старших моделях переведена на механическую, в сравнении с NAD C315). В крайнем случае поставил бы специализированные аналоговые коммутаторы и в схеме предварительного усилителя оставил бы только ОУ, а тембр, при желании, можно подрегулировать и в источнике, которым обычно для данных АС является компьютер с различными программами проигрывателей, позволяющими это делать.
Комментарии, вопросы и предложения здесь.
zauropod,
специально для www.overclockers.ru
22-25 мая 2009 года
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают