roboforum.ru

Технический форум по робототехнике.
Текущее время: 22 апр 2025, 20:06

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 05 янв 2015, 22:30 
Не в сети

Зарегистрирован: 05 янв 2015, 21:34
Сообщения: 3
Здравствуйте.
Решил собрать станочек.
При этом электротехника была только в универе, а программированием не заробатывал...
Нашел простую схему подкючения:
Вложение:
2s8096e.jpg
2s8096e.jpg [ 118.18 КиБ | Просмотров: 28045 ]

Использую arduino uno + контроллер A4988 + униполярные шаговые двигатели 4shg-023a39s.
Характеристики двигателя:
Тип двигателя: Шаговый, униполярный.
Угол поворота за один шаг: 1.8 градуса.
Количество шагов на полный оборот вала: 200.
Количество выводов: 6.
Количество обмоток: 2 со средней точкой.
Напряжение питания: 2.3В.
Сопротивление обмоток: 1.5Ом.
Потребляемый ток: 1.53А.
Момент удержания ротора: 4кг/см.
Радиальная нагрузка: 75N (max).
Осевая нагрузка: 15N (max).
Температурный диапазон: -20...+50 градусов.
Размеры: 57х57×41 мм.
Вес: 540 грамм.

Решил сперва собрать схему для одного ЩД:
Вложение:
a4988 diagram.png
a4988 diagram.png [ 74.25 КиБ | Просмотров: 26995 ]

Собрал схему, в качестве доп.питания использовал 4 АА батарейки.
В ардуино закатал скетч(в скетче доп.указания по подключению):
Код:
//simple A4988 connection
//jumper reset and sleep together
//connect  VDD to Arduino 3.3v or 5v
//connect  GND to Arduino GND (GND near VDD)
//connect  1A and 1B to stepper coil 1
//connect 2A and 2B to stepper coil 2
//connect VMOT to power source (9v battery + term)
//connect GRD to power source (9v battery - term)


int stp = 13;  //connect pin 13 to step
int dir = 12;  // connect pin 12 to dir
int a = 0;     //  gen counter

void setup()
{               
  pinMode(stp, OUTPUT);
  pinMode(dir, OUTPUT);       
}


void loop()
{
  if (a <  200)  //sweep 200 step in dir 1
   {
    a++;
    digitalWrite(stp, HIGH);   
    delay(10);               
    digitalWrite(stp, LOW); 
    delay(10);             
   }
  else
   {
    digitalWrite(dir, HIGH);
    a++;
    digitalWrite(stp, HIGH); 
    delay(10);               
    digitalWrite(stp, LOW); 
    delay(10);
   
    if (a>400)    //sweep 200 in dir 2
     {
      a = 0;
      digitalWrite(dir, LOW);
     }
    }
}

http://forum.arduino.cc/index.php?topic=133894.msg1449404#msg1449404
Ни звуков, ни движения не возникло.
Проверил двигатель вручную - попеременно давая напряжение то на одну, то на вторую обмотку, двигатель работает.
Минут 5 перезагружал ардуино, менял порядок полюсов, почуял запах - процессор на А4988 начал перегреваться. Наверно сдох.
Подключал два других А4988 - ноль реакции.

Подскажите:

1)можно ли использовать приведенные мною схемы?
2)какие источники питания лучше использовать для этих схем?
3)зачем на А4988 регулируемый резистор?
4)почему сгорел первый контроллер?
Может дадите ссылочки, что почитать. Заранее признателен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 05 янв 2015, 22:37 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
зачем нужен резистор написано в документации
ищи где накосячил с подключением, раз микра завоняла значит что-то замкнул и она сгорела, хотя она с встроенной защитой.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 05 янв 2015, 22:47 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
Во-первых 6 вольт для драйвера маловато. Надо хоть 12. Во-вторых очень легко горят при отключении обмотки двигателя под питанием. В третьих - вывод Enable подключать надо.

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 05 янв 2015, 22:52 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
а, не заметил фразу про питание шанговика от батареек
нужен нормаольный блок питания минимум 12 вольт.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 06 янв 2015, 03:13 
Не в сети

Зарегистрирован: 05 янв 2015, 21:34
Сообщения: 3
С компа питание со старого снять что ли....
А куда Enable подключать? ни разу на схемах не видел.
Все, увидел. Он на пине висит. Пойду читать документацию и искать скетч.

Добавлено спустя 2 часа 3 минуты 12 секунд:
нашел блок питания 12В 30А. двигатели потребляют 1.53А каждый. Что будет если его использовать?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 06 янв 2015, 09:02 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
Работать будет.
Регулярно вижу непонимание такого типа. На БП указан максимальный ток как правило. Нельзя его превышать.

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 06 янв 2015, 11:45 
Не в сети
Аватара пользователя

Зарегистрирован: 17 июл 2008, 14:21
Сообщения: 83
Откуда: Тольятти
прог. языки: Delphi, Bascom
Использую такую же связку, все работает. ENABLE в воздухе. БП 12В, +5 с ардуины
Вложение:
IMG_20150106_113949.jpg
IMG_20150106_113949.jpg [ 1.5 МиБ | Просмотров: 27503 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 06 янв 2015, 18:32 
Не в сети

Зарегистрирован: 05 янв 2015, 21:34
Сообщения: 3
Большое спасибо. Попробую. А про ток - где-то читал что блоки питания не любят когда их подключают без минимальной нагрузки(в процентах от максимальной).

Добавлено спустя 1 час 43 минуты 20 секунд:
Запитал драйвер от 12 В .
Загрузил скетч:
Код:
int Motor1EN = 10;
int Motor1dir = 12;
int Motor1step = 9;
void setup ()
{
  pinMode(Motor1EN, OUTPUT);
  pinMode(Motor1dir, OUTPUT);
  pinMode(Motor1step, OUTPUT);
}
void loop ()
{   
digitalWrite(Motor1EN, HIGH);
if (Motor1dir) 
{
  digitalWrite(Motor1dir, HIGH);

else     

  digitalWrite(Motor1dir, LOW);
}
digitalWrite(Motor1step, LOW);
for (int i=0;i<1000; i++) 
{   
  delay(200);   
  digitalWrite(Motor1step, HIGH);   
  delay(200);   
  digitalWrite(Motor1step, LOW);
}
delay(200);   
digitalWrite(Motor1EN, LOW); 
}

^Enable подкючил.
блок питания откючается когда ардуино включается...
Код вроде правиьный?


^Повесил Enable в воздух.
вбил скетч:
Код:
int Motor1dir = 12;
int Motor1step = 9;
void setup ()
{
  pinMode(Motor1dir, OUTPUT);
  pinMode(Motor1step, OUTPUT);
}
void loop ()
{   
digitalWrite(Motor1dir, HIGH);
digitalWrite(Motor1step, LOW);
for (int i=0;i<1000; i++) 
{   
  delay(200);   
  digitalWrite(Motor1step, HIGH);   
  delay(200);   
  digitalWrite(Motor1step, LOW);
}
delay(200);   
 
}

бп делает писк и выключается.

Добавлено спустя 3 часа 4 минуты 37 секунд:
Все, купил новый бп. Все работает)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговым двигателем Arduino + A4988
СообщениеДобавлено: 08 фев 2016, 23:26 
Не в сети

Зарегистрирован: 03 апр 2015, 19:34
Сообщения: 132
Откуда: маленькая страна в центре Европы, (в КВН-е)
прог. языки: с
есть ли кто еще в теме?
Люди добрые подскажите пожалуйста, пытаюсь подружиться с arduino, взял самое простое:
Взял 2560 и рампс 1.4 с принтера. на оси X установил драйвер. Полного описания pinout по рампсу не нашел, судя по прошивке то пины соответсвуют // For RAMPS 1.4
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2

концевики ладно, а вот что делать со step, dir, enable?
есть такой вот скетч (библиотеку уже портировал)
#include <AccelStepper.h>
AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
int dir = 1; //используется для смены направления
void setup() {
Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
}
void loop() {
if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение
Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)
dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(1000); //задержка на 1 секунду
}
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
}

вместо 12 и 13 назначаю свои 55 и 54, а что за режим "external driver"? и где enable подевался?
Извините если смешно со стороны но ... увяз в общим. (читаю параллельно документацию)

может блок питания тоже хандрит.. Хотя 3А и при включении никаких просадок, ровненько 12.1в.
эхо идет, когда прописывал. Гуглю, все на драйверах и "на соплях" собирают, рядом сканер цыклоп стоит- собрал так же без шилда на uno и с тем же БП и прекрасно работает. А тут все стандартно, уже все сбито и нифига не пашет. Не ужели никто не применяет рампс помимо принтеров! :o

Добавлено спустя 2 часа 28 минут 23 секунды:
проверил под марлин прошивкой, двигатель управляется 100% (под тем же БП). значит с пинами чет не то..

Добавлено спустя 2 часа 8 минут 6 секунд:
разобрался, при шилде используется high и low вот работающий кусок скеча:

int ledPin = 13; // LED connected to digital pin 13
int enx = 38;
int stepx = 54;
int dirx = 55;
int Z =1;

// The setup() method runs once, when the sketch starts

void setup() {
// initialize the digital pin as an output:
pinMode(ledPin, OUTPUT);
pinMode(enx, OUTPUT);
pinMode(stepx, OUTPUT);
pinMode(dirx, OUTPUT);
digitalWrite(enx, HIGH);
digitalWrite(stepx, LOW);
digitalWrite(dirx, LOW);

}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()
{
digitalWrite(enx, LOW);
digitalWrite(dirx, HIGH);
digitalWrite(ledPin, HIGH); // set the LED on
for (int x = 0; x<800; x++){ //not sure how this line is effecting the entire system, x< any# does not change how long the motors step for me
digitalWrite(stepx, HIGH);
delay(1); //using this and the below delay to control speed, but only a few different combinations between 0-3 run smoothly so i could use help here
digitalWrite(stepx, LOW);
delay(1);
} //no matter what both motors are running in sync, not what i want
for (int b = 0; b<50; b++){

delay(0);
}
}

Добавлено спустя 1 минуту 1 секунду:
начинает нравится мне эта дуня :D


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO