8 (800) 350-30-16

Шаговый двигатель и его драйвер

Дата: / Категория: Механика / Автор: DOC_tr

Сегодня я затрону более интересную тему, нежели просто подключение датчиков и обзор их работы. Сегодня я покажу вам, как подключить к Arduino шаговый двигатель Nema17 (17HS2408) с помощью драйвера шаговых двигателей L298N и с дополнительным питанием.

В качестве дополнительного питания будем использовать блок питания на 12 V.

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

У нашего драйвера L298N есть 7 клемм и 4 свободные ноги. Они все подписаны и вот что они означают:

  • OUT1 - клемма для подключения двигателя (A+)
  • OUT2 - клемма для подключения двигателя (A-)
  • OUT3 - клемма для подключения двигателя (B+)
  • OUT4 - клемма для подключения двигателя (B-)
  • +12v, GND, +5v - думаю объяснять не стоит. Подключать блок питания будем в 12v и GND
  • IN1-4 - ноги для подключения Arduino. Подключаться будем в порты 4-7 соответственно.

Я так подробно расписал про OUT1-4 потому что там не указано, который из них является A и B, + и -. Это нужно смотреть в спецификации драйвера. Для L298N можно брать данные из этой статьи.

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

  • A+ (Красный)
  • B+ (Желтый)
  • A- (Серый)
  • B- (Зеленый)

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

Вот схема, по которой подключал я:

А вот так все это выглядит на столе:

 

Хорошо, пойдем дальше - подключим наш блок питания к сети. Берем провод с вилкой, зачищаем концы и закрепляем их в клеммах L и N секции AC IN. Порядок подключения не важен. В клеммы V- и V+ я вставил 2 провода папа-папа для большего удобства в подключении.

А теперь подключим блок питания к драйверу двигателя:



На фотографии можно увидеть, что светодиод на БП горит зеленым, а светодиод на драйвере горит красным. Еще при подключении БП издает тихий и противный писклявый звук, но это уже мелочи.

Отлично, у нас все есть. Осталось дело за малым - подключить Arduino и заставить двигатель вращаться.

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

И вид сверху.

Все. Наша конструкция собрана - перейдем к программированию.

В Arduino уже есть готовая библиотека для работы с шаговым двигателем - Stepper.

Подключим ее и с помощью следующего кода запустим наш двигатель. 

#include <Stepper.h>
Stepper myStepper(200, 4, 5, 6, 7);

int stepCount = 0;

void setup() {}

void loop() {
int sensorReading = analogRead(A0);
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
myStepper.step(200 / 100);
}
}

Конструктор Stepper принимает 5 аргументов: первый - это скорость вращения, а остальные 4 порты IN1-4.

Ну вот на этом, пожалуй, и все. Все используемые в данном уроке компоненты вы можете купить на нашем сайте по привлекательным ценам (ссылки ниже).

А в одной из следующих статей я расскажу и покажу, как сделать подвижную платформу для станков с ЧПУ.

Видео-версия данной статьи

Теги: #Nema17, #l298N, #Блок питания, #Шаговые двигатели

Ваша оценка:

Рейтинг: 10.0 (Оценок: 3)

Комментарии (6):

nyos.ru
2016-07-03 05:35
кто нить нашёл решение чтобы двигатель не грелся ... или от этого не уйти ?
Raarr
2016-06-11 23:54
Тут поэкспериментировал, появилась пища для размышлений:

0. Вибрация мотора в любом варианте подключения была вызвана этой строчкой:
Stepper myStepper(200, 4, 5, 6, 7);

поменяв на
Stepper myStepper(200, 4, 6, 5, 7);
всё работает
О таких случаях есть упоминания на форумах. Т.к. в топике все работает, - могу предположить, что это разница в сериях производственных площадках и т.п...?


1. Мотор работает и без внешнего питания, т.е. запитываетя на 5В от Ардуины, земля от драйвера соответственно в землю ардуино.

2. С подключением внешнего питания - мотор крутится значительно веселее, но максимум это 150 об при 200 шагах на оборот. Больше даже с 5А питанием может крутить, но самостоятельно стартовать не может. Гудит и начинает двигаться, если чуть крутануть.

3. Зело греется двигатель и драйвер при 12В питании. Буду смотреть - влияет ли 1А или 5А на это явление.

4. При питании внешнем питании на драйвер, - всё вместе работает и без питания от ПК через usb на ардуину. Т.к. я не очень разбираюсь в предмете, - не понимаю должно ли так быть)

5. при любом питании мотор не крутит если застопорить вал пальцами. - Это из-за маломощности именно 17HS2408? или что-то с подключением? Начиная с какого мотора будет ощутимая прибавка к мощности - т.е. чтобы пальцами сложно было удержать? ))
DOC_tr
2016-06-12 01:08
@Raarr:Ну тут для каждого двигателя в datasheet нужно искать A+/- B+/-. В некоторых есть допуски в зависимости от серий.

1 - да, работает. Но по сути он ничего не может сдвинуть с места. Усилия едва хватает на то, чтобы просто крутиться без нагрузки.
2 - по поводу скорости ничего не могу сказать. Нам нужна была только максимальная нагрузка. Скорость устраивала, поэтому не экспериментировали.
3 - Драйвер и правда греется сильно. Именно поэтому охладительный элемент и впаян. Есть версии с кулером.
4 - так быть не должно. Может сгореть Arduino. Дело скорее всего в драйвере.
5 - если разбирать материал данной статьи, то в видео, в конце, вы можете увидеть часть передвижной платформы. Так вот - ее было сложно невозможно остановить руками, а если платформа упиралась, то двигатель все равно крутился, проскакивая через зубья ремня.

Но. как я уже писал, нас интересовала только мощность двигателя, и после данной статьи мы много экспериментировали с разными библиотеками и/или переписывали код библиотеки из статьи.
Но точно не могу сказать - давно это было. Не помню на чем выбор остановился.
Raarr
2016-06-12 12:54
@DOC_tr:Еще поковырялся:
2. До 150 об - мотор стартует без проблем, если нужно выше - необходимо плавное нарастание скорости, т.е.

myStepper.setSpeed(200); // не работает


Но,
     myStepper.setSpeed(160);
     myStepper.setSpeed(170);
     myStepper.setSpeed(180);
     myStepper.setSpeed(185);
     myStepper.setSpeed(190);
     myStepper.setSpeed(195);
     myStepper.setSpeed(200);
//работает. С увелчением скорости шаг нарастания должен становиться меньше
Это кстати объясняет эксперименты с потенциометром - там мотор очень быстро крутится, как раз из-за плавного нарастания скорости.
скорости выше 200 не проверял.

3. Нагрев драйвера от 1А и 5А - как небо и земля. При 5А - радиатор реально горячий через 1 мин (под вопросом использования в проекте), от 1А - просто теплый ( в мысле не холодный). 10 минут вертелся на скорости 200 об -всё ок!
НО! Мотор греется в любом случае через 15 минут он очень хорошо согревал руки этим холодным питерским июньским утром)

4. То что ардуина работает от питания драйвера/мотора - не была убрана перемычка. С перемычкой мотор работает от питания ардуины. Без перемычки - если я правильно понимаю. питание разделяется. Кстати, в статье перемычка стоит, - могу предположить, что это такая же ситуация, как была у меня - т.е. питание тоже бы шло от драйвера, если убрать питание от ПК

5. Я предположил, что на крутящий момент может влиять скорость вращения. Без измерительных приборов об этом сложно говорить, но по ощущениям что-то такое есть - разница с сопротивлении на 200 об и 50, хотя это может быть связано с тем что, чем выше скорость и двигателю сложнее стартовать при внешнем замедлении.
Но! самое главное в другом - я использовал довольно большой шкив D=8см, что при фиксировании пальцами давало довольно большой рычаг на вал. Когда шкив убрал - то да, пальцами вал напрямую я удержать не мог))

Большое спасибо автору статьи за понятную статью и помощь в разборе.

Кстати, я уже писал Вам - хотел пообщаться напрямую: rpport@mail.ru
Raarr
2016-06-11 16:44
Можно ли использовать блок питания 12В на 1А? - Собрал все как по схеме, но под руками был только такой блок - мотор не подает признаков жизни. Только при небольшом нажатии а вал начинает вибрировать. Не хватает тока?
DOC_tr
2016-06-11 18:09
@Raarr:Если двигатель просто вибрирует, значит, скорее всего нехватает тока. Но я не совсем понимаю почему, ведь он есть 0.6А.
В данной статье правда блок питания на 2А, но 1А тоже должен с ним легко справляться.

Комментарий:

Copyright © RobOM.ru 2016 г. Все права защищены