Arduino code
Есть следующие компоненты.
энкодер №1 — 360 пульсов на оборот
№1 установлен на одном валу с DC мотором 24в.
№1 и мотор установлены на тележке, тележка установлена на направляющих которые позволяют перемещаться только по осям — х и у.
энкодер №2 установлен на подвижной тележке - ось х — 360 пульсов на оборот
энкодер№3 установлен на той же подвижной тележке - ось у — 360 пульсов наоборот
потенциометр
кнопка №4
кнопка №5
смысл задачи — Плавно регулировать обороты мотора в зависимости от скорости перемещения тележки.
По энкодерам №2 и №3 — считать только каждый 5тый пульс. Точность в 5 градусов меня устроит. Энкодеры закреплены на тележке и через колесо прижаты к основному столу. Направление энкодеров не имеет значение, так что. Можно считывать только один А импульс.
Работать должно так.
кнопка №4 включает всю систему.
при движении тележки считываем пульсы энкодера №2 и №3 за каждую секунду времени и высчитываем относительную скорость ( кол-во пульсов за секунду времени№2 и №3), далее по формуле v= Корень квадратный из суммы квадратов скоростей №2 и №3 , получаем скорость по диагонали за секунду времени.
Далее, в зависимости от положения потенциометра эту скорость переводим в 0...255 и отправляем сигнал на мотор. Потенциометром можно как зажать скорость до 0 так и увеличить до максимума который получили при расчете скорости. Потенциометр как бы последние ворота которые редактируют скорость мотора.
кнопка №5 обнуляет показания енкодера №1 и задаёт нулевое положение мотора.
это нулевое положение является точкой в которую должен прийти мотор после того как в течении времени «@« не зарегистрировано ни одно движение на энкодерах №2 и №3 т.е. тележка остановилась.
Кнопка №5 устанавливает это положение в самом начале цикла, до включение системы кнопкой №4. После остановки тележки и задержки времени на мотор подаётся сигнал для того чтобы он переместился в начальную точку и остановился, как бы доехал до нуля.
Редакция 10/01
При нажатии на кнопку №5 - контроллер подает сигнал на мотор и тот делает один "оборот" до следующего значения условного нуля, тем самым подтверждая наглядно то что условие принято.
При этом, "оборот" - то количество импульсов с энкодера №1 которое заданно в программе. Кол-во импульсов, я должен уметь выставить сам, так как не уверен в окончательно передаточном чесле между мотором и исполнительным устройством. Сигнал на мотор не зависит от положения потенциометра и я также, после ваших пояснения должен буду сам это отрегулировать.