как считать показания автомобильного тахометра?
- Войдите на сайт для отправки комментариев
Вс, 08/04/2012 - 21:45
каким образом можно считать количество оборотов с тахометра? мне не нужно выводить показания на экран или куда-нибудь еще, просто зафиксировать момент когда обороты будут, допустим 300об/мин.
насколько я понимаю тахометр подключается к аналоговому входу ардуины?
Сигнал практически у всех датчиков вращения цифровой, еще вам нужно знать амплитуду сигнала(т.е. если амплитуда 12в, то нужно ставить делитель до 5в) и смотря откуда у вас берется сигнал, который идет на тахометр будет производиться расчет оборотов(т.е. вам нужно знать сколько подается импульсов на тахометр за один оборот двигателя).
машина бмв, сигнал беру с черного провода идущего на панель приборов от ЭБУ. значит подключать надо к цифровому пину? 7805 сойдет?
7805 - стабилизатор напряжения. Если он хорошо выполнит свою работу, то после него вы всегда будете иметь ровно 5 вольт. Независимо от числа оборотов.
Да и по любому - два сопротивления и дешевле, и проще в монтаже, чем 7805 и полагающиеся ему для обвязки 2-3 конденсатора.
Если точно идет с эбу и не идет никуда больше, то скорее всего амплитуда сигнала 5в, поповоду стабилизатора - наврядли его можно будет поставить, так как он вродебы и сам пульсирует, а при измерении оборотов измеряется количество микросекунд от импульса до импульса. У вас есть возможность подключить этот провод к дуине, а дуину к компу?
но я буду иметь и прерывания не так ли?
я могу подключить этот провод к ардиуно и компу, но что из этого? я пока еще не разобрался с кодом.
по поводу того что я делаю: мне просто нужно отрубать стартер когда заведется мотор. я хочу использовать провод тахометра для этого.
В смысле? Одно внешнее прерывание пойдет как раз на измерение оборотов.
посмотрел в ETM, черный провод идет от ЭБУ. так что там скорее всего 5 вольт, можно напрямую подключатся к ардуине?
Лучше поставить резистор на всякий случай, киллоомов на 5
понятно, значит напрямую к ардуине через резистор и использовать прерывания.
я сейчас покопался в инете, и там говорится что лучше использовать оптрон или оптопару, что бы электрический "мусор" от генератора не шел на ардуину. что думаете по этому поводу?
Кстати у бмв на "массе" минус?
да, на минус. а что?
Ну если у вас из мозгов(эбу) идет мосор, то тогда ставьте оптрон. )
да минус, а что?
Просто у некоторых машин масса это плюс, сталкивался с таким на субару.
первый раз слышу.... я имел дело с японцами хонда,тойота и все цивилизованные были....
Тогда так, подключаете 2 цифровой вывод через резистор 5 кОм к вашему проводу, а GND к массе, а дуину к компу. Предположим, что мозги дают один импульс за один оборот. Заливаем скейтч:
01
#define RPMpin 2 // датчик Холла
02
unsigned
long
microsold = 0;
03
int
rpm = 0;
04
05
void
setup() {
06
Serial.begin(9600);
07
//digitalWrite(RPMpin, 1);
08
attachInterrupt(0, RPM, RISING);
09
//attachInterrupt(0, RPM, FALLING);
10
}
11
12
void
loop() {
13
Serial.println(rpm, DEC);
// об/мин
14
}
15
void
RPM (){
16
rpm = (1000000.0/(micros() - microsold))*60;
17
microsold = micros();
18
}
Запускаем сериал-монитор и заводим двигатель.
Вот я тоже долго мучился, а оказалось вот так, не знаю кончно как на новых субарях, но на форесторе 2001г.в. на массе плюс.
спасибо, завтра попробую и отпишусь!
короче, подключил я ардуину к тахометру, правда впопыхах забыл прихватить резистор с дому )). показания серийного порта были самыми разными: сначала 0, потом на включение зажигания подскочили на 28886, завел мотор разницы нету. сбросил ресетом, сначала 0 потом 51, итд. на педаль акселератора реакции никакой. потом взял обычную светодиодную тестилку и подсоединил к вышеупомянутному проводу идущему к тахометру, загорелся +, а минус чуть поблек что значит что с провода идут положительные импульсы постоянного тока. мне вот интересно, это все может быть из за резистора?
Наврядли это из-за резистора, он нужен, чтобы защищать дуину, ну а если не пожгли ее без резистора, то значит он не нужен, при условии, что вы тогда не забыли подключить GND к массе.
Если так, то попробуйте вот этот код:
01
#define RPMpin 2 // датчик Холла
02
unsigned
long
microsold = 0;
03
int
rpm = 0;
04
05
void
setup() {
06
Serial.begin(9600);
07
digitalWrite(RPMpin, 1);
08
//attachInterrupt(0, RPM, RISING);
09
attachInterrupt(0, RPM, FALLING);
10
}
11
12
void
loop() {
13
Serial.println(rpm, DEC);
// об/мин
14
}
15
void
RPM (){
16
rpm = (1000000.0/(micros() - microsold))*60;
17
microsold = micros();
18
}
Никогда не копался в атомобилях, но возможно стоит читать не "сырой датчик", а уже обработанное бортовыми мозгами?
Насколько я знаю современные автомобили имеет цифровую шину... CAN Bus. С нее можно считать множество текущих параметров по протоколу OBD. В готовом, цифровом виде. В том числе и тахометр (температуру, моментальный расходи и т.п). Чем-то типа http://www.sparkfun.com/products/10039
Вот пример как это использования этого шилда http://www.youtube.com/watch?v=PbA_bOO2mMw - там четко видно обороты двигателя.
Ну и на carduino, практически уверен, можно найти людей которые делали подобное.
Есть уже не только скетч для спидометра с тахометром, но и программа панели приборов
Никогда не копался в атомобилях, но возможно стоит читать не "сырой датчик", а уже обработанное бортовыми мозгами?
Насколько я знаю современные автомобили имеет цифровую шину... CAN Bus. С нее можно считать множество текущих параметров по протоколу OBD. В готовом, цифровом виде. В том числе и тахометр (температуру, моментальный расходи и т.п). Чем-то типа http://www.sparkfun.com/products/10039
Вот пример как это использования этого шилда http://www.youtube.com/watch?v=PbA_bOO2mMw - там четко видно обороты двигателя.
Ну и на carduino, практически уверен, можно найти людей которые делали подобное.
я читаю не сырой дачик а уже обработанную компом инфу, с цифровой шины тоже можно считать но код будет тоже самый как и с компа.
Есть уже не только скетч для спидометра с тахометром, но и программа панели приборов
отличная ссылка надо бы прочесть, спасибо!
Наврядли это из-за резистора, он нужен, чтобы защищать дуину, ну а если не пожгли ее без резистора, то значит он не нужен, при условии, что вы тогда не забыли подключить GND к массе.
нет, массу я подключил, без массы вообще показания летали и очень быстро ))
проверю код - отпишусь
не пашет((
тоже самое
Вы уверены, что этот провод на тахометр идет? Как проверяли, что это именно он?
Схемы проводки на вашу машину искали? киньте ссылочку.
обведенный красным и есть тот самый черный провод идущий от компа. и еще, у меня стоит буржуйский блок дистанционного запуска, по его мануалу он подключается к этому самому проводу и отключает стартер когда подпрыгнут обороты. так вот, он сидит на черном проводе и все работает, так что с этим - железно!
Качество картинки плахое, но судя по картинке, сигнал приходит из engine control module и там нарисован pnp-транзистор. Вы когда подключали дуину фишку из панели приборов вытаскивали или паралельно приборам подключались? Тахометор, когда подключена дуина работал?
egine control module и есть комп машины, транзистор который там нарисован скорее всего просто для обозначения, показывая что данный модуль состоит из платы, транзисторов, микросхем итд. при подключении фишку из приборов я не доставал, и тахометр тоже работал нормально. в момент подключения ардуины блок удаленного запуска был отключен вообще.
транзистор который там нарисован скорее всего просто для обозначения, показывая что данный модуль состоит из платы, транзисторов, микросхем итд.
Да вот скорее всего не просто, можете рассмотреть транзистор у него стрелочка внутрь или наружу?
Если внутрь (как я смог рассмотреть), то попробуйте первый вариант кода, но между GND и цифровым выводом 2 поставить подтягивающий резистор на 10 кОм.
даже в самом мануале качаство не очень, но стрелка наружу, так что это NPN транзистор. я просто не могу понять какую роль транзистор играет, черный провод ведь не прямо с дачика холла идет, он обрабатывается компом и потом идет на приборы.
может и PNP, не поймешь ((
Да не прямо с датчика, но скорее всего сигнал такой же (просто импульсы), если только там не организован какой-нибудь интерфейс, что как мне кажется было бы слишком... но и в этом случае данный код скорее всего бы что-нибудь показывал хоть и не правильно. А если стрелка наружу, то то второй вариант кода.
В общем пробуйте первый вариант кода, но между GND и цифровым выводом 2 подтягивающий резистор на 10 кОм. А там будем думать дальше.
"что то" показывали оба кода, вернее второй код только сначала показал, а потом только нули.
первый код показывал полно всего, но опять же реакции на педаль акселлератора не было, даже и запоздалой ((
меня смущает что серийный порт выдавал цифры даже и не на заведенном двигателе, было только открыто зажигание
А в идеале, что бы убедиться, что это провод именно на тахометр, а не, к примеру, сигнальный провод о том, что двигатель заведен, попробывать только его один отсоеденить от пенели приборов и посмотреть, что перестанет работать. И еще бы было бы не плохо посмотреть осцилографом.
осцилографа у меня нету, но факт что повешенный на него блок работает и отключает стартер когда надо. сигнальный провод синего цвета, на нем всегда масса, когда двигатель заведется на нем +12.
попробую резистор поставить
осцилографа у меня нету, но факт что повешенный на него блок работает и отключает стартер когда надо. сигнальный провод синего цвета, на нем всегда масса, когда двигатель заведется на нем +12.
попробую резистор поставить
Не совсем понял... какой синий провод, поконкретнее можно?
вы говорили что может быть черный провод это сигнал того что двигатель заведен, я пояснил что функцию сигнала заведенного двигателя выполняет синий провод, на котором появляется +12 вольт когда двигатель заведется. черный провод - это 100 процентно тахометр!
Вы только его пробовали отключать? Не работает только тахометр?
Кстати, первый код с резистором проверяли? И еще вы то, что у вас сериал-монитор дает выложите посмотреть.
Погуглил я про установки сигналок на бмв, да во многих случаях снимают обороты двигателя с черного провода тахометра из диагностического порта как и у вас на схеме, причем как я понял у некоторых машин этот провод еще идет на катушку зажигания. И если так просто пишут про подключение к тахометру, то скорее всего там точно обыкновенные импульсы, может и не один импульс за оброт, а больше, но это не важно т.к. это влияет только на расчет оборотов т.е. показания могут быть не верными, но дожны быть и меняться в зависимости от оборотов.
и на диагностический порт и на тахометр идет один и тот же черный провод с компа, в случае с моей сигналкой он работает.
я согласен что показания могут быть и неправильными, но они же хотя бы должны менятся в зависимости от оборотов?
Конечно, я уже выше об этом написал. Так что с первым кодом и подтягивающим резистором???
Кстати про код.
Переменные которые меняются внутри функции обработки прерваний желательно объявлять с квалификатором volatile.
В данном коде это переменные microsold, rpm
Т.к. microsold используется исключительно в прерывании ее тип можно оставить без изменений, а вот у rpm желательно добавить volatile.
пока не было возможности проверить, как только проверю - отпишусь!