вторник, 19 ноября 2019 г.

Энкодер для электродвигателя

Сегодня поделюсь своим опытом, расскажу про устройство для управления электромотором с помощью программы которая может изменять направление вращения, задавать количество оборотов и удерживать установленное положение вала. Для сборки устройства я использовал мотор от струйного принтера, оптический диск с прорезями - такие продают на Али. Собрал подобие энкодера из двух щелевых оптических датчиков и четырех резисторов, также применил двухканальный релейный пятивольтовый модуль, а для визуального контроля использовал дисплей LCD 1602 с адаптером для шины I2C, еще добавил три не фиксируемых кнопки для ввода данных и все это подключил к Arduino Nano.
Направление вращения и положение вала относительно нуля задаются двумя кнопками, движение по часовой стрелке кнопка К1 вводятся положительные значения, а вращение против часовой стрелки кнопка К2 отрицательные значения, далее управляет всем этим процессом микроконтроллер в которой загружена небольшая программа, созданная с помощью визуального программирования в FLProg. В коде есть ненужные дополнительные проверки, которые можно убрать, но это рабочий образец, и я не стал пока нечего чистить и удалять.
Устройство немного напоминает сервопривод с обратной связью, есть функция удержания вала, например при попытке изменить положение вала вручную контроллер получает импульсы от энкодера и возвращает его на старое место.
На экране дисплея отображаются вводимые значения это Set - установка, Re - число оборотов и Di - пройденное расстояние, допустим  в миллиметрах. 
Предположим что это устройство подключено к некой оси станка чпу, тогда при кратковременном нажатии кнопки К1, на дисплее появится значение Set=1 и вал двигателя сделает Re=10 оборотов, а к примеру ось станка передвинется на расстояние Di=1 мм., если после этого нажать К2 и ввести Set=0, то вал мотора вернется в исходное положение, то есть в ноль с обратным вращением. Конечно же это все условно и пройденное расстояние, и обороты, все зависит от шага ходовых винтов станка, передаточных чисел редуктора и др.
Для ускоренного ввода значений необходимо удерживать кнопки. В программе есть ограничение 100мм. (см. блок сравнения в схеме), это значение можно увеличить, уменьшить или убрать вовсе, по задумке это границы рабочего хода оси чпу станка. Также можно выполнить сброс счетчика если одновременно нажать кнопки К1 и К2, а для сброса значений энкодера необходимо нажать кнопку К3.
В блоках деления для значений Re и Di в схеме FLProg, указаны делители (100 и 10) они установлены произвольно, но так как вал двигателя имеет инерцию то с уменьшением этих значений происходит эффект зацикливания. Если применить легкое торможение вала эффект пропадает. Двигатель работает от внешнего источника 5 вольт.
Оптические датчики установлены вплотную друг к другу и приклеены к металлической пластине в которой просверлено отверстие для крепления и регулировки положения для лучшего срабатывания питание 3,3 вольта. В схеме есть пользовательский блок Encoder которого нет программе FLProg, его я скачал отдельно.











Сейчас экспериментирую с вариантом, где уже будет ось станка, так что будет продолжение.




Комментариев нет:

Отправить комментарий

Архив

Популярные сообщения