Найти тему
Паяльник

Мини-панель приборов на дисплее LCM12864 и ATmega64

Предлагаю всем желающим собрать новую, более модернизированную версию устройства , которая теперь включает в себя следующие функции:

  • индикации текущего времени с применением более точной микросхемы RTC DS3231 (на Ali )
  • измерения температуры двигателя с помощью датчика PT-100 (на Ali )
  • измерения температуры окружающего воздуха с помощью DS18B20 или с помощью датчика температуры, встроенного в микросхему реального времени
  • измерения напряжения бортовой сети (со шкалой) 7 - 16В
  • измерения частоты вращения коленчатого вала двигателя (со шкалой) 300 - 9900 об/мин
  • измерения скорости движения 0 - 255 км/ч
  • одометры: суточный с возможностью сброса, и общий; запись в энергонезависимую память микроконтроллера

Шрифты, отображающие температуру и обороты двигателя увеличены, а часов - уменьшены.

Так же устройство имеет дополнительные функции, такие как

  • автоматическая смена яркости подсветки дисплея в зависимости от внешнего освещения (более плавная по сравнению с предыдущей версией устройства)

звуковые и визуальные:

  • индикация включенных указателей поворота
  • предупреждение о слишком низком или недопустимо высоком напряжениях бортовой сети
  • предупреждение о перегреве двигателя
  • есть возможность отключить звук

настройки:

  • программная калибровка вольтметра
  • установка верхнего и нижнего порогов предупреждений для контроля напряжения бортовой сети
  • установка порога предупреждения о перегреве двигателя
  • настройка параметров "длина окружности колеса" и "кол-во магнитов" для датчика скорости мотоцикла; для автомобильного датчика "длина окружности колеса" устанавливается 100 см, а "кол-во магнитов" - количество импульсов на 1 метр
  • установка значения "импульс/оборот" для тахометра, и возможность указать максимальные обороты, при которых шкала будет полностью заполнена
  • установка уровня яркости подсветки для дневного и ночного времени

Для настроек и управления добавлена 3-я кнопка "—", уменьшающая параметр. Добавлен быстрый перебор устанавливаемого параметра при длительном удержании кнопки. Печатная плата разведена под размер дисплея и его контакты, а питание устройства и входные сигналы выведены на одну сторону платы.

-2

Схема уже довольно большая, но на самом деле ничего сложного в ней нет.

-3

Основа - микроконтроллер ATmega64, вывод информации - графический дисплей 128х64 точек с контроллером KS0108 и звуковой излучатель типа 1212FXP обязательно со встроенным генератором. Питание цифровых элементов - на стабилизаторе 7805, микроконтроллер питается отдельно (линия U1_VCC) через диод Шоттки D2, и в момент отключения питания от бортовой сети, срабатывает детектор выключения на R1 и R2 - программа обработки прерывания INT5 записывает значения одометров в энергонезависимую память. В это время микроконтроллер питается энергией, накопленной конденсатором C4. Все остальное - обработка входящих сигналов транспортного средства, кратко о них в статье предыдущей версии. JP1 - джампер переключения в режим программирования - во время прошивания МК вывод PEN нужно подтянуть к GND. Разъём J1 ISP - для внутрисхемного программирования. Фьюзы выставляются следующим образом:

-4

По фьюзам хочу дать совет тем, кто мало знаком или впервые работает с AVR микроконтроллерами. Чтобы не "запороть" камень, в любой программе (PonyProg , Khazama AVR Programmer и т.п.), делается так: сначала считываем фьюзы, смотрим, отмечен ли SPIEN галочкой; если да, то фьюзы ставим как на картинке в статье, если нет - выставляем инверсно. Правильно собранная схема с прошитым микроконтроллером в настройке не нуждается и запускается сразу. Разве что нужно покрутить RV1 для установки контрастности дисплея и RV2 для калибровки датчика температуры двигателя. Для этой цели был выбран датчик PT-100, - стоит он недорого, позволяет измерять, в отличие от DS18B20, температуры более +125°С и выглядит примерно так:

-5

Измерение температуры окружающего воздуха (или если кому надо - внутри салона) может осуществляться двумя способами: с помощью встроенного в микросхему часов датчика или внешнего DS18B20. Чтобы измерять датчиком из DS3231, на разъем ISP нужно поставить перемычку (джампер) как на фотографии, подтянув линию TEMP_SENS к GND. Для измерения цифровым внешним датчиком, его нужно подключить к тому же разъему программирования (ISP) согласно полярности (VCC, GND), а линию TEMP_SENS (на ISP она совпадает с MOSI) к выводу DQ датчика.

-6

Печатная плата изготавливается из двухстороннего фольгированного текстолита.

Кнопки располагаются на отдельной плате со шлейфом и разъемом для подключения:

-10

Управление осуществляется следующим образом. В основном режиме:
- кнопка M/SEL/
HR при длительном удержании вводит устройство в режим установки времени - часы устанавливаются этой же кнопкой, минуты - ENT/+/MIN .
- кнопка ENT/+/MIN при коротком нажатии сбрасывает суточный одометр, но не сразу. На месте счетчика появляется вопрос "Сброс?", подтверждаем кнопкой M/SEL/HR. Если не подтвердить, то через 3-4 секунды устройство вернется в нормальный режим. Общий одометр сбросить кнопками нельзя. Если нужно обнулить или выставить начальное значение пробега, надо считать программатором EEPROM из микроконтроллера, общий пробег содержится в 4-х байтах, начиная с 16-й ячейки (выделено красным):

-11

При этом они расположены от младшего к старшему. То есть если брать пример с картинки выше, в красном прямоугольнике записано число 01 6A (00 00 01 6A) в шестнадцатеричном формате, что соответствует десятичным 362 км пробега. Редактируем считанный файл  EEPROM, выставляя нужный пробег. Прошиваем. 
- кнопка "
" при коротком нажатии включает-выключает звук на устройстве. При выключенном звуке справа от часов появляется значок перечеркнутого динамика.

Чтобы попасть в меню настроек, нужно произвести включение устройства с зажатой кнопкой M /SEL/HR:


 
   выбор пункта осуществляется той же кнопкой M/SEL /HR
   вход в выбранный пункт - с помощью ENT /+/MIN
   установка параметра с помощью ENT/+ /MIN и "— "
   выбор пункта осуществляется той же кнопкой M/SEL /HR    вход в выбранный пункт - с помощью ENT /+/MIN    установка параметра с помощью ENT/+ /MIN и "— "

При первом входе в меню некоторые значения могут быть 255 или 65535 - это следствие того, что ячейки энергонезависимой памяти еще пусты. Нужно установить адекватные параметры настроек и выйти из меню выбрав пункт "Сохранить и выйти".

К статье прикреплены 2 архива. Первый содержит прошивки для версий устройства со спидометром-одометром и без них, проект Proteus , файл печатной платы в формате LAY . Второй содержит прошивку, печатную плату и проект для этого же устройства, только с дисплеем разрешением 192x64 точек. Места на нем предостаточно, поэтому шкала и цифры тахометра и скорости, заметно больше:

-13

В ближайшее время планирую добавить функцию измерения уровня топлива с калибровкой - для этого на платах устройств уже зарезервированы входы на незадействованные половины операционных усилителей.

Скачать список элементов (PDF)

Прикрепленные файлы: