Arduino и шаговый двигатель

Решил подлключить к Arduino шаговый двигатель, в качестве драйвера шагового двигателя использовал A4988, понравились его рабочие характеристики.

  • Напряжения питания шаговика (силовая часть): 8-35 В;
  • Напряжение питания контроллера (логическая часть) :3-5,5В;
  • Максимальный ток с охлаждением: 2А;
  • Дробление шага: 2,4,8,16;

Документация (datasheet) на A4988

Для настройки определенного уровня дробления нужно на входе MS1,MS2,MS3 установить определенную комбинацию уровней.

Таблица настройки на необходимое дробление:

 Выводы драйвера Дробление
MS1 MS2 MS3 -
L L L 1
H L L 1/2
L H L 1/4
H H L 1/8
H H H 1/16

При сборке изначально использовал для питания силовой части блок питания от модема на 12 Вольт, но схема категорически отказывалась работать. После длительных мучений решение было найдено. Оказывается качество выходного напряжение с блока питания оставляет желать наилучшего - т.е высокий уровень нелинейных искажений, а в микросхеме стоит то ли блокиратор то ли еще что то поэтому она и не хотела работать. 

После того как подключил батарейку на 9 Вольт, все заработало должным образом. Производитель рекомендут ставить на питании силовой части дополнительно еще и конденсатор.

Шаговик использовал от флоппи дисковода, можно использовать абсолютно любой главное что бы ток не превысил 2 А, иначе драйвер может не выдержать.

Схема подключения шагового двигателя к Arduino

 

На вход step подаются сигнал с определенной частотой которые отвечают за "шаги" двигателя, к нему я подключил 13-й вывод от arduino, вывод DIR подключается к 12-му выводу данный вывод отвечает за направление вращения шаговика.

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

Код программы для управления шаговым двигателем

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);
     }
    }
}

Думаю тут никаких пояснений не нужно. Сначала мы крутим в одну сторону потом в другую. Arduino отлично подходит для управления шаговым двигателем.

&feature=youtu.be

Комментарии  

 
#1 Антон 16.12.2015 12:01
Подскажите пожалуйста, что за шаговый двигатель вы используете?
Цитировать
 
 
#2 admin 16.12.2015 12:09
Это обычный шаговый двигатель от флоппи дисковода, там на нем 4 провода то что нужно для этих драйверов ШД.
Цитировать
 
 
#3 Назар 25.10.2016 21:47
модель ардуинки, и єйо цена?
Цитировать
 
 
#4 Mixan 26.10.2016 14:27
Цитирую Назар:
модель ардуинки, и єйо цена?

Я использовал Arduino Nano, стоит приблизительно 250 рублей если с Китая заказывать.
Цитировать
 
 
#5 Назар 31.10.2016 01:36
Пррога какая использивалась чтоб ардуинку запрограмироват ь?
Цитировать
 
 
#6 Александр 31.12.2016 10:56
а как сделать так, чтобы шаговый двигатель крутился максимально быстро и на максимальный градус
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа