Предлагаю всем желающим собрать новую, более модернизированную версию устройства , которая теперь включает в себя следующие функции:
- измерения температуры окружающего воздуха с помощью DS18B20 или с помощью датчика температуры, встроенного в микросхему реального времени
- измерения напряжения бортовой сети (со шкалой) 7 - 16В
- измерения частоты вращения коленчатого вала двигателя (со шкалой) 300 - 9900 об/мин
- измерения скорости движения 0 - 255 км/ч
- одометры: суточный с возможностью сброса, и общий; запись в энергонезависимую память микроконтроллера
Шрифты, отображающие температуру и обороты двигателя увеличены, а часов - уменьшены.
Так же устройство имеет дополнительные функции, такие как
- автоматическая смена яркости подсветки дисплея в зависимости от внешнего освещения (более плавная по сравнению с предыдущей версией устройства)
звуковые и визуальные:
- индикация включенных указателей поворота
- предупреждение о слишком низком или недопустимо высоком напряжениях бортовой сети
- предупреждение о перегреве двигателя
- есть возможность отключить звук
настройки:
- программная калибровка вольтметра
- установка верхнего и нижнего порогов предупреждений для контроля напряжения бортовой сети
- установка порога предупреждения о перегреве двигателя
- настройка параметров "длина окружности колеса" и "кол-во магнитов" для датчика скорости мотоцикла; для автомобильного датчика "длина окружности колеса" устанавливается 100 см, а "кол-во магнитов" - количество импульсов на 1 метр
- установка значения "импульс/оборот" для тахометра, и возможность указать максимальные обороты, при которых шкала будет полностью заполнена
- установка уровня яркости подсветки для дневного и ночного времени
Для настроек и управления добавлена 3-я кнопка "—", уменьшающая параметр. Добавлен быстрый перебор устанавливаемого параметра при длительном удержании кнопки. Печатная плата разведена под размер дисплея и его контакты, а питание устройства и входные сигналы выведены на одну сторону платы.
Схема уже довольно большая, но на самом деле ничего сложного в ней нет.
Основа - микроконтроллер ATmega64, вывод информации - графический дисплей 128х64 точек с контроллером KS0108 и звуковой излучатель типа 1212FXP обязательно со встроенным генератором. Питание цифровых элементов - на стабилизаторе 7805, микроконтроллер питается отдельно (линия U1_VCC) через диод Шоттки D2, и в момент отключения питания от бортовой сети, срабатывает детектор выключения на R1 и R2 - программа обработки прерывания INT5 записывает значения одометров в энергонезависимую память. В это время микроконтроллер питается энергией, накопленной конденсатором C4. Все остальное - обработка входящих сигналов транспортного средства, кратко о них в статье предыдущей версии. JP1 - джампер переключения в режим программирования - во время прошивания МК вывод PEN нужно подтянуть к GND. Разъём J1 ISP - для внутрисхемного программирования. Фьюзы выставляются следующим образом:
По фьюзам хочу дать совет тем, кто мало знаком или впервые работает с AVR микроконтроллерами. Чтобы не "запороть" камень, в любой программе (PonyProg , Khazama AVR Programmer и т.п.), делается так: сначала считываем фьюзы, смотрим, отмечен ли SPIEN галочкой; если да, то фьюзы ставим как на картинке в статье, если нет - выставляем инверсно. Правильно собранная схема с прошитым микроконтроллером в настройке не нуждается и запускается сразу. Разве что нужно покрутить RV1 для установки контрастности дисплея и RV2 для калибровки датчика температуры двигателя. Для этой цели был выбран датчик PT-100, - стоит он недорого, позволяет измерять, в отличие от DS18B20, температуры более +125°С и выглядит примерно так:
Измерение температуры окружающего воздуха (или если кому надо - внутри салона) может осуществляться двумя способами: с помощью встроенного в микросхему часов датчика или внешнего DS18B20. Чтобы измерять датчиком из DS3231, на разъем ISP нужно поставить перемычку (джампер) как на фотографии, подтянув линию TEMP_SENS к GND. Для измерения цифровым внешним датчиком, его нужно подключить к тому же разъему программирования (ISP) согласно полярности (VCC, GND), а линию TEMP_SENS (на ISP она совпадает с MOSI) к выводу DQ датчика.
Печатная плата изготавливается из двухстороннего фольгированного текстолита.
Кнопки располагаются на отдельной плате со шлейфом и разъемом для подключения:
Управление осуществляется следующим образом. В основном режиме:
- кнопка M/SEL/HR при длительном удержании вводит устройство в режим установки времени - часы устанавливаются этой же кнопкой, минуты - ENT/+/MIN .
- кнопка ENT/+/MIN при коротком нажатии сбрасывает суточный одометр, но не сразу. На месте счетчика появляется вопрос "Сброс?", подтверждаем кнопкой M/SEL/HR. Если не подтвердить, то через 3-4 секунды устройство вернется в нормальный режим. Общий одометр сбросить кнопками нельзя. Если нужно обнулить или выставить начальное значение пробега, надо считать программатором EEPROM из микроконтроллера, общий пробег содержится в 4-х байтах, начиная с 16-й ячейки (выделено красным):
При этом они расположены от младшего к старшему. То есть если брать пример с картинки выше, в красном прямоугольнике записано число 01 6A (00 00 01 6A) в шестнадцатеричном формате, что соответствует десятичным 362 км пробега. Редактируем считанный файл EEPROM, выставляя нужный пробег. Прошиваем.
- кнопка "— " при коротком нажатии включает-выключает звук на устройстве. При выключенном звуке справа от часов появляется значок перечеркнутого динамика.
Чтобы попасть в меню настроек, нужно произвести включение устройства с зажатой кнопкой M /SEL/HR:
При первом входе в меню некоторые значения могут быть 255 или 65535 - это следствие того, что ячейки энергонезависимой памяти еще пусты. Нужно установить адекватные параметры настроек и выйти из меню выбрав пункт "Сохранить и выйти".
К статье прикреплены 2 архива. Первый содержит прошивки для версий устройства со спидометром-одометром и без них, проект Proteus , файл печатной платы в формате LAY . Второй содержит прошивку, печатную плату и проект для этого же устройства, только с дисплеем разрешением 192x64 точек. Места на нем предостаточно, поэтому шкала и цифры тахометра и скорости, заметно больше:
В ближайшее время планирую добавить функцию измерения уровня топлива с калибровкой - для этого на платах устройств уже зарезервированы входы на незадействованные половины операционных усилителей.
Скачать список элементов (PDF)