Подключение DM420A
- Войдите на сайт для отправки комментариев
Ср, 02/01/2013 - 23:03
Доброго время суток!
Помогите разобраться с подключением драйвера шагового двигателя DM420A к Arduino :)
http://www.longs-motor.com/produ...l_12_80_148.html
Прошивку взял вот отсюда, но результата никакого не было при подключении.
http://www.cerebralmeltdown.com/...d-to-an-arduino/
Подключил светодиоды к выводам step, dir, enable. Это вобще нормально?
Зеленый - это ENABLE; красный слева - это DIR; красный справа - это STEP.
За качество прошу не пинать :)
Я так понимаю, что на DIR и ENABLE можно просто подать +5В, а на STEP импульсы.
Может кто-нибудь покажет на простом примере программы какие сигналы подавать и в какой последовательности? :)
//TWO WIRE STEP/DIR DRIVER BOARD CODE int Motor1StepPin = 4; int Motor1DirPin = 5; int Motor2StepPin = 2; int Motor2DirPin = 3; //The number of steps required for your stepper to make one revolution. (Don't forget to take into //account the settings on your driver board. i.e. Microstepping, half stepping etc.) float steps = 96; //Set the travel speed for your stepper motors here. (In Rev/Min) //Note: There is a limit to how fast or slow this code is able to spin the stepper motors. //You can try experimenting with the "delayMicroseconds" code if you need different speeds. int altSpeed=60; int azSpeed=60; //////////////////////////////// float Motor1Delay, Motor2Delay, doSteps; void setup() { Serial.begin(9600); //////////////////////////////// //TWO WIRE STEP/DIR DRIVER BOARD CODE pinMode(Motor1StepPin, OUTPUT); pinMode(Motor1DirPin, OUTPUT); pinMode(Motor2StepPin, OUTPUT); pinMode(Motor2DirPin, OUTPUT); Motor1Delay = ( 1000000 * ( 60 / (steps * altSpeed) ) ) / 2; Motor2Delay = ( 1000000 * ( 60 / (steps * azSpeed) ) ) / 2; //////////////////////////////// pinMode(6, OUTPUT); // pinMode(7, OUTPUT); // pinMode(13, OUTPUT); } void loop() { delay(1000); digitalWrite(6, LOW); delay(100); moveToPosition(1, 0, -steps * 1); moveToPosition(1, 0, steps * 1); moveToPosition(1, -steps * 1, 0); moveToPosition(1, steps * 1, 0); digitalWrite(6, HIGH); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //This code moves the stepper motors void moveToPosition(int limitSearch, long altsteps, long azsteps){ // Serial.println("altsteps"); // Serial.println(altsteps); // Serial.println("azsteps"); // Serial.println(azsteps); //////////////////////////////// //TWO WIRE STEP/DIR DRIVER BOARD CODE if (abs(azsteps)==azsteps){digitalWrite(Motor2DirPin, HIGH);}else{digitalWrite(Motor2DirPin, LOW);} if (abs(altsteps)==altsteps){digitalWrite(Motor1DirPin, HIGH);}else{digitalWrite(Motor1DirPin, LOW);} for (doSteps=1; doSteps <= abs(azsteps); doSteps++){ digitalWrite(Motor2StepPin, HIGH); delayMicroseconds(int(Motor2Delay)); digitalWrite(Motor2StepPin, LOW); delayMicroseconds(int(Motor2Delay)); } for (doSteps=1; doSteps <= abs(altsteps); doSteps++){ digitalWrite(Motor1StepPin, HIGH); delayMicroseconds(int(Motor1Delay)); digitalWrite(Motor1StepPin, LOW); delayMicroseconds(int(Motor1Delay)); } }Попробуйте воспользоваться библиотекой AccelStepper и тут еще почитайте.