Управление шаговым двигателем по двум проводам
- Войдите на сайт для отправки комментариев
Пт, 02/05/2014 - 02:22
Мне необходимо к Ардуино подключить 6 шаговых двигателей.
На сайте есть пример управления биполярным шаговым двигателем по двум проводам, можете объяснить логику этой схемы, как она работает? ШИМ тут как-то учавствует или нет?

идиотизмом попахивает
готовую микруху с гтовым H-мостом транзисторами резисторами обвязывать
там еще индуктивность+емкости потребуются чтоб по 12 вольт развязать всплески от катушек моторов которые засталять будут на ровном месте всю ардуину глючить
пальцами мотор крутанешь глядишь ардуина заводится начнет индикаторы лампочки зажигаться
тока толком в этой верссии L293 нет но вполне применим готовый H-мост
Для реальных нагрузок моторы размером NEMA 14 17 23 ... минимум соответсвенно L298 с 8-ю диодами 1 емкостью и в зависимости от размеров железа мотора может 5 вольт не хватит и прийдеться 12 вольт подавать.
С разломанных принтеров у меня практически ни один с 5 вольт не шагал.
вся серия L29... это как правило разумные 4 провода и цикл сам расписываешь
уменьшать провода до 2 ноги 1-количество шагов 2-нога направление 3- ну может снимать питание чтоб шаговик не удерживало
щас гляну ссылку
http://arduino.ru/forum/apparatnye-voprosy/easydriverver4steppermotors
//art100 20140501 for USB - Arduino - A3987 easydriver 2 pins - Stepper Motor(1.8 gradus=1 step)void step1(boolean dir1,int steps1,int msec1){
// digitalWrite(sleePin1,HIGH);//stepper motor power on
digitalWrite(dir_Pin1,dir1); // direction
for(int i=0;i<steps1;i++){
digitalWrite(stepPin1,HIGH); delayMicroseconds(msec1);
digitalWrite(stepPin1, LOW); delayMicroseconds(msec1);
}
// digitalWrite(sleePin1,LOW);//stepper motor power off
}
// stepper motor 2 for A3987 easydriver 3 pins - laser------------------------------------
void step2(boolean dir2,int steps2,int msec2){
// digitalWrite(sleePin2,HIGH);//stepper motor power on
digitalWrite(dir_Pin2,dir2); // direction
for(int i=0;i<steps2;i++){
digitalWrite(stepPin2,HIGH); delayMicroseconds(msec2);
digitalWrite(stepPin2, LOW); delayMicroseconds(msec2);
}
// digitalWrite(sleePin2,LOW);//stepper motor power off
}
а для вашего L29...
такой код по 4-ем проводам
вот например я кота joystick-om и чуток собственных "100 дрыганий" развлекал
//art100 20140428 for joystick/USB - Arduino - L298 - Two Stepper Motor(1.8 gradus=1 step) #include <Stepper.h> //for stepper chip L298---------------------- //const for myStepper library first const int stepsmotor1 = 200; // *1.8gradus/step = 360 gradus for stepper chip L298 const int stepsmotor2 = 200; // *1.8gradus/step = 360 gradus for stepper chip L298 Stepper myStepper1(stepsmotor1, 4,5,6,7); // -L298-motor Stepper myStepper2(stepsmotor2, 8,9,10,11); // -L298-motor //---------------------------------------------------------------- // pins--------------------------------------- // joystick -------------------------- int joypinx = A0; //joystick pin int joypiny = A1; //joystick pin int joypinf = A2;//10; //joystick pin // lasers leds ---------------- //int but5 =A5; // button start on shield int led2 = 2; //laser red work int led3 = 3; //laser red work int led8 =8; // test on shield int led9 =9; // test on shield // stepper motors ------------ int dir_Pin1 = 4;// table int stepPin1 = 5;// int dir_Pin2 = 6;// laser int stepPin2 = 7;// int stepxcor =10;// for correction >0< int stepycor =10;// for correction >0< // constants for scan------------------------------------- int steptable =400;// 3200/8 gear 160/18=8,88 3200 steps full return int speetable =100; //very speed follow int steplaser =1000;// gear 5.22 2000 steps full return int speelaser =20000;//very slow to work int retulaser =100; //very speed return // constants for joystick ------------------------------------------- int sp1table =1000;//slow int sp2table = 100;//speed int sp1laser =1000;//slow int sp2laser = 100;//speed int joyx = 0; //joystick int joyy = 0; //joystick int joyf = 0; //joystick // usb------------------------------ int commandusb = 0; // //--------------------------- void setup() { // L298 ---------------------------------- myStepper1.setSpeed(50); // 60 rpm myStepper2.setSpeed(60); // 60 rpm // L298 ---------------------------------- pinMode(joypinx, INPUT); //joystick X pinMode(joypiny, INPUT); //joystick Y pinMode(joypinf, INPUT_PULLUP); //joystick fire pin pinMode(led2, OUTPUT); //laser pinMode(led3, OUTPUT); //laser pinMode(led8, OUTPUT);//on shield pinMode(led9, OUTPUT);//on shield // pinMode(but5,INPUT_PULLUP);//joystickfire digitalWrite(led2, HIGH); // digitalWrite(led3, HIGH); //laser to work befor start digitalWrite(led8, HIGH); //laser to work befor start digitalWrite(led9, HIGH); //laser to work befor start pinMode(dir_Pin1, OUTPUT);//table pinMode(stepPin1, OUTPUT);//table pinMode(dir_Pin2, OUTPUT);//laser pinMode(stepPin2, OUTPUT);//table Serial.begin(9600); } // stepper motor 1 table for A3987 easydriver 2 pins------------------------------------ void step1(boolean dir1,int steps1,int msec1){ digitalWrite(dir_Pin1,dir1); // direction for(int i=0;i<steps1;i++){ digitalWrite(stepPin1,HIGH); delayMicroseconds(msec1); digitalWrite(stepPin1, LOW); delayMicroseconds(msec1); } } // stepper motor 2 laser for A3987 easydriver 2 pins------------------------------------ void step2(boolean dir2,int steps2,int msec2){ digitalWrite(dir_Pin2,dir2); // direction for(int i=0;i<steps2;i++){ digitalWrite(stepPin2,HIGH); delayMicroseconds(msec2); digitalWrite(stepPin2, LOW); delayMicroseconds(msec2); } } // scan for test no work ----------------------------------- void scan(boolean scan1){ digitalWrite(led3,HIGH); step2(true, steplaser,speelaser); // scan //dir,steps,speed digitalWrite(led3, LOW); step2(false,steplaser,retulaser); // return digitalWrite(led3,HIGH); step1(true, steptable,speetable); // turn //dir,steps,speed } //------------------------------------- //======================================================================== void loop(){ // joystick ---------------------------------------------------------- joyx = analogRead(joypinx)>>7; // shift 7 0.1.2.3.4.5.6.7 joyy = analogRead(joypiny)>>7; // shift 7 0.1.2.3.4.5.6.7 joyf = analogRead(joypinf)>>7; // shift 7 0.1.2.3.4.5.6.7 Serial.print('X');Serial.print(joyx);Serial.print(';'); Serial.print('Y');Serial.print(joyy);Serial.print(';'); Serial.print('F');Serial.print(joyf);Serial.println(';'); //test if(joyx==0){myStepper2.step(+1);} //step1(false,stepxcor,sp1table);}//speed if(joyx==7){myStepper2.step(-1);} //step1(true ,stepxcor,sp1table);}//speed if(joyy==0){myStepper1.step(+1);} //step2(false,stepycor,sp2laser);}//speed if(joyy==7){myStepper1.step(-1);} //step2(true ,stepycor,sp1laser);}//speed !!! sp1laser !!! slow down // if(joyf==0){step2(true ,stepycor,sp1laser);}//speed !!! sp1laser !!! slow down // laser and led -------------------------------------------------------- if(joyf==0) { digitalWrite(led2, LOW); digitalWrite(led3, LOW);} // laser to work else { digitalWrite(led2,HIGH); digitalWrite(led3,HIGH); } // laser to work // if(digitalRead(joypinf)==LOW) { digitalWrite(led3, LOW); } // laser to work // else { digitalWrite(led3,HIGH); } // laser to work // if(digitalRead(joypinf)==LOW) { digitalWrite(led9, LOW); } // led control for test // else { digitalWrite(led9,HIGH); } // led control for test // joystick ----------------------------------------------------------Устарела страничка в заблуждение от реальности вводит.
Кстати страничка на сайте про 6-шестипроводные униполярные моторы и простые ключи серии ULN200. не потдаются повторению.
Так как моторы очевидно уже так не мотают.
Когда микросхемы H-мосты и простые ключи повторители по цене одинаковы и доступны зачем лишнее мотать?
Шаговые моторы не DC. Шаговые моторы дифицит. Старые дисководы уже все раскурочили. Только если принтера курочить.
Попробуйте моторы не биполярки на 4, а униполярки на 6 купить, а я посмотрю.
Ну ну.
Максимум, что в продаже это 4-ех проводные можно встретить биполярные,
которым разработаны соответсвующие H-мосты с 4-мя 3-мя 2-мя проводами.
4 провода
L293
L298 <- проще схема, чем по даташиту я не встречал 8 диодов и вуаля 1.5 ампера на 12 вольт на катушки мотора прямо с arduino ноги беру
2(3) провода
A3967 <- тут уже обвязка нужна и лучше покупать в виде дравера например easydriver ver 4
и так далее в направлении уменьшения кода и проводов
Я думаю теоретические элементарные вещи откусил средние провода у 6 униполярки и получил 4 биполярку понятны?
мой КтоБот на ваших L298 (L293) сами смотрите
моя кошка в восторге от этих конвульсий
catbotart100
http://yadi.sk/d/GXbz3IG6NrZ4V
Ребята, спасибо за ответы, не всё понял что вы написали т.к. не очень пока разбираюсь в этой технике, но за старания спасибо!
У меня будет 6 вот таких моторов, сейчас они едут ко мне из Китая :)
Проводов у него пять, значит униполярный. Родной драйвер я использовать видимо не буду (как я понимаю он требует четыре пина), и буду этот мотор питать как биполярный т.е. пятый провод лишний.
Если рассмотреть работу биполярного мотора, то обычно две его обмотки включаются попеременно с разной полярностью т.е. так:
шаг 1 (+-обмотка1 )
шаг 2 (+-обмотка2 )
шаг 3 (-+обмотка1 )
шаг 4 (-+обмотка2 )
Мне непонятно вот что, в указанной схеме всего два входа:
т.е. мы можем включать или обнотку 1 или 2, как я понимаю полярность тут не меняется.
Как это должно работать?
Мне нужно на Uno посадить 6 моторов т.е. получается всего по два пина на мотор, но я что-то не догоняю как :)
Или проще купить Мегу и спокойно посадить туда свои 6 моторов с родными драйверами?
Вход два выключен:
4-in - 0
3-in 5 вольт
вход два включен-
4-in - 5 вольт
транзистор открывается
3-In -0
не заморачивайся с теорией
знай просто что униполярные в отличие отбиполярных с отводом от средней точки для точности только-то, и их можно без H-мостов пользовать
просто пользуй
не представляю как может нехватить
двум моторам по 4 пина =8
еще всякие джойстики 3 пина на джойстик повесить 6
кнопок еще пяток 7
или светодиодов места есть
и все это на маленькой Arduin UNO ну что 20 ног все заняли или еще пустых много
заинтриговал щас попробую ноги м мелкой посчитать
может уже купленный родной драйвер меньше заморочек какая разница сколько между моторм и дравером мотора если они уже согласованы
думаю там просто четыре ноги типа моего когда L298
у мня получилось с одной стороны если USB ноги 0 1 не забивать мусором 13-2=11 ног с другой 6 ног как раз для джойстика(ов) итого 17 ног пользуй нихачу
кроме управkения по USB + 2 моторв по 4 ноги и 2 самодостаточных аналогвоых джойстика с кнопками еще бездельничают 11-8= 3 ноги
ну допустим 2 лазера
остается 1 нога в никуда
ссылку дай что за драйверок миросхемка для мотора
Мотор: DC Gear Stepper Step Motor with ULN2003 Driver Board 5V 4 Phase 28YBJ-48
Мне на Uno надо посадить 6 моторов - это если стандартно, то 6*4 = 24 пина.
Geronimo, ок, но что ж это получается, что состояния покоя у обмоток мотора не будет, при бездвижном моторе по любому будет питание на обмотках? Что-то я в эту двухпроводную систему не вьезжаю))))
Да будет всегда
но двинаться он не будет
точнее двигаться он будет, когда будут сигналы меняться
6 мотори и небось по USB управлять
чего тут думать
тут трясти сразу надо easydriver заказывать двухпроводные
если будут слишком грется запаралелить общую ногу sleep
13 ног с одной стороны мало
10 ног на моторый через easydriver ver4 с одной стороны мало
11 снимать питание чтоб остывали если грется сильно будут моторы
чип легко 60 градусов без радиатора у меня сутки держал мотора положения а моторы как утюги и стабилизатор 12в на ардуинке тоже как ошпаренный
итак 5 моторв пристроили
6 вотор на аналоговые ноги которые легко инициализируются в цифровые
для манипулятора одного аналогового джойстика мало это 3 ноги
можно конечно анаог джойстика поделить на 1/3 для каждого сочленения
и все манипулятора электроника готова
а првильно понял цель?
манипулятор с чуток ручной подстройкой
или пойти по более реальному пути
сразу брать с этими ULN2003 (это примитивные ключи только кнотакты раьземы все готовое удлинять только) я бы взял H-мост чтоб не быть привязанным к только униполяркам и оторвать среднии ноги у моторов униполярных
arduino 256 у которой ног хватит на 6 моторов и джойстики 3 штуки
код подпрограмм не уверен но думаю можно попробовать с H-мостовых
как проблему отсутствия шестеренок будете решать?
моторы-то дохлые манипулятор не думаю что поднимется
они через кучу понижающих шестеренок только бумажку протянуть годны
... при бездвижном моторе по любому будет питание на обмотках? Что-то я в эту двухпроводную систему не вьезжаю))))
да
а удерживать как манипулятор?
космическими силами?
на драверах спец нога для этого спаааать SLEEEEEP по крайней мере в easydriver
на мотор 4
1 питания +12в
нога количкества шагов
нога направления
нога общей земли
отсальное по желанию
спать допустим в этом дравере НЕ спит если в ноль не затягивать
как пионер всегда готов микрошагать микрошагом 1/8 от типовго 1.8 градуса на шаг как у всех остальных
так что в коде для него на сотни а десятки тысяч шагов гуляют для точности
и мотор всегда держит
Действительно выглядит неплохо.
Во первых для биполярного мотора. Во вторых - управление STEP-DIR. Задал направление и шагай.
Ножки экономятся. И как раз в тему:
Управление шаговым двигателем по двум проводам
Форсировка имеется ( ток удержания), значит быстрый будет.
Одна незадача- моторчики из Поднебесной униполярные..... и их никак не разделить на две обмотки...
уверен? что обмотки
для биполяной разводки
насколько я понял надо на клеммах оторвать клемму 5 так чтоб разорвать общие ноги
я такое делал не раз
может там тупо ножичком резануть без паяльника на клемме на моторе самом
вот и биполярка с редуктором сразу
его применение это задвижки в вентяторах с очень мелким мелким мелким шагом а усилие говорят никакое он дает 250 грам на см
28YBJ-48 Stepper Motor
и не понятно какая цель
держи. http://www.youtube.com/watch?v=lA36Rf73q5c
easydriver - не вариант, удорожание конструкции, лучше уже брать Мегу и подключать моторы по 4 проводам.
Надеюсь, что моторы с моей нагрузкой справятся, у меня не манипулятор и не управление через USB :) моя задача автоматизировать небольшой производственный процесс по подаче и резке пенопласта.
Получу моторы, поэкспериментирую, расскажу о результатах.
Всем спасибо за ответы! :)
Какое удорожание - драйвера то всё равно нужны.
vvadim, с шаговым мотором продают драйвер комплектом за 5 уе, easydriver стоит 4уе (6*4=24уе) т.е. фактически 24уе переплаты, за эти деньги три Меги можно купить и подключить моторы по четырём проводам через родной драйвер.
можно не покупать мегу, а взять пару сдвиговых регистров..
кстати да мотор
28ybj-48
без дравера на ULN2003
2,2$ сразу 5-ок 11$
да easydriver на A3967 серьезная штука с персепктивой на много ампер для серьезных моторов стоит получатеnтся 24$ в 2 раза дроже чем дохлячек yf ULN2003 13.2$ без перспективы и ногьт в два разо больше и кодом ардуинке трясти
http://www.aliexpress.com/item/Key-5v-4-5-line-stepper-motor-28ybj-48-28...
http://www.aliexpress.com/item/3-pcs-Nema-23-dual-shaft-stepper-motor-42...
Пушной звер, согласен, так будет ещё дешевле, но учитывая мои познания проще будет с Мегой :) я смотрел в сторону регистров, там программирование придётся усложнять, а мне сейчас для начала хоть бы с азами разобраться, это мой первый опыт с Ардуино.
мы что тебе курсовую безплатно решили?
ну вибирай сам
красненкие 2-двухпроводные easydriver A3967 за свои микрошаговистости
золотистинкеие L298 на радиаторе 4-ех проводные
кода и туда и сюда я тут на форум накидал уже
оба прямо сейчас моторы удерживают токами по 1.5амперу итого 4-ыре мотора по паре на каждом
art100, нет, это не курсовая :) это автоматизация для собственного производства :)
art100, нет, это не курсовая :) это автоматизация для собственного производства :)
так твои драйверы определят весь твой код
(хотя я ведь подпрограммами обошелся)
я все это только что прошел
моторы конкретные нужны мне оказались из 12 моторjв с рынка
только 2 остались в работе
а все остальные в мусорку полетели
я у всех знакомых все старые принтера забрал и распотрашил на моторы типа такие как ты заплатил для макетирования
не слабее чем NEMA17 у меня механику тянут и то я у одного продавца беру потому как знаю его железяк
http://www.aliexpress.com/item/5pcs-4-lead-Nema17-Stepper-Motor-42-motor-Nema-17-motor-42BYGH-1-7A-17HS4401-motor/1500927219.html
драверы мне только по умолачаниюс с микрошагом 1/16 пошли
хотя можно пожелезистее моторы и шаг 1/8 как в easydriver по умолчанию сгодится
блок питание все это не менее 350 ват вытягивает !!! 2А*6=12А по 12 вольтам
у меня тоже 6 моторов работают (хотя 6-ой баласт бездельник синхонность подачи материала необязательную смотрю)
вот уже второй станок с ЧПУ поднимаю
валы удобные 5 мм болты виксирующие в них Ь3 нормально в прпиленных частях держатся не проворачиваются
Говорят можно чуток поменьше типоразмер NEMA14 я все это уже живьем на втором станке с arduino ЧПУ смотрю - вранье
током выжал все что можно
моторы как "утюги" по 60 градусов если я с них питание в покое не снимаю
будут шаги проскальзывать
жду еще партию моторов от этого продавца
может конечно у тебя механика вентиляторы крутить только
щас смотрю потихоньку пошла тенденция мой станок потихоньку на более мощние моторы пересаживать NEMA23 за 5-яток ~150$ уже
моторы смотрю все всегда чуток отличаются если важна синхроноость только одной партии
провод намотают с другой партии смотрю проскальзывает в паре оди с чего-то после 4 часов непрерывной работы
у меня два мотора критично
одним драйвером синхронно должны
я оставил возможность подкрутить вручную предварительно снимая ток с них по SLEEP
мысль про массы и размеры настольные реальные понятна?
это я про
Настольный станок требует типоразмер приводов на шаговых моторах как правило начиная с NEMA14 NEMA17 NEMA23 и далее...
это размер шаговых моторов старых дисководов и больше
принтерные все хлам там они только бумажку через кучу понижающих шестеренок вытягивают
у тебя ведь нет шестеренками все моторы обвязывать
а напольный станок допустим посмотрим на Lisec в 3 мотора и 1 один только подогрев
там только моторы и драйверы покрупней потому как механика потяжелей и поинертней
хоть моторы переменного тока но с ромашкой и концевым балансиром для подсчета шагов и знания напрвления, сейчас наверно уже шаговики такие крупные мотают хотя это не важно даже в шаговиках там точность оптопары по ромашке оттормаживаются стоят разгоняются -+5мм
массы инструмента там под тонну нередки
500кг это нормально типовое масса стекла перед раскроем интсрумент столько же весит
это проблемы драйвера мотора
а логика таже что у 2 амперное easydriver проснутся выбрать напрвление пошагать уснуть
рабочий может руками эти 500 кг резака покатать туда сюда
а про вашу механику которую вы будете пытаться хлипкими тонюсенькими шестеренками в редукторе заслоночного мотора я даже не знаю
теория только получится в макете
кратко так
да easydriver на A3967 серьезная штука с персепктивой на много ампер для серьезных моторов
на 750 миллиампер..
и перспектива отдавать столько денег за L297+L293D в одном корпусе, весьма сомнительна.
а 28ybj48 в униполярном режиме, барахло, способное крутить шторки у кондиционеров, в биполярном всё значительно лучше
[quote=Пушной звер]
...на 750 миллиампер.. и перспектива отдавать столько денег за L297+L293D в одном корпусе, весьма сомнительна...[quote]
хм невнимательно посмотрел спасибо
щас даташит поищу
мне как бы и выбора не было
микрошаг 1/8 расслабляет шестеренки искать за много баксов
тут одну пару шестеренок пока приспособишь запаришся
а если еще пару последовательно кудесить совсем грустно с временем и ценой реализации эксперимента проекта
не согласен с вами цена прекрасная
да до ампера
у него ж перед Н-мостом все для применения проще
шаги и куда
две ноги всего
а вот что действительно для arduino-водства не удобно то что у него проверенные шаговые моторы не начинаю шагать с 5 вольт минимум 6 для начала
вот это мне с первого раза не понравилось пока чуток не поднял на 1 вольт
с USB не будет шагать
а L298 у меня шагал одним проверенным мотором
A3967 H-мост и еще всякой мелочи
1 ампер
6 вольт
мотор шагает сразу в 8 раз чаще от заводского моторного шага 1.8 градуса на шаг
и провренные моторы уже требуют 12 вольт добавлять
L298 Н-мост и только все отсальное програмно командовать по видимму кривоватенько через #include "Stepper.h"
2 ампера
написано с 7 вольт
странно а у меня некоторы моторы от USB через нее шагают
видимо это частный случай
расчитиывать не надо питание только от USB
а по цене easydriver готовый меньше
чем непаянный корпус L298 + 8 диодов + индуктивность + емкости
считатйте сами я все уже оплачивал все сделал и мне не интересно
все далеко не так однозначно
я склоняюсь 1 месяц подождать пока аeasydriver-a пришлют и без заморочек в бой
чем по быстрому и долго отлаживать если вообще возможно механикой и кодом
каждый выбирает сам
Да здравствует выбор.
И вообще задурили вы мне тут голову всякой ерундой
Мня 1/16 шага в следующем ждет а вы меня грузите пройденными вещами.
Читатйте даташиты там все написано.
Читающий да прочитает.
там L297 написано, а не L298
там L297 написано, а не L298
я это увидел и подумал вы опечатались
тогда совсем не понимаю ваш пост