Поиск по этому блогу

1 февр. 2014 г.

AVR отладочный конструктор

Эмбеддерством я «случайно заразился» благодаря моему увлечению авиасимуляторами. Первым собранным мною микроконтроллерным устройством был контроллер для самодельного джойстика. Спаять и прошить его было не сложно, так как особых знаний это не требовало. И возможно, на этом мое эмбеддерство и закончилось бы, но людьми движут желания. Со временем я пожелал изменить конфигурацию моего изделия и без модификации прошивки было уже не обойтись. Вот с этого все и началось. Совершенствуя свой джойстик я постепенно накапливал необходимые знания по AVR контроллерам и на определенном этапе понял, что это не так уж сложно и чертовки интересно. После родилось несколько замечательных идей, для реализации которых потребовался уже более капитальный подход. Одним из результатов такого подхода является отладочный конструктор, которому и посвящена эта статья.
Необходимость использования отладочных плат рано или поздно настигает каждого эмбеддера. Как бы не был хорош Протеус, но все нюансы реальных схем ему не повторить. Поэтому отладка в «железе» вполне обоснованная мера. Найти подходящую готовую плату не проблема, но все же я пошел по пути самостоятельной сборки подобного устройства. Кроме платы хотелось получить еще опыт разработки и сборки.
Сеть полна информацией о различных реализациях отладочных плат. Существует очень много готовых промышленных решений. Любительских хотя и меньше, но они не менее интересны. Анализируя каждое найденное мною решение, я пытался выделить из них все то, что было бы легко повторить. Вероятно, самым насыщенным источником информации для меня послужили отладочные платы и аксессуары от MikroElektronika  (http://www.mikroe.com). На сайте этого производителя есть возможность скачать описание и схему для каждого производимого ими отладочного компонента. Эти схемы мне очень помогли. Также мне очень понравилась их концепция применения плат аксессуаров (http://www.mikroe.com/eng/categories/view/11/accessory-boards). Так формировалось видение того, что хочу получить в результате.

Как не странно, но первое с чего я начал было основание для отладочного конструктора. Его необходимость мне навеяли найденные в сети фото переплетенных проводами и разбросанных по столу плат. Я предположил, что если закрепить на общем основании хотя бы часть плат, то это поможет избежать возможные замыкания в результате случайного касания плат друг об друга. Для себя я вывел стандарт на размеры плат и с учетом этого просверлил в основании серию отверстий. Это позволяет мне с помощью винтов и стоек с резьбой надежно крепить несколько плат, уменьшая тем самым творческий бардак.

Следующий шаг — плата питания. Я предполагал, что источники напряжения питания моего отладочного стенда могут быть различными, и поэтому была реализована плата, задача которой получать на вход либо постоянное, либо переменное напряжение то 7 до 18 вольт, а на выходе выдавать стабилизированные 5 вольт. Клемники и разъемы были использованы для различных способов подключения к плате. Схема платы проста и основана на стабилизаторе 7805. На случай легких перегревов стабилизатора предусмотрел небольшой радиатор.

Плата контроллера. Возможно самый сложный этап работ. Я тщательно выбирал контроллер, который бы позволил мне выполнить успешный старт в эмбеддерстве. По параметрам цена-доступность-возможности победу одержала ATmega8. Именно благодаря ей я и реализовал первую плату контроллера под корпус DIP28. Чтобы не усложнять плату двухсторонней печатью и не увеличивать количество монтажных перемычек, я разъемы портов вместе с цепями подтяжки выполнил на отдельных платках. Это очень мне облегчило разводку платы контроллера и для плат под другие типы корпусов я опять применю этот же подход. Распиновка разъемов портов аналогична той, что используется в платах от MikroElektronika, т.е. при желании я смогу использовать их аксессуары. Эти разъемы имеют 10 выводов (8 линий порта, питание, земля). Цепь подтяжки позволяет подтягивать выводы порта как к земле, так и к питанию. Часть схемы платы обеспечивает различные режимы работы тактового генератора. Возможно подключение кварцевого резонатора на оба вывода XTAL, либо только на один вывод XTAL от отдельного генератора на инверторах, либо без внешнего кварца, тогда выводы XTAL используются уже как выводы порта B. Каждый из этих режимов настраивается подключением платы резонатора в соответствующий разъем и комбинацией перемычек. Также схемой предусмотрены различные способы подачи опорного напряжения на АЦП контроллера. Разъем подключения для SPI-программатора имеет стандартную распиновку. Групповой джампер позволяет коммутировать SPI-выводы контроллера с разъемом порта. Порой это необходимо, если подключенная к порту схема мешает программированию. На плате присутствует выключатель и индикатор питания.


Набор платок с кварцевыми резонаторами. Я выбрал самые типовые частоты и на каждую из них собрал подобную платку. Для соблюдения помехозащищенности платка двухсторонняя. Верхний слой соединен с землей и работает как экран. Корпуса кварцев припаяны к этому слою и тоже работают как экран. Разводка учитывает только одно правило — максимум земли. В плане есть изготовление такой же платки, но с разъемом под кварц.


Соединительные провода. По типу разъемов они делятся на три вида: питание, UART, порты ввода-вывода. Принятый мною стандарт разъемов и их распиновка будет поддерживаться во всех платах конструктора.

Первая плата-аксессуар. Светодиодный индикатор состояния порта. Вот и сбылась мечта идиота, теперь можно светодиодиком помигать. Даже не одним.

Далее была клавиатура на 8 кнопок. Логичный ход работ. Хотелось быстро освоить не только элементарный вывод, но и элементарный ввод данных в контроллер. Переключателем выбираются активные кнопки. Джампером можно определить уровень для нажатой кнопки, либо 0, либо 1.

Матричная клавиатура на 16 кнопок. Ее я делал «за компанию» с 8-ми кнопочной. На тот момент в ней острой необходимости не было, но рано или поздно она потребовалась бы.

Звуковая плата. На ней я разместил сразу две пищалки: с генератором и без. Выбор нужной выполняется джампером. Переключателем выбирается вывод порта. Универсальное решение, т.к. можно генерацию звука выполнять контроллером, а можно не «париться» и пикать активной пищалкой.

Далее очень захотелось «подружить» контроллер с ПК. Следующей была плата преобразователя UART — RS232. Схема типовая, на преобразователе уровней от фирмы MAXIM — MAX232CPE. Подключение контроллера к COM-порту очень расширяет круг прикладных задач.

Так как RS232 постепенно исчезает уступая место USB, то вполне логичным было изготовление платы преобразователя UART — USB. Схема также типовая, на микросхеме FT232RL.

Еще один простой адаптер я собрал, чтобы реализовать на контроллере полноценное USB устройство. Существует свободная библиотека V-USB, которая позволяет программно обеспечить USB-интерфейс для контроллеров без аппаратной поддержки USB. Хотя эта библиотека реализует только низкоскоростной режим USB, но и этого вполне достаточно для многих прикладных задач. Адаптер выполняет приведение уровней ТТЛ к уровням USB. Схема адаптера соответствует одной из рекомендуемых для V-USB.

Символьный LCD индикатор. Нет смысла комментировать необходимость данного аксессуара. Частота использования подобного индикатора в микроконтроллерных схемах говорит сама за себя.

Следующий аксессуар — плата реле. Эта плата решает задачи управления нагрузкой. В моих перспективных проектах это будет очень востребовано. Состояние каждого реле также показывается светодиодом.

Часы реального времени. Аксессуар собран на основе микросхемы DS1307. Обмен данными ведется по шине I2C. Эта шина очень популярна и сборка данной платы стимулировала меня к изучению протокола I2C. Кроме тривиальных часов с календарем, применить этот узел можно в схемах работающих в привязке ко времени или дате. Плата разведена в соответствии с требованиями по помехозащищенности для соблюдения точности хода часов.

Датчик температуры. Я использовал цифровой датчик DS18B20. Отличный стимул для изучения еще одной популярной шины — 1-Wire.

ИК-приемник. Дистанционный контроль своих устройств — это очень распространенное требование среди эмбеддеров. ИК-управление самый доступный механизм.

Аналоговая часть считывателя RFID 125 кГц. Эта плата появилась в результате реализации одного из моих проектов. На ее основе я изучал и отрабатывал механизмы радиочастотной идентификации.


Если к одному порту необходимо подключить несколько плат аксессуаров, то для этого применяется плата расширения порта. Кроме двух стандартных разъемов эта плата имеет два штыревых разъема для произвольных подключений.
Плата расширения порта
Подключение платы расширения порта
В одном из моих проектов мне потребовалась клавиатура, которая бы работала по прерыванию. Для отладки данного проекта я изготовил еще одну клавиатуру-аксессуар. Эта клавиатура имеет вывод сигнала для внешнего прерывания контроллера. Для произвольного подключения этой клавиатуры используется не разъем, а цанговые контакты.
Расширенная клавиатура 8х1

На сегодняшний момент это вся комплектация моего конструктора. Но даже это позволяет успешно вести разработку многих интересных устройств. Развитие конструктора на этом не завершится. У меня готов список аксессуаров, которые следует еще дособрать: графический LCD индикатор, сенсорная панель, цифровой потенциометр, флеш-карта, Ethernet-адаптер, платы под другие модели контроллеров.


Мой способ реализации конструктора кому-то может показаться избыточным . Изготовление целой кучи плат требует больше времени и сил, чем изготовление одной большой отладочной платы, которая включала бы в себя всю вышеперечисленную периферию. Но подобное разделение помогло мне не увязнуть в процессе разработки и сборки конструктора. Реализуя небольшие по трудоемкости части, я на каждом шаге получал результат, который позволял мне далее продвинуться в изучении контроллеров и это очень стимулировало. Возможно, только благодаря такому итерационному подходу, мне, начинающему ембеддеру, удалось получить хороший опыт, знания и …….. отладочный конструктор для AVR.
На этом пока все ….
Архив с разводкой плат в Sprint Layout 5