audiohobby.ru audiohobby.ru

Совместимый с AH-I6 модуль индикации для Amanero / XMOS на OLED индикаторе SSD1322

После публикации пользователем dega статьи Вариант модуля индикации для Amanero на SSD1322 OLED модуле у меня появилось желание сделать на таком же дисплее устройство, совместимое по функциям с модулем индикации AH-I6, с такими же красивыми символами в стиле VFD. После покупки индикатора он так и пролежал у меня без дела долгое время, пока пользователь ppy не заинтересовался «исходниками фонта» и не выложил в комментариях результаты своего труда по его воссозданию. Эти результаты, наряду с исходниками программы, приложенными к статье первым упомянутым автором, с некоторой дополнительной корректировкой я и взял за основу шрифта. Получился модуль индикации, совместимый по функциям с устройствами, описанными в статьях Программная модернизация модуля индикации для «Аманеро» AH-I6 и Модуль индикации для Аманеро на светодиодных буквенно-цифровых индикаторах HPDL-1414 (а с последним — и по физическому расположению интерфейсных разъёмов). Управление работой модуля индикации, как и прежде, осуществляется двумя кнопками (PW и FLT) или соответствующими клавишами на ИК пульте, работающем по протоколам Philips (RC5, RC6), NEC, JVC, Samsung или Sony. Для «обучения» модуля конкретному ИК пульту нужно одновременно зажать на 5 секунд обе указанные кнопки.

Экран графического OLED дисплея SSD1322 состоит из 256 x 64 пикселей, что даёт возможность программной реализации вывода достаточно крупных символов размерами 16 x 24 пикселей (примерно 5 x 7 мм) по 16 символов в 2 строки, аналогично обычным символьным индикаторам 1602 (LCD или OLED). Также по сравнению с последними окно для отображения информации имеет несколько больший размер (примерно 79 x 21 мм), что хорошо сочетается с более «габаритными» конструкциями ЦАП линейки AH-D16 Pro (AH-D17 Pro).

Изначально планировалось подключение дисплея к МК ATmega168 по шине SPI, и эту задачу удалось решить, но потом возникли проблемы. Дисплей нормально работал по шине SPI на частоте CLK/2, до тех пор, пока в код программы не была включена имеющаяся у меня универсальная библиотека для ИК обработки под микроконтроллеры Atmel, в своё время адаптированная мной от Ардуино — с ней начал проявляться какой-то конфликт с шиной SPI, приводящий к зависанию устройства. Я не стал дальше разбираться в причинах этого конфликта, и просто решил подключить индикатор по параллельному интерфейсу, обеспечивающему наивысшую скорость обмена данными, заменив МК на более дешёвый ATmega16 и с бóльшим количеством выводов. Так как дисплей работает по параллельному интерфейсу 8080, перемычки на его плате после покупки перепаивать не придётся.

Благодаря тому, что экран дисплея графический, удалось реализовать ещё одну интересную возможность: каждый раз перед полным обновлением информации экрана (например, после включения, «просыпания» и т.п.) программа чередует режим вывода информации со смещением на один пиксель по горизонтали и вертикали, либо без такого смещения. Это внешне практически незаметно, однако, с учётом толщины формируемых символов в 1 пиксель (пунктирной линией), позволяет экономить ресурс экрана индикатора, так как засвеченные и погашенные пиксели при этом каждый раз чередуются.

Схема модуля индикации довольно проста и каких-либо особенностей не имеет:

Печатная плата модуля индикации изначально имеет размеры 100 x 48 мм, и она может быть прикреплена к передней панели ЦАП на стойках соответствующей длины, например:

Однако, возможен вариант и другого крепления — на уголках к нижней панели. В этом случае перед монтажом элементов на плату можно самостоятельно обрезать сверху и снизу неё ровно по 7 мм — в этом случае размеры платы уменьшатся практически до размеров платы индикатора и составят 100 x 34 мм:

А крепёж платы собранного модуля может быть, например, таким:

После долгих колебаний и сомнений собираемый экземпляр платы модуля индикации я решил всё-таки укоротить по высоте, в результате получилось такое устройство:

Для крепления индикатора к плате модуля я использовал стойки М3 PCHSS-11, совместно с «ноутбучными» винтами М3 x 6 с диаметром шляпки 4,5 мм. Так как купленные стойки оказались на 0,1 мм короче заявленной высоты, перед установкой на плату разъёма индикатора J7 PBD-16 его пластиковое основание пришлось подточить снизу квадратным надфилем на указанную величину, чтобы плата индикатора не изогнулась после её прикручивания винтами. Можно также использовать аналогичные стойки М2.5 с соответствующими винтами. В качестве защитного стекла я приобрёл рекомендованный rucrim светлосерый фильтр ND2 (с размерами примерно 96 x 84 x 2 мм).

Потребляемый модулем ток по линии питания +5В согласно даташита на индикатор не должен превышать 55 мА, и у меня он получился около 30 мА.

Имеются прошивки модуля индикации как для плат Amanero, так и для плат XMOS, причём поддерживаются и «старые синие» платы XMOS (Smpcb), и «новые зелёные» (Lusya), включая модули AH-TX1, выполненные на их основе (для последних используется прошивка, имеющая в названии XMOS_F-SWAP). В отдельном приватном вложении, доступном зарегистрированным пользователям, приведён фрагмент программы на языке C в части управления индикатором SSD1322 по параллельному интерфейсу 8080, включая массив знакогенератора символов.

P.S. Фотографии экрана получились не очень удачными, с «размытыми» пикселями, видимо надо было фотографировать на большем расстоянии или с фильтром, и при другом освещении. Реально отдельные пиксели видно хорошо.

Ссылка на заказ печатных плат в Китае.

Вложение:
modul-indikacii-na-ssd1322.png 199 Кбскачан 28 раз
Вложение:
bom.xls 35 Кбскачан 24 раза
Вложение:
firmware-ah-i6-ssd1322.zip 73 Кбскачан 30 раз
+35
0
caleb caleb 1 месяц назад #

Смещать на один пиксель дело нужное, у меня на паяльнике за год эксплуатации на его оледе уже прогары стали видны отчетливо.