Бортовой компьютер на AVR микроконтроллере

В данной статье я опишу создание мною простого бортового компьютера для автомобиля или мотоцикла. Никаких экзотических функций устройство не содержит, но зато в нём есть часы, термометр и вольтметр. Основа, это AVR микроконтроллер ATmega8 с восьми килобайтами флеш память, этого нам как раз достаточно. Часы реализованы на специальной микросхеме (часов реального времени RTC) DS1307, это позволяет идти часам очень точно довольно длительное время, даже тогда когда устройство выключено. Но конечно для работы микросхемы DS1307 требуется дополнительное питание 3 вольта, например батарейка CR2032. Датчик для термометра взял DS1820 работающий по интерфейсу 1-Wire. Все данные выводятся на ЖК индикатор WH1602 на контроллере HD44780. Итак, для сборки устройства понадобятся следующие радиодетали:

1. Микроконтроллер Atmega8 — 1шт.
2. Микросхема DS1307 — 1шт.
3. Датчик DS1820 — 1шт.
4. Панелька DIP-8 — 1шт.
5. Панелька DIP-28 — 1шт.
6. Микросхема LM7805 — 1шт.
7. Микросхема LM7809 — 1шт. 
8. Тактовые кнопки — 4шт.
9. Кнопки с фиксацией положения — 2шт.
10. Кварц 14.3 МГц — 1шт.
11. Кварц часовой 32768 Гц — 1шт.
12. Конденсатор керамический 22 пф — 2шт.
13. Конденсатор керамический 100 нф — 4шт.
14. Транзистор КТ315 — 2шт.
15. Конденсатор электролитический 100 мкф — 1шт.
16. Конденсатор электролитический 47 мкф — 2шт. 
17. Диод 1N4001 — 1шт.
18. Подстроечный резистор 20 кОм — 2шт.
19. Резистор 1 кОм — 2шт.
20. Резистор 10 кОм — 2шт.
21. Резистор 4,7 кОм — 3шт.
22. Резистор 100 кОм — 1шт. 
23. Резистор 20 Ом — 1шт.
24. Резистор 68 Ом — 1шт.
25. Динамик 0.2 Вт — 1шт.
26. ЖК индикатор WH1602 (на контроллере HD44780 или совместимом) — 1шт.
27. Текстолит — 1шт.
28. Корпус пластиковый — 1шт.
29. Отсек для батареек 2xAA — 1шт.
30. Батарея 1.5v AA — 2шт.

Принципиальная схема устройства:

Схема БК

Подстроечный резистор R4 устанавливает контрастность ЖК индикатора, а R12 подстраивает вольтметр до точного значения. Кварц Z2 на 14.3 МГц, его можно найти на старых материнских платах. Кнопка S1 — «Отмена», S2 — «Вниз», S3 — «Ок», S4 — «Вверх». Резистор R3 подтягивает Reset микроконтроллера к плюсу питания чтобы предотвратить случайный сброс. Резисторы R1, R2 и R7 также подтягивают порты микроконтроллера к плюсу питания. Керамические конденсаторы C1 и C2 нужны для стабильной работы кварца Z2. Я собрал устройство на двух печатных платах, на одной содержатся микросхемы LM7805 и LM7809, на другой, всё остальное. Платы рисовал в программе SprintLayout 4.0 и изготавливал с помощью ЛУТ. Вот готовая плата покрытая сплавом розе:

DSC04518.jpg

Плата с запаянными на ней деталями:

DSC04523.jpg

С обратной стороны:

DSC04521.jpg

Все потроха собрал в корпус, в итоге получилось красиво и компактно.

DSC04529.jpg

Фото готового бортового компьютера (вид спереди):

Фото БК

 Фото готового бортового компьютера (вид сзади): 

DSC04532.jpg

Для удобства, спереди я разместил только ЖК индикатор и кнопки управления S1, S2, S3 и S4. Разъём, кнопки включения устройства и выключения звука, подстроечный резистор R12 я разместил сзади корпуса. Прошивку для микроконтроллера писал в среде BASCOM-AVR (исходник прилагается), микроконтроллер прошивал программатором USBtiny с помощью программы SinaProg. После прошивки микроконтроллера нужно установить следующие фьюз-биты:

Фьюзы

Правильно собранное и прошитое устройство запускается сразу, и не требует настройки, разве что, точной подстройки вольтметра и настройки часов. Из дополнительный функций присутствует регулировка яркости ЖКИ и часовой бипер (часы подают сигнал в начале каждого часа). При включении устройства на ЖКИ появляется заставка и плавно загорается подсветка индикатора, потом появляется главный экран, где отображается время, дата, температура и напряжение. Если в это время нажать кнопку S3 то вы войдёте в меню настройки времени, S2 — в информационную вкладку, где написана информация о версии устройства и его авторе, S4 — в меню настройки яркости ЖКИ и управления часовым бипером. Кнопка S1 возвращает обратно, на главный экран. Наглядно посмотреть, как управлять устройством вы можете на видео:

В файлах к статье есть исходники программы, прошивка, проект в программе Proteus.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 Часы реального времени (RTC) DS1307 1
IC2 МК AVR 8-бит ATmega8 1
VR1 Линейный регулятор LM7805CT 1
VR2 Линейный регулятор LM78L09 1
VT1, VT2 Биполярный транзистор КТ315Б 2
VD1 Выпрямительный диод 1N4001 1
Z1 Кварц 32768 Гц 1
Z2 Кварц 14.3 МГц 1
C1, C2 Конденсатор 22 пФ 2 Керамические
C3-C5, C8 Конденсатор 100 нФ 4 Керамические
C6, C7 Электролитический конденсатор 47мкФ 16В 2
C9 Электролитический конденсатор 100мкФ 35В 1
R1, R2, R7 Резистор 4.7 кОм 3
R3, R10 Резистор 10 кОм 2
R4, R12 Подстроечный резистор 20 кОм 2
R5 Резистор 20 Ом 1
R6, R9 Резистор 1 кОм 2
R8 Резистор 68 Ом 1
R11 Резистор 100 кОм 1
LCD LCD-дисплей WH1602 1 На контроллере HD44780
Датчик темпратуры DS1820 1
Панелька DIP-8 1
Панелька DIP-28 1