13.08.2018 17:35
Идея использовать штатный индикатор не нова, но описания примера подобной доработки я в сети не нашел. Поэтому описываю свой способ показать уровень газа в баке на индикаторе приборки.
При работе на бензине приборка показывает уровень бензина, после переключения на газ - показывает уровень газа.
Что нам понадобится:
1. Ардуино нано. Это мозг, который будет всем управлять и вычислять.
2. Двойной модуль реле, в котором можно выбрать нормально замкнутое состояние.
3. Ультразвуковой датчик hc-sr04.
4. Аналоговый переключатель adg1606 на 16 каналов
5. Один/два переходника ssop28 -> tsop28 для распайки adg1606, либо изготовить плату для его впайки уже с резисторами.
6. Кучка резисторов по списку номиналов. Желательна 1% точность, но подбирать придется все равно с мультиметром. Мощность не важна, можно брать 0,125 Вт.
7. Провода для ардуинки мама-мама ~20 шт
8. 2 метра провода 2 жилы, 2 метра провода 4 жилы.
9. Корпус примерно 100х55х40 или какого размера у вас получится сборка/сколько есть места куда спрячете устройство.
10. Опционально: радиатор на ардуинку; разъем питания для подключения ардуинки к питанию электроклапана на баллоне.
11. После установки провести замеры на пустом и полном баке в условных единицах, ввести полученные значения в скетч (все возможные случаи знаков +- и соотношения величин в нем уже учтены).
Ардуинку и датчики я заказывал в Китае, т.к. на месте по вменяемой цене не нашлось, а ADG1606 в Чип и Дипе. Рекомендую взять 2 ульразвуковых датчика, т.к. их надо будет подразобрать и приклеивать на суперклей снизу бака, а с первого раза это не просто сделать без демонтажа.
При изготовлении цель составить подробный фотоотчет не ставилась, поэтому фото какие есть.
Общий алгоритм действия: при переходе на газ и включении клапана на баллоне включается ардуинка, которая замеряет ультразвуковым датчиком уровень газа в условных единицах, вычисляет остаток в баке и число целых делений, которые надо отобразить на уровне топлива в приборке, устанавливает этот уровень путем включения соответствующего резистора.
Из электросхем видно, что в разъеме F09 нас интересуют пины 1 и 3. Именно в разрез этих проводов мы будем подключать наше реле и подставлять нужный резистор.
Так же из документации почерпнуто, что диапазон сопротивления штатного датчика составляет 6-203 Ом, при том 6-8 Ом - полный бак, 64-68 Ом - 1/2 бака, 197-203 Ом пустой бак.
Теперь распределим эти значения по рискам шкалы на приборной панели математически (все значения в Омах):
1 риска мигает - 203
1 риска - 180
2 риски - 157
3 риски - 134
4 риски - 111
5 рисок - 88
6 рисок - 66 //это среднее между 64-68
7 рисок - 55
8 рисок - 45
9 рисок - 35
10 рисок - 25
11 рисок - 15
12 рисок - 6
Как видим значения изменяются нелинейно, поэтому и был использован аналоговый переключатель, а не цифровой резистор.
Что у меня получилось в при практическом подборе сопротивления ~200-230 омным переменным резистором:
1 риска мигает - 225
1 риска - 186-170
2 риски - 163-120
3 риски - 110-100
4 риски - 90
5 рисок - 73
6 рисок - 65
7 рисок - 50
8 рисок - 40
9 рисок - 34
10 рисок - 28
11 рисок - 22
12 рисок - 15-6
Для чего получилось - определил диапазон, при котором все еще отображается заданная риска.
!NB Имейте ввиду, что ADG1606 имеет собственное сопротивление включенного канала в 5 Ом!
Кроме того не лишне замерить сопротивление проводов от врезки до реле, чтобы учесть и его.
Общее сопротивление должно быть согласно списку выше.
ADG1606 нужно подключить к питанию и земле на ардуине. Я использовал пин Vin и GND, куда приходил + и масса с электроклапана.
Vdd подключать НУЖНО к + (тот же Vin), а Vss подключать к массе НЕ НУЖНО! У меня сложилось впечатление, что при подключении Vss к массе уровень на приборке глючит с удвоенной силой.
На практике 100% подтвердить это не удалось, но я оставил этот контакт не подключенным.
Чтобы не путаться, я к каналам 1-12 переключателя подключил соответствующие номиналы резисторов, а к 13 каналу подключил 225 Ом, что соответствует мигающей риске.
Получилось с одной стороны ADG1606, а с другой стороны все выводы резисторов спаяны в одно соединение.
Вот именно это соединение и вывод Drain мы подключаем разрыву в проводке у бензонасоса, идущему к приборке. Drain или общее соединение резисторов к 1 - не важно.
Оставшиеся 2 провода, идущие к штатному поплавку в бензиновом баке, мы заводим на нормально замкнутые контакты реле.
Таким образом когда питание на ардуину не подается, то реле не включено. Соответственно на приборке уровень бензина.
Ультразвуковой датчик нужно несколько модифицировать: снять металлические экраны, от плоской повержности оторовать V-образные конусы, по желанию поместить в термоусадку.
Датчик клеть на Момент гель СНИЗУ бака и НЕ с той стороны, где располагается мультиклапан и поплавок. Клеить на РОВНУЮ часть бака подальше от закругления краев (у меня бак тороидальной формы).
После того, как все смонтировано, приклеено и собрано обратно, необходимо узнать значения, которые выдает датчик на полностью пустом и полностью полном баке газа.
Для этого в стандартной IDE ардуины надо зайти в монитор порта и посмотреть выдаваемые раз в 10 секунд значения.
Возьмите штук 10, усредните их и получите искомое, которое запишите в переменную USTankEmpty для пустого бака и USTankFull для полного бака.
Вот и все! В приложении скетч, даташит на ADG1606, выдержки из электросхем и фото.
Кому что интересно/непонятно - спрашивайте.
П.С.
Схема у меня работает достаточно стабильно.
Что замечено: индикатор на приборке может зависнуть на каком-то значении при переключении бензин/газ, т.к. бортовой комп не ожидает резкого изменения уровня (дозаправки/расхода) при включенном двигателе.
Еще бортовой комп может при включении зажигания (как до старта движа на бензе так и после) может показывать предыдущий уровень топлива "запомненный" им.
Лечатся оба случая перключанием газ/бензин/газ или в комбинации с выключением зажигания. Тут я не могу подсказать в чем причина.
На практике замечено, что при питании ардуинки от USB порта почему-то неправильно отображаются риски на шкале приборки. Например я задал показывать 10 рисок, а фактически показывается 8,
при этом от питания через пин Vin и GND все работает как и должно - показывает 10.
При реализации идеи решено не использовать датчики уровня газа, которые прикручиваются на мультиклапан, т.к. посмотрев фото их плат в сети я пришел к выводу, что сопротивление у них изменяется дискретно по их собственному набору рисок.
Так же (возможно пока), я отказался от использования магнитных датчиков угловой координаты типа KMA200, KMA210, т.к. мне было интересно ипользовать ультразвуковой сонар. Может быть позже появится вариант с их ипользованием.
Скетч:
Текст скрыт - нет доступа
Даташит:
Текст скрыт - нет доступа
Электрические схемы:
Hyundai Solaris - Жгут проводов пола - Виды разъемов
Hyundai Solaris - Измерители и указатели - Подсветка Supervision