Например TDA7294

Форум РадиоКот • Просмотр темы - Измерение скорости автомобиля по штатному датчику
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 07:43:29

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 100 ]  1, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 18:51:01 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
Здравствуйте, форумчане. Делаю проект бортового компа. Столкнулся с проблемой измерения скорости автомобиля. Штатный датчик скорости находится в коробасе и выдает 4073 импульса на 1 километр пройденного пути. О чем гласит наклейка на приборной панели. Датчик представляет из себя обычный геркон, который замыкает подтянутый к 5 вольтам вход приборки на землю. 4073 импульса на штатных колесах 15 дюймов. У меня штатные. Но когда я начинаю движение, мой код выдает скорость приблизительно в 1.5 раз больше реальной. Скорость измеряю в прерываниях по INT0( по спаду, внутренняя подтяжка включена), и по прерыванию CTC таймера 1. Прерывание таймера настроено каждую секунду. Думал, дребезг. Поставил на вход кондер 0.1 мкф и на землю. Показания стали в 4 раза меньше реальной скорости авто. Поставил 0.01 мкФ. Ничего не изменилось, показания также ниже в 4 раза. Куда копать? Код привожу.

Код:
ISR(INT0_vect)
{
   // 1000/imp - это расстояние, пройденное за 1 импульс в метрах. 1000 метров/на 4073 импульса =0,24551 метра за 1 импульс.
   cnt_pobeg++; // счетчик пришедших спадов
   probeg=probeg+0.00024551; // увеличиваем пробег с каждым импульсом (в км)
   
}

ISR(TIMER1_COMPA_vect)
{
   // Режим CTC, вызов каждую 1 сек
     speed_m_s=(float)cnt_pobeg*0.24551; // Скорость в метрах/сек
     cnt_pobeg=0;
}

while(1)
{
     speed_km_h= (speed_m_s*3.6);
     sprintf(val_1,"%.0f",speed_km_h); // Выводим скорость км/ч
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 19:13:48 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1636
Откуда: KN34PC, Болгария
Рейтинг сообщения: 3
Посчитайте в км, метрах, сантиметрах или меньше, но уберите этот float. В этой функции/задаче нет смысла из этих числа с плавающей запятой.
И пусть таймеры считают мелкие функции (x++ примерно), а если нужно распечатать (напр. время отчета истекло): флаг = 1 и вывести в основной цикл (может за время х из какого-нибудь отчета). Таким образом, вероятность накопленной ошибки из-за скорости обработки становится незначительной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 19:56:26 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
Я считаю в метрах. Поэтому float. В километрах тоже будет float. Единственный вариант это считать в см. Но дальше в программе, в основном цикле всё равно я приду к float. Т.к. 1км/ч=1м/c *3.6. Если вас не затруднит, приведите код, как сделали бы вы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 20:05:08 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Вообще, внимание надо обращать не столько на то, как считать, а больше на то, что потом будет делаться. float не обладает достаточной точностью и ошибка будет накапливаться, если его суммировать, а double сожрёт напрасно ресурсы.
Считайте только импульсы и время. Всё. Они у Вас уже есть, они целые. Всякие дробления и приведения к чему-либо делайте непосредственно перед выводом на экран, использовании в расчетах чего-то и т.д.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 20:05:49 
Говорящий с текстолитом

Карма: 10
Рейтинг сообщений: 94
Зарегистрирован: Вт янв 05, 2016 10:14:25
Сообщений: 1523
Откуда: Мелеуз
Рейтинг сообщения: 0
показания "probeg" правильно отображаются на дисплее?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 20:15:29 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
probeg вообще не инкрементируется. Возможно не обратил внимания на него. Т.к с кондером он точно не инкрементировался, а без кондера смотрел скорость и не глянул пробег. Завтра скажу точно.

Добавлено after 4 minutes 57 seconds:
Заказал себе генератор прямоугольных импульсов на 555. Буду пробовать имитировать датчик скорости. О результатах отпишусь.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 21:04:38 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Микроконтроллер сам прекрасный имитатор... PWM


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 22:08:27 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1636
Откуда: KN34PC, Болгария
Рейтинг сообщения: 3
Один аргумент для переписывания кода без чисел с плавающей запятой (скорость обработки еще не добавили в "минусов"):
Понимаете, что float в AVR составляет 32 бита: знак(1 бит), експонента(8 бита), мантиса(23 бита). Т.е. наименьший шаг изменения в 1 бит равен на 2^-23 = 0,00000011920928955078125 :).

Теперь вычислите со своему числу 0.00024551 сколько есть погрешности на каждом сборе и как ошибка "накапливается". Если хотите и 100 чисел после зпетаю написать у коеффициента, то там есть 7 цифры после запетаю (и то с условием для 7-мое).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 22:23:13 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6034
Откуда: Minsk
Рейтинг сообщения: 3
Что float не позоляет иметь достаточную точность - это всерьёз рассматривать не приходится. Другое дело, как правильно заметили выше, скорость обработки float оставляет желать. Накапливать сумму по прерываниям следует в целых числах, да и вывод на индикацию в целых (точнее - с фиксированной точкой) не представляет трудности.
Нужно присмотреться к аппаратной части. Поддомкратить кар и осциллом посмотреть - что там за импульсы? Ну или есть автономный осцилл - погонять с приятелем по реальной трассе, а он пусть смотрит импульсы. Дребезг - убрать программно. Или кондёр + триггер Шмитта. Или одновибратор. Просто кондёр - решение слабое и бесперспектвное.
В общем-то, задача не из суперсложных.
И ещё неизвестно - не гадят ли помехи из бортовой сети. Как организовано питание?

_________________
Изображение


Последний раз редактировалось Jack_A Вс сен 03, 2023 22:34:15, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 22:33:06 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 2
Jack_A писал(а):
Что float не позволяет иметь достаточную точность - это всерьёз рассматривать не приходится.
Увы, но ещё как приходится. Будучи начинающим программистом я из-за этого допускал множество ошибок. Float годен для промежуточных результатов или с коротким сроком жизни.
Но в данном случае пофиг. Вся беда в том, что часто программисты отождествляют микроконтроллер с собой: - температура нужна в градусах Цельсия, а датчик выдает в каких-то милливольтах на Кельвин, а у нас 10-битный АЦП? Окей, ща напишем приведение к Цельсиям и будет хорошо, насобираем статистику, построем ПИД-регулятор...
Но зачем? АЦП выдал некое значение. Целочисленное. Можно прекрасно работать с ним, и лишь тогда, когда необходимо показать человеку, перевести в человеческий вид.
Так и здесь. Чем плохи импульсы? Только тем, что человеку они непонятны. Но не ему же с ними работать...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 22:39:52 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6034
Откуда: Minsk
Рейтинг сообщения: 0
Чем плохи импульсы? Только тем, что человеку они непонятны. Но не ему же с ними работать...

"Вот иманно!" © Импульсы плохи не тем, что они - импульсы, а тем, что они могут быть искажены до безобразия.
СпойлерМой приятель говорил: "Бабы - дуры. Не потому, что они - дуры, а потому, что они - бабы".
Надеюсь, этот форум дамы не читают, а то Сашке бы там икнулось, в том мире :(

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 22:48:45 
Друг Кота
Аватар пользователя

Карма: 195
Рейтинг сообщений: 8539
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 42344
Откуда: Нерезиновая
Рейтинг сообщения: 0
:dont_know: :facepalm:
А не проще посчитать количество импульсов с датчика за определённое время, а время счёта подобрать так, чтобы количество посчитанных за это время импульсов получалось равным скорости?

зы.. Время счёта, кажется, получается что-то в районе 0,9 секунды.. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Вс сен 03, 2023 23:49:26 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
это зависит от того, что с ними делать дальше. Выводить на экран скорость каждые 0.9 секунды например - да, а если ещё считать суточный пробег... если действий всяких много, то надо делать что-то базовое. Это как у механиков: нельзя размечать множество, например, отверстий, отмеряя следующее от предыдущего. Должна быть некая база, от которой все измерения откладываются, тогда нет накопления погрешности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 01:35:22 
Друг Кота
Аватар пользователя

Карма: 195
Рейтинг сообщений: 8539
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 42344
Откуда: Нерезиновая
Рейтинг сообщения: 0
Вообще- странное число- 4073.. :dont_know: видимо, ТС его получил "экспериментальным путём"
Обычно у европейских автомобилей идёт 1000 оборотов датчика на километр пробега, а у американских 1000 оборотов на милю (624 оборота на километр) У советских "жигулей" 1000 оборотов привода спидометра на километр, у Волги- 624.
У ВАЗ-ов 6 импульсов на оборот, стоит, на сколько я понял, датчик холла.. Реально у вас- 4000 импульсов на километр, а эти "73" из-за того, что, обычно, производители стараются сделать так, чтобы спидометр чуть завышал показания- меньше шансов нарушения скоростного режима.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 01:50:26 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Надо сосчитать, проехав километр. Но вообще, почему должно быть круглое число? Немного разницы в диаметре колёс и асфпальт/песок - наверняка даст разное число. Точное только на оборот вала КПП, а на расстояние - сомнительно...

Добавлено after 2 minutes 31 second:
Надо современное авто брать :) там подцепился к CAN и всё...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 17:38:06 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
4073 импульса на 1 км пути это я не из пальца высосал. Это на приборке наклейка такая есть. Это древний немец. Спидометр у него аналоговый, одометр - шаговый двигатель. Управляет этим делом микросхема UAF2115. По поводу быстродействия пересчета float, да наверно ест ресурсы. Но как я думаю, успевает все посчитать, т.к. все таки склоняюсь к дребезгу или наводкам. Считает больше, чем в реальности скорость. Ошибка накопления может быть, но не критичная. Да и речь то о текущей скорости. Какое там накопление? Во внешнем прерывании инкрементируется счетчик пришедших спадов(тот же период). А в прерывании таймера раз в секунду этот счетчик умножается на определенный коэффициент и сбрасывается. И уже в основном цикле идет вывод на экран. Ну и соответственно по этим данным будет расчет расхода топлива на 100 км и суточный счетчик пробега.

Добавлено after 2 minutes 46 seconds:
Да, заметил, что на остановленном авто скорость таки прыгает 1-3 км/ч, хотя должна показывать ноль. Скорее всего наводки идут.

Добавлено after 8 hours 21 minute 2 seconds:
Так, подцепил ослик. Никакого криминала я не увидел. Все четко. Но и ложняки пропали. Но скорость все равно больше показывает раза в полтора. На разных развертках смотрел, нет дребезга. Щуп по идее не должен влиять. Делитель 1:10 да и емкость у него пикофарады. Приедет генератор импульсов, буду дальше ковырять.
На видео видно галюны на стоящем авто.
https://youtu.be/H0ITuELXgc8?si=hnn73yLYZcnPZt8M


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 17:55:55 
Говорящий с текстолитом

Карма: 10
Рейтинг сообщений: 94
Зарегистрирован: Вт янв 05, 2016 10:14:25
Сообщений: 1523
Откуда: Мелеуз
Рейтинг сообщения: 0
Я же вас спрашивал-"probeg" правильно показывает? Проехали километр,должно накопится 4073 или около того


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 17:59:52 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
Таки я вам ответил, что не инкрементируется. Гляньте выше)

Добавлено after 51 second:
Ничего с ним не происходит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 18:12:53 
Говорящий с текстолитом

Карма: 10
Рейтинг сообщений: 94
Зарегистрирован: Вт янв 05, 2016 10:14:25
Сообщений: 1523
Откуда: Мелеуз
Рейтинг сообщения: 0
Я вот чего подумал-может написано "4073 импульса на милю",а не на километр? как раз разница в полтора раза

Добавлено after 1 minute 34 seconds:
Посмотрел мануал AUDI 100 (если у вас такая),вообще даже число 4073 не нашел :)

Добавлено after 2 minutes 40 seconds:
Вы же сами в видео говорите что сами вывели восьмерки,а на какой секунде именно переменная "probeg"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Измерение скорости автомобиля по штатному датчику
СообщениеДобавлено: Пн сен 04, 2023 18:20:30 
Открыл глаза

Карма: -3
Рейтинг сообщений: 0
Зарегистрирован: Ср янв 27, 2010 21:53:52
Сообщений: 57
Рейтинг сообщения: 0
А у меня схожая мысль возникла. Возможно эти 4073 импульса именно только для одометра. А скорость это другой выход этой микросхемы и там типа микро или миллиамперметра. И есть резистор токоограничительный. Но это нужно будет проверить с помощью генератора импульсов. Ну и возможно еще кину эти пульсы на вход по захвату таймера. Все-таки 2 прерывания использовать- это борщ наверно.

Добавлено after 5 minutes 1 second:
888888 - Это пробег в км в нижней строчке. 888888.0 - это пробег с учетом сотен метров на последних секундах видео. Там меню где 888888.0 и вторая строчка это км,ч. Которая дергается 1-3-2-4. Спидометр в км.ч.

Добавлено after 2 minutes 9 seconds:
Алгоритм вывода пробега такой: выключили зажигание- текущий пробег пишется в EEPROM. Вклюсили зажигание - читается и выводится. Но я проехал 12 км, и ничего не поменялось.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 100 ]  1, , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y