Кузовной ремонт автомобиля

 Покраска в камере, полировка

 Автозапчасти на заказ

Как подключить к ардуино шаговый двигатель


Albion76 › Блог › Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная.

Всем привет!

В прошлой части своего повествования о подключении ШД к ардуино я остановился на том, что собрал на макетной плате стабилизатор напряжения на 5 В, установил плату управления (ПУ) и подготовил выводы ШД. Настройка самой платы заключается в установке тока двигателя и выбора значения микрошага.

Начнём с тока двигателя. На ПУ надо подать только питание логической части, т.е. 5 В. Плюс подается на вывод VDD (может быть обозначен VCC, VLOG), минус на GND. ШД и его питание пока не подаю. Сам процесс регулировки сводится к установке Vref.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Vref = Current Limit * 8 * (RS)

RS = 0,100
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

RS = 0,050
Vref = Current Limit * 8 * 0,050 = Current Limit / 2,5

где
Vref – напряжение на пине, который задаёт ток двигателя.
Current Limit – ток шагового двигателя.
RS — сопротивление резистора — датчика тока.

Измерять Vref проще всего на подвижном выводе подстроечного резистора. Минус мультиметра (в режиме измерения напряжения постоянного тока соединяется с выводом GND, а плюс цепляется за жало отвёрточки, которой кручу подстроечный резистор. Ток своего двигателя я не знал и подобрал опытным путём.

Полный размер


Если пересчитать по формуле, то получу ток:

Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

отсюда
Current Limit = 1,25 * Vref = 1,25 * 0,28 = 0,35 А или 350 мА

С током разобрался. Теперь микрошаг.


За микрошаг отвечают выводы MS (micro step) MS1, MS2, MS3.
Теперь пару слов о том, что такое микрошаг. Из таблицы видно, что это дробное число. Допустим ШД совершает полный оборот за 200 шагов. Если будет выбран микрошаг 1/4, то полный оборот будет совершаться уже за 800 шагов, а при микрошаге 1/16 — за 3200 шагов. Для чего это нужно? При полном шаге получается больший момент, меньшая точность и больше шумность. Чем мельче шаг, тем выше точность позиционирования, плавнее ход (особенно на малых частотах вращения) и значительно меньше шума при работе. Однако при этом момент на валу двигателя будет меньше. Забегая вперёд, скажу что поигрался с разными значениями, но остановился на 1/16, соединив выводы MS1, MS2, MS3 с выводом VDD.
ПУ настроена — можно подключать двигатель и его питание.
Напомню, что одна из обмоток у меня это синий и зелёный провод, вторая — белый и оранжевый.

Полный размер


Схематически подключение ШД к ПУ выглядит у меня так:
После подачи напряжений питания на плату ШД стал произвольно двигаться. Виной тому наводки на выводах STEP (шаг) и DIR (direction — направление) — эти выводы отвечают за управление вращением ШД.
Если соединить вывод DIR с выводом VDD, ШД будет двигаться в одну сторону, а если с GND, то в другую.
При переходе напряжения от низкого к высокому уровню на выводе STEP ШД совершает 1 микрошаг. Т.е. для вращения двигателя на этот вывод нужно подавать прямоугольные импульсы с низким уровнем около нуля и высоким около 5 В, так называемые TTL-уровни. Генератором таких импульсов у меня будет плата ардуино.
Я загрузил в неё скетч из примеров под названием Blink. В оригинале он формирует на 13 выводе платы (в моём случае Arduino Nano) импульсы с частотой 1/2 Гц (1 с подается высокий уровень, затем 1 с низкий уровень). При такой частоте ШД совершил бы один оборот (при микрошаге 1/16) за 6400 с! Так долго я ждать не хотел))) и стал повышать частоту двигателя. Устойчивой работы мне удалось добиться на частотах вплоть до 10 кГц. Т.е. длительность импульса и паузы у меня составляют по 50 мкс. Операторы delay в скетче пришлось заменить на delayMicroseconds, потому что delay умеет работать только со временами от 1 мс. В итоге скетч стал выглядеть так:
Затем я решил доработать скетч таким образом, чтобы двигатель периодически менял направление вращения. Доработанный скетч выглядит так:
По подключению Arduino.

Полный размер


Пробный запуск показал полную работоспособность схемы. Двигатель не перегревается и шаги не пропускает. Цель достигнута.
Для тех, кто осилил весь материал, видео устройства в работе.


Это первое моё видео предназначенное для публичного просмотра. И первое виде в блоге, снятое мной.
Напишите в комментариях имеет ли смысл снимать видео или достаточно ограничиться статичными изображениями?

Купить комплектующие можно здесь:
Arduino Nano с кабелем microUSB
Макетная плата 420 точек
Набор оконцованных проводов "папа-папа"
Разные драйверы двигателей: от дешевых A4988 до "тихих" TMC2208

Всем Мира!
До свидания!

Управление шаговым двигателем с Arduino и джойстиком

В этом посте показано, как управлять скоростью и направлением вращения шагового двигателя с помощью платы Arduino UNO и джойстика PS2.
В этом примере используется шаговый двигатель 28BYJ-48 (однополярный шаговый двигатель), который обычно поставляется с платой его драйвера.
В последнем проекте Arduino я построил простой контроллер для этого шагового двигателя, ссылка на проект ниже:
Arduino Unipolar Stepper Motor Control

Джойстик (джойстик PS2) состоит из двух потенциометров с сопротивлением 10 кОм (один для оси X и другой для оси Y) и кнопки.

Требуется оборудование:

  • Arduino UNO доска
  • шаговый двигатель 28BYJ-48 (с платой управления ULN2003A)
  • Джойстик
  • 5В источник питания
  • Хлебная доска
  • Перемычки

Управление шаговым двигателем с Arduino и схема джойстика:
Принципиальная схема проекта показана ниже (все заземленные клеммы соединены вместе).

и на следующем изображении показана схема фризирования:

Шаговый двигатель подключен к плате ULN2003A, которая снабжена внешним источником питания 5В.Управляющие линии (IN1, IN2, IN3 и IN4) этой платы подключены к Arduino следующим образом:
IN1 к выводу Arduino 11
IN2 к выводу Arduino 10
IN3 к выводу Arduino 9
IN4 к выводу Arduino 8

Плата джойстика имеет 5 контактов: GND, + 5V, VRX, VRY и SW, где:
GND и + 5V - контакты питания
VRX - выход потенциометра оси X
VRY - выход потенциометра оси Y
SW - это клемма кнопки (другая клемма подключена к GND).
Выход потенциометра оси X (VRX) подключен к аналоговому выводу Arduino A0, также можно использовать выход потенциометра оси Y (VRY).Контактный выключатель (SW) в этом примере не используется.
Используя потенциометры оси X и оси Y, мы можем независимо управлять двумя шаговыми двигателями.

Управление шаговым двигателем с помощью Arduino и кода джойстика:
В этом примере я использовал библиотеку шагового двигателя Arduino (встроенную), которая упрощает код, он включен в код с использованием следующей строки:

Шаговый двигатель, который я использовал в этом проекте, - 28BYJ-48 , этот двигатель оснащен редуктором скорости 1/64.Внутренний двигатель имеет 32 шага на один оборот, что означает, что внешний вал имеет 2048 шагов на один оборот (64 x 32). Количество шагов определяется в коде, как показано ниже:

и подключение линий управления шагового двигателя определены как:

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

#define IN1 11

#define IN2 10

#define IN3 9

#define IN4 8

// инициализировать библиотеку шагеров

шаговый шаг, STPS (STE IN2, IN3, IN1);

Выходной вывод потенциометра джойстика подключен к аналоговому выводу 0 Arduino, он определен в коде как:

// выход джойстика подключен к Arduino A0

#define джойстик A0

Когда джойстик отпущен, потенциометр находится в среднем положении, а его выходное напряжение составляет приблизительно 2.5V, чтение с Arduino должно дать цифровое значение около 511 (разрешение модуля АЦП Arduino UNO 10-битное).

В коде я сделал 3 интервала:
Первый интервал между 500 и 523: в этом интервале джойстик отпускается, а шаговый двигатель вообще не двигается (все выходы низкие).

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

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

Скорость двигателя всегда составляет от 5 до 500 об / мин. Перемещение джойстика на максимум (в обоих направлениях) заставляет двигатель двигаться с максимальной скоростью.

Остальной код описан в комментариях.

1

2

3

4

5

6

7

8

9

10

11

12

13

140008

160008

140008

160008

14000000000

18

19

20

21

22

23

24

25

26

27

28

9

30

000

30

000

30

000

30

000

30

000

30

000000 34

35

36

37

38

39

40

41

42

43

44

45

46

47

47

47

47

000000

51

52

53

54

55

56

57

58

59

60

61

62

63

9 0002 64

65

66

67

68

69

70

71

72

73

74

75

77

77

77

77

/ *

* Униполярный шаговый двигатель для управления скоростью и направлением с Arduino

* и джойстиком

* Это бесплатное программное обеспечение без ГАРАНТИИ.

* https://simple-circuit.com/

* /

// включить библиотеку шаговых двигателей Arduino

#include

// определить количество шагов на оборот

#define STEPS 32

// определить управляющие выводы шагового двигателя

#define IN1 11

# определить IN2 10

# определить IN3 9

# определить IN4 8

Шаговый степпер (STEPS, IN4, IN2, IN3, IN1);

// выход джойстика подключен к Arduino A0

#define джойстик A0

void setup ()

{

}

{0008/

/

/ прочитать аналоговое значение с потенциометра

int val = analogRead (джойстик);

// если джойстик посередине ===> остановить двигатель

if ((val> 500) && (val <523))

{

digitalWrite (IN1, LOW);

digitalWrite (IN2, LOW);

digitalWrite (IN3, LOW);

digitalWrite (IN4, LOW);

}

иначе

{

// двигать двигатель в первом направлении

, в то время как (val> = 523)

{

// отображать скорость между 5 и 500 об / мин

int speed_ = карта (val, 523, 1023, 5, 500);

// установить скорость двигателя

шаговый.SetSpeed ​​(speed_);

// переместить двигатель (1 шаг)

stepper.step (1);

val = analogRead (джойстик);

}

// двигать двигатель в другом направлении

, в то время как (val <= 500)

{

// отображать скорость между 5 и 500 об / мин

int speed_ = map (val, 500 , 0, 5, 500);

// установить скорость двигателя

шаговый.SetSpeed ​​(speed_);

// переместить двигатель (1 шаг)

stepper.step (-1);

val = analogRead (джойстик);

}

}

}

На следующем видео показана простая аппаратная схема проекта:

,

Смотрите также


avtovalik.ru © 2013-2020
Карта сайта, XML.