Цифровой спидометр


Рекомендуемые сообщения

У тебя _periodMS - это время между импульсами, тобишь период? или это у тебя константа?

это время, которое прошло с начала замера....

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

Поэтому я и искал как написать код, не привязанный к точному измерению времени. То есть мы меряем не количество импульсов, а мерить период между импульсами. Без этого всё намного проще вообще

считываем сколько импульсов пришло за 0,6с (600мсек), и вот сколько импульсов натикало за это время - столько и км\ч у нас в данный момент. Вообще не грузим проц никакими расчётами, кроме подсчёта промежутка времени в 0,6 секунды.

Опять себе противоречишь :) Нельзя не привязываясь ко времени точно отмерить 600мсек :)

К тому же 600мсек - достаточно большой период. Такая частота не годится, например, для замера времени разгона до 100.

Ну и все равно нужна синхронизация по импульсу, ибо если у тебя частота импульсов будет небольшой (допустим 11гц) , то за эти 0.6сек должно прийти (11*0.6 = 6.6 импульсов), а придут целые 6 импульсов, а еще 0.6 потеряется. В итоге получаем потерю точности в 10% для данного конкретного случая.

Поэтому начало и конец замера времени должны быть по-любому синхронизированы по импульсу, если мы говорим о точности.

Изменено пользователем $L!M

tazzzman1.png

_____________________________________________

2108 LowCost Rally Edition на Drive2.ru

Power means nothing without control.

If everything seems under control, you're just not going fast enough. (с) Mario Andretti

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 30
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Про 600 мсек - это я имел ввиду для самоё простейшей реализации спидометра. Для точных измерений он никоем случаем не подходит. Для точных замеров от 0 до 100 идеальна связка акселерометр + датчик скорости. Так как Акселерометром мы стартанём отсчёт времени (при трогании с места), а дальше уже количества импульсов хватит с головой чтобы измерить скорость в 100к\ч очень точно.

UPDATE - при этом используя конечно же не алгоритм подсчёта импульсов за 600мсек)))

Выше описан алгоритм для точного подсчёта. Просто ты меня немного неправильно понял. На какой вход подаёшь сигнал с датчика скорости на INT0 (1) или на ICP?

И какой - заданный период обновления показаний???

Изменено пользователем ukr823f
Ссылка на сообщение
Поделиться на другие сайты

у меня еще есть апекси рсм, там есть акселерометр и сам прибор может корректировать скорость в по каким параметрам еще не разбирался.

c1411cffbbf2eb8200a6b21c9c547bc1.gif

Ссылка на сообщение
Поделиться на другие сайты

При трогании с места датчика скорости с головой, как тока пошли импульсы - начинаем отсчет времени. Акселерометр больше нужен для замера квотера, ибо там букс на старте очень сильно влиять будет. А для разгона до 100 букс не важен... Разве что ведровер ацко мощен и может на асфальте в буксе до 100км/ч раскрутить кальосья :)

Импульсы на INT0 или INT1 - пофиг, внешнее прерывание, кароч. Период 200-300 мсек, чтоб не выглядело лаганутым, но в то же время не сильно мельтешило. Для семисегментника ставил юзал 200. Щас приборку в корча делаю на LCD дисплее, там 300мс на скорость, 50мс для тахометра в виде LED полоски , и те же 300мс для оборотов на экране.

Изменено пользователем $L!M

tazzzman1.png

_____________________________________________

2108 LowCost Rally Edition на Drive2.ru

Power means nothing without control.

If everything seems under control, you're just not going fast enough. (с) Mario Andretti

Ссылка на сообщение
Поделиться на другие сайты

Я по другому меряю . импульсы подаются на вход ICP. В прерывании от входа ICP есть обработчик прерывания, в котором мы выставляем по чём было прерывание - по восходящему, или по нисходящему фронту, и считаем значение счётчиком ICR. У нас выходит три переменные - rising1 (время , пока сигнал находился в высоком уровне, falling - время пока сигнал находлся в низком уровне, и rising2 - время прихода следующего импульса высокого уровня)

Период вычисляем по формуле

T=rising_2 - rising_1 + (OVF_counter * 65536);

где rising 2 и 1 описал выше

Кличество переполнений нашего таймера. Получаем по формуле период в микросекундах

Частоту вычисляем по формуле

F=1 000 000 \ T

где Т - наш период)

Ну а скорость вычисляем по формулам которые я написал выше, и выводим впринципе с любой периодичностью

Акселерометр добавлять есть смысл - если уж хочется очень точных замеров, так как В момент отпускания сцепления, у нас уже начался отсчёт времени, а если колёса не пробуксовывают, то импульс прийдёт через определённый промежуток времени (хоть он и маленький - но всё же эта неточность будет присутствовать)

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

Изменено пользователем ukr823f
Ссылка на сообщение
Поделиться на другие сайты

Товарищи, помню кто то интересовался цифровым спидометром на микроконтроллере, который реализован не на подсчёте импульсов от датчика скорости, а от времени между двумя импульсами, который отличается большей точностью. Напишите плиз какие нужны требования к нему.

Я интерсовался, давал сылки на проблемы возникающие при этом со штатным датчиком (6имп/метр).

Лично мои требования/пожелаия следующие:

- частота обновления около 0,2..0,3 секунды, возможно адаптивная в зависимости от ускорения (если ускорения нет то и обновление не быстрое), с защитой от дребезга (в районе округления +-1 км/ч).

- возможность корекци скорости в зависимости от длины окружности покрышки и редуктора привода спидометра.

Первое требование не-реализуемо на скороростях до 12км/ч, путём подсчёта импульсов (это мин скорсть для обновленя самым удобным для алгоритма интервалом 0,6с). На больших скоростях я не знаю на сколько надёжным будет сигнал длительности м/д импульсами.

И давайте всё таки разберёмся. Как у нас получается реальная скорость. У нас априори принято что 6 имп датчиков это равно 1 оборот колеса, или 1 метр пройденного пути.

Но представим 2108. Базовое колесо R13. Средний диаметр колеса - 500мм. Итого. Длина окружности - L=pi*D = 3,14*500 = 1570мм. Это путь проходимый за один оборот колеса.

Тогда как у нас выходит что 6 импульсов датчика это примерно 1 метр пройденного пути?

Всё обстоит по другому: 6ть имп это должно быть всегда один оборот и один метр. Это нужно для правильной работы одометров (и спидометра).

Но из за примененя разных редукторов приводов спидометров и разной резины возникает ошибка +-8 %. (15км/ч при скорости 190).

Например мои зимние колёса имеют длину окружности 1,8м, а летние 1,67м. При этом ни то ни другое никак не совподает с компесирующим это дело редуктором 1,75 (12 зубов). По этому желателен ручной переключатель коррекции(джамперами).

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

Тут можно думать и дальше - вольтметр, время в пути/на стоянке - итого выйдет маршрутный комп.
Ссылка на сообщение
Поделиться на другие сайты

Ок, я понял. По малым скоростям понятное дело частого обновления не получиться по одной причние, которую вы указали. то есть при изменении частоты с 1 Гц (0,6км\ч) до 2 Гц (1,2км\ч) Должно пройти не менее 1 периода между сигналами то есть выйдет не менее 1 секунды. Но кому оно нужно 0,6 км\ч определять с точностью до милисекунд. Но начиная уже примерно с 3 км\ч скорость отображения может быть достаточно велика.

Если нужно могу скинуть проект в протеусе - можно покрутить, посмотреть изменение скорости.

Возможность коррекции введу. Это не проблема. Вот по такой формуле посчитаем

V=F*(L/1000 * 3600) /6

где L можно будет ввести я думаю кнопками. - это длина окружности. также можно будет менять количество импульсов на метр пути от 1 до 50 (думаю по идее должно хватить, это чтобы можно было читать скорость доупстим с венца АБС). Можо сделать по другому. Допустим рулеткой отмерить 10 метров точно, и ввести калбровку. вошли в режим калибровки, и начинаем проезжать 10 метров. Количество импульсов полученных за 10 метров делённое на 10, и будет нашим количеством импульсов на 1 оборот.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Ребята нужна помощь!!! Недавно поставил торпеду с опель вектра Б на девятину все работает кроме спидометра.Спидометр в етой панели електронный он берет сигнал с датчика АБС.Можно ли подключитьего к вазовскоьу датчику скорости или через датчик АБС без блока АБС Может через какую схему согласования нада мудрить кто в этом силен.Направте на путь истинный.

Ссылка на сообщение
Поделиться на другие сайты

Ребята нужна помощь!!! Недавно поставил торпеду с опель вектра Б на девятину все работает кроме спидометра.Спидометр в етой панели електронный он берет сигнал с датчика АБС.Можно ли подключитьего к вазовскоьу датчику скорости или через датчик АБС без блока АБС Может через какую схему согласования нада мудрить кто в этом силен.Направте на путь истинный.

У вас на выходе с блока АБС скорее всего такой же сигнал как и на ВАЗовском датчике скорости. То есть этот сигнал называется - меандр. Импульсы - это притягивании линии к "массе", а когда нет притяжки к массе, там у нас внутренняя подтяжка к +12В. Короче эту строку не читайте)))

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

Если спидометр будет врать - то собирается простейший умножитель\делитель частоты и всёё будет ок!

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти