Tech Journal
In this article, we will interface a DC motor with an Arduino UNO using TinkerCAD software. Simulating a circuit before implementing the circuit manually helps to visualize the connections and it also provides the output under different conditions and constraints which would help to cross-check the output of the circuit implemented manually.
What is Tinkercad?
Tinkercad is a free, easy-to-use app for 3D design, electronics, and coding. It’s used by teachers, kids, hobbyists, and designers to imagine, design, and make anything! Since it became available in 2011 it has become a popular platform for creating models for 3D printing, electronics simulation, coding as well as an entry-level introduction to constructive solid geometry in the schools.
Why we are using it?
We are using Tinkercad for saving money, learning & microcontroller coding. In this project, we have used the circuits facility of Tinkercad for simulating our project DC Motor Speed Control Using Arduino.
The DC motor speed in general is directly proportional to the supply voltage, so if reduce the voltage from 9 volts to 4.5 volts then our speed becomes half of what it originally had. But in practice, for changing the speed of a dc motor we cannot go on changing the supply voltage all the time. The speed controller PWM for a DC motor works by varying the average voltage supplied to the motor.
A list of components required to implement the circuit both manually and using TinkerCAD are given below
Hardware Requirements:
- Arduino — We can use any Arduino development board for this project whether it is UNO, MEGA, NANO etc.
- Motor — We have to use a DC motor for this project to see clear variations.
- Breadboard & wires — Use any normal breadboard & Jumper wires, Male-to-Female & Male-to-Male.
- Resistor — We will use a 220-ohm resistor in this project.
- Diode — We are going to use a diode to prevent reverse current otherwise it will going to damage our circuit.
- Transistor — We want an NPN BC-547 transistor in this project
Software Requirements:
- Tinkercad: Click Me
- Arduino IDE: Click Me
Note: Arduino IDE is optional you can code in Tinkercad also.
Code Description:
Let us learn the code to control the speed of the DC motor.
The Motor pin is set as 3 since we have used the 3rd pin of the PWM signal as the input to the DC motor.
We initialize two integer type variables viz., flag and speed.
void setup is a function and in this, we initiated the serial communication at the baud rate of 9600. Now, the motor pin is defined as the output, and we print the statement Enter value from 50 to 225. If the PWM value is less than 50 then the motor will not rotate due to less current.
Here, we check if the data is available in the serial port or not. If it is available then the data will be parsed into the integer format and will be stored in the speed variable. The Flag variable will be set to zero.
Как использовать шаговый двигатель в тинкеркад
Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.
Принцип работы шагового двигателя
В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).
Фото. Устройство шагового мотора в разрезе
Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.
Драйвер шагового двигателя Ардуино
Шаговый двигатель — это бесколлекторный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока в которых происходит вращение вала, вал шаговых двигателей совершает дискретные перемещения, то есть вращается не постоянно, а шагами. Каждый шаг вала (ротора) представляет собой часть полного оборота.
Фото. Виды драйверов для управления шаговым двигателем
Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.
Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.
Как подключить шаговый двигатель к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- драйвер шагового двигателя ULN2003;
- шаговый двигатель 28BYJ-48;
- провода «папа-мама».
Схема подключения шагового двигателя к Arduino UNO
Arduino и шаговый мотор
Шаговый мотор, в отличие от обычного мотора постоянного вращения, вращается пошагово и позволяет точно установить свой вал на заданный угол. В отличие от сервопривода не имеет обратной связи по углу поворота (не знает, где сейчас находится вал), но зато может вращаться без ограничений. Шаговые моторы используются в ЧПУ станках и прочих устройствах с точным позиционированием частей механизма (2D/3D принтеры, манипуляторы, плоттеры…). В наборе GyverKIT идёт шаговый мотор 28BYJ-48 с драйвером ULN2003:
- Питание: 5V
- Шагов на оборот (сам мотор): 32
- Передаточное отношение редуктора: 1:63.68395
- Шагов на оборот (на выходном валу): 2038
- Максимальная скорость (шагов в секунду): 400
- Максимальная скорость (оборотов в минуту): 12
Фазы мотора выведены следующим образом:
Подключение
Мотор управляется через драйвер, который по сути усиливает сигнал с пинов микроконтроллера (подключать моторы напрямую к пинам нельзя!). Драйвер подключается к питанию 5V, а 4 управляющих входа – к любым цифровым пинам МК. Фаза мотора потребляет около 100 мА, поэтому возможно питание драйвера напрямую от платы Arduino.
Библиотеки
Для шаговых моторов существует несколько библиотек, самые известные из них:
- Stepper – стандартная (идёт в комплекте с Arduino IDE) библиотека с минимальными возможностями – позволяет вращать мотор с плавным ускорением и торможением – моя библиотека с большим количеством возможностей и эффективными алгоритмами движения, читайте на странице библиотеки. Также есть расширенная документация
В примерах на этом сайте мы будем использовать GyverStepper как самую удобную и функциональную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverStepper. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Воспользуемся версией библиотеки GyverStepper2 (входит в набор GyverStepper). Создаём объект GStepper2 , в угловых скобках указываем тип драйвера STEPPER4WIRE , так как используем 4х проводной драйвер. Далее в круглых скобках – количество шагов на один оборот и пины в порядке (фаза А1, фаза А2, фаза В1, фаза В2). Из второй картинки (с описанием проводов мотора) видно, что первая фаза это провода 2 и 4, а вторая – 3 и 1. Драйвер не меняет порядок проводов, поэтому в программе нам нужно будет указать пины в порядке (1, 3, 2, 4), т.е. центральные нужно поменять местами. На схеме я подключил драйвер к пинам D2, D3, D4, D5, и в программе укажу их как (2, 4, 3, 5). Если прописать по порядку пинов – мотор будет работать некорректно!
Данный пример просто крутит мотор на один пол оборота, затем возвращает обратно. Каждый раз ждём, когда мотор приедет на позицию.
Библиотека позволяет двигать мотор не блокируя выполнение кода, поэтому можно переписать следующим образом:
В этом примере также вывожу позицию мотора в порт, можно открыть плоттер и увидеть график:
Позиция здесь выводится в шагах, максимум как раз соответствует половине оборота
В библиотеке также есть поддержка движения с ускорением, добавим настройку setAcceleration()
Мотор перестанет дёргаться при смене направления движения, а график будет выглядеть вот так:
Сага о абсолютном энкодере и шаговом двигателе
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Давно я тут не писал постов про принтеры и электронику, но тут назрела тема использования абсолютного энкодера и попытке сделать вменяемое упралвение шаговым двигателем с рассчётом на точность позиционирования (не путать с повторяемостью).
-
AS5048A с разрешением 12bit (если пересчитать в угол по нехитрой формуле 360/2**12
0.028125 градуса), хотя это уже и экстремальный вариант.
- stm32 имеет прерывания на трех пинах которые подключены к Step/Dir/Enable на плате управления принтером
- при получении сигналов на Step/Dir/Enable производится stm32 делает шаг через tmc2130
- после завершения шага (если успевает) считывает положение двигателя через энкодер tle5012b (на валу двигателя помещён магнит)
- stm32 печатает в UART инфу о количестве шагов, микрошаге, количесве оборотов и текущем угле поворота двигателя (энкодер таки абсолютный и умеет считать обороты)
- Был выбран набор скоростей: 10, 25, 50, 75, 100, 125, 150, 200, 250 мм/с
- Для каждой скорости передвижение с X0 до X160 и обратно и ожидание в крайних положения по 2 секунды (это 4 оборота движка в одну строну и в другую) повторялось по 25 раз
- Данные с энкодера писались в лог (скриптик с сериал консоли всё писал в файлики)
- На низких скоростях (до 50 мм/с), у нас повторяемость очень неплохая, на уровне погрешности измерения энкодера
- На скорости 75мм/с (а это у нас
0.7 градусов (что примерно 7 шагов при дроблении 1/16, или если пересчитать в мм то это будет
0.1 мм в среднем)
То что мы видим при скорости 10мм/с (да довольно медленно)
- Шаги у нас не равномерны (что в целом понятно, исходя из физики двигателя)
- Какие то шаги у нас почти точно попадают в идеальные значения углов поворота (но не все. совсем не все. )
- Хотя точность позиционирования у нас не очень высокая, но повторяемость хорошая (синяя линия на картинке это статистика по 25 повторам
Теперь посмотрим что будет если шаговик пойдёт немного быстрее 25 мм/с
Картинка в целом не поменялась, но ошибка позиционирования возросла (разница между реальным и идеальным положением)
Теперь 50 мм/с
Видно что позиционирование стало ещё хуже.
Теперь 75 мм/с
Всё поплыло ещё дальше.
Ошибка осталась на прежнем уровне (tmc2130 перешел в другой режим работы)
- Что приятно средняя ошибка позиционирования примерно 0. Что означает что шаговик с одинаковой вероятность как проскакивает положение, так и недоходит до него (по этому среднее и есть 0).
- А вот медиана уже становится большой. На уровне 0.5-0.8 градуса.
- Разброс ошибок довольно большой, он растёт с примерно 0.2 градусов при 10мм/с до 4 градусов при 250мм/с, что соответсвует разбросу хода от 0.02 до 0.5 мм (хе хе.. кто там хвастался что печатает на скорости 200+мм/с. )
- Ещё замечу, что всё это измерялось на свободном шаговике без нагрузки. С нагрузкой будет все печальнее (и я это проверю в следующей части)
Что из всего этого следует?
Если хочется повышать качество печати, то надо слегка поменять подход к позиционирования шаговика в прошивках (позицоинирование у него не линейное, и это надо учитывать). По идее надо сделать умный closed-loop шаговик, которые будет в состоянии корректировать нелинейности при перемещении.
Продолжение следует.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Как использовать шаговый двигатель в тинкеркад
Описание
Четырех фазный шаговый двигатель (28BYJ-48) — это бесколлекторный двигатель, вращение вала осуществляется шагами (дискретное перемещение). На роторе (валу), расположен магнит, а вокруг него расположены катушки, если поочередно подавать ток на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, тем самым заставляя двигатель вращаться. Такая конструкция позволяет с большой точностью управлять валом, относительно катушек. Принципиальная схема четырехфазного шагового двигателя 28BYJ-48 приведена ниже.
в двигателе содержится две обмотки, которые в свою очередь разделены на четыре, из-за этого и название 4-х фазный. Центральные отводы катушек подключены вместе и служат для питания двигателя, так-как каждая обмотка подключена к питанию, такие двигатели называют униполярный. На валу 28BYJ-48 расположено 8 магнитов, с чередующими полюсами (то есть, четыре магнита с двумя полюсами). Внутри расположен редуктор, с примерным передаточным числом в 1:63,68395. Это означает, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).
Режим работы:
Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.
►Полношаговый режим — за 1 такт, ротор делает 1 шаг.
► Полушаговый режим — за 1 такт, ротор делает ½ шага.
Когда используется полношаговый метод управления, две из четырех обмоток запитываются на каждом шаге. Идущая вместе с Arduino IDE библиотека Stepper использует такой способ. В техническом руководстве к 28BYJ-48 сказано, что предпочтительным является использование метода полушага, при котором сначала запитывается только 1 обмотка, затем вместе первая и вторая обмотки, затем только вторая обмотка и так далее. С 4 обмотками это дает 8 различных сигналов, как показано в таблице ниже.
Модуль шагового двигателя ULN2003:
Цифровой вывод микроконтроллера может выдать ток
40 мА, а одна обмотка 28BYJ-48 в пике потребляем
320 мА, следовательно если подключить двигатель напрямую, микроконтроллер сгорит. Для защиты был разработан « Модуль шагового двигателя ULN2003″, в котором используется микросхема ULN2003A (по сути, состоящая из 7 ключей), позволяющая управлять нагрузкой до 500 мА (один ключ). Данный модуль может работать с 5В и 12В двигателем 28BYJ-48, для переключения необходимо установить или убрать перемычку (по умолчанию перемычка установлена, питание 5В).
Принципиальную схему модуля ULN2003 можно посмотреть на рисунке ниже
Назначение X1
► IN1 . . . IN7: Вход 1 … 7
Назначение X2
► 1 — GND: «-» питание модуля
► 2 — Vcc: «+» питание модуля (5В или 12В)
► 3 — Vcc: «+» питание модуля (перемычка, только при 5В)
► 4 — Vcc: «+» питание модуля (перемычка, только при 5В)
Назначение X3
► A: Выход 1
► B: Выход 2
► C: Выход 3
► D: Выход 4
► E: Выход 5
► F: Выход 6
► G: Выход 7
Назначение X3
► 1 — Питание
► 2 — A
► 3 — B
► 4 — C
► 5 — D
Внешний вид платы модуля
Помимо самой микросхемы ULN2003AN, на плате имеется пятиконтактный разъем для подключения к шаговику и четыре светодиода, показывающих, какая из обмоток запитана в текущий момент времени.
Также сбоку расположен джампер (два вывода под четырьмя резисторами), установка которого позволяет подавать питание на шаговый двигатель. Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А. Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.
Подключите выводы IN1, IN2, IN3 и IN4 к пинам 3, 4, 5 и 6 Arduino Uno. Положительный контакт источника питания необходимо подключить к выводу, помеченному как «+», а землю источника питания к выводу «-» на плате контроллера. Если для питания Arduino и мотора используются различные источники питания, то необходимо объединить выводы «земля» источников вместе.
Подключение:
В данном примере буду использовать модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V. Схема не сложная, необходимо всего шесть провода, сначала подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к VIN (не для постоянного использовании), подключаем разъем двигателя в модуль ULN2003.
Стандартная библиотека Stepper, идущая с Arduino IDE, поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Использовать ее можно только в очень простых приложениях, в которых используется только один мотор. Применение библиотеки Stepper для управления 28BYJ-48 является не самым эффективным решением.
Библиотека CustomStepper
Для вращения двигателя по часовой и против часовой стрелки, используем библиотеку ” CustomStepper“. Данная библиотека не входит в стандартную среду разработки Arduino IDE, так что скачиваем и добавляем ее.
#include <CustomStepper.h> // Подключаем библиотеку CustomStepper
CustomStepper stepper(8, 9, 10, 11); // Указываем пины, к которым подключен драйвер шагового двигателя
boolean rotate1 = false; // Переменная для смены режимов
boolean rotatedeg = false; // Переменная для смены режимов
boolean crotate = false; // Переменная для смены режимов
stepper.setRPM(12); // Устанавливаем количество оборотов в минуту
stepper.setSPR(4075.7728395); // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
if (stepper.isDone() && rotate1 == false)
stepper.setDirection(CCW); // Устанавливает направление вращения (по часовой)
stepper.rotate(2); // Устанавливает вращение на заданное количество оборотов
if (stepper.isDone() && rotate1 == true && rotatedeg == false)
stepper.setDirection(CW); // Устанавливает направление вращения (против часовой)
stepper.rotateDegrees(90); // Поворачивает вал на заданное кол-во градусов
if (stepper.isDone() && rotatedeg == true && crotate == false)
stepper.setDirection(CCW); // Устанавливает направление вращения (по часовой)
stepper.rotate(); // Будет вращать пока не получит команду о смене направления или STOP
stepper.run(); // Этот метод обязателен в блоке loop. Он инициирует работу двигателя, когда это необходимо
Скачать библиотеку можно здесь
Библиотека AccelStepper
Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.
- Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей
- Поддержка ускорения и замедления
- Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора
- Функции API не используют функцию delay и не прерывают работу
- Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967)
- Поддержка низких скоростей
- Расширяемый API
- Поддержка подклассов
Представленный ниже код медленно ускоряет мотор 28BYJ-28 в одном направлении, затем замедляется до остановки и вновь ускоряется, но уже вращаясь в противоположном направлении.
#define HALFSTEP 8
// Определение пинов для управления двигателем
#define motorPin1 3 // IN1 на 1-м драйвере ULN2003
#define motorPin2 4 // IN2 на 1-м драйвере ULN2003
#define motorPin3 5 // IN3 на 1-м драйвере ULN2003
#define motorPin4 6 // IN4 на 1-м драйвере ULN2003
// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
// Изменяем направление, если шаговик достигает заданного положения
Скачать библиотеку можно здесь
Переделка 28BYJ-48 из униполярного в биполярный
Интересное заключается в том, вместо 380 гр./см при униполярном подключении, можно получить крутящий момент 800 гр./см при биполярном включении.
У униполярного двигателя в один момент времени никогда не будут задействованы все четыре провода, только два из них. Но если был бы способ заставить ток течь по всем обмоткам, то это бы увеличило мощность мотора. В биполярных моделях имеются всего лишь две обмотки вместо четырех. И обе обмотки могут быть активны все время, но их полярность переключается за четыре шага. Это значит, что такие моторы содержат всего четыре провода вместо пяти, шести или восьми. Более подробно переделка описана в дополнительных материалах
Драйвер биполярного двигателя отличается от униполярного , теперь например, подойдет драйвер с микросхемой L293D или SN754410.
Как использовать шаговый двигатель в тинкеркад
Управление шаговым двигателем с помощью Arduino
В этом посте я постараюсь вкратце рассказать про шаговые электродвигатели, и как с ними можно работать с помощью нашего любимого ардуино.
Многие из вас знакомы с маленькими моторчиками, из которых исходят всего 2 провода, они часто встречаются в детских игрушках, например, в машинках.
Это коллекторные электродвигатели постоянного тока. Они могут напрямую подключатся к источнику питания и будут всегда вращаться с постоянной скоростью, в зависимости от подаваемого напряжения. Если необходимо изменить направление вращения, то на нашем моторе нужно просто поменять местами «+» и «-» и он сразу начнёт крутиться в другую сторону. За счёт их простой конструкции, они имеют небольшую стоимость и простоту в управлении.
Но есть ещё один из распространенных типов двигателей — это шаговые электродвигатели.
Вы могли их встречать, если разбирали CD-DVD привода, жёсткие диски, принтеры или другие электронные устройства, в механической части которых нужно чётко контролировать обороты, перемещения или другие необходимые кинематические движения.
Вот так выглядит шаговый электродвигатель с винтовым валом из оптического привода:
Как видно — здесь уже больше, чем 2 провода и напрямую подключить такой мотор к источнику питания просто так не получиться из-за совсем другой конструкции самого двигателя. Если для нашего первого моторчика достаточно было подать «+» и «-» на соответственные клемы и он начинал вращаться, то для шагового электродвигателя нужно подавать цифровые электронные сигналы управления, которые будут сообщать двигателю на сколько и в какую сторону ему необходимо вращаться. Это возможно осуществить с помощью устройства, которое будет генерировать и отправлять эти сигналы на драйвер, а он, в свою очередь, напрямую управлять обмотками двигателя.
Мы рассмотрим пример, как подключить шаговый электродвигатель к Arduino Mega 2560 — именно оно и будет тем устройством, которое генерирует нужные электронные сигналы управления.
Я взял мотор формата Nema 17 — это гибридный шаговый двигатель, который часто встречается в 3Д принтерах, ЧПУ системах, робототехнике и т.д.
Фото двигателя в разрезе:
Драйвер на микросхеме TB6600 — это довольно неплохой контроллер, который можно использовать с двигателями до 4.5 А, 50 В. Для домашних 3Д принтеров и ЧПУ систем его полностью достаточно.
Чтобы драйвер работал, необходим внешний источник питания с напряжением 8-50 В (рекомендуется 36 В). Именно с него наш двигатель будет получать энергию для своей работы. А логические сигналы Dir — направление вращения и Pulse — сигнал шага, драйвер будет получать от ардуино.
У данного двигателя 4 обмотки: A+, A-, B+, B-, их нужно соединить с соответствующими выходами на плате драйвера.
Для управления шаговым двигателем можно использовать различные библиотеки, которые упрощают жизнь, если необходимо как-то динамически управлять двигателем, например «AccelStepper» и тому подобные. Также есть различные программные комплексы для управления 3Д принтерами или ЧПУ станками.
Мы же рассмотрим простой пример вращения двигателя с постоянной скоростью, который не сложно будет повторить всем желающим. Также, так ещё удобно проверять общее состояние двигателя.
Здесь написан цикл, который беспрерывно будет отправлять логические сигналы к нашему драйверу, а он уже на двигатель.
Arduino и шаговый мотор
Шаговый мотор, в отличие от обычного мотора постоянного вращения, вращается пошагово и позволяет точно установить свой вал на заданный угол. В отличие от сервопривода не имеет обратной связи по углу поворота (не знает, где сейчас находится вал), но зато может вращаться без ограничений. Шаговые моторы используются в ЧПУ станках и прочих устройствах с точным позиционированием частей механизма (2D/3D принтеры, манипуляторы, плоттеры…). В наборе GyverKIT идёт шаговый мотор 28BYJ-48 с драйвером ULN2003:
- Питание: 5V
- Шагов на оборот (сам мотор): 32
- Передаточное отношение редуктора: 1:63.68395
- Шагов на оборот (на выходном валу): 2038
- Максимальная скорость (шагов в секунду): 400
- Максимальная скорость (оборотов в минуту): 12
Фазы мотора выведены следующим образом:
Подключение
Мотор управляется через драйвер, который по сути усиливает сигнал с пинов микроконтроллера (подключать моторы напрямую к пинам нельзя!). Драйвер подключается к питанию 5V, а 4 управляющих входа – к любым цифровым пинам МК. Фаза мотора потребляет около 100 мА, поэтому возможно питание драйвера напрямую от платы Arduino.
Библиотеки
Для шаговых моторов существует несколько библиотек, самые известные из них:
- Stepper – стандартная (идёт в комплекте с Arduino IDE) библиотека с минимальными возможностями – позволяет вращать мотор с плавным ускорением и торможением – моя библиотека с большим количеством возможностей и эффективными алгоритмами движения, читайте на странице библиотеки. Также есть расширенная документация
В примерах на этом сайте мы будем использовать GyverStepper как самую удобную и функциональную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverStepper. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Воспользуемся версией библиотеки GyverStepper2 (входит в набор GyverStepper). Создаём объект GStepper2 , в угловых скобках указываем тип драйвера STEPPER4WIRE , так как используем 4х проводной драйвер. Далее в круглых скобках – количество шагов на один оборот и пины в порядке (фаза А1, фаза А2, фаза В1, фаза В2). Из второй картинки (с описанием проводов мотора) видно, что первая фаза это провода 2 и 4, а вторая – 3 и 1. Драйвер не меняет порядок проводов, поэтому в программе нам нужно будет указать пины в порядке (1, 3, 2, 4), т.е. центральные нужно поменять местами. На схеме я подключил драйвер к пинам D2, D3, D4, D5, и в программе укажу их как (2, 4, 3, 5). Если прописать по порядку пинов – мотор будет работать некорректно!
Данный пример просто крутит мотор на один пол оборота, затем возвращает обратно. Каждый раз ждём, когда мотор приедет на позицию.
Библиотека позволяет двигать мотор не блокируя выполнение кода, поэтому можно переписать следующим образом:
В этом примере также вывожу позицию мотора в порт, можно открыть плоттер и увидеть график:
Позиция здесь выводится в шагах, максимум как раз соответствует половине оборота
В библиотеке также есть поддержка движения с ускорением, добавим настройку setAcceleration()
Мотор перестанет дёргаться при смене направления движения, а график будет выглядеть вот так:
Подключение шагового двигателя к Ардуино
Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.
Принцип работы шагового двигателя
В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).
Фото. Устройство шагового мотора в разрезе
Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.
Драйвер шагового двигателя Ардуино
Шаговый двигатель — это бесколлекторный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока в которых происходит вращение вала, вал шаговых двигателей совершает дискретные перемещения, то есть вращается не постоянно, а шагами. Каждый шаг вала (ротора) представляет собой часть полного оборота.
Фото. Виды драйверов для управления шаговым двигателем
Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.
Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.
Как подключить шаговый двигатель к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- драйвер шагового двигателя ULN2003;
- шаговый двигатель 28BYJ-48;
- провода «папа-мама».
Схема подключения шагового двигателя к Arduino UNO
Управление шаговым двигателем с помощью Arduino и драйвера A4988
Если вы планируете создать свой собственный 3D-принтер или станок с ЧПУ, вам нужно будет управлять несколькими шаговыми двигателями. Если использовать для этого только Arduino, то большая часть скетча будет занята кодом управления шаговыми двигателями и не останется много места для чего-то еще.
Данную проблему можно решить, использовав специальный автономный драйвер шагового двигателя — A4988.
Модуль A4988 может контролировать как скорость, так и направление вращения биполярного шагового двигателя, такого как NEMA 17, использую всего два вывода контроллера.
Вы знаете, как работают шаговые двигатели?
Шаговые двигатели используют зубчатое колесо и электромагниты (катушки), позволяющие вращать ось по одному шагу за раз.
Драйвер двигателя посылает высокий импульс на соответствующую катушку, которая в свою очередь притягивает ближайший зуб зубчатого колеса, в результате чего ось двигателя проворачивается на определенный градус (шаг).
- Последовательность импульсов определяет направление вращения двигателя.
- Частота импульсов определяет скорость двигателя.
- Количество импульсов определяет угол поворота.
Микросхема драйвера шагового двигателя A4988
Модуль собран на чипе A4988. Не смотря на свой малый размер (всего 0,8 ″ × 0,6 ″), но обладает хорошими характеристиками.
Драйвер шагового двигателя A4988 имеет высокую выходную мощность (до 35 В и 2 А) и позволяет управлять одним биполярным шаговым двигателем с выходным током до 2 А на катушку, например NEMA 17.
Для удобства работы драйвер имеет встроенный транслятор. Использование транслятора позволило уменьшить количество управляющих контактов до 2, один для управления шагами, а другой для управления направлением вращения.
Драйвер предлагает 5 различных разрешений шага, а именно:
- полный шаг
- 1/2 шага
- 1/4 шага
- 1/8 шага
- 1/16 шага
Распиновка драйвера A4988
Драйвер A4988 имеет всего 16 контактов, которые связывают его с внешним миром. Распиновка у A4988 следующая:
Давайте ознакомимся со всеми контактами по очереди.
Выводы питания
На самом деле A4988 требует подключения двух источников питания.
VDD и GND используется для управления внутренней логической схемой. Напряжение питания должно находиться в пределах от 3 до 5,5 В.
Vmot и GND для обеспечения питания шагового двигателя. Тут напряжение в пределах от 8 до 35 В.
Согласно datasheet, для питания двигателя требуется соответствующий разделительный конденсатор рядом с платой, способный выдерживать ток 4 А.
Предупреждение:
Этот драйвер имеет на плате керамические конденсаторы с низким ESR , что делает его уязвимым для скачков напряжения. В некоторых случаях эти выбросы могут превышать 35 В (максимальное номинальное напряжение A4988), и это может потенциально необратимо повредить плату и даже двигатель.
Один из способов защитить драйвер от таких скачков — подключить электролитический конденсатор емкостью 100 мкФ (или как минимум 47 мкФ) к контактам источника питания двигателя.
Выводы выбора микрошага
Драйвер A4988 допускает использование режима микрошага. Это достигается за счет подачи питания на катушки с промежуточными уровнями тока.
Например, если вы решите управлять шаговым двигателем NEMA 17 с шагом 1,8 градуса (200 шагов на оборот) в режиме 1/4 шага, то двигатель будет выдавать 800 микрошагов на оборот.
Драйвер A4988 имеет три вывода селектора размера шага (разрешения), а именно: MS1, MS2 и MS3. Установив соответствующие логические уровни на эти контакты, мы можем настроить двигатели на одно из пяти ступенчатых разрешений.
По умолчанию эти три контакта подтянуты к земле внутренним резисторам. Если мы оставим эти выводы не подключенными, то двигатель будет работать в режиме полного шага.
Выводы управления
Драйвер A4988 имеет два управляющих входа, а именно: STEP и DIR.
STEP — управляет микрошагом мотора. Каждый высокий импульс, отправляемый на этот вывод, приводит двигатель в действие на количество микрошагов, заданное выводами Microstep Selection (MS1, MS2 и MS3). Чем быстрее импульсы, тем быстрее будет вращаться двигатель.
DIR — управляет направлением вращения двигателя. Если на него подать высокий уровень, то двигатель будет вращается по часовой стрелке, а если низкий — против часовой стрелки.
Если вы просто хотите, чтобы двигатель вращался только в одном направлении, то вы можете соединить вывод DIR непосредственно с VCC или GND соответственно.
Выводы STEP и DIR не подтянуты внутренними резисторами, поэтому вы не должны оставлять их не подключенными.
Выводы управления питанием A4988
A4988 имеет три различных вывода для управления состоянием питания, а именно. EN, RST и SLP.
EN — вывод включения (0)/ выключения (1) драйвера A4988. По умолчанию на этом выводе установлен низкий уровень, поэтому драйвер всегда включен.
SLP — подача на данный вывод сигнала низкого уровня переводит драйвер в спящий режим, сводя к минимуму потребление энергии. Вы можете использовать это для экономии энергии.
RST — при подаче сигнала низкого уровня все входные данные STEP игнорируются, до тех пор пока не будет установлен высокий уровень. Низкий уровень также сбрасывает драйвер, устанавливая внутренний транслятор в предопределенное состояние Home. Исходное состояние — это в основном начальное положение, с которого запускается двигатель, и оно различается в зависимости от разрешения микрошага.
Если вам не нужно использовать вывод RST, вы можете подключить его к соседнему контакту SLP / SLEEP, чтобы вывести его на высокий уровень и включить драйвер.
Выводы для подключения шагового двигателя
Выходные контакты: 1B, 1A, 2A и 2B.
К этим выводам можно подключить любой биполярный шаговый двигатель с напряжением питания от 8 до 35 В.
Каждый выходной контакт модуля может обеспечить ток до 2 А. Однако величина тока, подаваемого на двигатель, зависит от источника питания системы, системы охлаждения и настройки ограничения тока.
Система охлаждения — радиатор
Чрезмерное рассеивание мощности микросхемы драйвера A4988 приводит к повышению температуры, которая может выйти за пределы возможностей микросхемы, что, вероятно, приведет к ее повреждению.
Даже если микросхема драйвера A4988 имеет максимальный номинальный ток 2 А на катушку, микросхема может подавать только около 1 А на катушку без перегрева.
Для достижения более 1 А на катушку требуется радиатор или другой метод охлаждения.
Драйвер A4988 обычно поставляется с радиатором. Желательно установить его перед использованием драйвера.
Настройка тока A4988
Перед использованием драйвера нам нужно сделать небольшую настройку. Нам нужно ограничить максимальный ток, протекающий через катушки шагового двигателя, и предотвратить превышение номинального тока двигателя.
На драйвере A4988 есть небольшой потенциометр, который можно использовать для установки ограничения тока. Вы должны установить ограничение по току равным или ниже номинального тока двигателя.
Для настройки тока шагового двигателя есть два метода:
Способ 1:
В данном случае мы собираемся установить ограничение тока путем измерения напряжения (Vref) на выводе «ref».
- Взгляните на техническое описание вашего шагового двигателя. Запишите его номинальный ток. В нашем случае мы используем NEMA 17 200 шагов/об, 12 В 350 мА.
- Переведите драйвер в полношаговый режим, оставив три контакта выбора микрошага отключенными.
- Удерживайте двигатель в фиксированном положении, не синхронизируя вход STEP.
- Во время регулировки измерьте напряжение Vref (один щуп мультиметра на минус питания, а другой к металлическому корпусу потенциометра).
- Отрегулируйте напряжение Vref по формуле:
ограничение тока = Vref x 2,5
Например, если ваш двигатель рассчитан на 350mA, вы должны установить опорное напряжение 0,14В.
Способ 2:
В данном случае мы собираемся установить ограничение тока, измеряя ток, протекающий через катушку двигателя.
- Взгляните на техническое описание вашего шагового двигателя. Запишите его номинальный ток. В нашем случае мы используем NEMA 17 200 шагов / оборот, 12 В 350 мА.
- Переведите драйвер в полношаговый режим, оставив три контакта выбора микрошага отключенными.
- Удерживайте двигатель в фиксированном положении, не синхронизируя вход STEP. Не оставляйте вход STEP висящим в воздухе, подключите его к источнику питания логики (5 В)
- Подключите амперметр последовательно с одной из катушек шагового двигателя и измерьте фактический ток.
- Возьмите небольшую отвертку и отрегулируйте потенциометр ограничения тока, пока не установите номинальный ток шагового двигателя.
Подключение драйвера шагового двигателя A4988 к Arduino UNO
Теперь, когда мы имеем всю необходимую информацию о драйвере A4988, мы можем перейти к подключению его к нашей Arduino Uno.
Подключения довольно простое. Начните с подключения VDD и GND (рядом с VDD) к контактам 5V и минус на Arduino. Входные контакты DIR и STEP подключите к цифровым контактам №2 и №3 на Arduino соответственно. Шаговый двигатель подключите к контактам 2B, 2A, 1A и 1B.
Предупреждение:
Подключение или отключение шагового двигателя при включенном драйвере может привести к его повреждению.
Затем подключите вывод RST к соседнему выводу SLP/SLEEP, чтобы драйвер оставался включенным. Также держите контакты выбора микрошага отключенными, чтобы двигатель работал в полношаговом режиме.
Наконец, подключите источник питания двигателя к контактам VMOT и GND. Не забудьте установить большой развязывающий электролитический конденсатор 100 мкФ на контакты источника питания двигателя, рядом с платой.
Код Arduino — простой пример
Следующий скетч даст вам полное представление о том, как управлять скоростью и направлением вращения биполярного шагового двигателя с помощью драйвера шагового двигателя A4988, и может служить основой для более практических экспериментов и проектов.
Пояснение к скетчу:
Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR A4988. Мы также определяем stepsPerRevolution. Установите его в соответствии со спецификациями шагового двигателя.
В разделе setup() кода все контакты управления двигателем объявлены как цифровой выход.
В цикле loop() мы медленно вращаем двигатель по часовой стрелке, а затем быстро вращаем его против часовой стрелки с интервалом в секунду.
Управление направлением вращения: для управления направлением вращения двигателя мы устанавливаем вывод DIR в высокое или низкое положение. Сигнал высокого уровня вращает двигатель по часовой стрелке, а низкого — против часовой стрелки.
Скорость двигателя определяется частотой импульсов, которые мы посылаем на вывод STEP. Чем чаще импульсы, тем быстрее вращается двигатель. Импульсы — это не что иное, как установка высокого уровня, некоторое ожидание, затем установка низкого уровня и снова ожидание. Изменяя задержку между двумя импульсами, вы изменяете частоту этих импульсов и, следовательно, скорость двигателя.
Скетч Arduino — использование библиотеки AccelStepper
Управление шаговым двигателем без библиотеки идеально подходит для простых приложений с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, то вам понадобится библиотека.
Итак, для нашего следующего эксперимента мы будем использовать расширенную библиотеку шаговых двигателей под названием AccelStepper library. Она поддерживает:
- Ускорение и замедление.
- Одновременное управление несколькими шаговыми двигателями с независимым шагом для каждого двигателя.
Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.
Установка библиотеки
Чтобы установить библиотеку, перейдите в Эскиз> Include Library> Manage Libraries… Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.
Отфильтруйте результаты поиска, набрав «Accelstepper». Щелкните первую запись и выберите «Установить».
Скетч Arduino
Вот простой код, который ускоряет шаговый двигатель в одном направлении, а затем замедляется, чтобы остановиться. Как только двигатель совершает один оборот, он меняет направление вращения. И он повторяет это снова и снова.
Пояснение к скетчу:
Мы начинаем с подключения недавно установленной библиотеки AccelStepper.
Определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Устанавливаем motorInterfaceType значение 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).
Затем мы создаем экземпляр библиотеки с именем myStepper.
В функции setup() мы сначала устанавливаем максимальную скорость двигателя 1000. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя.
Затем мы устанавливаем обычную скорость 200 и количество шагов, например, 200 (поскольку NEMA 17 совершает 200 шагов за оборот).
В функции loop() мы используем оператор If, чтобы проверить, как далеко двигателю нужно проехать (путем чтения distanceToGo), пока он не достигнет целевой позиции ( moveTo). Как только distanceToGo станет равен нулю мы переключаем двигатель в противоположное направление, изменив moveTo на противоположное значение относительно его текущего положения.
Теперь в конце цикла мы вызываем функцию run(). Это самая важная функция, поскольку шаговый двигатель не будет работать, пока эта функция не будет выполнена.
Основные Навыки Работы В Tinkercad
Получите основные навыки работы с Tinkercad и примените их на практике в интересных проектах!
Использование Перемещений
Элементы Управления Камерой
Создание Отверстий
Масштабирование, Копирование И Вставка
Кольцо Для Ключей С Буквами!
Создай Свою Игральную Кость!
Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.
Основные Навыки Работы В Tinkercad
Получите основные навыки работы с Tinkercad и примените их на практике в интересных проектах!
// Определение пинов для управления двигателем
Элементы Управления Камерой
Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno Nano, а также разберем скетч для управления шаговым мотором.
Любые данныеЛюбые данные Любые данные Любые данные
Любые данные
Любые данные
Онлайн-сервис TinkerCAD
TinkerCAD является Бесплатным online-сервисом моделирования, поэтому скачивать и устанавливать его не требуется. В первую очередь необходимо перейти на официальный сайт Autodesk Tinkercad:
Нажмите кнопку «Зарегистрироваться». Укажите страну проживания и дату рождения.
Затем введите Ваш email и придумайте сложный пароль
Как пользоваться?
После регистрации получаем личный кабинет, для начала работы с Arduino выберите пункт «Circuits» и нажмите кнопку «Создать цепь»:
Перетаскивая необходимые компоненты на рабочую область, соберите какую-нибудь схему:
Во вкладке «Код» наберите скетч программы:
Нажмите кнопку «Начать моделирование». Светодиод начнет мигать так же, как если бы мы использовали реальные компоненты.
Сервис предлагает достаточное количество интересных бесплатных инструментов. Когда под рукой нет необходимых компонентов, но хочется что-нибудь собрать хотя бы виртуально, то TinkerCAD — идеальное решение!
#include // Подключаем библиотеку CustomStepper
Как пользоваться?
После регистрации получаем личный кабинет, для начала работы с Arduino выберите пункт «Circuits» и нажмите кнопку «Создать цепь»:
Перетаскивая необходимые компоненты на рабочую область, соберите какую-нибудь схему:
Во вкладке «Код» наберите скетч программы:
Нажмите кнопку «Начать моделирование». Светодиод начнет мигать так же, как если бы мы использовали реальные компоненты.
Сервис предлагает достаточное количество интересных бесплатных инструментов. Когда под рукой нет необходимых компонентов, но хочется что-нибудь собрать хотя бы виртуально, то TinkerCAD — идеальное решение!
Для вращения двигателя по часовой и против часовой стрелки, используем библиотеку « CustomStepper«. Данная библиотека не входит в стандартную среду разработки Arduino IDE, так что скачиваем и добавляем ее.
320 мА, следовательно если подключить двигатель напрямую, микроконтроллер сгорит.
Ampermarket. kz
Любые данныеЛюбые данныеЛюбые данныеЛюбые данные Любые данные
Любые данные
Любые данные
Как использовать шаговый двигатель в тинкеркад
Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки Stepper. h или Accelstepper. h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.
Принцип работы шагового двигателя
В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).
Фото. Устройство шагового мотора в разрезе
Подсчитав количество сделанных шагов, можно определить точный угол поворота ротора. Таким образом, шаговый двигатель является сегодня идеальным приводом в 3D принтерах, станках с ЧПУ и в другом промышленном оборудовании. Это лишь краткий обзор устройства и принципа работы stepper motor, нас больше интересует, как осуществляется управление шаговым двигателем с помощью Ардуино.
Драйвер шагового двигателя Ардуино
Шаговый двигатель — это бесколлекторный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока в которых происходит вращение вала, вал шаговых двигателей совершает дискретные перемещения, то есть вращается не постоянно, а шагами. Каждый шаг вала (ротора) представляет собой часть полного оборота.
Фото. Виды драйверов для управления шаговым двигателем
Вращение вала двигателя осуществляется с помощью сигнала, который управляет магнитным полем катушек в статоре драйвера. Сигнал генерирует драйвер шагового двигателя. Магнитное поле, возникающее при прохождении электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задаются в программе с помощью библиотеки Arduino IDE.
Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.
Как подключить шаговый двигатель к Ардуино
Для этого занятия потребуется:
-
Arduino Uno / Arduino Nano / Arduino Mega; драйвер шагового двигателя ULN2003; шаговый двигатель 28BYJ-48; провода «папа-мама».
Схема подключения шагового двигателя к Arduino UNO
Arduino и шаговый мотор
Шаговый мотор, в отличие от обычного мотора постоянного вращения, вращается пошагово и позволяет точно установить свой вал на заданный угол. В отличие от сервопривода не имеет обратной связи по углу поворота (не знает, где сейчас находится вал), но зато может вращаться без ограничений. Шаговые моторы используются в ЧПУ станках и прочих устройствах с точным позиционированием частей механизма (2D/3D принтеры, манипуляторы, плоттеры…). В наборе GyverKIT идёт шаговый мотор 28BYJ-48 с драйвером ULN2003:
-
Питание: 5V Шагов на оборот (сам мотор): 32 Передаточное отношение редуктора: 1:63.68395 Шагов на оборот (на выходном валу): 2038 Максимальная скорость (шагов в секунду): 400 Максимальная скорость (оборотов в минуту): 12
Фазы мотора выведены следующим образом:
Подключение
Мотор управляется через драйвер, который по сути усиливает сигнал с пинов микроконтроллера (подключать моторы напрямую к пинам нельзя!). Драйвер подключается к питанию 5V, а 4 управляющих входа – к любым цифровым пинам МК. Фаза мотора потребляет около 100 мА, поэтому возможно питание драйвера напрямую от платы Arduino.
Библиотеки
Для шаговых моторов существует несколько библиотек, самые известные из них:
-
Stepper – стандартная (идёт в комплекте с Arduino IDE) библиотека с минимальными возможностями – позволяет вращать мотор с плавным ускорением и торможением – моя библиотека с большим количеством возможностей и эффективными алгоритмами движения, читайте на странице библиотеки. Также есть расширенная документация
В примерах на этом сайте мы будем использовать GyverStepper как самую удобную и функциональную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverStepper. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Воспользуемся версией библиотеки GyverStepper2 (входит в набор GyverStepper). Создаём объект GStepper2 , в угловых скобках указываем тип драйвера STEPPER4WIRE, так как используем 4х проводной драйвер. Далее в круглых скобках – количество шагов на один оборот и пины в порядке (фаза А1, фаза А2, фаза В1, фаза В2). Из второй картинки (с описанием проводов мотора) видно, что первая фаза это провода 2 и 4, а вторая – 3 и 1. Драйвер не меняет порядок проводов, поэтому в программе нам нужно будет указать пины в порядке (1, 3, 2, 4), т. е. центральные нужно поменять местами. На схеме я подключил драйвер к пинам D2, D3, D4, D5, и в программе укажу их как (2, 4, 3, 5). Если прописать по порядку пинов – мотор будет работать некорректно!
Данный пример просто крутит мотор на один пол оборота, затем возвращает обратно. Каждый раз ждём, когда мотор приедет на позицию.
Библиотека позволяет двигать мотор не блокируя выполнение кода, поэтому можно переписать следующим образом:
В этом примере также вывожу позицию мотора в порт, можно открыть плоттер и увидеть график:
Позиция здесь выводится в шагах, максимум как раз соответствует половине оборота
В библиотеке также есть поддержка движения с ускорением, добавим настройку setAcceleration()
Мотор перестанет дёргаться при смене направления движения, а график будет выглядеть вот так:
Сага о абсолютном энкодере и шаговом двигателе
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Давно я тут не писал постов про принтеры и электронику, но тут назрела тема использования абсолютного энкодера и попытке сделать вменяемое упралвение шаговым двигателем с рассчётом на точность позиционирования (не путать с повторяемостью).
-
AS5048A с разрешением 12bit (если пересчитать в угол по нехитрой формуле 360/2**12
0.028125 градуса), хотя это уже и экстремальный вариант.
-
stm32 имеет прерывания на трех пинах которые подключены к Step/Dir/Enable на плате управления принтером при получении сигналов на Step/Dir/Enable производится stm32 делает шаг через tmc2130 после завершения шага (если успевает) считывает положение двигателя через энкодер tle5012b (на валу двигателя помещён магнит) stm32 печатает в UART инфу о количестве шагов, микрошаге, количесве оборотов и текущем угле поворота двигателя (энкодер таки абсолютный и умеет считать обороты)
-
Был выбран набор скоростей: 10, 25, 50, 75, 100, 125, 150, 200, 250 мм/с Для каждой скорости передвижение с X0 до X160 и обратно и ожидание в крайних положения по 2 секунды (это 4 оборота движка в одну строну и в другую) повторялось по 25 раз Данные с энкодера писались в лог (скриптик с сериал консоли всё писал в файлики)
-
На низких скоростях (до 50 мм/с), у нас повторяемость очень неплохая, на уровне погрешности измерения энкодера На скорости 75мм/с (а это у нас
0.7 градусов (что примерно 7 шагов при дроблении 1/16, или если пересчитать в мм то это будет
0.1 мм в среднем)
То что мы видим при скорости 10мм/с (да довольно медленно)
-
Шаги у нас не равномерны (что в целом понятно, исходя из физики двигателя) Какие то шаги у нас почти точно попадают в идеальные значения углов поворота (но не все. совсем не все. ) Хотя точность позиционирования у нас не очень высокая, но повторяемость хорошая (синяя линия на картинке это статистика по 25 повторам
Теперь посмотрим что будет если шаговик пойдёт немного быстрее 25 мм/с
Картинка в целом не поменялась, но ошибка позиционирования возросла (разница между реальным и идеальным положением)
Теперь 50 мм/с
Видно что позиционирование стало ещё хуже.
Теперь 75 мм/с
Всё поплыло ещё дальше.
Ошибка осталась на прежнем уровне (tmc2130 перешел в другой режим работы)
-
Что приятно средняя ошибка позиционирования примерно 0. Что означает что шаговик с одинаковой вероятность как проскакивает положение, так и недоходит до него (по этому среднее и есть 0). А вот медиана уже становится большой. На уровне 0.5-0.8 градуса. Разброс ошибок довольно большой, он растёт с примерно 0.2 градусов при 10мм/с до 4 градусов при 250мм/с, что соответсвует разбросу хода от 0.02 до 0.5 мм (хе хе.. кто там хвастался что печатает на скорости 200+мм/с. ) Ещё замечу, что всё это измерялось на свободном шаговике без нагрузки. С нагрузкой будет все печальнее (и я это проверю в следующей части)
Что из всего этого следует?
Если хочется повышать качество печати, то надо слегка поменять подход к позиционирования шаговика в прошивках (позицоинирование у него не линейное, и это надо учитывать). По идее надо сделать умный closed-loop шаговик, которые будет в состоянии корректировать нелинейности при перемещении.
Продолжение следует.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Как использовать шаговый двигатель в тинкеркад
Описание
Четырех фазный шаговый двигатель (28BYJ-48) — это бесколлекторный двигатель, вращение вала осуществляется шагами (дискретное перемещение). На роторе (валу), расположен магнит, а вокруг него расположены катушки, если поочередно подавать ток на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, тем самым заставляя двигатель вращаться. Такая конструкция позволяет с большой точностью управлять валом, относительно катушек. Принципиальная схема четырехфазного шагового двигателя 28BYJ-48 приведена ниже.
В двигателе содержится две обмотки, которые в свою очередь разделены на четыре, из-за этого и название 4-х фазный. Центральные отводы катушек подключены вместе и служат для питания двигателя, так-как каждая обмотка подключена к питанию, такие двигатели называют униполярный. На валу 28BYJ-48 расположено 8 магнитов, с чередующими полюсами (то есть, четыре магнита с двумя полюсами). Внутри расположен редуктор, с примерным передаточным числом в 1:63,68395. Это означает, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).
Режим работы:
Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.
►Полношаговый режим — за 1 такт, ротор делает 1 шаг.
► Полушаговый режим — за 1 такт, ротор делает ½ шага.
Когда используется полношаговый метод управления, две из четырех обмоток запитываются на каждом шаге. Идущая вместе с Arduino IDE библиотека Stepper использует такой способ. В техническом руководстве к 28BYJ-48 сказано, что предпочтительным является использование метода полушага, при котором сначала запитывается только 1 обмотка, затем вместе первая и вторая обмотки, затем только вторая обмотка и так далее. С 4 обмотками это дает 8 различных сигналов, как показано в таблице ниже.
Модуль шагового двигателя ULN2003:
Цифровой вывод микроконтроллера может выдать ток
40 мА, а одна обмотка 28BYJ-48 в пике потребляем
320 мА, следовательно если подключить двигатель напрямую, микроконтроллер сгорит. Для защиты был разработан « Модуль шагового двигателя ULN2003″, в котором используется микросхема ULN2003A (по сути, состоящая из 7 ключей), позволяющая управлять нагрузкой до 500 мА (один ключ). Данный модуль может работать с 5В и 12В двигателем 28BYJ-48, для переключения необходимо установить или убрать перемычку (по умолчанию перемычка установлена, питание 5В).
Принципиальную схему модуля ULN2003 можно посмотреть на рисунке ниже
Назначение X1
► IN1 . . . IN7: Вход 1 … 7
Назначение X2
► 1 — GND: «-» питание модуля
► 2 — Vcc: «+» питание модуля (5В или 12В)
► 3 — Vcc: «+» питание модуля (перемычка, только при 5В)
► 4 — Vcc: «+» питание модуля (перемычка, только при 5В)
Назначение X3
► A: Выход 1
► B: Выход 2
► C: Выход 3
► D: Выход 4
► E: Выход 5
► F: Выход 6
► G: Выход 7
Назначение X3
► 1 — Питание
► 2 — A
► 3 — B
► 4 — C
► 5 — D
Внешний вид платы модуля
Помимо самой микросхемы ULN2003AN, на плате имеется пятиконтактный разъем для подключения к шаговику и четыре светодиода, показывающих, какая из обмоток запитана в текущий момент времени.
Также сбоку расположен джампер (два вывода под четырьмя резисторами), установка которого позволяет подавать питание на шаговый двигатель. Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А. Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.
Подключите выводы IN1, IN2, IN3 и IN4 к пинам 3, 4, 5 и 6 Arduino Uno. Положительный контакт источника питания необходимо подключить к выводу, помеченному как «+», а землю источника питания к выводу «-» на плате контроллера. Если для питания Arduino и мотора используются различные источники питания, то необходимо объединить выводы «земля» источников вместе.
Подключение:
В данном примере буду использовать модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V. Схема не сложная, необходимо всего шесть провода, сначала подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к VIN (не для постоянного использовании), подключаем разъем двигателя в модуль ULN2003.
Стандартная библиотека Stepper, идущая с Arduino IDE, поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Использовать ее можно только в очень простых приложениях, в которых используется только один мотор. Применение библиотеки Stepper для управления 28BYJ-48 является не самым эффективным решением.
Библиотека CustomStepper
Для вращения двигателя по часовой и против часовой стрелки, используем библиотеку « CustomStepper«. Данная библиотека не входит в стандартную среду разработки Arduino IDE, так что скачиваем и добавляем ее.
#include // Подключаем библиотеку CustomStepper
CustomStepper stepper(8, 9, 10, 11); // Указываем пины, к которым подключен драйвер шагового двигателя
Boolean rotate1 = false; // Переменная для смены режимов
Boolean rotatedeg = false; // Переменная для смены режимов
Boolean crotate = false; // Переменная для смены режимов
Stepper. setRPM(12); // Устанавливаем количество оборотов в минуту
Stepper. setSPR(4075.7728395); // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
If (stepper. isDone() && rotate1 == false)
Stepper. setDirection(CCW); // Устанавливает направление вращения (по часовой)
Stepper. rotate(2); // Устанавливает вращение на заданное количество оборотов
If (stepper. isDone() && rotate1 == true && rotatedeg == false)
Stepper. setDirection(CW); // Устанавливает направление вращения (против часовой)
Stepper. rotateDegrees(90); // Поворачивает вал на заданное кол-во градусов
If (stepper. isDone() && rotatedeg == true && crotate == false)
Stepper. setDirection(CCW); // Устанавливает направление вращения (по часовой)
Stepper. rotate(); // Будет вращать пока не получит команду о смене направления или STOP
Stepper. run(); // Этот метод обязателен в блоке loop. Он инициирует работу двигателя, когда это необходимо
Скачать библиотеку можно здесь
Библиотека AccelStepper
Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.
-
Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей Поддержка ускорения и замедления Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора Функции API не используют функцию delay и не прерывают работу Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967) Поддержка низких скоростей Расширяемый API Поддержка подклассов
Представленный ниже код медленно ускоряет мотор 28BYJ-28 в одном направлении, затем замедляется до остановки и вновь ускоряется, но уже вращаясь в противоположном направлении.
#define HALFSTEP 8
// Определение пинов для управления двигателем
#define motorPin1 3 // IN1 на 1-м драйвере ULN2003
#define motorPin2 4 // IN2 на 1-м драйвере ULN2003
#define motorPin3 5 // IN3 на 1-м драйвере ULN2003
#define motorPin4 6 // IN4 на 1-м драйвере ULN2003
// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
// Изменяем направление, если шаговик достигает заданного положения
Скачать библиотеку можно здесь
Переделка 28BYJ-48 из униполярного в биполярный
Интересное заключается в том, вместо 380 гр./см при униполярном подключении, можно получить крутящий момент 800 гр./см при биполярном включении.
У униполярного двигателя в один момент времени никогда не будут задействованы все четыре провода, только два из них. Но если был бы способ заставить ток течь по всем обмоткам, то это бы увеличило мощность мотора. В биполярных моделях имеются всего лишь две обмотки вместо четырех. И обе обмотки могут быть активны все время, но их полярность переключается за четыре шага. Это значит, что такие моторы содержат всего четыре провода вместо пяти, шести или восьми. Более подробно переделка описана в дополнительных материалах
Драйвер биполярного двигателя отличается от униполярного, теперь например, подойдет драйвер с микросхемой L293D или SN754410.
Stepper. setDirection(CW); // Устанавливает направление вращения (против часовой)
Как использовать шаговый двигатель в тинкеркад
Описание
Четырех фазный шаговый двигатель (28BYJ-48) — это бесколлекторный двигатель, вращение вала осуществляется шагами (дискретное перемещение). На роторе (валу), расположен магнит, а вокруг него расположены катушки, если поочередно подавать ток на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, тем самым заставляя двигатель вращаться. Такая конструкция позволяет с большой точностью управлять валом, относительно катушек. Принципиальная схема четырехфазного шагового двигателя 28BYJ-48 приведена ниже.
В двигателе содержится две обмотки, которые в свою очередь разделены на четыре, из-за этого и название 4-х фазный. Центральные отводы катушек подключены вместе и служат для питания двигателя, так-как каждая обмотка подключена к питанию, такие двигатели называют униполярный. На валу 28BYJ-48 расположено 8 магнитов, с чередующими полюсами (то есть, четыре магнита с двумя полюсами). Внутри расположен редуктор, с примерным передаточным числом в 1:63,68395. Это означает, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).
Режим работы:
Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.
►Полношаговый режим — за 1 такт, ротор делает 1 шаг.
► Полушаговый режим — за 1 такт, ротор делает ½ шага.
Когда используется полношаговый метод управления, две из четырех обмоток запитываются на каждом шаге. Идущая вместе с Arduino IDE библиотека Stepper использует такой способ. В техническом руководстве к 28BYJ-48 сказано, что предпочтительным является использование метода полушага, при котором сначала запитывается только 1 обмотка, затем вместе первая и вторая обмотки, затем только вторая обмотка и так далее. С 4 обмотками это дает 8 различных сигналов, как показано в таблице ниже.
Модуль шагового двигателя ULN2003:
Цифровой вывод микроконтроллера может выдать ток
40 мА, а одна обмотка 28BYJ-48 в пике потребляем
320 мА, следовательно если подключить двигатель напрямую, микроконтроллер сгорит. Для защиты был разработан « Модуль шагового двигателя ULN2003″, в котором используется микросхема ULN2003A (по сути, состоящая из 7 ключей), позволяющая управлять нагрузкой до 500 мА (один ключ). Данный модуль может работать с 5В и 12В двигателем 28BYJ-48, для переключения необходимо установить или убрать перемычку (по умолчанию перемычка установлена, питание 5В).
Принципиальную схему модуля ULN2003 можно посмотреть на рисунке ниже
Назначение X1
► IN1 . . . IN7: Вход 1 … 7
Назначение X2
► 1 — GND: «-» питание модуля
► 2 — Vcc: «+» питание модуля (5В или 12В)
► 3 — Vcc: «+» питание модуля (перемычка, только при 5В)
► 4 — Vcc: «+» питание модуля (перемычка, только при 5В)
Назначение X3
► A: Выход 1
► B: Выход 2
► C: Выход 3
► D: Выход 4
► E: Выход 5
► F: Выход 6
► G: Выход 7
Назначение X3
► 1 — Питание
► 2 — A
► 3 — B
► 4 — C
► 5 — D
Внешний вид платы модуля
Помимо самой микросхемы ULN2003AN, на плате имеется пятиконтактный разъем для подключения к шаговику и четыре светодиода, показывающих, какая из обмоток запитана в текущий момент времени.
Также сбоку расположен джампер (два вывода под четырьмя резисторами), установка которого позволяет подавать питание на шаговый двигатель. Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А. Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.
Подключите выводы IN1, IN2, IN3 и IN4 к пинам 3, 4, 5 и 6 Arduino Uno. Положительный контакт источника питания необходимо подключить к выводу, помеченному как «+», а землю источника питания к выводу «-» на плате контроллера. Если для питания Arduino и мотора используются различные источники питания, то необходимо объединить выводы «земля» источников вместе.
Подключение:
В данном примере буду использовать модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V. Схема не сложная, необходимо всего шесть провода, сначала подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к VIN (не для постоянного использовании), подключаем разъем двигателя в модуль ULN2003.
Стандартная библиотека Stepper, идущая с Arduino IDE, поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Использовать ее можно только в очень простых приложениях, в которых используется только один мотор. Применение библиотеки Stepper для управления 28BYJ-48 является не самым эффективным решением.
Библиотека CustomStepper
Для вращения двигателя по часовой и против часовой стрелки, используем библиотеку « CustomStepper«. Данная библиотека не входит в стандартную среду разработки Arduino IDE, так что скачиваем и добавляем ее.
#include // Подключаем библиотеку CustomStepper
CustomStepper stepper(8, 9, 10, 11); // Указываем пины, к которым подключен драйвер шагового двигателя
Boolean rotate1 = false; // Переменная для смены режимов
Boolean rotatedeg = false; // Переменная для смены режимов
Boolean crotate = false; // Переменная для смены режимов
Stepper. setRPM(12); // Устанавливаем количество оборотов в минуту
Stepper. setSPR(4075.7728395); // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
If (stepper. isDone() && rotate1 == false)
Stepper. setDirection(CCW); // Устанавливает направление вращения (по часовой)
Stepper. rotate(2); // Устанавливает вращение на заданное количество оборотов
If (stepper. isDone() && rotate1 == true && rotatedeg == false)
Stepper. setDirection(CW); // Устанавливает направление вращения (против часовой)
Stepper. rotateDegrees(90); // Поворачивает вал на заданное кол-во градусов
If (stepper. isDone() && rotatedeg == true && crotate == false)
Stepper. setDirection(CCW); // Устанавливает направление вращения (по часовой)
Stepper. rotate(); // Будет вращать пока не получит команду о смене направления или STOP
Stepper. run(); // Этот метод обязателен в блоке loop. Он инициирует работу двигателя, когда это необходимо
Скачать библиотеку можно здесь
Библиотека AccelStepper
Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.
-
Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей Поддержка ускорения и замедления Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора Функции API не используют функцию delay и не прерывают работу Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967) Поддержка низких скоростей Расширяемый API Поддержка подклассов
Представленный ниже код медленно ускоряет мотор 28BYJ-28 в одном направлении, затем замедляется до остановки и вновь ускоряется, но уже вращаясь в противоположном направлении.
#define HALFSTEP 8
// Определение пинов для управления двигателем
#define motorPin1 3 // IN1 на 1-м драйвере ULN2003
#define motorPin2 4 // IN2 на 1-м драйвере ULN2003
#define motorPin3 5 // IN3 на 1-м драйвере ULN2003
#define motorPin4 6 // IN4 на 1-м драйвере ULN2003
// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
// Изменяем направление, если шаговик достигает заданного положения
Скачать библиотеку можно здесь
Переделка 28BYJ-48 из униполярного в биполярный
Интересное заключается в том, вместо 380 гр./см при униполярном подключении, можно получить крутящий момент 800 гр./см при биполярном включении.
У униполярного двигателя в один момент времени никогда не будут задействованы все четыре провода, только два из них. Но если был бы способ заставить ток течь по всем обмоткам, то это бы увеличило мощность мотора. В биполярных моделях имеются всего лишь две обмотки вместо четырех. И обе обмотки могут быть активны все время, но их полярность переключается за четыре шага. Это значит, что такие моторы содержат всего четыре провода вместо пяти, шести или восьми. Более подробно переделка описана в дополнительных материалах
Драйвер биполярного двигателя отличается от униполярного, теперь например, подойдет драйвер с микросхемой L293D или SN754410.
Позиция здесь выводится в шагах, максимум как раз соответствует половине оборота
Масштабирование, Копирование И Вставка
Include Подключаем библиотеку CustomStepper.
Vijvarada. volyn. ua


















































