роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Описание: Управление шаговым двигателем
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



Доброго время суток!
Приобрел недавно драйвер шагового двигателя DM420A
http://www.longs-motor.com/produ...l_12_80_148.html
Так же шаговый двигатель 17HS8401.
Отсюда скачал прошивку управления двумя шаговыми двигателями для ардуины
http://www.cerebralmeltdown.com/...d-to-an-arduino/

Подключил все это дело и ничего не работает)
Потом подключил светодиоды на pin4 (step), pin5 (dir), pin6 (enable) и вот что получилось.
http://vimeo.com/56631417
Конечно, извиняюсь за качество, но зеленый - это ENABLE; красный слева - это DIR; красный справа - это STEP.
Это вообще нормально? Улыбка Кто-нибудь знает как работать со step/dir/enable? Улыбка
Помогите пожалуйста разобраться.

Вот код программы
CODE:
//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));
}

}
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



При всех прочих равных...

ENBL в обычном случае точно не должен мигать. Он включает и отключает драйвер.


Прочтите даташит повнимательней.

Там все разжевано.
 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



То есть можно ENABLE замкнуть на +5В?
Тогда я не понимаю в чем смысл программно управлять выводом enable?
Подключал до этого L298, там было все понятно и все работало. Просто использовал функцию из готовой библиотеки ардуины Stepper(steps, pin1, pin2, pin3, pin4), а тут не могу разобраться.

(Отредактировано автором: 02 Января, 2013 - 20:51:43)

 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Mr_incredible. пишет:
То есть можно ENABLE замкнуть на +5В?
Тогда я не понимаю в чем смысл программно управлять выводом enable?
Подключал до этого L298, там было все понятно и все работало. Просто использовал функцию из готовой библиотеки ардуины Stepper(steps, pin1, pin2, pin3, pin4), а тут не могу разобраться.



Так это и не L298 хоть и похоже.

Что значит замкнуть ... что за дурацкий жаргон.

По Вашей ссылке есть картинка как надо подключать этот девайс к контроллеру.
Там о замыканиях не сказано ни слова.

(Отредактировано автором: 02 Января, 2013 - 21:00:43)

 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



killgur пишет:
Цитата:
Так это и не L298

Помираю со смеху
А я то уж думал...

Кто сталкивался с такой проблемой, подскажите пожалуйста!
(Добавление)
killgur пишет:
По Вашей ссылке есть картинка как надо подключать этот девайс к контроллеру.


Вопрос темы состоит в другом.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Расказывайте сказки про L298 другим.
Программа выложенная в топике предназначена для вот этого драйвера шагового мотора, причем для двух сразу.


http://www.avayanelectronics.com...ae-stpr8811.html

P.S.

Китаец жжот, DM420A на верхней фотке 4-х контактная розетка на нижней 6-и а описание вообще от чегото между этими моделями.
Красава.

(Отредактировано автором: 02 Января, 2013 - 22:16:42)

 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



Что вам не понятно по L298?

killgur пишет:
Программа выложенная в топике предназначена для вот этого драйвера шагового мотора, причем для двух сразу.

А управление этим драйвером осуществляется сигналами step dir enable, а эти сигналы управления являются стандартом управления драйверов шаговых двигателей, а это означает то, что драйвер DM420A скорее всего управляется тоже по этому стандарту step/dir/enable.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Mr_incredible. пишет:
Что вам не понятно по L298?

killgur пишет:
Программа выложенная в топике предназначена для вот этого драйвера шагового мотора, причем для двух сразу.

А управление этим драйвером осуществляется сигналами step dir enable, а эти сигналы управления являются стандартом управления драйверов шаговых двигателей, а это означает то, что драйвер DM420A скорее всего управляется тоже по этому стандарту step/dir/enable.


Возможно, только программа не под него а под управление одновременно двумя драйверами.


Подключить к одному каналу

Модуль/Дуина
+5В –> 5v
GND –> GND
PUL –> Pin 2
DIR –> Pin 3
Enable –> Pin 6

Как выствить ключи на модуле надо смотреть какой мотор.
 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



Так а какая разница, для скольких драйверов предназначена эта программа?
Там только Enable общий. Каждый драйвер управляется отдельно выводами step и dir для каждого соответственно.
А шаговик можно подключить к pin 2, pin3, либо к pin 4, pin 5.
Вопрос в том, почему на ардуние мигает какая-то ерунда? Учитывая то, что импульсный сигнал (от 2мкс) - только STEP, а на другие (DIR и ENABLE) подается только 1 или 0.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Mr_incredible. пишет:
Так а какая разница, для скольких драйверов предназначена эта программа?
Там только Enable общий. Каждый драйвер управляется отдельно выводами step и dir для каждого соответственно.
А шаговик можно подключить к pin 2, pin3, либо к pin 4, pin 5.
Вопрос в том, почему на ардуние мигает какая-то ерунда? Учитывая то, что импульсный сигнал (от 2мкс) - только STEP, а на другие (DIR и ENABLE) подается только 1 или 0.



в вашем блоке (при включении стандартном аля дуина)

High level for enabling the driver and low level for disabling the driver.

в блоке от которого программа

A LO on this pin enables the device. A HI on thispin disables the device.

Т.Е. с точностью до наоборот.

Мне дальше искать десять различий в управлении Улыбка.

Таким образом программа ставит низкий уровень на ENABLE вырубает драйвер и крутит моторами впустую когда всевыключено

Насчет мигает ... да диод будет просто светить когда идет ШИМ, уменьшите частоту увидите мигание.
 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



Но, все же, тут нет различий в том, сколько драйверов можно подключить к ардуино.
Насчет Enable я уже заметил.

Значит надо просто поменять местами в программе HIGH и LOW наверно.
CODE:
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);

}
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  




можно я сунусь?
steps по определению дискретная величина, она не может плавать. (винюсь, дальше не стал листить) Измените свою тактику с "с наскоку" на "тихим сапом", глядишь и получится.
 
 Top
Mr_incredible. Post Id


Рядовой


Сообщений всего: 8
Дата рег-ции: Янв. 2013  



Работает.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



Mr_incredible. пишет:
Работает.
, так а в чом трабла была? перепутал проводки? У меня это всегда, это признак профессионализма. Голливудская улыбка
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



cjA

это диалог на тему

"Если вы все перепробовали и ничего не получается, значит пришла пора читать инструкцию."
Улыбка

(Отредактировано автором: 03 Января, 2013 - 01:07:31)

 
 Top
Страниц (2): [1] 2 »
« Электронная мастерская »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru