После публикации статьи Бортовой компьютер (часы, двухканальный термометр, вольтметр на ATmega8 и LCD 16х2) прошел уже почти год, и за это время я получил много писем с просьбами изменить прошивку под нужды пользователей. В основном нужно было добавить в устройство такие функции как предупреждения о низком уровне заряда аккумуляторной батареи, перегреве охлаждающей жидкости двигателя, измерение остатка топлива в баке. Но для одних напряжение на аккумуляторе, например, 11.9 В считается предельно низким, другие могут позволить разрядиться батарее до 10.7 В. Кто-то считает двигатель перегретым уже при 95°С, а кто-то при 105. Поэтому я решил добавить в схему устройства кнопки, организовать меню с настройками, чтобы каждый мог настроить БК под себя и теперь имеет следующие функции:
- индикация текущего времени
- измерение температуры двигателя
- измерение напряжения бортовой сети
- измерение остатка топлива в баке
Из дополнительных функций устройство имеет:
- установку порога предупреждения о перегреве (90 - 125°С)
- установку порога предупреждения о низком уровне заряда аккумуляторной батареи (10.0 - 12.0В)
- калибровку штатного датчика уровня топлива (0 - 70Л)
- установку инерционности индикации уровня топлива (2 - 10)
- установку порога предупреждения о низком уровне оставшегося топлива (1 - 20Л)
- настройку яркости подсветки дисплея
- возможность отключения звуковых предупреждений
Схема состоит из распространенных и недорогих радиоэлементов:
Как видно, предусмотрена защита от переполюсовки - диод SK24, вместо него можно поставить любой другой Шоттки или вообще его не ставить, если уверены, что при сборке однажды случайно неверно подадите питание, перепутав полярность. RV1 - подстройка измеряемого напряжения. RV2 - штатный датчик уровня топлива типа БМ150 сопротивлением 330 Ом при пустом баке. Про RV3 скажу чуть позже. RV4 устанавливает контраст дисплея.
Печатная плата:
На ней предусмотрен 6-пиновый разъём IDC-06 для внутрисхемного программатора USBASP, а так же штыревые разъёмы для подключения датчиков температуры и уровня топлива, разъём для подключения кнопок. В прикрепленном архиве есть файл в формате Sprint Layout, в котором подписаны все элементы.
Почти готовая плата:
При пайке элементов, для удобства, сначала нужно запаять все проводные перемычки, затем SMD компоненты, и только после этого - подстроечные резисторы, разъемы, отсек для батарейки, звуковой излучатель и дисплей. Прошиваем микроконтроллер внутрисхемным программатором. Фьюзы выставляются на тактирование от внутреннего RC генератора на 8МГц:
Будьте очень осторожны при прошивке фьюзов, потому что в некоторых программах-прошивалках их нужно выставлять инверсно. Чтобы избежать неверной расстановки чекбоксов, сначала считайте с МК фьюзы и посмотрите: если RSTDISBL не отмечен галочкой, то нужно расставлять как на картинке. Если отмечен, то фьюзы выставляются инверсно. По окончании прошивки, при правильно собранной схеме, устройство запускается от питания программатора, и раздаётся звуковой сигнал. Теперь нужно установить напряжение на выходе ОУ при пустом баке. Подаём питание 12 вольт. К плате подключается датчик уровня топлива (можно временно заменить на переменный резистор сопротивлением 330 Ом), устанавливается на максимальное сопротивление (бак пуст). С помощью RV3 на ноге ADC1 (PC1) микроконтроллера устанавливается напряжение ровно 5 вольт. Устройство готово:
Плата с кнопками:
Напишу как ими управлять. При основном экране (когда на дисплее отображаются все параметры) при нажатии кнопки MUTE/ESC включается/выключается звук предупреждений и звук нажатия кнопок. При этом на дисплей выводится соответствующая информация: - звук включен и - звук выключен. При нажатии кнопки HR/+ устанавливаются часы, при нажатии MIN/- - минуты. При нажатии MENU/OK на дисплее появляется основное меню. С помощью кнопок + и - выбираем нужный пункт меню:
При нажатии OK заходим в выбранный пункт.
1. Перегрев двигателя. Здесь кнопками + и - устанавливается порог температуры от +90 до +125°С , при которой устройство будет предупреждать о перегреве двигателя. После установки жмём OK, на месте значения темпратуры порога на секунду появляется надпись "Сохранено". Выходим, нажав ESC.
2. Разряд аккумулятора. В этом пункте устанавливается порог разряда аккумулятора от 10.0 до 12.0В так же как и в п.1.
3. Калибровка уровня топлива начинает производиться при пустом топливном баке автомобиля. На экране отображается следующая информация: количество залитого топлива, под ним значение АЦП для данного уровня, значение АЦП с датчика уровня топлива в настоящий момент.
Итак, бак пустой. Кнопками + и - устанавливаем "литры 0". Неспеша заливаем топливо до тех пор, пока не начнёт изменяться значение ADC. Жмём OK. Это будет нулевой уровень. Далее заливаем в бак 1 литр топлива, при этом значение ADC должно увеличиться, кнопкой + устанавливаем "литры 1". Жмём OK - в EEPROM МК записалось значение АЦП, соответствующее уровню 1 литр. Заливаем ещё литр топлива, кнопкой + устанавливаем "литры 2", нажимаем OK, и так до полного бака. После калибровки нужно перезагрузить устройство.
4. Инерция уровня топлива. Устанавливается количество измерений уровня топлива для вывода на дисплей усредненного значения. Устройство измеряет уровень топлива 1 раз в секунду. Если, например, инерция имеет значение 5, то в программе в массив со сдвигом будут записываться данные 5-ти последних измерений, соответственно за 5 секунд (одно измерение - одна секунда), из этих измерений вычисляется среднее значение остатка топлива и выводится на дисплей. Управление кнопками аналогично п.1.
5. Низкий уровень топлива. Здесь устанавливаем порог предупреждения о низком уровне топлива от 1 до 20 литров. Как управлять кнопками, уже ясно.
6. Яркость дисплея. Я думаю, тут всё понятно.
Все установки записываются в энергонезависимую память микроконтроллера (EEPROM), за исключением звука - при запуске устройства звук всегда включен.
При переходе измеряемых параметров через установленные значения порогов, на дисплее начинает мерцать значение соответствующего параметра, и каждые 30 секунд раздаётся тройной звуковой сигнал.
В архиве "MBC_.rar" находятся проект Proteus, печатная плата в формате Sprint Layout, схема и 2 прошивки: одна для русифицированных дисплеев, вторая - для нерусифицированных (меню на английском языке). У меня дисплей оказался нерусифицированным, поэтому на видео меню на английском.
Исходники прошивок написаны в компиляторе Bascom AVR. Их можно приобрести на торговой площадке exDIY : архив с исходниками (содержит 6 исходников - основной, с переключением типов датчиков уровня и с выводом для подключения вентилятора - все русской и английской версии) и исходный код новой прошивки с упрощенной калибровкой ДУТ
Дополнение 29.11.2013 - добавил архив "Прошивки для датчиков 0л - 0Ом.rar" с прошивками для датчиков уровня топлива, у которых при пустом баке сопротивление 0 Ом.
Дополнение 17.12.2013 - добавлен архив "Исправленные прошивки.rar". Причина исправления - глюк индикации остатка уровня топлива при полном баке - на дисплей выводилось число 69 или 71. Если бак уже откалиброван, то перед тем как прошивать МК, не забудьте сначала отдельно прошить конфигурацию фьюзов, отметив EESAVE, иначе при заливке hex все данные о калибровке бака будут стерты.
27.12.2013 - обновил архив "Исправленные прошивки.rar". Исправлен недочет звуковых предупреждений о переходе через установленные пороги.
Дополнение 11.02.2014 - добавлен архив "Прошивки с переключением типов датчиков уровня топлива.rar". Описание внутри архива.
Дополнение 12.05.2014 - добавлен архив "Прошивки с управлением вентилятора.rar". Описание внутри.
Дополнение 9.03.2016 - добавлен архив с файлом печатной платы для DIP-компонентов от пользователя Sergio.
6.07.2016 - в статью добавлен архив с новыми прошивками "Прошивки с упрощенной калибровкой уровня топлива.rar". Описание внутри архива.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
LCD1 | LCD-дисплей | WH1602 | 1 | С подсветкой | Поиск в магазине Отрон | |
U1 | МК AVR 8-бит | ATmega8A-AU | 1 | Корпус TQFP-32 | Поиск в магазине Отрон | |
U2 | Датчик температуры | DS18B20 | 1 | Поиск в магазине Отрон | ||
U3 | Линейный регулятор | L7805AB | 1 | L7805AB2T | Поиск в магазине Отрон | |
U4 | Часы реального времени (RTC) | DS1307 | 1 | Корпус SO-8 | Поиск в магазине Отрон | |
U6 | Операционный усилитель | LM2904 | 1 | (LM358, LM258) Корпус SO-8 | Поиск в магазине Отрон | |
Q1, Q2 | Биполярный транзистор | PMBS3904 | 2 | Корпус SOT-23 | Поиск в магазине Отрон | |
D1 | Диод Шоттки | SK24 | 1 | Диод Шоттки | Поиск в магазине Отрон | |
D2 | Стабилитрон | BZV55C5V1 | 1 | Корпус SOD-80 | Поиск в магазине Отрон | |
X1 | Часовой кварц | 32768 Гц | 1 | Поиск в магазине Отрон | ||
R1-R3, R5, R8 | Резистор | 4.7 кОм | 5 | SMD 1206 | Поиск в магазине Отрон | |
R4 | Резистор | 24 кОм | 1 | SMD 1206 | Поиск в магазине Отрон | |
R6, R10, R12, R14 | Резистор | 1 кОм | 4 | SMD 1206 | Поиск в магазине Отрон | |
R7 | Резистор | 2.7 кОм | 1 | SMD 1206 | Поиск в магазине Отрон | |
R9, R11 | Резистор | 10 кОм | 2 | SMD 1206 | Поиск в магазине Отрон | |
R13 | Резистор | 22 Ом | 1 | SMD 1206 | Поиск в магазине Отрон | |
R15 | Резистор | 150 Ом | 1 | SMD 1206 | Поиск в магазине Отрон | |
Резистор | 0 Ом | 3 | SMD 1206 перемычка | Поиск в магазине Отрон | ||
RV1, RV4 | Подстроечный резистор | 10 кОм | 2 | Поиск в магазине Отрон | ||
RV3 | Подстроечный резистор | 1 кОм | 1 | Поиск в магазине Отрон | ||
C1-C5 | Конденсатор | 0.1 мкФ | 5 | 4хSMD 0806 и 1хSMD1206 | Поиск в магазине Отрон | |
C6 | Конденсатор | 470 мкФ х 16В | 1 | Поиск в магазине Отрон | ||
C7 | Конденсатор | 100 мкФ х 10B | 1 | Поиск в магазине Отрон | ||
BAT1 | Батарейка | CR2032 | 1 | Поиск в магазине Отрон | ||
LS1 | Излучатель звуковой | KC-1201 | 1 | Без встроенного генератора | Поиск в магазине Отрон | |
Тактовая кнопка | IT-1102w | 4 | SMD | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- MBC_.rar (292 Кб)
- Прошивки для датчиков 0л - 0Ом.rar (17 Кб)
- Исправленные прошивки.rar (34 Кб)
- Прошивки с переключением типов датчиков уровня топлива.rar (118 Кб)
- Прошивки с управлением вентилятора.rar (18 Кб)
- Печатная плата для DIP-компонентов от Sergio.rar (21 Кб)
- Прошивки с упрощенной калибровкой уровня топлива.rar (1127 Кб)
Комментарии (389) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
И будет ли отличаться подключение к автомобилю или электромобилю?