Вопрос по шаговому двигателю для спидометра...
- Войдите на сайт для отправки комментариев
Добрый день всем!
Совсем недавно стал обладателем конструктора Arduino опыта в таких делах почти нет. Но уже кое что освоил благодаря форуму. Решил я на Nano сделать приборную панель для скутера. Почти все понял как сделать и уже кое что получается. на данный момент реализовал спидометр одометр и тахометр используя два прерывания что есть в нано. На ЛСД дисплее все отлично отображается генератором импульсов проверяю все работает отлично. но посетила меня мысль сделать спидометр стрелочный. Используя для этого шаговый мотор. и вот тут никак мне не сообразить как вычислить количество шагов для поворота стрелки...
Задача такая скорость обновляется каждые 500мс я бы хотел как то вычислить разницу между значением последним и предпоследним. То есть что вроде: Количество шагов = скорость (последняя)-скорость(предпоследняя)
прошу подсказать как это сделать в скетче...
наверно для этой цели проще сервомашинку использовать но мне кажется встроенного потенциометра на долго не хватит.
Вам все равно потребуется находить нулевое положение стрелки, так что лучше серву
проблему нуля думаю решить поставив фрикционную муфту на стрелке. и упор для стрелки в нулевом положении. при включении зажигания давать некое количество шагов назад что бы стрелка ложилась на упор а муфта проскальзывала.
Смысла конечно нет, но если хочется, то ради бога. А задачка Ваша решается просто, если знаете разницу скорости и знаете сколько один шаг дает вот вам и прямая завсимость. Хотя я бы просто высчитал прямую зависимость угла поворота от скорости и стремился бы к этому углу всегда.
так вот у меня и вопрос как эту разницу скорости узнать =)) а уж на нужное количество шагов я по ней вычислю. Кстати приборки всех современных автомобилей на шаговых моторах. А серва точно сдохнет через 100км особенно в городском режиме.
Ну так заведите переменную под названием ПрошлаяСкорость. Запишите в нее значение скорости а через пол секундны считайте скорость заново. Вот вам данные для анализа: ПрошаяСкорость и ТекущаяСкорость. потом как вычтете одно из другого присвойте ПрошлойСкорости значение ТекущейСкорости
ладно попробую разобраться. спасибо
В библиотеке AccelStepper есть команда MoveTo(xxx) по моему называется, устанавливающая ротор в заданное положение , если считать от нулувого. Соответстенно говоришь ему встать в положение, пропорциональное частоте импульсов с датчика скорости. Не надо никаких разностей высчитывать.
А нулевое положение задаётся в сетапе, дав количество шагов в минус с запасом, и затем обнулив его.