Подключение NANO к бортовой сети автомобиля

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

Всех приветствую! Попробую создать отдельную тему, т.к. вопросов накопилось много. Надеюсь вы мне поможете дельными советами, т.к. технический прогресс ушел далеко вперед, а мои познания в электротехнике остались в девяностых годах на уровне детекторных приемников. Мне необходимо считывать контрольные показания с трех датчиков (точнее определить когда показания датчиков выходят за определенный порог): педали газа, датчика скорости, концевика салонной двери. 

Черным цветом отмечены радиодетали необходимость которых у меня не вызывает сомнений, так как похожие реализации применены в автомобильном контроллере, приборной панели и бортовом компьютере. Красным цветом обозначены детали в нужности которых я сомневаюсь. Зеленом цветом показаны штатные компоненты автомобильной электроники.

Проблема с аппаратной частью возникла из-за места установки (автомобильная бортовая сеть), которая обладает двумя особенностями. Первая – плавающее напряжение питания. Ввиду наличия термокомпенсации на генераторе, напряжение бортовой сети может меняться от 13В вплоть до 15В на холодном двигателе (при сильных морозах), а так же может просаживаться до 10В и меньше при заведении автомобиля. Вторая – в бортовой сети могут быть «всплески» (скачки напряжения) которые могут достигать 100В. Это обусловлено наличием нескольких десятков электромеханических реле (не всегда с шунтирующими диодами или резисторами) и большого количества коллекторных двигателей (от моторчика омывателя до электровентиляторов радиатора охлаждения и стартера).

Так как есть проблема ограниченного места на аппаратной плате, которая будет соразмерна плате NANO, то от откровенно лишних деталей хочется отказаться.

Теперь вопросы по конкретным реализациям аппаратной части.

1. Подключение к датчику педали газа (так называемая электронная педаль газа). Тут мне нужно определить когда она нажата, т.е. напряжение на датчике педали выше определенного порога. Датчик педали газа представляет из себя переменный резистор с дополнительными постоянными резисторами. Точнее он состоит из двух синхронизированных переменных резистора для самотестирования. Но данные естественно буду снимать только с одного.  На схеме для датчика педали зеленым цветом даны реально снятые показания сопротивлений с моего конкретного датчика. На датчик подается стабилизированное опорное напряжение +5 вольт от контроллера двигателя. Реальный диапазон выходных напряжений датчика 0,79..4,24В. Датчик будет подключен к аналоговому входу Ардуины. По идеи вполне достаточно его подключить напрямую. Никаких «всплесков» на этом входе быть не должно ввиду отдельного стабилизированного питания датчика. Но опять же в проводах идущих к ардуине могут (теоретически) возникать паразитные наводки со скачками больше 5 вольт.

Стабилитрон Vd1 должен защищать от всплесков.

Конденсатор С1 должен защищать от потери механической связи в механическом резисторе. Хотя может вносить некорректные показания в данные автомобильного контроллера, т.к. при «педалировании» будет происходить рассинхронизация напряжений снимаемых автомобильным контроллером с двух переменных резисторов педали газа.

Резистор R1 должен защищать от ошибочного подсоединения данного вывода напрямую к +12В.

Что из этого нужно, а чего можно отказаться, а что откровенно вредно?

 

2. Подключение к датчику скорости. Тут нужно определить когда частота датчика выше определенного порога. Датчик представляет из себя транзисторный ключ работающий от оптопары (в реальности с подтягивающим резистором 1,6кОм). Датчик будет подключен к цифровому входу Ардуины и отслеживаться по прерыванию на спад фронта.

Частота датчика меняется от 0 до 250гЦ, ну пусть даже до 300гЦ (соответствует 180км/ч).  Соответственно дает прямоугольные импульсы с амплитудой напряжения питания (+12В или 0В). Датчик будет подключен через делитель (R2 и R3) к цифровому входу ардуины.

Стабилитрон Vd1 должен защищать от всплесков, которые могут приходить на выход датчика скорости через его питание.

Конденсатор С1 должен сглаживать дребезг при смене фронта. Время RC (67% релаксации) равно 3,3нФ*47кОм = 155мкСек, что составляет 5% от периода (1/300=3300мкСек) или 10% от полупериода на максимальной частоте. Не знаю есть ли в этом смысл (подсмотрел в схеме бортового компьютера).

Резистор R1 должен обеспечить дополнительную подтяжку к +12В, если по какой то причине помрет штатная подтяжка в датчике, или произойдет обрыв с контроллером и приборкой (где тоже есть свои подтягивающие резисторы).

Что из этого нужно, а чего можно отказаться, а что откровенно вредно?

 

3. Подключение к концевику дверей. Тут нужно определить открытость/закрытость двери.  Концевик будет подключен через делитель (R2 и R3) к цифровому входу Ардуины. Аппаратный алгоритм работы концевика такой же как и у датчика скорости, а именно дает логические +12В или 0В.  

Стабилитрон Vd1 должен защищать от всплесков, которые могут быть в бортовой сети.

Конденсатор С1 должен сглаживать дребезг механического выключателя, хотя в программе обязательно будет защита от дребезга.

Резистор R1 должен обеспечить дополнительную подтяжку к +12В, если по какой то причине пропадет штатная подтяжка (перегорание салонной лампочки, обрыв провода к блоку центрального замка и т.п.).

Что из этого нужно, а чего можно отказаться, а что откровенно вредно?

 

4. Выход – управляющий импульсный сигнал (0,5 сек) на просадку логического вывода блока центрального замка. В этом логическом  выводе стоит подтягивающий резистор 500Ом, который дает ток просадки 30мА. Поэтому выход будет организован транзисторным ключем с одним каскадом.

Резистор R1 задает ток базы транзистора 1мА.

Резистор R2 подтягивающий к земле.

Резистор R3 защитный, от неправильного подключения, чтобы не спалить транзистор или всю аппаратную плату.

Что из этого нужно, а чего можно отказаться, а что откровенно вредно?

 

5. Питание. Самое для меня сложное. Повторюсь, выходной ток ардуины – это импульс 0,5 сек с током 1мА на базу транзистора. Т.е. плата ардуино будет потреблять свои 20+/-2мА заявленные в даташите (и проверенные тестером в реальности). Изучив даташит встроенного линейного стабилизатора напряжения (у меня установлен ams1117 t50e28hc) пришло осознание, что его должно вполне хватить для моих целей. Городить внешний линейный стабилизатор на том же LM7805 без дополнительных потребителей и выходов не имеет смыла. Нужно только защититься от скачков напряжения. На схему я запихнул все свои познания с 90-х годов)))

Диод Vd1 защитный от переплюсовки.

Резистор R1 токоограничивающий. Максимальное падение напряжения 2В, ну пусть даже будет 3В (при токе потребления 30мА).

Конденсаторы  С1, С2, С3, С4 сглаживающие скачки (не знаю зачем так много и какого номинала – срисовал с типовых схем).

Индуктивность L1 для блокирования скачков напряжения (насколько я помню,для чего она нужна).

Стабилитрон Vd1 опять же – защита от скачков.

 

Кто осилил до конца, прошу прощения за много букв и графики! Хотел максимально подробно описать свое понимание проблемы, чтобы получить дельные советы по существу вопросов. С ответами не тороплю.

С уважением, Алексей!

slider
Offline
Зарегистрирован: 17.06.2014

в схеме 1.   , я б поставил 10ком , чтоб меньше нагружать датчик , стабилитрон лучше 5,1в(хотя и он тоже грузит)  , или если оставите 4,7 то желательно поставить делитель на 2   (10к+10к) , а то измеряемое напряжение 4,5в стабилитрон даже на 5.1в , начинает подгружать , в итоге вы поимеете не прямолинейное и неправильное измерение нажатие педали газа .

делал подобный контроллер (arduino pro mini + lcd 1602 + кнопки ) , для включения добавленной турбины, при установленных нужных оборотах и нажатии педали газа в%   . 

а так , да , дельные вы схемки привели.

ардуинку лучше брать со стабом в большом корпусе, он хоть до 15в выдерживает , в отличии от sot-23  12в максимум.

// супрессоры работают быстрее стабилитронов . стабилитроны имеют внутреннюю емкость около 1-3нф поэтому желательно их ставить последовательно и встречно. Но для вашей темы сгодится и так как вы предложили. 

диод и резистор на входе по питанию тоже дельно. делал так для питания логгера АКБ в 24в солнечной системе , напряжения в импульсе там бывают высокие свыше 30в , резистор 100ом и хороший кондер 1000-2200мкф превосходно спасают имп. стаб на MP1584 (у него 28в макс)с 28в на 8-7.5в , а от него уж и питается ардуинка.  

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

slider пишет:
в схеме 1.   , я б поставил 10ком , чтоб меньше нагружать датчик , стабилитрон лучше 5,1в(хотя и он тоже грузит)  , или если оставите 4,7 то желательно поставить делитель на 2   (10к+10к) , а то измеряемое напряжение 4,5в стабилитрон даже на 5.1в , начинает подгружать , в итоге вы поимеете не прямолинейное и неправильное измерение нажатие педали газа .
Ок, поставлю 10кОм. Насчет подгрузки - нельзя подгружать сам датчик, делитель ставить тоже нельзя, т.к. делитель подгружает аналогично. Сразу полезут ошибки. Я в первом посте описывал датчик, но видно не шибко подробно. Он состоит из сдвоенного резистора

Выходное напряжение ДППА меняется пропорционально нажатию педали акселератора. При отпущенной педали акселератора сигнал ДППА 1 должен быть в пределах 0,66…0,96 В, сигнал ДППА 2 в пределах 0,33…0,48 В. При полностью нажатой педали акселератора сигнал ДППА 1 должен быть в пределах 3,80…4,30 В, сигнал ДППА 2 в пределах 1,90…2,15 В. При любом положении педали акселератора сигнал ДППА 1 должен быть в два раза больше сигнала ДППА 2. Ошибка заносится, если уменьшенный в два раза сигнал датчика положения педали акселератора (UPWG1ROH/2) и сигнал датчика положения педали акселератора В (UPWG2ROH) отличаются на величину порога в течение 0,25 с.

Посему и от стабилитрона, и от конденсатора скорее всего откажусь. Делитель точно ставить не буду. Вместо делителя можно просто тогда показания снимать со второго "ополовиненного" резистора с малым диапазоном (0,4..2,1 В), но мне казалось, чем больше диапазон тем больше точность и меньше погрешность от наводок. Поэтому хотел снимать с "полного" резистора (0,8..4,2В)

slider пишет:
ардуинку лучше брать со стабом в большом корпусе, он хоть до 15в выдерживает , в отличии от sot-23  12в максимум.
ардуинка уже какая есть, такая есть (подарок)

slider пишет:
// супрессоры работают быстрее стабилитронов . стабилитроны имеют внутреннюю емкость около 1-3нф поэтому желательно их ставить последовательно и встречно. Но для вашей темы сгодится и так как вы предложили.
Ок, спасибо. На питание (схема 5) поставлю супрессор, на датчик скорости и датчик дверей (схемы 2 и 3) оставлю стабилитроны, т.к. там подгрузка влияния не оказывает.

И еще по питанию (схема 5) супрессор правильнее ставить до дросселя (перед резистором) или после дросселя (перед VIN)?

4ishops
Offline
Зарегистрирован: 06.10.2012

CAN шины на автомобиле нет? 

так всю инфу можно оттуда тянуть гораздо проще

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

На моем тазике КАН-шины нет. Есть К-линия, там инфа есть только по двум датчикам (ДППА и ДС), но это нужно уметь читать диагностический протокол. Тогда это уже будет практическии полноценный бортовой комьютер))) Я на такие подвиги не готов. К тому же по подключению будет всего на один проводок меньше (К-линия вместо ДППА и ДС).

sav liana
Offline
Зарегистрирован: 28.11.2016

4ishops пишет:
 так всю инфу можно оттуда тянуть гораздо проще 

А простой пример можно привести подключения к K-line?

Lomonosov пишет:
 инфа есть только по двум датчикам (ДППА и ДС) 

Что у вас за модификация? Как то странно...

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

sav liana пишет:
Что у вас за модификация? Как то странно...
Обычная модификация тазика типа шнива. По К-линии можно узнать только о датчиках отслеживаемых контроллером. А это датчик педали газа (так называемый Е-газ) и датчик скорости. Открытость дверей контроллером двигателя не отследивается, и уж тем более К-линия не подключена к центральному замку, т.е. нельзя подать сигнал закрытия дверей через К-линию.

sav liana
Offline
Зарегистрирован: 28.11.2016

По питанию, как раз самре простое. Cтавите последовательно L7809 и L7805 (50 рублей - 5 штук на Ебее), между ними конденсатор, например ~47 мкФ ~25 в (любой, какой найдете, с соответствующим напряжением).

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

sav liana, спасибо, но уже поздно. Делаю на понижающем резисторе и LC-фильтре.

П.С. А в чем тайный смысл ставить второй сторонний линейный стабилизатор 7805, если его аналог (правда маломощный) уже стоит на плате? Для теплоотведения при большой нагрузке? В моем случае (без нагрузки) есть в этом смысл?

sav liana
Offline
Зарегистрирован: 28.11.2016

Согласен, если больше потребителей не будет (кроме NANO) то сойдет. Результаты работы вы чем будете смотреть? Например у меня  LCD WH2004A I2C только подсветка подсветка 37 мА. (Полностью 41 мА)

Ток ~25 мА. Напряжение на 1117 будет 13,3 - 5 - 0,7 = 7,6в. Мощность 0,025*7,6=0,19 Вт. (~0,2 Вт). Максимальная 0,8 Вт.

 

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

sav liana пишет:
Результаты работы вы чем будете смотреть?
На время отладки для отслеживания числовых показателей (частота датчика скорости, напряжение на датчике педали сцепления)  подключу ноут (последовательное соединение посредством Serial.begin()). После отладки плата упаковывается под торпеду и останется только импульс на транзистор (1-3 мА)

 

sva_khv
Offline
Зарегистрирован: 19.12.2016

Добрый день!

Я так понимаю вы делаете блокировку дверей при начале движения?

И потом снятия блокировки при выключении зажигания?

Можете пояснить для чего Вам положение дроссельной заслонки? Я когда логику работы такого устройства разрабатывал, использвал только датчик скорости - если скорость больше 10км/час - заблокировал двери.

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

sva_khv,

"Лучше поздно чем никогда" (с)

sva_khv пишет:
Я так понимаю вы делаете блокировку дверей при начале движения?
Не совсем. Блокировка после каждого открытия дверей, а не единократно за ездовой цикл при начале движения.

sva_khv пишет:
И потом снятия блокировки при выключении зажигания?
Двери разблокирует сигналка - мне так удобнее, чем держать плату ардуино под постоянным напряжением, организовывать спящий режим и тащить еще один провод на канал разблокировки (в моем случае на центральном замке два отдельных канала - на закрытие, и на открытие)

sva_khv пишет:
Можете пояснить для чего Вам положение дроссельной заслонки? Я когда логику работы такого устройства разрабатывал, использвал только датчик скорости - если скорость больше 10км/час - заблокировал двери.
Положение дроссельной заслонки - показатель наличия водителя в машине. Случайно покатившаяся заведенная машина захлопываться не должна.

Grizzlylife
Offline
Зарегистрирован: 27.10.2017

Lomonosov, очень интересно было бы посмотреть на конечный вариант всей системы в целом... Скажите у вас остались схемы, скетчы и прочая информация... Сейчас хочу сделать сигнализацию на ардуино с автозапуском, ваш опыт несомненно бы помог. Спасибо заранее

Grizzlylife
Offline
Зарегистрирован: 27.10.2017

Lomonosov, очень интересно было бы посмотреть на конечный вариант всей системы в целом... Скажите у вас остались схемы, скетчы и прочая информация... Сейчас хочу сделать сигнализацию на ардуино с автозапуском, ваш опыт несомненно бы помог. Спасибо заранее

Lomonosov
Lomonosov аватар
Offline
Зарегистрирован: 12.01.2017

Grizzlylife пишет:
очень интересно было бы посмотреть на конечный вариант всей системы в целом... Скажите у вас остались схемы, скетчы и прочая информация...
Конечный вариант описан тут:

http://arduino.ru/forum/proekty/upravlenie-zakrytiem-dverei-avtomobilya-arduino-nano

Надеюсь поможет.