Реклама ⓘ
Главная » Электроника для авто
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Модернизация бортового компьютера на ATmega8

После публикации статьи Бортовой компьютер (часы, двухканальный термометр, вольтметр на 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-дисплейWH16021 С подсветкойПоиск в магазине ОтронВ блокнот
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 СтабилитронBZV55C5V11 Корпус 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 мкФ х 10B1 Поиск в магазине ОтронВ блокнот
BAT1 БатарейкаCR20321 Поиск в магазине ОтронВ блокнот
LS1 Излучатель звуковойKC-12011 Без встроенного генератораПоиск в магазине ОтронВ блокнот
Тактовая кнопкаIT-1102w4 SMDПоиск в магазине ОтронВ блокнот
Добавить все

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

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

Теги:

Опубликована: Изменена: 06.07.2016 0 8
Я собрал 5 6
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 6 чел.

Комментарии (389) | Я собрал (0) | Подписаться

0
Илья #
Получается в прошивки в упрощенной калибровкой , будет показывать только те значение на которых была калибровка?
Ответить
0

[Автор]
u33 #
Кто вам такое сказал? Будет показывать каждый литр.
Ответить
0
Илья #
Здраствуйте, я немного запутался, на прошивке с упрощённой калибровкой, нужно также выходное напряжение на ОУ выставлять? И когда на ноль выставляешь при пустом баке также заливать бензин пока значения не появится?
Ответить
0
anubios #
Здраствуйте, повторил устройство , залил прошивку с упр. калибровкой, все работает но про езде на кочках или чуть неровность показания сильно прыгают, инверсию от 1 до 10 пробовал все равно прыгают, может ДУТ виноват? Авто ваз 2109
Ответить
0
Максим #
Поделитесь, пожалуйста, схемкой подключения реле управления вентилятора
Ответить
0
Сергей #
А можно в прошивке убрать топливо и вольтметр сделать по середине?
Ответить
0

[Автор]
u33 #
Могу сделать за небольшую оплату. Пишите в ЛС.
Ответить
0
Сергей #
Добрый день. Работало хорошо. Потом лежало без дела пол года, решил проверить, без батарейки работает правильно, но когда вставляешь батарейку, часы показывают ересь, вольты не меняются, вкл/выкл сама пищалка, работает только температура. Достаешь батарейку, все норм.
Ответить
0
Oleg Euphimovich #
Как данное устройство получает питание?
И будет ли отличаться подключение к автомобилю или электромобилю?
Ответить
0
partizana #
Подскажите датчик топлива от нивы на 12в сюда подойдёт или нужно что-то перепаивать? Характеристики оставляю в фото
Прикрепленный файл: Screenshot_20230112_231641_com.android.chrome.jpg
Прикрепленный файл: Screenshot_20230112_231646_com.android.chrome.jpg
Ответить
0
partizana #
А кто куда подключал датчики температуры и топлива, у меня на приборку по 1 проводу идет, я так понял на температуру на центральный кидать а топливо на тот что ближе к зумеру, правильно?
Ответить
0
Dan #
Добрый день, все отлично работает. А можно Выложить исходник кода и некоторые его блоки обозначить, за что они отвечают? Было бы очень удобно
Ответить
«234
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Паяльная станция Hakko 936
Паяльная станция Hakko 936
Модуль измерения тока на ACS712 (30А) Паяльник с регулировкой температуры
вверх