Прошу помощи в подключении Stepper Motor Driver DQ420MA к Ардуино

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 Сразу предупрежу, что я делаю первые шаги в радиоэлектронике и возможно вопросы будут звучать глупо

Задача: управлять шаговым двигателем Nema 17 с помощью ардуино,
для этого был куплен такой комплект: http://www.ebay.com/itm/170865383263

Собственно двигатель (42BYGHW609) и драйвер к нему (DQ420MA)


За основу взял вот этот http://danthompsonsblog.blogspot.com/2008/09/easydriver-v31-tutorial.html учебник по подключению шагового двигателя к драйверу "Easy Driver".

По аналогии подключаю так

POWER
driver <-> motor
A+ ------- A (BLK)
A- ------- C (GRN)
B+ ------- B (RED)
B- ------- D (BLU)

driver <-> power sup
DC- ------- GND
DC+ ------- +12V 4A

SIGNAL
driver <-> arduino
PUL ------- D12 (насколько я понял PUL этот тот-же STEP)
DIR ------- D3
+5V ------- +5V
ENBL ------- ?????

Вопрос: правильно-ли я все подключаю и куда подключать контакт ENBL в драйвере?

leshak
Offline
Зарегистрирован: 29.09.2011

GRiMmase пишет:

 Сразу предупрежу, что я делаю первые шаги в радиоэлектронике и возможно вопросы будут звучать глупо

Ну и что? Все мы в чем-то чайники. Вопрос всегда подразумевает что человек чего-то не знает. А вот ответ - не означает автоматического "знания", учитывайте это пользуясь "бесплатными советами" ;) 

Так что отвыкайте "расшаркиватся" в своей новичковости. Просто спрашивайте. "Неадекватные реакции" вызывают только впросы который поднимаются в 100-тый раз, или просто отвеченны в документации или вообще "ответ на главной странице сайта", а человеку просто лень разбиратся и проще спросить форум чем гугл или встроенный поиск. Но в этом случае его не спасут никакие реверансы "я чайник", никакие просьбы "не пинать" :) Могу оттянутся  "от души" ;)

Если же видно что вы сами прикладываете усилия, но "просто не получается" - опасаться нечего.

GRiMmase пишет:

 

Вопрос: правильно-ли я все подключаю и куда подключать контакт ENBL в драйвере?

Ну что-бы "ответить точно" - нужно найти даташит именно на ваш драйвер. И знать точную его версию.

На "беглый взгляд" - все правильно.

По поводу ENBL, он же Enable. Обычно пин с таким именем означает банальное "включить/выключить". Дать питание на обмотки мотора или нет (даже когда вы не "степаете", на обмотки может подаватся ток для "удержания позиции").

Его можно завести на любой свободный цифровой пин ардуины, и включать/выключать мотор простым digitalWrite(ENBL_PIN,HIGH/LOW) (предварительно, в setup() включив на выход этот пин)

Если "это не требуется", то можно попробовать "просто никуда не подключать" - если в самом модуле есть подтяжка этого пина к питанию - больше ничего и не нужно. мотор будет "включен всегда". Если в модуле "не подтяжки" (будет проявлятся в том, что происходят выключения от каких-то случайных помех. Руку там поднесли к пину и проч.) - тогда его нужно будет самому притянуть к питанию (подключать к 5v пину, через резистор большого номинала. скажем в 10k. Точность не нужна.... подойдет любой на килоомы).

К сожадению на ссылка в вашей статье на схематику модуля не рабочая, поэтому "точно" сказать нужен внешний подтягивающий резюк или нет -  не могу. Но в любом случае можно попробовать "просто никуда не подключать". Это безопастно. в крайнем случае мотор просто "не будет крутится" или "крутится с перебоями".

 

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 Спасибо за развернутый ответ, и еще один момент: в драйвер приходит +5V а земля откуда берется на питание драйвера?

leshak
Offline
Зарегистрирован: 29.09.2011

 

GRiMmase пишет:

Спасибо за развернутый ответ, и еще один момент: в драйвер приходит +5V а земля откуда берется на питание драйвера?

Ну так вы же сами, описывая схему уже это описали DC- ------- GND.

Земля - она вообще везде общая должна быть (иногда это даже не упоминаю, просто "само собой разумеется", если только схеме не "развязанны" через какое-нибудь опто реле и т.п.). Даже если вы питаете дуину и драйвер от разных источников - земли связать нужно.

leshak
Offline
Зарегистрирован: 29.09.2011

 Вообщем если вы питаете дуину и шилд одним источником (и уже подключили землю источника к модулю) - вам не нужно ничго больше делать (естественно если сама дуина тоже подключена к этому источнику на + и GND) - все уже связанно.

Если же вы питаете "от разных", например ардуино от USB, а модуль от блока питания - нужно тогда, дополнительно, связать GND модуля и GND пин ардуины.

Вообщем что-бы не "гадать" конечно попробуйте, все-таки, найти схематику вашего модуля. Дайте сюда ссылку  - посмотрим, может что понятней/определенней станет.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 Да, про "землю" это я решил перестраховался.

К сожалению схему производитель не показывает, но есть схема подключения: http://www.wantmotor.com/ProductsView.asp?id=273&pid=82 к сожалению не к ардуино и мне как новичку пока не понятна.

maksim
Offline
Зарегистрирован: 12.02.2012

Почитайте вот эту тему, особенно с 25 сообщения.

maksim
Offline
Зарегистрирован: 12.02.2012

Судя по схеме, в этом драйвере реализована гальваническая развязка, таким образом, что для того чтобы им управлять важно что бы было подключено +5V ардунино, земли блока питания мотора и ардуино соеденять крайне не рекомендую.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 maksim Благодарю за наводку, ушел изучать.

maksim
Offline
Зарегистрирован: 12.02.2012

 Ну а если источник питания один, то в любом случае земля у драйвера и дуины будет общая.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

Для дополнения картины, залез внутрь DQ420MA

GRiMmase
Offline
Зарегистрирован: 26.07.2012

maksim пишет:

...земли блока питания мотора и ардуино соеденять крайне не рекомендую.

Если так, то как запитать драйвер если кроме +5V и цифровых выходов с ардуино, на него ничего не идет?

maksim пишет:

Ну а если источник питания один, то в любом случае земля у мотора и дуины будет общая.

Источники разные, +5V с ардуино, а питание для ШД (14V) одельно.

leshak
Offline
Зарегистрирован: 29.09.2011

 

GRiMmase пишет:

maksim пишет:

...земли блока питания мотора и ардуино соеденять крайне не рекомендую.

Если так, то как запитать драйвер если кроме +5V и цифровых выходов с ардуино, на него ничего не идет?

Присоединяюсь к вопросу. Тоже об этом думал. Конечно при полностью развязанных схемах оно спокойней когда силовая часть никак не связанна с логикой, но тут, похоже, производитель не оставил выбора :( На модуле только "одна земля".

GRiMmase пишет:

maksim пишет:

Ну а если источник питания один, то в любом случае земля у мотора и дуины будет общая.

Источники разные, +5V с ардуино, а питание для ШД (14V) одельно.

На модуль-то понятно что вы берете 5v с 5v-пина дуины, а саму дуину от чего питаете? От usb, от внешнего разъема (или через пин vin)?

И еще, не уверен, но где-то в памяти крутится, что модуль 12-вольтовый. Уверены в 14v?  Просто если взять 12v блок, тогда появляется возможность от него же и дуину запитать через внешний разъем. Тогда вопрос "земли" - отпадет сам собой. Так как "источник питания" получится один.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

leshak пишет:

На модуль-то понятно что вы берете 5v с 5v-пина дуины, а саму дуину от чего питаете? От usb, от внешнего разъема (или через пин vin)?

Дуину сейчас запитываю от USB.

leshak пишет:

И еще, не уверен, но где-то в памяти крутится, что модуль 12-вольтовый. Уверены в 14v?  Просто если взять 12v блок, тогда появляется возможность от него же и дуину запитать через внешний разъем. Тогда вопрос "земли" - отпадет сам собой. Так как "источник питания" получится один.

Ну по крайней мере в спецификации к драйверу на сайте производителя пишут: Supply voltage from 12VDC to 36VDC

leshak
Offline
Зарегистрирован: 29.09.2011

 Еще раз, уже на свежую не сонную голову посмотрел вашу ссылочку  http://www.wantmotor.com/ProductsView.asp?id=273&pid=82

самая нижния схема - наша.

Вывод:

  • Максим был прав (ну кто-бы сомневался ;)  - ничего с землей дуины мудрить не нужно. Фактически пины данных это и есть "земля" для управляющей логики модуля. На самом деле мы на них не 5v подаем, а "подключаем к ним землю", когда делаем digitalWrite(PIN, LOW); и "отключаем землю" когда делаем digitalWrite(PIN, HIGH);   . Поэтому земли "соеденять не нужно". Силовая и логическая часть - полностью развязанны и друг-другу ничем не грозят.
  • Велика вероятность что пин ENBL имеет "инвертированный смысл". То есть что-бы "включить модуль" его нужно подключать к земле если хотим иметь всегда включенный, или заводит на цифровой пин и делать digitalWrite(PIN, LOW) для включения, и digitalWrite(PIN, HIGH) для выключения.

 

GRiMmase
Offline
Зарегистрирован: 26.07.2012

leshak

Попытаюсь сегодня вечером полученную информацию применить.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 leshak Все так и есть, работает! Спасибо большое!

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Вопрос, какой скетч использовали?
И еще один кто нибудь подключал ЛСД индикатор на котором бы отображались обороты, с пользованием двух кнопок - больше, меньше оборотов.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

Nikolai54 пишет:

Вопрос, какой скетч использовали?

Продолжение темы тут

Nikolai54 пишет:

И еще один кто нибудь подключал ЛСД индикатор на котором бы отображались обороты, с пользованием двух кнопок - больше, меньше оборотов.

А в чем у вас трудности? При подключении LCD, используйте соответствующую библиотеку. LiquidCrystal или  LiquidCrystal_I2C (в зависимости от типа подключения вашего LCD)

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Спасибо за оперативный ответ, не ожидал.
Буду пробовать.
А вообще готовый скетч не встречали управления ШД допустим 3 кнопки, 1-включение enabl, 2- больше оборотов, 3 - меньше оборотов с отображением результата на ЛСД.
Этого на форуме нет, да и в гугле уже несколько дней ищу пока не нашел.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

Такой скеч самому написать не трудно, оттолкнуться можно от этого примера. Кнопки у вас как подключены?

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Спасибо Вам мил человек, действительно не трудно когда знаешь, а я только учусь.
Буду искать, вообще по сути мне надо генератор управляемый 2 кнопками частота (делить на обороты например на 100) больше меньше и вывод на индикатор оборотов.
С генератора (Ардуино) подается на step контроллера.
Я делал генератор на таймере 555 но там приходится на переменном сопротивление разметку делать по оборотам (это все грубо и не точно) да и одним резистор весь диапазон оборотов не охватить надо ставить переключатель и менять RC цепочку - частоту, не очень это удобно.

Есть варианты  управление что то похожие у Итальянцев http://www.lucadentella.it/en/2013/05/30/allegro-a4988-e-arduino-3/ или вот это http://vk.com/topic-41493607_27438749
уже весь интернет перевернул, такое представление что это надо только мне и не кому больше.

__Alexander
Offline
Зарегистрирован: 24.10.2012

если в программе больше ничего не будет, то возможно и без таймеров обойтись, просто цикл.


int delay = 1000;

void Delay(int delay)
{
while (delay) delay--;
}

for(;;)
{
step_1;
Delay(delay);
step_0;
Delay(delay);

if (PRESS_BUTTON_1 && delay>0)
delay--;
if (PRESS_BUTTON_2 && delay < 16535)
delay++;


}

 

только антидребезг и задержку после нажатия сделать и всё.

 

Nikolai54
Offline
Зарегистрирован: 23.06.2013

а эта задержка int delay = 1000; для чего?

__Alexander
Offline
Зарегистрирован: 24.10.2012

это по умолчанию. лучше кончено сделать нулем.

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Спасибо , а как поставить делитель например 100  это будет соотвествовать оборотам и это вывести на индиктор например LCD 1602

__Alexander
Offline
Зарегистрирован: 24.10.2012

обороты будут зависить от кол-ва шагов вашего двигателя и режима драйвера... 1/4, 1/16... микрошаг...

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Это я понимаю, куда это вставить, двигатель может быть любой я и предлагаю что 100 гц будет соответсвовать одному обороту, микрошаг меняется на самом драйвере у меня вот этот http://www.goodluckbuy.com/single-axis-cnc-stepper-driver-for-cnc-millin...

Или я не прав?

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Господа большое Вам спасибо, за помощь. Извините за назойливость. Обязуюсь когда разберусь обязательно помочь такому как я.

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Не получается у меня индикатор прикрутить.

__Alexander
Offline
Зарегистрирован: 24.10.2012

какие 100Гц? у вас количество шагов на оборот написано на двигателе. если вы выставите режим полный шаг, то собственно надо подать такое количество импульсов на степ, сколько шагов на движке. Если режим 1/4, то соответственно в четыре раза больше.

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Да это не принципиально я привел это как пример.
Может Вы мне про индикатор что нибудь подсказали.

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Профессионалы Ардуинцы помогите прошу Вас сотворить сие чудо.

maksim
Offline
Зарегистрирован: 12.02.2012
Nikolai54
Offline
Зарегистрирован: 23.06.2013

Был бы у меня действительно проект который требует много времени, а ток две кнопки и индикатор.
Даже дело не в деньгах просто интересно разве за это еще и деньги  берут? Два прихлопа три при топа!

придется отложить Arduino , сколько на него времени потратил проще на рассыпухе сделать. Как оказалось Arduino нет все просто как пишут.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Nikolai54 пишет:

Был бы у меня действительно проект который требует много времени, а ток две кнопки и индикатор.
Даже дело не в деньгах просто интересно разве за это еще и деньги  берут? Два прихлопа три при топа!

придется отложить Arduino , сколько на него времени потратил проще на рассыпухе сделать. Как оказалось Arduino нет все просто как пишут.

Уважаемый, вы сами себе противоречите.. проект два прихлопа три притопа, но вы на него потратили много времени... 

Давайте будем справедливо подходить... помощь, это когда вы что то делаете и вам нужно чуть чуть помочь и подсказать... а когда нужно за вас все сделать, это уже не помощь нифига...
Уважайте чужой уборщиц!

Количество кнопок и индикаторов не определяет сложность проекта..

С двумя кнопками и индикатором можно такого начудить, можно тетрис сбацать например :)

 

maksim
Offline
Зарегистрирован: 12.02.2012

Половина форума знает и может написать эту программку. НО вы сами все сделали для того что бы вам никто не захотел помочь просто так ради интереса.

GRiMmase пишет:

Кнопки у вас как подключены?

Где вы ответили на этот вопрос?

Где та программа, в которой видно куда и как подключены драйвер, лсд, кнопки?

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

 

Nikolai54
Offline
Зарегистрирован: 23.06.2013

Спасибо друзья вроде получается, как только сделаю опубликую на форуме.

 

GRiMmase
Offline
Зарегистрирован: 26.07.2012

maksim

Максим, я не достаточно хорошо знаю вопрос чтобы тут-же ответить на то чего не знаю сам, я пытался конкретезировать суть проблемы и попытаться помочь, для вас возможно все очевидно, для меня нет!

 

...ой, вы не ко мне обращались прошу прощения :)