Тема: Шаговый двигатель в виде поворотного механизма
Всем привет!
Появилась задумка сделать поворотный механизм для камеры наблюдения. Заказал себе ардуино нано, драйвер A3967 и биполярный шаговый двигатель 42SHD0001. Ну и дошло дело до кода. Начал искать подходящий. Но в процессе понял, что есть небольшая проблема. А именно- мотор должен будет останавливаться в 4-х позициях, проще говоря, камера должна будет охватить 360 градусов. Но, чтобы не было проворота, и тем самым не порвало кабель камеры, я сделал некий блокиратор и болт на оси мотора, который упирается в этот блокиратор(на фото видно). Но, при включении, двигатель делает небольшой проворот, тем самым, положение начала движения мотора, отличается по сравнению с предыдущим включением. В итоге, болт может упереться в блокиратор, не пройдя заданное количество шагов. Но это, я думаю можно будет решить, в дальнейшем. Сейчас первоначально хочу разобраться с скетчем. При том условии, что я нуб в этом деле Хочу разобраться, как заставить двигатель вращаться по часовой стрелке, и потом в обратном ходе, против часовой, аналогично. И останаваливаться в четырех положениях.
Вот код который нашел в сети
#include <AccelStepper.h>
AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
int dir = 1; //используется для смены направления
void setup() {
Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
}
void loop() {
if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение
Stepper1.move(400*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)
dir = dir*(-1);
delay(1000);
Stepper1.move(-400*dir);
dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(1000); //задержка на 1 секунду
}
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
}
Кто может помочь?