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

Зато я, как обычно, невнимателен: все-таки речь идет о программном счете... Сбило с толку название раздела "Цифровая техника"... Простят ли меня модераторы???
1. Чел мыслит в верном направлении, т.е. его метод верен.
2. Что измерение скорости делается именно таким способом (ну, с оговоркой - практически всегда таким).
Зато я, как обычно, невнимателен: все-таки речь идет о программном счете... Сбило с толку название раздела "Цифровая техника"... Простят ли меня модераторы???
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 232
- Зарегистрирован: Ср фев 28, 2007 17:48:07
нет не верен - так как дает большую ошибку при задействовании тех же ресурсов.ARV писал(а):В том, что:
1. Чел мыслит в верном направлении, т.е. его метод верен.
Прктически... В автомобильных системах с которыми я занимался измеряют так как я описал. Потому что можно измерять от 1 периода импульсов с приемлимой точночтью.ARV писал(а):2. Что измерение скорости делается именно таким способом (ну, с оговоркой - практически всегда таким).
Тут проскользнуло слово велик, а велик он на то и велик, что виляет и измерять будем не скорость велосипеда, всего лишь скорость вращения колеса. Для велосипеда, уж если точно, как хотите, нужно примязиваться к чему то внешнему.Abaktych писал(а):ARV писал(а):В том, что:
В автомобильных системах
Зависит от скорости. Принцип тот же, что и у измерения частоты. Низкие частоты мы измеряем путем измерения времени между какими-то событиями (например, импульсами), высокие - тут легче посчитать число импульсов за фиксированный промежуток времени. Вопрос в целесообразности того или иного метода.Abaktych писал(а):Это НЕ верный метод.мышонок писал(а):А принцип верный - подсчитывать число импульсов за определённый промежуток времени.
Верный метод это измерять время некоторого числа импульсов.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Нужен формирователь импульсов. От простейшей RC диф. цепочки до специализированных микросхем. Выбор за вами. Геркон - не лучший вариант.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Рассказываю как я делал спидометр.
Датчик - геркон, для уменьшения потребляемого тока, удалось уложиться в 500мкА с индикатором. Впаралель геркону - кондюк 0.01 мкф. От геркона на питание через резистор 5 ком и на INT0 микрухи (прерывание по срезу), другая нога геркона на соответственно землю.
Таймер тикает с частотой 1 кгц, считает время. По прерыванию от геркона обновляем показания спидометра, дополнительно можно сделать такую фичу: по таймеру - если прошло времени больше, чем промежуток времени прошлого оборота - высчитываем скорость, как будто произошло прерывание, и показываем ее. В итоге получается, что при торможении и остановке спидометр не "подвисает", а пытается предсказать текущую скорость.
Могу показать примеры кода.
Датчик - геркон, для уменьшения потребляемого тока, удалось уложиться в 500мкА с индикатором. Впаралель геркону - кондюк 0.01 мкф. От геркона на питание через резистор 5 ком и на INT0 микрухи (прерывание по срезу), другая нога геркона на соответственно землю.
Таймер тикает с частотой 1 кгц, считает время. По прерыванию от геркона обновляем показания спидометра, дополнительно можно сделать такую фичу: по таймеру - если прошло времени больше, чем промежуток времени прошлого оборота - высчитываем скорость, как будто произошло прерывание, и показываем ее. В итоге получается, что при торможении и остановке спидометр не "подвисает", а пытается предсказать текущую скорость.
Могу показать примеры кода.
Может и от дребезга, а может и ещё для чего! 
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...


