Какую статью добавить следующей?

Остался от старого принтера Epson шаговик, решил попробовать управлять им.

 

Детали (в моем случае):

  1. Arduino UNO R3
  2. Adafruit motor shield
  3. Шаговый двигатель униполярный EM-210 от принтера Epson
  4. Блок питания на 12В (пробовал крону - не хватает тока)
  5. Соединительные провода

 

Порядок действий:

  1. Скачал AFMotor.zip, распаковал в папку libraries (которая внутри Arduino IDE)
  2. Подключил Ардуино к компьютеру и загрузил следующий скетч, чтобы было только движение вперед:
    #include <AFMotor.h>
    AF_Stepper motor(48, 2);
    void setup() {
      Serial.begin(9600); // скорость порта в 9600 bps
      Serial.println("Stepper test!");
      motor.setSpeed(3); // 3 оборота в минуту
    }
    void loop() {
      motor.step(100, FORWARD, SINGLE); //100 шагов вперед
      delay(100);
    }
    
  3. Убрал пермычку с шилда и подключил к нему отдельное питание 12В. Перемычку убрал, чтобы разделить питание шилда от Ардуины.
  4. Сединил как на фото, к выходу М3М4 провода оранжевый-синий-коричневый-красный-белый. На моторе два одинаковых коричневых провода соединил вместе и к земле подключил. Остальные провода экпериментально подбирал: в программе оставил только движение вперед и скорость поменьше поставил (motor.setSpeed(3);) Повороты были хаотичные, и только при такой последовательности движение стало последовательно.
  5. Загрузил дополеннный скетч (крутит обычным шагом вперед и назад, затем микрошагом вперед и назад):
    #include <AFMotor.h>
    AF_Stepper motor(48, 2);  //скорость мотора 48 шагов за оборот, подключение к порту №2 (M3 и M4)
    void setup() {
      Serial.begin(9600); // скорость порта
      Serial.println("Stepper test!");
      motor.setSpeed(40); // 40 rpm
    }
    void loop() {
      Serial.println("Single coil steps");
      Serial.println(" FORWARD, SINGLE");
      motor.step(96, FORWARD, SINGLE);  //вперед
      delay(1000);
      Serial.println(" BACKWARD, SINGLE");
      motor.step(96, BACKWARD, SINGLE);  //назад
      delay(1000);
      Serial.println("Micrsostep steps");
      Serial.println(" FORWARD");
      motor.step(96, FORWARD, MICROSTEP); delay(1000);  //микрошагами вперед
      Serial.println(" BACKWARD");
      motor.step(96, BACKWARD, MICROSTEP); delay(1000);  //микро назад
    }
    
  6. Если необходимо отключиться от компьютера, то перемычку вернуть на место, чтоб внешнее питание распространялось и на Ардуину.

 

P.S. Вариант программы, позволяющей менять скороть двигателя, посылая значение скорости через компьютер. Для открытия управлящего терминала в Arduino IDE нажать CTRL-SHIFT-M

#include <AFMotor.h>
AF_Stepper motor(48, 2);
int mspeed = 1; //Переменная
void setup() {
  Serial.begin(4800); // set up Serial library at 9600 bps
  Serial.println("Stepper test! input 1-9 speed of motor.");
  motor.setSpeed(40); //RPM скорость
}
void loop() {
  if (Serial.available() > 0) { //если есть доступные данные
    mspeed = Serial.read() - 48; // считываем байт и переводим в число
  }
  motor.step(1, FORWARD, MICROSTEP);
  Serial.println(mspeed);
  motor.setSpeed(mspeed * 10);
}

 

Полезные ссылки:

http://zelectro.cc/Adafruit_motor_shield

http://robotosha.ru/arduino/motor-shield.html

Добавить комментарий


Защитный код
Обновить