Предлагаю всем желающим собрать новую, более модернизированную версию устройства, которая теперь включает в себя следующие функции:
- индикации текущего времени с применением более точной микросхемы RTC DS3231 (на Ali)
- измерения температуры двигателя с помощью датчика PT-100 (на Ali)
- измерения температуры окружающего воздуха с помощью 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:
выбор пункта осуществляется той же кнопкой M/SEL/HR
вход в выбранный пункт — с помощью ENT/+/MIN
установка параметра с помощью ENT/+/MIN и «—«
При первом входе в меню некоторые значения могут быть 255 или 65535 — это следствие того, что ячейки энергонезависимой памяти еще пусты. Нужно установить адекватные параметры настроек и выйти из меню выбрав пункт «Сохранить и выйти».
К статье прикреплены 2 архива. Первый содержит прошивки для версий устройства со спидометром-одометром и без них, проект Proteus, файл печатной платы в формате LAY. Второй содержит прошивку, печатную плату и проект для этого же устройства, только с дисплеем разрешением 192×64 точек. Места на нем предостаточно, поэтому шкала и цифры тахометра и скорости, заметно больше:
В ближайшее время планирую добавить функцию измерения уровня топлива с калибровкой — для этого на платах устройств уже зарезервированы входы на незадействованные половины операционных усилителей. Прошивки обязательно добавлю в эту статью.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATmega64A | 1 | |||
U2 | Часы реального времени (RTC) | DS3231 | 1 | Корпус SOIC-16 | ||
U3 | Операционный усилитель | LM358 | 1 | |||
U4 | Линейный регулятор | L7805AB | 1 | L7805C2T, L7805AB2T | ||
U5 | Датчик температуры | DS18B20 | 1 | |||
U6 | Вентиль | CD4093B | 1 | Корпус DIP-14 | ||
LCD1 | LCD-дисплей | LCM12864 | 1 | С контроллером KS0108 | ||
Q1, Q2 | Биполярный транзистор | PMBS3904 | 2 | |||
D1 | Стабилитрон | BZV55C5V1 | 1 | |||
D2 | Диод Шоттки | 1N5819 | 1 | |||
D3 | Диод Шоттки | SK24 | 1 | |||
D4, D6, D7 | Стабилитрон | BZV55C4V7 | 3 | |||
D5 | Выпрямительный диод | 1N4148 | 1 | |||
X1 | Кварцевый резонатор | 12MHz | 1 | |||
LS1 | Звуковой излучатель | 1212FXP | 1 | 12V со встроен. генератором | ||
BAT1 | Батарейка | CR2032 | 1 | |||
Держатель для батареек | CR2032 | 1 | ||||
Кнопка тактовая | IT-1102w | 3 | ||||
R1 | Резистор | 7,5 кОм | 1 | Все резисторы SMD 1206 или 0805 | ||
R2 | Резистор | 2.7 кОм | 1 | |||
R3, R7, R9, R10 | Резистор | 4.7 кОм | 4 | |||
R4 | Резистор | 22 кОм | 1 | |||
R5 | Резистор | 3.3 кОм | 1 | |||
R6, R12, R19, R28 | Резистор | 1 кОм | 4 | |||
R8, R11, R15, R18, R24, R25 | Резистор | 10 кОм | 6 | |||
R13, R21 | Резистор | 200 Ом | 2 | |||
R14 | Резистор | 15 кОм | 1 | |||
R16 | Резистор | 22 Ом | 1 | |||
R17 | Резистор | 30 кОм | 1 | |||
R20 | Резистор | 47 кОм | 1 | |||
R22 | Резистор | 500 кОм | 1 | GL5516 фоторезистор | ||
R23 | Резистор | 470 кОм | 1 | |||
R26, R27 | Резистор | 100 кОм | 2 | |||
RV1 | Подстроечный резистор | 10 кОм | 1 | |||
RV2 | Подстроечный резистор | 2 кОм | 1 | |||
С1-С3, С6, С7, С9, С10, С15, С16 | Конденсатор | 0.1 мкФ | 9 | SMD конденсаторы 1206 или 0805 | ||
С4 | Конденсатор | 1000 мкФ x 6.3 В | 1 | |||
С5 | Конденсатор | 220 мкФ x 16 В | 1 | |||
С8 | Конденсатор | 100 мкФ x 6.3 В | 1 | |||
С11, С12 | Конденсатор | 22 пФ | 2 | |||
C13, C14 | Конденсатор | 0.33 мкФ | 2 | |||