Шаговый двигатель: как посчитать сделанные шаги?
- Войдите на сайт для отправки комментариев
Есть исполнительный механизм, который управляется шаговым двигателем. (допустим, это манипулятор робота)
Когда подается питание на всю конструкцию (и на управляющую Ардуину в том числе) то неизвестно, в каком положении находится этот манипулятор. Для того, чтобы узнать это в самом начале выполнения программы необходимо повернуть манипулятор в левое крайнее положение (до концевой кнопки), там произвести сброс некой переменной, а потом произвести поворот вправо (до другой концевой кнопки) и там записать новое значение переменной. Значением этой переменной должно быть количество шагов, которое сделал шаговик, проходя путь от левой кнопки до правой. В дальнейшем за позиционирование манипулятора будет отвечать число, которое находится в этом диапазоне. Но как можно посчитать количество сделанных шагов от одного события (сигнал от кнопки) до другого (сигнал от другой кнопки)? Смотрел стандартную библиотеку. Не нашел даже намека на подобную возможность.
Поделитесь хотя бы идеей, как это сделать. Может быть можно как-то иначе определить позицию манипулятора в момент подачи напряжения и не прибегать к концевым кнопкам?
(запись последнего положения манипулятора на флеш карту не совсем удобна: во-первых, потому что сложно, во-вторых, потому что нагромождает конструкцию ардуино шилдов и в-третьих, потому что питание робота может быть отключено аварийно безо всяких предварительных записей на карту)
Шаг=импульс,все просто! Когда делаете шаг,делаете 1 импульс ,дергаете ножку STEP драйвера;кто мешает сделать цикл while и инкрементом с каждым импульсом прибавлять к переменной значение?
а инерцию исполнительного устройства вы конечно не учитываете. Это я к тому, что при дальнейшем отслеживании координаты вашим методом расчетное положение не будет соответствовать фактическому. И ваш робот может двинуть когото по башке :)
хотя народ делает домашние станочки без обратной связи по положению. Количество импульсов на оборот задают и вперед :)
Инерцию отключить)гыг
Ограничители никто не отменял)
Если шаговик не делает один шаг на один импульс- или это не шаговик или вы его перегрузили и не хватает мощьности или вы пытаетесь на нём быстро ехать, а он так быстор не умеет.
ну да, т.е вы гарантируете точное позиционирование без обратной связи по положению?
Хм...тогда щелевой фотопрерыватель и ленту для обратной связи)
ну да, т.е вы гарантируете точное позиционирование без обратной связи по положению?
Если нагрузки на шаговый двигатель не превышают его возможностей - то точное позиционирование.
ну да, т.е вы гарантируете точное позиционирование без обратной связи по положению?
Да, именно так. А разные энкодеры ставят на серьёзную технику для контроля аварийных ситуаций. Как и концевики. А ходят всё равно по шагам.
Нужна обратная связь по фактическому положению исполнительного механизма! Чисто идея - на валу шагового двигателя установить энкодер.
Энкодеры ставят на обычные движки , а у шагового двигателя Шаг есть точное перемещение, или ЭТо нельзя считать шаговиком .
0
0
"Нужна обратная связь по фактическому положению исполнительного механизма! Чисто идея - на валу шагового двигателя установить энкодер. " ----- МАСЛО МАСЛЯНОЕ!!!
там где пропуск шага является катастрофой - ставят.
Энкодеры ставят на обычные движки , а у шагового двигателя Шаг есть точное перемещение, или ЭТо нельзя считать шаговиком
Можно подобрать более "точный" энкодер, дающий несколько разрядов на один шаг шагового двигателя
Можно Что даст энкодер с точностью четверть шага, если точность позиционирования шаг?
Короче хотите одевать презерватив на свечку одевайте :)
ну да, т.е вы гарантируете точное позиционирование без обратной связи по положению?
Да, именно так. А разные энкодеры ставят на серьёзную технику для контроля аварийных ситуаций. Как и концевики. А ходят всё равно по шагам.
Все будет точно, пока шаловливые руки не покрутят в обесточенном состоянии (а они покрутят). Энкодер и запись в память в этом случае вряд ли помогут. Вывод - в момент инициации отслеживать положение до концевого выключателя (дошли-вернулись) или изобретать что то резистивное.
ну да, т.е вы гарантируете точное позиционирование без обратной связи по положению?
Да, именно так. А разные энкодеры ставят на серьёзную технику для контроля аварийных ситуаций. Как и концевики. А ходят всё равно по шагам.
Все будет точно, пока шаловливые руки не покрутят в обесточенном состоянии (а они покрутят). Энкодер и запись в память в этом случае вряд ли помогут. Вывод - в момент инициации отслеживать положение до концевого выключателя (дошли-вернулись) или изобретать что то резистивное. Живой организм проснувшись, тоже ведь во времени и пространстве начинает определятся + манипуляторами двигать))))
Естессенно калибровать "печку" потребуется обязательно. Вспомните старые матричные принтеры и их дыр дыр-дыр-дыр вначале , это и был поиск печки и обнуление счетчика шагов. На современных стоят коллекторные движки и энкодеры положения. Скорее дположение там вторично , скорее эта ленточка с микро-рисками синхронизация для головок. То есть голова едет со стабильной скоростью от конечника до конечника, а сопла плюются краской по синхроимпульсам от стробдатчика-линейного энкодера.
кто мешает сделать цикл while и инкрементом с каждым импульсом прибавлять к переменной значение?
Как я сам не додумался?!!! Элементарно.
Всем большое спасибо.
Сверхточное позиционирование не требуется. Поэтому подсчет шагов вполне подойдет. Движок с понижающим редуктором с большим передаточным отношением, а нагрузка небольшая, поэтому выпадение импульсов маловероятно. Пока буду идти по этому пути.
ну если точное позиционирование нафиг не надо, то конечно без енкодера. У меня на заводе стояли координатки для сверления плат, так на них стояли шаговики и датчики по каждой оси.
Для однозначного вывода станка в координату ставят конечник. В зависимости от программного обеспечения станок по команде или вручную подходит к конечнику на быстром ходу. По нажатии на него вкл. медленная подача до схода с конечника. Вывод в "0 станка" считается законченым после получения первой "нулевой" метки с енкодера.
По оси обычно ставят 5 конечников: 2 - концевики для электроавтоматики, аварийное отключение привода в +-, 2 - программное ограничение привода в +-, 1 - "ноль станка".