считывание импульсов
- Войдите на сайт для отправки комментариев
здраствуйте!
Мне нужно считать импульс идущий с компа двигателя, он идет на разьем диагностики и по факту это сигнал тахометра. Для моего проекта мне нужно считать количестов импульсов, и при их конкретном числе ардуина должна выдать один импульс на массу.
Так как я не нашел инфу о том, какого типа сигнал там присутствует, я подключил осцилограф. Особо я в осцилографе не шарю, но частота на холостых оборотах была 37гц, ток переменный, потому что он колебался от 47В до -50В. График типа полусинуса, потому что подъем резкий а спуск плавный. Скорей всего это необработанный сигнал с дачика коленвала.
Теперь вопрос: при подключении этого провода на вход ардуины, нужно ли это сигнал выпрямлять? Или использовать аналоговые входы?
Заранее спасибо
выдать один импульс на массу.
Не понял, что здесь имеется в виду.
от 47В до -50В ... при подключении этого провода на вход ардуины, нужно ли это сигнал выпрямлять? Или использовать аналоговые входы?
Это как Вы хотите.
Абсолютный максимум для любого (кроме RESET и GND) ардуиновского пина от -0,5В до Vсс+0,5В (где Vcc - напряжение питания). Так что Вам решать преобразовывать как-то сигнал от -50В до 47В или не надо.
А если преобразовывать, то как именно. Выпрямлять или что-то ещё с ним делать.
Достаточно подать через резистор 10кОм и стабилитрон на 5 вольт для защиты у ног ардуины поставить.
выдать один импульс на массу.
Не понял, что здесь имеется в виду.
допустим при 600об/мин, ардуина должна среагировать, мне нужно подать негативный импульс один из пинов блока управления машины, это я сделаю через транзистор, с этим проблем нет.
то есть я представляю так: провод с тахометра подается через выпрямляющий диод на базу транзистора, через который +5в пойдет на пин ардуины, верно?
Достаточно подать через резистор 10кОм и стабилитрон на 5 вольт для защиты у ног ардуины поставить.
Вы уверены? Я на машинные сети не смотрел, что что-то мне кажется, что там шумов должно быть много. А если так ставить, то он любой шум от 3 вольт будет за импульс принимать. Я бы придавил сигнал делителем 1:10, а потом бы уж сделал как Вы говорите. Нет?
Достаточно подать через резистор 10кОм и стабилитрон на 5 вольт для защиты у ног ардуины поставить.
Вы уверены? Я на машинные сети не смотрел, что что-то мне кажется, что там шумов должно быть много. А если так ставить, то он любой шум от 3 вольт будет за импульс прнимать. Я бы придави сигнал делителем 1:10, а потом бы уж сделал как Вы говорите. Нет?
согласен. не смотря на то что этот провод идет конкретно с блока управления двигателем, скорей всего это необработанный сигнал датчика положения коленвала в чистом виде, это дачик холла, и он питается от прямо от бортовой сети. хотя на приборы сигнал тахометра идет по CAN шине
фишка в том что мне не нужно супер точное определение числа оборотов, ошибка плюс минус 100-150 оборотов не проблема
может оптрон изпользовать?
может оптрон изпользовать?
Оптрон-то для развязки по-любому не помешает, в этом я согласен. А так, ТС виднее, он же видел что там за сигналы. Если там есть шумы, то важно не резать лишнее напряжение, а именно пропорционально уменьшать, чтобы 50В импульса превратились, скаже в 5В, в 10В помехи, превратились в 1, а не в те же 5, как было бы при "обрезке".
как быть с тем что импульсы в минус уходят? это разве не нужно обрезать?
Диод поставьте. Они ж Вам не нужны? Вам достаточно положительных всплесков, правильно? Ну, поставьте диод анодом в сигналу, он отрицательные "полуволны" срежет. Можете, кстати, полюбоаться на это с осциллографом.
Ох не люблю я диодом ничего отрезать в области сигналов. Закрытый диод - большое сопротивление и легкий путь ловли наводок. Пока текут большие токи наводки не работают. Сил у них не хватает. Если не хочется стабилитронов, тогда делитель 10к 1к. Среднюю точку делителя диодами на массу и +5В. И конденсатор 1000 пик на массу. Гарантирую никаких наводок и полную защиту.
Ох не люблю я диодом ничего отрезать в области сигналов. Закрытый диод - большое сопротивление и легкий путь ловли наводок. Пока текут большие токи наводки не работают. Сил у них не хватает. Если не хочется стабилитронов, тогда делитель 10к 1к. Среднюю точку делителя диодами на массу и +5В. И конденсатор 1000 пик на массу. Гарантирую никаких наводок и полную защиту.
спасибо, пойду этим путем
вот так?
Да. И ещё один диод к плюсу питания. Тогда при привышении напряжения диод откроется и напряжение на входе не превысит Uпит+Uд - около 5.7 вольта.
Да. И ещё один диод к плюсу питания. Тогда при привышении напряжения диод откроется и напряжение на входе не превысит Uпит+Uд - около 5.7 вольта.
добавил диод на +5в, протеус показывает 4.4в, вроде норм.
а при повышении напряжения, 5.7в не многовато для пина ардуины?
Нет нормально. Там внутри тоже есть защитные диоды. 10к ограничивает ток.
только немного скачет ток, от 4.29 до 4.4
Верхний диод перевернуть надо. И попробовать импульсы +-100 вольт - на входе ардуины должны быть +5.7 -0.7
пробовал, ток скачет от 0.6 до 4,2, это от постоянных 50в. импульсы пока не пробовал
с чего так?
А мне показалось что там вольтметр на схеме нарисован и показывает вольты а не амперы. Вольты и должны прыгать в зависимости от импульсов.
извиняюсь, у меня импульсы поданны были.
от 50в выходит 0.6-4.2
от 100в 0.7-5,7
еще один вопрос: когда я подключу провод тахометра к этой плате, обратно на сам дпк и на блок управления двигателем какие нибудь помехи или наводки не пойдут? обычно этот провод в воздухе висит, а при подключении он как бы на массу закоротится, хоть и через делитель, но все же...
Ну так правильно. Теперь функцию pulseIn два раза - один раз ловим LOW второй раз HIGH и посчитав среднее имеем точную скорость вращения. Если поставить таймаут милисекунд 300, то если через секунду имеем ноль, то двигатель стоит.
Он не может висеть в воздухе. Корпус скорее всего на массе машины.
Ну так правильно. Теперь функцию pulseIn два раза - один раз ловим LOW второй раз HIGH и посчитав среднее имеем точную скорость вращения. Если поставить таймаут милисекунд 300, то если через секунду имеем ноль, то двигатель стоит.
написать такой скетч с нуля для меня пока сложно, я собирался готовые скетчи использовать, немного переделав по себя.
Он не может висеть в воздухе. Корпус скорее всего на массе машины.
датчик питается напрямую от бортовой сети, но массу берет с блока управления двигателем, автомобиль BMW E46
А масса блока управления двигателем не сидит на массе машины?
само собой сидит, но там цифровая масса и аналоговая, они разделенны как то вроде...
ладно, неважно, завтра подключу и все видно будет.
спасибо за помощь
Да бывает что разделены или резистором 0.1 Ома или дросселем.
чувствую что намучаюсь со скетчем.... сначала спаяю плату, проверю импульсы осцилографом и буду затачивать скетч под attiny85, не хочется мне атмегу 328 ради двух пинов переводить
Ну так правильно. Теперь функцию pulseIn два раза - один раз ловим LOW второй раз HIGH и посчитав среднее имеем точную скорость вращения. Если поставить таймаут милисекунд 300, то если через секунду имеем ноль, то двигатель стоит.
Не надо LOW и HIGH. Надо что-то одно, чтобы измерить полный период. Иначе будем мерять часть периода при неизвестной скважности. Выбор переднего или заднего фронта определяется тем, какой из них круче.
набросал вот это пока... я только учусь еще, помогите написать до конца, как среднее вычислить?
А что с ним мучится?
Начать можно с такого
А что с ним мучится?
Начать можно с такого
извините за глупый вопрос, я разобраться пытаюсь: куда тут количество оборотов записывается? в tx?
Не надо LOW и HIGH. Надо что-то одно, чтобы измерить полный период. Иначе будем мерять часть периода при неизвестной скважности. Выбор переднего или заднего фронта определяется тем, какой из них круче.
Надо, Федя, надо ((С) Гайдай) Ксожалению pulseIn не считает период импульов, а только нахождение в состоянии HIGH или LOW. Если время нахождения в HIGH не равно LOW то частоту колебаний правильно не определить. Берём то и то и вычисляем среднее. Это будет не честный период, так как будет считаться не вподряд, а через один. От крутизны фронта зависит только точность.
Угу. В английской доке этот случай оговорен. В отличие от русской, которую можно понять диаметрально противоположно (как я сначала и понял).
я спросил про чтение оборотов, потому что просто проверить хотел, как все будет работать... а так мне чтение оборотов не нужно совсем, при 800-900 оборотов, нужно включить какой нибудь пин на пол секунды, и все
а не лучше будет эту ногу в HIGH выставлять, и через транзистор управлять?
Конечно лучше. Выход МК будет защищён, да и по условию задачи именно замыкать на землю вроде хотелось , а не напряжение подавать.Но схема ваша и вам решать как делать.
Конечно лучше. Выход МК будет защищён, да и по условию задачи именно замыкать на землю вроде хотелось , а не напряжение подавать.Но схема ваша и вам решать как делать.
мне просто нужен был негативный импульс в конечном итоге, при достижении 800-900 оборотов, я лучше через транзистор заставлю его на массу коротнуть...
только я щас думаю как мне нужное время указать в вашем скетче, что бы пин на HIGH включить
а, стоп, то есть при достижении 37 герц он будет ногу выставлять... понятно все
то есть я экспериментальным путем подберу нужно мне частоту, переведу в микросекунды и поменяю в скетче
какое такое время? Сколько раз? На каких оборотах? Типа один раз когда с больших к ХХ подходишь или наооборот, когда обороты от ХХ пошли вверх и пересекают 800-900? Или булькать импульсами пока обороты 800 - 900? И какой длительности импульс? Т.З. надо точнее писать.
какое такое время? Сколько раз? На каких оборотах? Типа один раз когда с больших к ХХ подходишь или наооборот, когда обороты от ХХ пошли вверх и пересекают 800-900? Или булькать импульсами пока обороты 800 - 900? И какой длительности импульс? Т.З. надо точнее писать.
дело в том что я пытаюсь впихнуть блок CAS от бмв E60 в свою машину, это блок который управляет старт/стопом, дистанционным управлением, центральными замками, итд... мне вообще всегда нравилось впихивать все что не предназначено для другого) попутно я утоляю свой интерес как это все работает, я провел достаточно много времени разбираясь с тем как он работает, и как обойти те или иные проблемы, которые возникали по ходу, щас мне осталось разобраться с отключением стартера, когда двигатель заведется. в E60 это происходит по CAN шине, и по проводу идущему на блок управления двигателем. по CAN шине сделать это не получится, а вот провод нашелся, и при замыкании его на массу, стартер отключается. импульс должен быть один раз при включенной плате, то есть плата включилась, скетч пошел, один импульс до следующей перезагрузки. про обороты точно пока не могу сказать, так как должен подобрать их экспериментальным путем на автомобиле, я думаю что примерно 700-800... когда обороты с нуля пошли вверх, на 700 нужен импульс на пол секунды, один раз за одно включение платы. импульс длительностью в пол секунды хватит
P.S. я понимаю что всю эту систему можно было с легкостью собрать на ардуине, и я так и делал ранее на своих машинах, просто щас мне нужно было понять работу блока CAS
Ок. Завтра подправлю под эту задачу. Будет давать один импульс при подъёме от нуля до ХХ и ждать следующего нуля.
Ок. Завтра подправлю под эту задачу. Будет давать один импульс при подъёме от нуля до ХХ и ждать следующего нуля.
спасибо, я вообще не очень уважаю халяву, но этот проект у меня итак слишком затянулся, нету свободного времени что бы разбираться с написанием скетчев
Как то так
спаял все на весу для проверки, проверил только что, и что то не то у меня вышло: на проводе тахометра осцилограф показывал RMS - 6.3 вольта, тестер показыает тоже самое, когда я подключаюсь к проводу, ток на нем падает до 3.2 вольта, а на PB0 ардуины у меня 0.3 вольта, и конечно ничего не работает. ток на проводе тахометра должен так падать, когда я к нему подключаюсь?
и еще, я сменил в вашем скетче PB1 на PB5, что бы диод на 13 пине на ардуине моргнул, но домаю это не имеет значения? PB0 - это пин 8 на плате уно, так ведь?
вот скрины с осциллографа
без подключения к проводу:
после подключения:
как видно там и ток импульсов падает, это нормально?
Падает не ток. Падает напряжение. Можно 10к поменять на 100к, 1к на 10к. Но это не главная проблема. Очень мне сигнал не нравится. Очень хочется посмотреть как выглядит сигнал на конденсаторе в схеме согласования.
Падает не ток. Падает напряжение. Можно 10к поменять на 100к, 1к на 10к. Но это не главная проблема. Очень мне сигнал не нравится. Очень хочется посмотреть как выглядит сигнал на конденсаторе в схеме согласования.
а что конкретно не нравится? верхний скрин - чистый сигнал с диагностического разьема, там вроде не должно быть ничего лишнего
полезу опять в машину, и выложу скрин
Не нравятся короткие пики сигнала. Думаю как лучше сделать программу. Снимите осцилограмму на входной ноге. Тогда будет информация к размышлению.
точка соединения резисторов, диодов и конденсатора
входной пин ардуины:
кстати я щас вспомнил, пики не совсем короткие, у меня на 10мс выставленно когда я скрин делал, на 1мс пики не острые а квадратные, только продолжительность я не посмотрел тогда (
Блин, да у Вас поди конденсатор всё проинтегрировал. Попробуйте из Вашей схемы убрать всё, кроме делителя И посмотрите на сигнал (просто посмотрите, ардуину не подключайте). Он должен быть приличным, если так, ставьте стабилитрон, ну можно ещё резистор перед ним и опять же, посмотрите на выходной сигнал. Он должен быть без отрицательных выбросов, с положительными в пределах 5В. Если всё так, то подключайте ардуину и забудьте о перхоти.
Кстати, а отрицательный выбросы Вам точно не нужны? А то можно и их обработать при желании. Я тут как-то вот такой сигнал в Ардуину заводил (клеточка = 5 Вольт) и он мне нужен был весь (и верхняя часть, и нижняя, могу показать как я это делал, если интересно.