Предлагаю всем желающим собрать новую, более модернизированную версию устройства, которая теперь включает в себя следующие функции:
- индикации текущего времени с применением более точной микросхемы 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. Второй содержит прошивку, печатную плату и проект для этого же устройства, только с дисплеем разрешением 192x64 точек. Места на нем предостаточно, поэтому шкала и цифры тахометра и скорости, заметно больше:
В ближайшее время планирую добавить функцию измерения уровня топлива с калибровкой - для этого на платах устройств уже зарезервированы входы на незадействованные половины операционных усилителей. Прошивки обязательно добавлю в эту статью.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
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 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Комментарии (17) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
Для дисплея 128х64 будет прошивка как для 192х64? На второй расположение спидометра и тахометра более удачное.
Если автору интересно первое впечатление о прошивке 192х64 на тему восприятия показаний, то:
1. Температуру двигателя можно уменьшить вместе со значком. И передвинуть немного к температуре воздуха?
2. Суточный километраж можно убрать. Он пусть записывается, но посмотреть его можно в меню.
3. К одометру добавить надпись КМ. А то не понятно что это.)
4. Может не 9900 об/мин, а 15000 об/мин максимум? Ну пожалуйста.
Я не из вредности пишу что изменить. Хочу помочь автору. Считаю, что эти изменения сделают показания более различимыми.
Как вариант улучшения, попробовал бы увеличить размер шрифта для скорости за счёт удаления или уменьшения иконки аккумулятора и сдвигания температурной линейки в право. Хотя не уверен, что станет лучше. Надписи "км" тут не нужны, только места украдут, а толку никакого, всё и так ясно. И суточный километраж для меня, например, более интересен, чем общий пробег, который по сути нужен, что бы не прозевать очередное тотехобслуживание.
Автору спасибо за труды.
[Автор]
Операционный усилитель питается от не стабилизированного 12V? Что помешало запитать от напряги питания МК 5V? Есть операционный усилитель типа OPA348 Rail-to-rail input/output, нет?
Зачем вообще нужны инверторы с триггерами Шмитта? Напрямую, через резистор и защитный диод к МК, нет?
[Автор]
Зачем вообще нужен диод D2? Как резистор? От переплюсовки, на разведенной плате?
На мой взгляд совершенно не нужная деталь.
Стабилитроны в принципе прокатят, как защитные, но обычно ставят, резистор в последку и обычные диоды к + и корпусу. (смотрите, как внутри МК делают защиту). Относительно корпуса, в + и - будет защищать, а не, как у вас только в +.
[Автор]
Действительно можно и не ставить. Это скорее остаток от предыдущих схем. А защиту от переполюсовки и удобство подключения сделать разъемом, типа такого
(На выходе не удавалось получить максимально нужное напряжение 5V.) - МК нужно относительное значение, от 1V до 3V в этом диапазоне вполне достаточно чтоб рассчитать температуру - не обязательно брать на всю катушку.
(Тахометр прыгал и бесился.) Откуда снимали с датчика холла?
[Автор]
Да, с датчика вращения коленвала (я не знаю, холл там или индуктивный)
[Автор]
Да и еще! В будущем Вы собираетесь задействовать свободный елемент операционного усилителя под уровень топлива, я бы Вам посоветовал задействовать под давление масла в двигателе.