Спидометр-одометр на arduino? Без Опыта!

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Здравствуйте. Скажите пожалуйста, есть датчик спидометра 12В который передает импульсы от КПП на спидометр и тот показывает скорость и пробег. На основе этого датчика ипмульсного строятся все альтернативные спидометр-одометры. Как эти импульсы передать в контроллер чтоб тот понял что это скорость и пробег?

В программировании, электронике и arduino не понимаю ничего. Можете есть тестовая программа где можно смоделировать? Сначала написать программу, проверить ее как-то, а потом закупить детали.  Спасибо!

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Считать импульсы

Zhiguli
Offline
Зарегистрирован: 21.07.2015

С чего начать? скачать прогу какую то? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Zhiguli пишет:

С чего начать? скачать прогу какую то? 


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

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Смотрю урок https://www.youtube.com/watch?v=bO_jN0Lpz3Q

Скажите есть два МП по заманчивой цене. Они подойдут для спидометра-одометра (+еще чего)?

Ардуино Уно Р3 Arduino UNO R3 2014 

 arduino pro mini atmega328 5v 16MHz 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Они все не дороже 15 баксов нынче. А рисовать цифры они будут тнплым воздухом на запотевшем лобовом стекле?

Zhiguli
Offline
Зарегистрирован: 21.07.2015

да нет. эти 2.5 уе и 4.5 уе (15 уе дорого мы беженствуемс) цифры рисовать - семисегментные индикаторы (2-5 уе.)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Чего вы делаете? ааммм и тоесть вот вдруг никакой жизни не стало без цифрового спидометра?

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Беженствуемс)). лучше клацать ПК и ардуино чем купить 3-4 бутылки водки в месяц. поломался мой спидометр а б/у стоит 6.5-7 уе. тоже что аруино ну ардуино может выйдет по дороде до 7-14 уе. но лучше иметь вещ чем пустые бутылки)) 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Zhiguli пишет:

Беженствуемс)). лучше клацать ПК и ардуино чем купить 3-4 бутылки водки в месяц. поломался мой спидометр а б/у стоит 6.5-7 уе. тоже что аруино ну ардуино может выйдет по дороде до 7-14 уе. но лучше иметь вещ чем пустые бутылки)) 


Э не, за советскую власть агитировать не нужно. Это выбор каждого кто че покупает водку или ардуино. Нас тут такими дешевыми пантами не разведешь. Нам тут параллельно будуте вы бухать или паяльк курить.
Что уно. Что про мини. Камень один. Но к про мини нужно еще узб-уарт покупать.
Все это напрямую не запитаете от машины. Саиое дешовое зарядник для мобилки в прикуриватель раскурочить. Плюс провода. Плюс датчик 12 вольт в ардуино не засунуть напрямую. Нужно колдовать с бубнами.
А кто будет програмить вообще не понятно.
Так что по итогу водка выходит дешевле.

Zhiguli
Offline
Зарегистрирован: 21.07.2015

тогда не спрашивайте то о чем вам безразлично. мне надо спидометр-одометр все останльное зачем, почему не важно. вот теперь дочитал пойду выпью водовки. проще снимать скорость с GPS но очень дорогой датчик GPS. Коды нашел народ делает что-то. 

https://www.drive2.ru/communities/941/

Измерение частоты с помощью Arduino (спидометр и тахометр) ч.2https://www.drive2.ru/c/1836582/

 

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Ардуино Уно Р3 Arduino UNO R3 2014 

Напряжение питания (рекомендуемое): 7-12В

Напряжение питания (предельное): 6-20В
В машину 12 В разве нельзя? 
(как убрать форматирование на форуме? чтоб как в блокноте писало)
Zhiguli
Offline
Зарегистрирован: 21.07.2015

В вело-ПК скорость снимается герконом+магнит. Ставят на машину. Но там тусклый, маленький экран и еще что-то поудмать надо. Магнит можно поставить не на диск-колесо как ставят а на кардан а геркон рядом. Главное чтоб магнит не намагнитил все вокруг. В вело-пк можно колибровать показания в зависимости от диаметра колеса. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Дочитал, пойду выпью чаю.
датчик Холла почитай. Вариантов как считать обороиы ввгон и тележка. А аот как считать скорость без gps это вопрос. Куда датчик присоединять? На кардан?

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Геркон на кузов а магнит на кардар. http://pixs.ru/showimage/Foto0911jp_8708156_18105347.jpg

 Можно магнит на диск задний и в 20 см геркон если магнит будет работать. Если не будет то усилить его как-то. Если нельзя то на кардан. Расстояние маленькое от кардана до геркона будет. Не понимаю зачем сверлить супорта если колитбуется прогой вело-пк. 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Делай. Пробуй. Или тебе благословление нужно? Могу канифолью окурить и паяльник горячий дать поцеловать.

Joiner
Offline
Зарегистрирован: 04.09.2014

Путь считается количеством импульсов, а скорость считается количество импульсов в единицу времени, или по обратной величине - длительность между импульсами. Можно считать мгновенную скорость, а можно еще и среднюю. Нужны еще часики или по внутреннему счетчику микроконтроллера считать. Вполне можно без GPS.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:

Путь считается количеством импульсов, а скорость считается количество импульсов в единицу времени, или по обратной величине - длительность между импульсами. Можно считать мгновенную скорость, а можно еще и среднюю. Нужны еще часики или по внутреннему счетчику микроконтроллера считать. Вполне можно без GPS.


Мдааа а на коробку скоростей наплюем?

Joiner
Offline
Зарегистрирован: 04.09.2014

Puhlyaviy пишет:
Мдааа а на коробку скоростей наплюем?

Импульсы надо брать не с движка, а с колеса или кордана, с того что крутится в одной пропорции с пройденным расстоянием. На велике, например, с оборота колеса.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Joiner пишет:

Импульсы надо брать не с движка, а с колеса или кордана, с того что крутится в одной пропорции с пройденным расстоянием. На велике, например, с оборота колеса.

с земного шарика нужно брать импульсы - он же вращается, пропорционально пройденному авто расстоянию?

т.е. GPS - это же очевидно!

Joiner
Offline
Зарегистрирован: 04.09.2014

Клапауций 999 пишет:

т.е. GPS - это же очевидно!

Вернулся домой с объекта. От делать нечего перед этим включил GPS на телефоне, узнать расстояние. Дома забыл выключить. Вспомнил через пару часов. Телефон в квартире спутники потерял, но продолжал считать.  Вместо километра насчитал 37 километров, да еще и маршрут на карте нарисовал, будто бы я уже за городом и прошел две деревни.

Фигня Ваш GPS :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:

Фигня Ваш GPS :)


Ты бы еще чайник для gps использовал. Купи хороший телефон.

Joiner
Offline
Зарегистрирован: 04.09.2014

Ладно...куплю. Буду везде измерять расстояние.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:

Ладно...куплю. Буду везде измерять расстояние.


Мы тут приложение тестируем для своего "жирного енота". Даже в доме gps нормально пингуется.

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

Joiner пишет:

Вернулся домой с объекта. От делать нечего перед этим включил GPS на телефоне, узнать расстояние. Дома забыл выключить. Вспомнил через пару часов. Телефон в квартире спутники потерял, но продолжал считать.  Вместо километра насчитал 37 километров, да еще и маршрут на карте нарисовал, будто бы я уже за городом и прошел две деревни.

Фигня Ваш GPS :)

теперь ты понимаешь, почему вместо Москвы американская ракета попадёт в твою деревню - операторы по объектам шариться будут, а затем маршрутками домой добираться, ракета спутники потеряет и звиздец.

*Сусанин - наше всё!

Joiner
Offline
Зарегистрирован: 04.09.2014

Puhlyaviy пишет:
Мы тут приложение тестируем для своего "жирного енота". Даже в доме gps нормально пингуется.

Врать не буду, мой телефон с GPS_ом не очень дружит, даже на улице спутники теряет. Да и хрен с ним, мне небольно-то и надо. Зато зарядку 2 недели держит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:
. Зато зарядку 2 недели держит.


включать пробовал?

Joiner
Offline
Зарегистрирован: 04.09.2014

Puhlyaviy пишет:
включать пробовал?

Нет..........а что , нужно включать?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Joiner пишет:

Puhlyaviy пишет:
включать пробовал?

Нет..........а что , нужно включать?


А если звонить, то вообще батарея разряжается.

Zhiguli
Offline
Зарегистрирован: 21.07.2015

тут сказали как подключить датчик 12в в андурино http://www.drive2.ru/c/1751175/.

но что там нарисовано темные лес. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Zhiguli пишет:

тут сказали как подключить датчик 12в в андурино http://www.drive2.ru/c/1751175/.

но что там нарисовано темные лес. 


Для нас не секрет как подключить хоть реактивный двигатель. Не понятно только как это вам поможет.

Zhiguli
Offline
Зарегистрирован: 21.07.2015

если у меня будет инструкция по сборке что надо купить датчик (хола), ардутино, провода, экран, скопитьвать туда прогу которая уже написана (чтоб велик не придумывать) то я запущу спидометр и будет показывать скорость и пробег и будет все хорошо. 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Zhiguli пишет:

если у меня будет инструкция по сборке что надо купить датчик (хола), ардутино, провода, экран, скопитьвать туда прогу которая уже написана (чтоб велик не придумывать) то я запущу спидометр и будет показывать скорость и пробег и будет все хорошо. 


Красиво. Но мало вероятно!
Пробуй

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Почему  мало вероятно? По схеме что видно? Что куда подключать? 

Zhiguli
Offline
Зарегистрирован: 21.07.2015

Ух ты!  http://www.drive2.ru/c/1724348/ Виртуальная Arduino в браузере

Zhiguli
Offline
Зарегистрирован: 21.07.2015
BlockThor
BlockThor аватар
Offline
Зарегистрирован: 08.08.2014

Zhiguli пишет:

мне надо спидометр-одометр 

Несколько прототипов спидометра-одометра с разным выводом инфы:

http://blockduino.blogspot.com/search/label/BikeSpeedometer

Sync
Offline
Зарегистрирован: 12.01.2016

Подниму темку немного. Есть ардуино нано, есть Nextion. Надо написать одометр, спидометр пашет.

Пока думал сделать так.

На некстионе создаётся переменная. Каждые 600 импульсов ардуино записывает в эту перменную значение 1. Некстион считывает и записывает туда 0. В момент считывания к пробегу прибавляется 100 метров. Со стороны некстиона всё работает как часы, через терминал руками. Чё бы не считать ардуиной и не отправлять в некстион готовые знаения? Из-за сброса пробега. Придётся тащить ещё один провод, чтоб экран отправлял в ардуино сигнал на сброс. А тут он всё считает сам и при необходимости сброса - всё сбрасывается внутри некстиона.

Но есть трудность с ардуиной.

Сейчас код спидометра выглядит так

unsigned long micros_sp = 0;
volatile int CurrentSpeed = 0; //задаём переменную скорости

int impulse = 0;
...
void setup(){
  attachInterrupt(0, speedometer, RISING);  //вход спидометра пин D2
...
void speedometer (){
  CurrentSpeed = (600000.0 / (micros() - micros_sp)); //600000.0 - 6 имп./м 
  micros_sp = micros();
  if (CurrentSpeed < 1){
    CurrentSpeed = 0;
  }
  impulse ++;
}  

Код отправки выглядит так

  static uint8_t endOfPacket[3] = {0xFF,0xFF,0xFF};

...

  if (impulse == 600){
    Serial.print("speed.va0.val=1");  //импульс 100 метров
    Serial.write(endOfPacket,sizeof(endOfPacket));
    impulse = 0;
  }

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

И ещё складывается ощущение, что ардуина безумно тормозит во время работы. Все задержки (антидребезг, долгие нажатия и т.д.) существенно больше, чем установленные значения. Если что - delay'ев нету в коде. Может она тормозить из-за того, что по Serial постоянный поток данных идёт? Скорость 9600.

Sync
Offline
Зарегистрирован: 12.01.2016

Блин, ступил. impulse должна быть volatile, так как переменная в attachInterrupt. В понедельник проверю на плате.

Тарас Петрович
Offline
Зарегистрирован: 21.11.2015

http://arduino.ru/forum/programmirovanie/posovetuite-po-avtomobilnomu-spidometru

Работает на машине. Датчик стандартный жигулёвский. Только суточник мозги выносит, нет вдохновения допилить. Схема там есть, прога есть.

Sync
Offline
Зарегистрирован: 12.01.2016

Спасибо, почитаю. Собственно видимо общий пробег буду храть в ардуине и выплёвывать его на дисплей, а суточный пусть дисплей сам своими средствами считает, благо мозгов для этого у него хватает. Жаль версия дисплея без EEPROM, а то и общий хранил бы там, благо большие числа пишутся без бубна.

Sync
Offline
Зарегистрирован: 12.01.2016

Опять нужна помощь сообщества. Всё написал, всё работает, но скачет скорость по физическим причинам (люфт в редукторе заднего моста). Надо усреднять значения. Сделал счётчик, который считает количество импульсов и завязал его на скорость, т.е.при скоростях до 10 км/ч выдаёт скорость напрямую без усреднения, до 20 усреднение по 2 импульсам, до 30 по 3  и т.д. Чем больше скорость, тем больше измерений для усреднения берётся. Код выглядит так

void speedometer (){
  MomentSpeed = (600000.0 / (micros() - micros_sp));
  micros_sp = micros();
  speedcount ++;
  normalspeed = normalspeed + MomentSpeed;
  speedratio = ((MomentSpeed / 10) + 1);
  if (speedcount == speedratio){
    CurrentSpeed = normalspeed / speedcount;
    speedcount = 0;
    normalspeed = 0;
  }
}  

Всё работает, если скорость меняется относительно плавно (проверяю пока на генераторе импульсов), но если её поменять резко, то что-то происходит и CurrentSpeed замирает на каком-то последнем значении и перестаёт меняться. В чём дело?

di_mot
Offline
Зарегистрирован: 12.08.2016

Sync пишет:

 В чём дело?

1. В том, что математическое как бы "усреднение", при таком алгоритме, происходит ПОСЛЕ полных N циклов. Где N - кол-во циклов для усреднения.
А до наступления этого значения - показывает "морковкины загвины".

См. строку "speedratio = ((MomentSpeed / 10) + 1);"
То есть берем 0,1 от величины MomentSpeed и прибавляем к ней ЕДЕНИЦУ.
И какой физический смысл полученного значения в speedratio?

2. Лучше 3-ю строку (в приведенном коде) переместить ПЕРЕД 12-й строкой,  самом конце процедуры.

3. А еще попробуй рывком снять сигнал "с датчика" (генератора). Если правильно "прочитал" код, то будешь тоже удивлен и не приятно.

Sync
Offline
Зарегистрирован: 12.01.2016

Ну получим 1,1 MomentSpeed, я полагал, что поскольку значение является int, то дробная часть просто отбросится и останется 1. Что и соответствует выводу скорости напрямую без усреднения.

Про рывком снять ты говоришь в том плане, что на ноль не переключится? Это я в курсе, там для формирования 0 на этот случай отдельный кусок кода будет.

di_mot
Offline
Зарегистрирован: 12.08.2016

Sync пишет:
Что и соответствует выводу скорости напрямую без усреднения.

Резонный вопрос: - А зачем тогда процессор напрягать лишними арифметическими действиями?

Типа он железный, пусть и работает. ;-)

И где тогда происходит "усреднее" в приведенном выше фрагменте кода?

Sync пишет:
Про рывком снять ты говоришь в том плане, что на ноль не переключится? Это я в курсе, там для формирования 0 на этот случай отдельный кусок кода будет.

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

Sync
Offline
Зарегистрирован: 12.01.2016

di_mot пишет:

Резонный вопрос: - А зачем тогда процессор напрягать лишними арифметическими действиями?

Типа он железный, пусть и работает. ;-)

Ну вообще да :) Иначе придётся условие писать, чтоб это всё начинало работать с 10 км/ч. Я не знаю насколько это сильно напрягает проц, но не думаю, что это прямо таки критично. Могу дописать условие, но не думаю, что это что-то изменит, "виснет" оно на любой частоте.

di_mot пишет:
И где тогда происходит "усреднее" в приведенном выше фрагменте кода?

Он суммирует скорость за speedcount измерений и делит на количество этих измерений. Результаты (CurrentSpeed) и будут усредненной скоростью.

di_mot пишет:
Не только когда на входе отсутствуют импульсы. Но и при низких значения "скорости" будет "недосчитываться" по той же причине, что и не сбрасывается в ноль.
Вопрос - при сколь низких значениях? До 5 км/ч (примерно 8,3 импульса в секунду) вообще пофигу.

Sync
Offline
Зарегистрирован: 12.01.2016

Написал условие. Видимо действительно мозгов не хватает плате. Если кратность ставить выше 5, то сваливатся начинает время от времени. Оставил 5, думаю этого вполне достаточно, хотя на больших скоростях я бы и 20 влепил.

Sync
Offline
Зарегистрирован: 12.01.2016

Поставил на машину - какая-то хрень опять, как будто переполняется что-то, работает пару кругов вокруг гаражей и начинает сходить с ума, перезагружаю ардуину кнопкой опять хватает на пару кругов