Application Note PCA85134. Start.

Вообще-то подобный документ обязаны были опубликовать на сайте NXP, но его там, к сожалению нет 🙁 Зато напихали в папку ApNote какие-то рекомендации по пайке, защите от статики, организации рабочего места! Всё, что угодно, кроме примера использования микросхемы драйвера LCD PCA85134. Такие чипы пришли мне в составе бесплатных семплов уже давненько, но в силу неимоверной лени сложившихся непреодолимых обстоятельств руки дошли до них вот совсем недавно 🙂  И то, потому, что понадобился ЖК-индикатор на лабораторный блок питания…
Вот блин! Даже не знаю с чего начать свой аппноут !? Может быть зацитировать вам даташит? 🙂 Шутки шутками, но для работы с любым незнакомым камнем даташит просто необходим. Поэтому господа-электронных дел мастера учить английский нужно постоянно, чтобы по крайней мере — хотя бы понимать прочитанное. Конечно, цитировать документ нет смысла — вы его скачаете и посмотрите, а приведу лишь основные характеристики для общего ознакомления:
—  PCA85134 — это LCD контроллер и драйвер в одном корпусе LQFP80;
—  поддерживает статический и мультиплексные режимы для 2, 3 или 4 общих выводов (1/2, 1/3, 1/4 Duty);
— управляет до 60 сегментов на общий вывод, т.е. до 240 сегментов;
— поддерживает каскадное включение до 8-ми таких микросхем;
— содержит 60 х 4-битное видео ОЗУ;
—  напряжение питания контроллера до 5,5 В, а драйвера ЖК до 8 В.;
—  позволяет выбрать уровни напряжения ЖК (Bias): для статического режима, 1/2 или 1/3 — для мультиплексных режимов (1/2, 1/3, 1/4 Duty) ;
— управляется через  I2C — интерфейс частотой до 400 кГц;
— возможность переключения банков памяти видео ОЗУ и включения различных режимов мигания.
Ремарка: Для лучшего понимания всей вышеперечисленной информации (да и нижеуказанной тоже) советую почитать пару моих статей, где даны основы управления ЖКИ и в статике  и в мультиплексном режиме.
Если вы уже читали вторую указанную статью, то выражение PCA85134 = ATmega3290 — ATmega32 не будет для вас удивительным. Ну, конечно, с некоторыми оговорками типа «не такое управление» или «не то количество сегментов», но суть та же.
Постановка задачи.
Разработать универсальный ЖКИ индикатор на основе микросхемы PCA85134. Для непосредственного отображения информации применить два индикатора типа LCD 3,0-13 (3 семисегментных знакоместа высотой 13 мм). Для управления драйвером по интерфейсу I2C применить контроллер ATtiny13A. Три микросхемы PCA85134 у меня есть, контроллеров — с головой, индикаторов накупил когда-то за копейки на Космодроме.
Аппаратная часть.
Схему не спрашивайте, господа, — а её у меня просто нет. Плату я разводил так, чтобы было удобно вести дорожки от выводов управления сегментами PCA85134 S0-S59 (см. стр.3 datasheet)  к непосредственно сегментам LCD 3,0-13. (см. рис.)
LCD3.0-13Сразу следует обратить ваше внимание, что общий вывод (com) в этом индикаторе всего один. Таким образом имеем дело со статическим режимом управления ЖКИ. В обеих индикаторах эти общие выводы (com) соединяем вместе на BP0 и управляем оставшимися 23+23=46-ю сегментами, не исчерпав даже полные возможности драйвера (60 сегментов). Повторюсь, что я не привязывал сразу соответствия выводов управления сегментом (S0 — S59) выводам LCD 3,0-13. Как потом выйти из положения, я напишу ниже. Хотя никто не заставляет вас идти по такому же пути — можете развести выводы в строгом соответствии с вашими желаниями (управлять потом будет проще).
Короче говоря — вот рисунок платы (всунул в архив в формате lay):
PCB_PCA85134а вот фото:

PCA85134_boardПлата получилось, честно говоря, не очень. Я первый раз использовал стеклотекстолит с недавно закупленной партии, а он оказался с толщиной фольги 18 мкм. До этого случая я использовал 35 мкм, поэтому чуть передержал плату в хлорном железе 🙁 В результате — полигоны с подтравами, а некоторые дорожки 0,3 мм пришлось медными волосками восстанавливать. Обратите внимание, что весь монтаж, кроме ЖКИ, находится со стороны фольги. МК в DIP-корпусе впаян как smd. Выступающие с обратной стороны части штырей разъёмов питания и программирования , залиты термоклеем для жёсткости. Кроме двух микросхем и собственно двух индикаторов вы можете наблюдать два резистора подтяжки 5,1 кОм в линиях I2C, резистор 10 кОм, подтягивающий сброс контроллера, емкости 0,1 мкФ по питанию каждой микросхемы, а также перемычки 000 Ом — все эти детали типоразмера 0805. Правее разъёма питания находится место под запайку стабилизатора 3,3 В, но необходимости в таком у меня пока не было, т.к. запитываю конструкцию от Li-Ion 3,7 В. Вышеуказанное размещение деталей обусловлено тем, что плата индикации выполняет роль фальшпанели с расстоянием 5 мм от лицевой стороны (чтобы экраны индикаторов были вровень).  Будем считать, что плата вытравлена, детали напаяны, трассировка проверена на отсутствие «залипух» и обрывов. Разъём программирования ISP-6 со стандартной атмеловской распиновкой (а то как же — я теперь пользуюсь фирменным AVR ISP mkII 🙂 ). Теперь нужно определить соответствие выводов управления сегментов непосредственно сегментам, про что я упоминал выше. Это можно сделать двумя способами. Первый заключается в визуальном определении соответствия, допустим по распечатке платы из Спринт Лайота. Второй — в прошивке ATtiny13A специальной технологической программой и наблюдении засветки отдельных сегментов посредством нажатия кнопки. Но самый лучший способ — это объединение двух вышеуказанных. Что я в общем-то и сделал.
Программируем МК технологической прошивкой (в архиве я оставил все исходники с подробными комментариями, а не только hex, чтобы вы могли вникать и вносить свои изменения при желании). Подключаем две кнопки к выводам разъёма программирования (PB1, PB2). После первого нажатия кнопки 1 (PB1) адресуется сегмент S0 (он должен отобразиться, если эта линия задействована). Дальнейшее нажатие на эту кнопку будет инкрементировать номер отображаемого сегмента, который вы будете наблюдать/не наблюдать, сравнивать с рисунком и вносить правки, если понадобится.
maket_PCA85134(На фото вверху — отображение после 19-ти нажатий кнопки 1.)
Нажатие на кнопку 2 (PB2) сбросит отображаемые сегменты и вернёт всё взад, на случай, если вы сбились.  На данном этапе можно не вникать в суть управления отображением, этим займёмся позже. Итогом прогона всех сегментов будет такая таблица:
Table_pins_to_segmentsУ меня такая, у вас может быть другая- не суть важно. Главное — данная таблица сводит все разрозненные данные в стройную и изящную систему от которой мы будем плясать при разработке алгоритма вывода цифр и символов на знакоместа индикатора.

Ну, господа-радиоломатели, как для одной статьи, так слишком много информации. Поэтому to be continued

Запись опубликована в рубрике Разное с метками , , , . Добавьте в закладки постоянную ссылку.

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

Ваш e-mail не будет опубликован.