Установить шаговик в исходное состояние
- Войдите на сайт для отправки комментариев
Пнд, 17/10/2016 - 20:59
Задача: при старте устройства необходимо вернуть в исходное состояние вал шагового двигателя, я имею ввиду угловое положение, например 0 градусов, а уже в режиме исполнения программы считать импульсы поворота вала.
Как инициализировать исходное состояние, если вал двигателя находится в прозвольном положении? Есть ли способ, поделитесь версиями.
Есть банальный способ - оснастить двигатель датчиком исходного состояния и руководствоваться его срабатыванием. У меня так настенные часы ловят положение "12" для минутной стрелки. Датчик оптический щелевой. На шестерёнке флажок, перекрывающий датчик.
вот посмотрите у меня в теме. http://arduino.ru/forum/programmirovanie/arduino-mega-2560-servo-ik
Впринципе понятно что должны стоять датчики начального положения. Но в программировании я ноль и не могу понять как написать код с датчиками.
Или, если возможно, двигать в одну сторону до упора .
Типа начальной установки.
Двигать по времени, больше чем необходимо на полный ход.
При условии что вы не свернёте этот "упор".
Именно так часто делают в автомобильных печках - привод воздушной заслонки.
А потом, зная сколько шагов наш рабочий ход, то по шагам и управлять.
Минус этого- надо всегда знать и запоминать текущее положение.
Впринципе понятно что должны стоять датчики начального положения.
Для сервопривода - не должны. Для шагового двигателя - весьма уместны.
Для сервопривода - не должны. Для шагового двигателя - весьма уместны.
тогда как длся шаговых двигетелей выставить "точку отсчета" чтобы в дальнейшем эту точку считать за "ноль" и от нее уже поворачивать двигатель на заданное кол-во шагов? тут и нужен дачик нуля (геркон, или концевик... или прочие).
тогда как длся шаговых двигетелей выставить "точку отсчета" чтобы в дальнейшем эту точку считать за "ноль" и от нее уже поворачивать двигатель на заданное кол-во шагов? тут и нужен дачик нуля (геркон, или концевик... или прочие).
Да, конечно, безусловно, очевидно - для шагового двигателя желателен датчик "нуля" и я выше об этом писал. Тут главное - не путать шаговик с сервой, см. http://arduino.ru/forum/programmirovanie/arduino-mega-2560-servo-ik#new
Ещё раз : у сервы уже есть датчик положения, ей достаточно дать команду "повернись в 0".
Да, конечно, безусловно, очевидно - для шагового двигателя желателен датчик "нуля" и я выше об этом писал. Тут главное - не путать шаговик с сервой, см. http://arduino.ru/forum/programmirovanie/arduino-mega-2560-servo-ik#new
Ещё раз : у сервы уже есть датчик положения, ей достаточно дать команду "повернись в 0".
может ткнете носом в код, где реализована "паркова в ноль" шагового двигателя? без разницы на каком дачтике (оптический, контакт, геркон...)
Носом не ткну, давайте письменно попробуем. Код, который работает у меня в часах, несколько специфичен для общего применения, поэтому пока на уровне алгоритма изложу.
Итак, пусть у нас будет функция IsZeroReached(), возвращающая true - датчик "нуля" замкнут, false - не замкнут. Ещё пусть будет функция DoStep(), выполняющая поворот двигателя на один (или несколько) шаг. Теперь набрасываем код :
Вот как бы и всё )) Но есть пара нюансов. 1-й - не проскочить "нуль", решается уменьшением скорости/шага вращения вала. 2-й - если датчик "нуля" не в порядке, то вал будет поворачиваться вечно. Решается проверкой истечения таймаута.
Дальше спрашивайте, если что..
Araris
Спасибо, то что мне нужно.... я к своему стыду и не учел такой момент, что датчик может быть поврежден и мотор уйдет в бесконечный цикл. Можете мне дать свою эл. почту, (моя uvars собака маил ру). Спасибо
Мне кажется, вопросы лучше решать здесь, на то и форум ведь.