Спидометр: алгоритм
Спидометр: алгоритм
Народ подскажите как лучше написать программу работы спидометра. Я думал подсчитывать количество пролетов магнита по геркону за 1 секунду, но это не будет точно измерять скорость, может есть какие то идеи или наброски программ?
Если есть полезные ссылки, дайте пожалуйста.
Если есть полезные ссылки, дайте пожалуйста.
- Реклама
- Stkarapuz
- Вымогатель припоя
- Сообщения: 521
- Зарегистрирован: Пн фев 27, 2006 02:02:12
- Откуда: Россия, Санкт-Петербург
- Контактная информация:
я вот к лету собрался на велик сделать такой, думаю пролеты магнита это верно, но вот один магнит на оборот и несбалансированно и неточно, думаю штук 6--8 повесить и опрос 100мс поставить, программы будут, для PICов скорее всего, через месяцок...
Хотя была идея сделать через моторчик, что-то вроде чем быстрее едешь тем больше напруга, но не компактно и неудобно... Решать вам, удачи!
Хотя была идея сделать через моторчик, что-то вроде чем быстрее едешь тем больше напруга, но не компактно и неудобно... Решать вам, удачи!
Указывайте на ошибки других прямо, а не косвенно.
Уважаемые коты, СДАЛ и ЗДЕСЬ пишутся именно так
Унижая другого, унижаешь себя.
Уважаемые коты, СДАЛ и ЗДЕСЬ пишутся именно так
Унижая другого, унижаешь себя.
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Для програмных расчетов - что в лоб, что по лбу. Но если говорить об измерении скорости аппаратными средствами (без МК), то дважды прав мышонок: число импульсов прямо пропорционально пройденному колесом расстоянию. Определив сколько получается импульсов/метров за единицу времени - получаем скорость. Т.к. аппаратно временные интервалы легко реализуются таймером типа 555, то этот вариант прост. Если же мерить время предположим 1000 импульсов, то потом надо будет брать обратную величину (время-то в знаменателе), что аппаратно почти нереализуемо.Abaktych писал(а):Это НЕ верный метод.мышонок писал(а):А принцип верный - подсчитывать число импульсов за определённый промежуток времени.
Верный метод это измерять время некоторого числа импульсов.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Если бы ты хоть чуть чуть подумал то наверняка понял что за ЗАДАНУЮ единицу времени может произойти 1.9 импульса например - естественно посчитается 1 и таким образом ошибка будет огромной !
Поэтому нужно мерить имеенно время некоторого ЦЕЛОГО числа импульсов. Тогда ошибка будет лишь в величину "тика" таймера.
Т.е. может быть равна периоду тактирования МК например.
Поэтому нужно мерить имеенно время некоторого ЦЕЛОГО числа импульсов. Тогда ошибка будет лишь в величину "тика" таймера.
Т.е. может быть равна периоду тактирования МК например.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Не стоит говорить об обдумывании, иначе тема попадет в МЯУУУ, а мы получим пинков.
Аппаратно определить величину, обратную времени N импульсов - очень сложная задача, без МК практически нереализуемая, о чем я и сказал. А ошибка (которая будет лишь при черепашьих скоростях, когда пользоваться спидометром никому в голову не придет) лечится очень просто: надо выбирать такой интервал времени, чтобы в нем укладывалось некоторое существенно число импульсов. Например: если импульсы следуют от пролета спиц мимо датчика, то за 15 секунд их будет явно болше, чем 1,9
а обновлять показания спидометра чаще - особого смысла нет.
Хотя, если говорить абстрактно, надо совмещать оба метода - один для низких частот следования импульсов (малых скоростей), другой - для повышенных. Но это непросто и при программной реализации на МК. Кстати, именно с совмещением способов работают хорошие частотомеры: для частот менее 1 Гц они на самом деле измеряют период сигнала, а частоту вычисляют, хотя на высоких частотах ведут прямой счет, как обычно.
Аппаратно определить величину, обратную времени N импульсов - очень сложная задача, без МК практически нереализуемая, о чем я и сказал. А ошибка (которая будет лишь при черепашьих скоростях, когда пользоваться спидометром никому в голову не придет) лечится очень просто: надо выбирать такой интервал времени, чтобы в нем укладывалось некоторое существенно число импульсов. Например: если импульсы следуют от пролета спиц мимо датчика, то за 15 секунд их будет явно болше, чем 1,9
Хотя, если говорить абстрактно, надо совмещать оба метода - один для низких частот следования импульсов (малых скоростей), другой - для повышенных. Но это непросто и при программной реализации на МК. Кстати, именно с совмещением способов работают хорошие частотомеры: для частот менее 1 Гц они на самом деле измеряют период сигнала, а частоту вычисляют, хотя на высоких частотах ведут прямой счет, как обычно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
В том, что:
1. Чел мыслит в верном направлении, т.е. его метод верен.
2. Что измерение скорости делается именно таким способом (ну, с оговоркой - практически всегда таким).

Зато я, как обычно, невнимателен: все-таки речь идет о программном счете... Сбило с толку название раздела "Цифровая техника"... Простят ли меня модераторы???
1. Чел мыслит в верном направлении, т.е. его метод верен.
2. Что измерение скорости делается именно таким способом (ну, с оговоркой - практически всегда таким).
Зато я, как обычно, невнимателен: все-таки речь идет о программном счете... Сбило с толку название раздела "Цифровая техника"... Простят ли меня модераторы???
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
нет не верен - так как дает большую ошибку при задействовании тех же ресурсов.ARV писал(а):В том, что:
1. Чел мыслит в верном направлении, т.е. его метод верен.
Прктически... В автомобильных системах с которыми я занимался измеряют так как я описал. Потому что можно измерять от 1 периода импульсов с приемлимой точночтью.ARV писал(а):2. Что измерение скорости делается именно таким способом (ну, с оговоркой - практически всегда таким).
- Мышонок
- Друг Кота
- Сообщения: 3792
- Зарегистрирован: Чт сен 14, 2006 11:42:09
- Откуда: Обитаю на чердаке
- Контактная информация:
Зависит от скорости. Принцип тот же, что и у измерения частоты. Низкие частоты мы измеряем путем измерения времени между какими-то событиями (например, импульсами), высокие - тут легче посчитать число импульсов за фиксированный промежуток времени. Вопрос в целесообразности того или иного метода.Abaktych писал(а):Это НЕ верный метод.мышонок писал(а):А принцип верный - подсчитывать число импульсов за определённый промежуток времени.
Верный метод это измерять время некоторого числа импульсов.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
- dx40
- Нашел транзистор. Понюхал.
- Сообщения: 182
- Зарегистрирован: Вт июл 11, 2006 12:39:16
- Откуда: Москва
- Контактная информация:
Рассказываю как я делал спидометр.
Датчик - геркон, для уменьшения потребляемого тока, удалось уложиться в 500мкА с индикатором. Впаралель геркону - кондюк 0.01 мкф. От геркона на питание через резистор 5 ком и на INT0 микрухи (прерывание по срезу), другая нога геркона на соответственно землю.
Таймер тикает с частотой 1 кгц, считает время. По прерыванию от геркона обновляем показания спидометра, дополнительно можно сделать такую фичу: по таймеру - если прошло времени больше, чем промежуток времени прошлого оборота - высчитываем скорость, как будто произошло прерывание, и показываем ее. В итоге получается, что при торможении и остановке спидометр не "подвисает", а пытается предсказать текущую скорость.
Могу показать примеры кода.
Датчик - геркон, для уменьшения потребляемого тока, удалось уложиться в 500мкА с индикатором. Впаралель геркону - кондюк 0.01 мкф. От геркона на питание через резистор 5 ком и на INT0 микрухи (прерывание по срезу), другая нога геркона на соответственно землю.
Таймер тикает с частотой 1 кгц, считает время. По прерыванию от геркона обновляем показания спидометра, дополнительно можно сделать такую фичу: по таймеру - если прошло времени больше, чем промежуток времени прошлого оборота - высчитываем скорость, как будто произошло прерывание, и показываем ее. В итоге получается, что при торможении и остановке спидометр не "подвисает", а пытается предсказать текущую скорость.
Могу показать примеры кода.


