Мной
очень часто при настройке новоиспеченного устройства используется
интерфейс UART. Удобно отослать данные в терминал и посмотреть, что же
там происходит внутри отлаживаемого девайса. Но не всегда бывает удобно
тянуть провода к компьютеру через отдельный преобразователь на FT232RL, поэтому зародилась идея собрать автономный миниатюрный терминал для приема данных и отображения их на LCD дисплее. Собственно
зародилась эта идея давно, еще прошлым летом. Но к моменту готовности
устройства и подготовки к публикации схемы, на дружественном нам ресурсе
появилось схожее устройство http://bascom.at.ua/publ/avtonomnyj_mini_terminal/1-1-0-101 (походу и вправду существует некое биоинформационное поле, раз такие идеи приходят одновременно разным людям 8)) ) В
общем, я решил не выкладывать тогда собственное творение и заняться
доработкой своего терминала. В итоге появилась вторая, более крутая
версия девайса, о котором пойдет сегодня речь.
В
качестве индикатора сразу был выбран недорогой дисплей от Nokia 3310,
он прост в использовании и его можно купить в виде готового модуля,
удобного для встраивания. При выборе микроконтроллера думал между
Atmega8 и Atmega168. Сделал выбор в пользу последнего, по выводам они
полностью совместимы но запас памяти в 16кб лишним не будет, тем более
разница цены всего 20 рублей.
схема устройства (кликабельно):
У
устройства помимо микроконтроллера и дисплея имеется 3 кнопки: кнопка
сброса, кнопка включения/выключения подсветки дисплея и кнопка для
просмотра состояния. Более подробно об этих кнопках будет написано
позже. Подсветка дисплея изображена условно в виде светодиода LED3. Так же есть системный светодиод LED2, он служит для индикации при получении пакета данных.
Микроконтроллер работает от внешнего кварца с частотой 11059200 Гц, поэтому при прошивке микроконтроллера не забудьте выставить соответствующие фьюзы.
Помимо
всего прочего в схеме используется АЦП: для питания устройства я
использовал литий-ионный аккумулятор. И для того чтобы знать уровень
заряда аккумулятора, напряжение с него снимается через резисторный
делитель R9-R10. Подстроечник RREF необходим для более точной подстройки
напряжения выводимого на дисплее. В питании АЦП стоит стандартный
фильтр на керамическом конденсаторе и дросселе C1-L1 как советует
даташит.
Плата
разведена на двухстороннем текстолите, получилось довольно компактно в
то же время при изготовлении платы и пайки проблем не возникает
"Тарелка" в верхней части платы это пьезодинамик, под него на плате специально место не выводил. Просто случайно попался мне на глаза и решил его применить. Припаял прямо на проводках, жесткость проводков МГТФ-0,6 хватило для надежной его фиксации. Подключается напрямую к PortC.2 (на схеме не показано). Динамик озвучивает момент включения и навигацию по настройкам. В общем, с ним веселей.
С
обратной стороны небольшое количество дорожек, никаких компонентов. И
аккумулятор, он у меня 1в1 по размерам платы. Поэтому после склеивания
платы с аккумулятором термоклеем получилось довольно-таки практично Контактные площадки под дисплеем - это контакты для программирования.
Чем заряжать Li-Ion аккумулятор?
В
качестве контроллера заряда для литий-ионного аккумулятора я выбрал
недорогой MCP73831T со встроенным индикатором окончания зарядки. Красным
обведена схема отвечающая за подзарядки аккумулятора (на схеме она
обведена пунктиром). Поэтому если при повторении не планируется
использование аккумулятора, эту часть схемы можно не собирать.
В даташите на MCP73831Tесть график, показывающий зависимость зарядного тока от резистора R3
При сопротивлении резистора 2кОм MCP73831T работает
на максимальном токе и начинает поджариваться - надо предусматривать
отвод тепла. Не стал рисковать и уменьшил ток заряда до ~180мА, впаяв
резистор на 5,1кОм.
Светодиод LED1 горит в процессе зарядки, при окончании - гаснет.
Ну
а теперь ради чего все затевалось - автономный минитерминал. На дисплей
в основном режиме выводятся данные, приходящие по UART. В нижней
строчке отображается номер принятого пакета. Второй пришедший пакет
выведется во второй строке, и так далее. Дойдя до пятой строки старые
данные будут сдвигаться вверх, ну тут все стандартно.
Подсветка
включается/выключается по нажатию на среднюю кнпоку: нажали один раз -
включили подсветку, нажали второй раз - выключили.
При
нажатии на крайнюю правую кнопку появится информационное окно, в котором
будет уровень напряжения на аккумуляторе и выбранная скорость работы
UART (baudrate). Если напряжение, выводимое на дисплей, отличается от
действительного, просто крутим подстроечник RREF. Это информационное окошко будет отображаться пока нажата кнопка. Если,
не отпуская крайней правой кнопки, нажать среднюю - появится
возможность изменить скорость работы порта (по умолчанию, сразу после
программирования скорость порта составляет 4800 бод) Всего доступно 5
скоростей: 4800, 9600, 19200,38400 и 115200 бод. Выбранная скорость сохраняется в энергонезависимой EEPROM, поэтому не придется каждый раз после включения заниматься перенастройкой. Пробовал принимать данные на всех скоростях, проблем не возникло. Снять и показать видео работы не получилось, к сожалению снять в приличном качестве нечем. Что
касается возможности терминала не принимать, а отправлять данные. То
это не предусмотрено, ну по крайней мере пока. Так как такой
необходимости я не испытывал, но если что, можно добавить режим работы и
на передачу - в памяти есть еще свободных 18%
|