Андрей Смирнов
Время чтения: ~23 мин.
Просмотров: 0

Как подключить a4988 к arduino

Содержание

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

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

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).


Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей

Должно получиться что-то подобное:


Двигатель подключён к драйверу двигателей и Arduino

1Что такое драйвер двигателей и для чего он нужен

Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.


Различные варианты исполнения драйверов двигателей

В данной статье мы будем использовать драйвер для управления двигателями, сделанный на основе микросхемы L9110S. Обычно выпускаются платы, которые поддерживают подключение нескольких двигателей. Но для демонстрации мы обойдёмся одним.

Полнофункциональные драйверы шаговых двигателей

Высокоинтегрированные контроллеры шагового двигателя могут значительно сократить объем проектных работ, связанных с применением более мощных шаговых двигателей. Первая полезная особенность, которая приходит на ум – это автоматическая генерация управляющей последовательности, т.е. способность преобразовывать прямые входные сигналы управления двигателем в требуемые последовательности сигналов. Давайте рассмотрим L6208 от STMicroelectronics, в качестве примера.

Вместо логических входов, которые напрямую контролируют ток, подаваемый на обмотки двигателя, L6208 имеет:

  • Вывод, который выбирает между полушагом и полным шагом.
  • Вывод, который задает направление вращения.
  • Вывод «синхроимпульса», который заставляет внутренний конечный автомат управления двигателем меняться на один шаг при появлении фронта сигнала.

Этот интерфейс гораздо более интуитивно понятен, чем фактические последовательности включения и выключения, которые применяются к транзисторам, подключенным к обмоткам (пример которых приведен ниже).

Это последовательность для управления биполярным шаговым двигателем. «A» и «B» относятся к двум обмоткам, а столбцы «Q» указывают состояние транзисторов, управляющих током обмотки.

Технические характеристики A4988

Конструктивно это выглядит как два круглых полюса, на поверхности которых расположены зубцы ротора из магнитомягкого материала. Можно увеличить количество шагов в 16, 32, 64 раза и т.

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

Шаговые двигатели.

Для изменения направления вращения достаточно изменить очередность подачи импульсов в соответствующие обмотки. Режим управления двигателем задается коммутатором. Шаговые двигатели.

Рекомендуем: Необходимый метериал для проведения электричества

Данный двигатель можно не только использовать как биполярный или униполярный, но и самим определять, как соединить электромагниты обмоток, последовательно или параллельно. Из-за чего обеспечивается максимальный момент, в случае параллельного соединения или последовательного включения обмоток будет создаваться максимальное напряжение или ток. Этот метод использует в два раза больше шагов, чем полный шаг, но он также имеет меньший крутящий момент.

А принцип работы этого всего очень прост: конденсатор формирует сдвиг фаз на одной из обмоток, в результате обмотки работают почти попеременно и шаговый двигатель крутится. В таком двигателе сечение отдельных обмоток вдвое больше, а омическое сопротивление — соответственно вдвое меньше. Так, пожалуй, можно дать строгое определение. Готовые шаговые двигатели с редукторами хотя и существуют, однако являются экзотикой. Иногда двигатели с постоянными магнитами имеют 4 раздельных обмотки.

Общие сведения:

Микрошаговый режим. Режим удержания уменьшает максимальный ток, потребляемый обмотками двигателя, с двух до одного ампера. Диаграммы, диаграммы

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

https://youtube.com/watch?v=Zqbz-mI04Xk

Подключение шагового двигателя

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

Типичные схемы подключения ШД

В зависимости того, какое количество выводов представлено на конкретном шаговом двигателе: 4, 6 или 8 выводов, будет отличаться и возможность использования той или иной схемы их подключения Посмотрите на рисунки, здесь показаны типичные варианты подключения шагового механизма:

Схемы подключения различных типов шаговых двигателей

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

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

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

Простой Arduino-код для проверки шагового двигателя

//простое подключение A4988

//пины reset и sleep соединены вместе

//подключите VDD к пину 3.3 В или 5 В на Arduino

//подключите GND к Arduino GND (GND рядом с VDD)

//подключите 1A и 1B к 1 катушке шагового двигателя

//подключите 2A и 2B к 2 катушке шагового двигателя

//подключите VMOT к источнику питания (9В источник питания + term)

//подключите GRD к источнику питания (9В источник питания — term)

int stp = 13; //подключите 13 пин к step

int dir = 12; //подключите 12 пин к dir

int a = 0;

void setup()

{

pinMode(stp, OUTPUT);

pinMode(dir, OUTPUT);

}

void loop()

{

if (a < 200) // вращение на 200 шагов в направлении 1

{

a++;

digitalWrite(stp, HIGH);

delay(10);

digitalWrite(stp, LOW);

delay(10);

}

else { digitalWrite(dir, HIGH);

a++;

digitalWrite(stp, HIGH);

delay(10);

digitalWrite(stp, LOW);

delay(10);

if (a>400) // вращение на 200 шагов в направлении 2

{

a = 0;

digitalWrite(dir, LOW);

}

}

}

Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.

#include <AccelStepper.h>

AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)

int dir = 1; //используется для смены направления

void setup() {

Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)

}

void loop() {

if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение

Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)

dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

}

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

}

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Подключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Подключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Принципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17  через драйвер L298 выглядит следующим образом.

Изготовление электрокосы из стиральной машины своими руками

Сделать электрокосу можно также на основе двигателя из стиральной машины. Он асинхронный и включается посредством кнопки. Заводилку можно изготовить из возвратной кнопки, например, от измерительных приборов. Достаточно компактные размеры мотора позволяют не делать большую тележку, как в предыдущем варианте.

На заметку! Удобство использования такого двигателя заключается в том, что он уже имеет шкив, и замена поршневой на более удобную тут не нужна. Ремень и второй шкив находятся тут же – в стиралке.

Ножи изготавливаются по аналогии с описаниями выше. Но есть один важный момент — чтобы двигатель из стиральной машины подготовить к работе в качестве триммера, следует не забыть сделать для него защитный кожух. Он убережет привод от травы. Но при этом необходимо позаботиться о защите от перегрева, то есть — кожух должен быть больше по размеру и иметь отверстия для вентиляции. С этой целью подойдет старое ведро или пластиковая бутылка большой емкости. Не стоит забывать делать перерывы — на длительную работу подобный мотор не рассчитан.

Подключение драйвера шагового двигателя A4988 и DRV8825 с помощью модуля.

Внимание! При установке драйвера на модуль будьте осторожны.Драйвер может сгореть, если не правильно установить его на модуль.

С подключением определились, пора перейти к коду, который позволит управлять шаговым двигателем.

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

const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}
void loop()
{
  digitalWrite(dirPin, HIGH); // Установка вращения по часовой стрелки
  for(int x = 0; x > stepsPerRevolution; x++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }
  delay(1000);
  digitalWrite(dirPin, LOW); // Установка вращения против часовой стрелки
  for(int x = 0; x < stepsPerRevolution; x++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);
}

Пояснение к коду:

Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR драйвера A4988. Здесь также определяем stepsPerRevolution – количество шагов на оборот. Установите данное значение в соответствии со спецификациями шагового двигателя 200 (поскольку NEMA 17 делает 200 шагов за оборот).

const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

В разделе настройки кода setup(), все контакты управления двигателем объявлены как цифровой выход (OUTPUT).

pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);

В основном цикле loop() будем медленно вращать двигатель по часовой стрелке, а затем быстро вращать его против часовой стрелки, с интервалом в секунду.

Управление направлением вращения.

Для управления направлением вращения двигателя мы устанавливаем контакт DIR на высокий уровень HIGH, или низкий LOW. При значении HIGH — вращает двигатель по часовой стрелке, а LOW — против часовой стрелки.

digitalWrite(dirPin, HIGH);

Управление скоростью шагового двигателя.

Скорость двигателя определяется частотой импульсов, которые мы посылаем на вывод STEP. Чем чаше импульсы, тем быстрее работает двигатель. Импульсы — это не что иное, как подтягивание выхода к высокому уровню HIGH, некоторое ожидание, затем подтягивание его к низкому уровню LOW и снова ожидание. Изменяя задержку между двумя импульсами, вы изменяете частоту импульсов и следовательно, скорость вращения двигателя.

for(int x = 0; x < stepsPerRevolution; x++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
}

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

Первое, что нужно иметь в виду – это то, что микросхемы, предназначенные для основных функций управления двигателем могут использоваться с шаговыми двигателями. Вам не нужна микросхема, которая специально помечена или продается как устройство управления шаговым двигателем. Если вы используете биполярный привод, вам нужно два H-моста на шаговый двигатель; Если вы используете однополярный подход, вам нужно четыре драйвера для одного двигателя, но каждый драйвер может быть одним транзистором, потому что все, что вы делаете, это включаете и выключаете ток, а не меняете его направление.

Примером компонента в категории «универсальная микросхема» является DRV8803 от Texas Instruments. Это устройство описано как «драйверное решение для любого приложения переключения нижнего плеча».

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

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

Типы шаговых двигателей

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

По конструкции ротора

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

Реактивный

Реактивный шаговый двигатель не оснащается магнитом на роторе, а выполняется из магнитомягких сплавов, как правило, его набирают из пластин для уменьшения потерь на индукцию. Конструкция в поперечном разрезе напоминает шестерню с зубцами. Полюса статорных обмоток запитываются противоположными парами и создают магнитную силу для перемещения ротора, который двигается от попеременного протекания электрического тока в обмоточных парах.

С переменным магнитным сопротивлением

Весомым плюсом такой конструкции шагового привода является отсутствие стопорящего момента, образуемого полем по отношению к арматуре. По факту это тот же синхронный двигатель, в котором поворот ротора идет в соответствии с полем статора. Недостатком является снижение величины вращающего момента. Шаг для реактивного двигателя колеблется от 5 до 15°.

С постоянными магнитами

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

С постоянным магнитом

Гибридные

Был разработан с целью объединения лучших качеств двух предыдущих моделей, за счет чего агрегат обладает меньшим углом и шагом. Его ротор выполнен в виде цилиндрического постоянного магнита, который намагничен по продольной оси. Конструктивно это выглядит как два круглых полюса, на поверхности которых расположены зубцы ротора из магнитомягкого материала. Такое решение позволило обеспечить отличный удерживающий и крутящий момент.

По виду обмоток

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

Униполярный

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

Униполярный ШД

Для использования всей мощности катушки средний вывод оставляют не подключенным. Рассмотрите конструкции униполярных агрегатов, они могут содержать 5 и 6 выводов. Их количество будет зависеть от того, выводится срединный провод отдельно от каждой обмотки двигателя или они соединяются вместе.

Схема а) с различными, б) с одним выводом

Биполярный

Биполярный шаговый двигатель подключается к контроллеру через 4 вывода. При этом обмотки могут соединяться внутри как последовательно, так и параллельно. Рассмотрите пример его работы на рисунке.

Биполярный шаговый двигатель

В конструктивной схеме такого двигателя вы видите с одной обмоткой возбуждения в каждой фазе. Из-за этого смена направления тока требует использовать в электронной схеме специальные драйверы (электронные чипы, предназначенные для управления). Добиться подобного эффекта можно при помощи включения Н-моста. В сравнении с предыдущим, биполярное устройство обеспечивает тот же момент при гораздо меньших габаритах.

Подключение драйвера шагового двигателя к arduino

У каждого радиолюбителя возникает тот момент, когда ему необходимо подключить к своему микроконтроллеру шаговый двигатель. Конечно, скажете вы, в «Интернетах» есть куча схем, готовых библиотек и все уже разжевано давным давно. Однако, когда я решил подключить к своей arduino nano драйвер DRV8825 и полез в интернет за схемкой, то обнаружил, что схем несколько. Если быть точным я нашел их 2.

Минимальная схема подключения драйвера DRV8825
( почему то НЕ РАБОТАЕТ  ) Альтернативная схема подключения DRV8825

Посмотрев несколько статей, устройств, схем, я пришел к выводу, что вторя схема правильная (нет) и растравил плату. Собрав ее, долго думал почему на двигатель не поступает питание. Я менял драйвера как перчатки, но после 4 штук подумал, что дело не может быть в драйверах. Решил подать питание так как показано на первой схеме. И о чудо! Оно живое!

Возможно, только у меня такие драйвера ( или кривые руки ), однако запустилась только первая схема, которую я теперь постоянно и использую.

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные  характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

Характеристики двигателя:

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Униполярные и биполярные шаговые двигатели

   Также существует ещё два типа шаговых двигателей: униполярные и биполярные. На фундаментальном уровне, эти два типа работать точно так же; электромагниты включены в последовательном виде, заставляя центральный вал двигателя вращаться.

   Но униполярный шаговый двигатель работает только с положительным напряжением, а биполярный шаговый двигатель имеет два полюса — положительный и отрицательный.

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

   Хотя оба они имеют общий уровень питающих напряжений 5V, биполярный шаговый двигатель будет иметь больший крутящий момент, потому что ток течет через всю катушку, производя более сильное магнитное поле. С другой стороны, униполярные шаговые двигатели используют только половину длины катушки из-за дополнительного провода в середине катушки, а значит меньший крутящий момент доступен для удержания вала на месте.

Скетч Arduino — использование библиотеки AccelStepper

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

Итак, для нашего следующего эксперимента мы будем использовать расширенную библиотеку шаговых двигателей под названием AccelStepper library. Она поддерживает:

  • Ускорение и замедление.
  • Одновременное управление несколькими шаговыми двигателями с независимым шагом для каждого двигателя.

Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.

Установка библиотеки

Чтобы установить библиотеку, перейдите в Эскиз> Include Library> Manage Libraries… Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте результаты поиска, набрав «Accelstepper». Щелкните первую запись и выберите «Установить».

Скетч Arduino

Вот простой код, который ускоряет шаговый двигатель в одном направлении, а затем замедляется, чтобы остановиться. Как только двигатель совершает один оборот, он меняет направление вращения. И он повторяет это снова и снова.

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>

// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;

// Определение тип интерфейса двигателя
#define motorInterfaceType 1

// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup() {
  // Устанавливаем максимальную скорость, коэффициент ускорения,
  // начальную скорость и целевую позицию
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(50);
  myStepper.setSpeed(200);
  myStepper.moveTo(200);
}

void loop() {
  // Изменение направления вращения, когда двигатель достигнет целевого положения
  if (myStepper.distanceToGo() == 0) 
    myStepper.moveTo(-myStepper.currentPosition());

  // Передвинуть на 1 шаг
  myStepper.run();
}

Пояснение к скетчу:

Мы начинаем с подключения недавно установленной библиотеки AccelStepper.

#include <AccelStepper.h>

Определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Устанавливаем motorInterfaceType значение 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).

const int dirPin = 2;
const int stepPin = 3;

#define motorInterfaceType 1

Затем мы создаем экземпляр библиотеки с именем myStepper.

AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

В функции setup() мы сначала устанавливаем максимальную скорость двигателя 1000. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя.

Затем мы устанавливаем обычную скорость 200 и количество шагов, например, 200 (поскольку NEMA 17 совершает 200 шагов за оборот).

void setup() {
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(50);
  myStepper.setSpeed(200);
  myStepper.moveTo(200);
}

В функции loop() мы используем оператор If, чтобы проверить, как далеко двигателю нужно проехать (путем чтения distanceToGo), пока он не достигнет целевой позиции (moveTo). Как только distanceToGo станет равен нулю мы переключаем двигатель в противоположное направление, изменив moveTo на противоположное значение относительно его текущего положения.

Теперь в конце цикла мы вызываем  функцию run(). Это самая важная функция, поскольку шаговый двигатель не будет работать, пока эта функция не будет выполнена.

void loop() {
  if (myStepper.distanceToGo() == 0) 
    myStepper.moveTo(-myStepper.currentPosition());

  myStepper.run();
}

Мастерим вешалку для ключей из простых веток

Драйвер шагового двигателя своими руками — управление с помощью аудио усилителя

Драйвер шагового двигателя своими руками — хотя биполярные шаговые двигатели относительно дороги, для своих физических размеров они обеспечивают высокий вращающий момент. Однако для двух обмоток мотора требуется восемь управляющих транзисторов, соединенных в четыре Н-моста. Каждый транзистор должен выдерживать перегрузки и короткие замыкания и быстро восстанавливать работоспособность. А драйверу, соответственно, требуются сложные схемы защиты с большим количеством пассивных компонентов.


Рисунок 1

Рисунок 1. Одна микросхема в корпусе для поверхностного монтажа и несколько пассивных компонентов могут управлять биполярным шаговым двигателем.

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

Драйвер шагового двигателя своими руками — на Рисунке 1 показана альтернативная схема драйвера двигателя, основанная на аудио усилителе класса D компании Maxim. Микросхема МАХ9715 в миниатюрном корпусе для поверхностного монтажа может отдавать мощность до 2.8 Вт в типичную нагрузку 4 или 8 Ом. Каждый из двух выходов микросхемы образован Н-мостами из мощных MOSFET, управляющими парами линий OUTR+, OUTR- и OUTL+, OUTL-, которые подключаются к обмоткам А и В шагового двигателя, соответственно. Каждая пара формирует дифференциальный широтно-модулированный импульсный сигнал с номинальной частотой переключения 1.22 МГц. Малый уровень помех, создаваемых схемой, исключает необходимость в выходных фильтрах.

Конденсаторы развязки

Конденсаторы С1, С3, С4 и С6 служат развязкой для входов питания и смещения, а С5 и С7 выполняют накопительные функции для мощных выходных усилителей класса D. Конденсаторы С8 и С9 ограничивают полосу пропускания усилителя до 16 Гц, а ферритовые бусины L2 и L3 ослабляют электрические помехи, наводимые на длинные кабели. П-образный фильтр C1, C2, L1 подавляет помехи на входе питания микросхемы IС1. Входные сигналы микросхемы Шаг_А и Шаг_В, управляющие, соответственно, правым и левым каналами двигателя, могут формироваться любым подходящим контроллером. Внутренние цепи защищают усилитель от коротких замыканий и перегрева в случае неисправности шагового двигателя или неправильного подключения его выводов.


Таблица 1

Иллюстрация последовательности импульсов

Таблица 1 иллюстрирует последовательность импульсов Шаг_А и Шаг_В, управляющих вращением типичного шагового двигателя в одном направлении путем непрерывной подачи комбинаций сигналов от 0 до 4. Шаг 4 возвращает вал двигателя в исходное положение, завершая оборот в 360°. Чтобы изменить направление вращения мотора, начинайте формировать временную диаграмму импульсов снизу таблицы и последовательно двигайтесь по ней вверх. Подав напряжение низкого логического уровня на вход SHDN микросхемы (вывод 8), можно отключить оба канала усилителя. Формы сигналов на входах и выходах схемы представлены на Рисунке 2.


Рисунок 2

Формы сигналов в схеме на Рисунке 2: вход Шаг_А (Канал 1), вход Шаг_В (Канал 2), выходы OUTR+ (Канал 3), OUTR- (Канал 4) и сигнал на обмотках двигателя (OUTR+ минус OUTR-, средняя осциллограмма), вычисленный с помощью математической функции осциллографа.

Объяснение программы для платы Arduino

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

Номер шагаКонтакты, на которое подается питаниеКатушки, на которое подается питание
Шаг 18 и 9A и B
Шаг 29 и 10B и C
Шаг 310 и 11C и D
Шаг 411 и 8D и A

На драйвере мотора есть 4 светодиода, по свечению которых можно судить о том, на какую катушку подается питание в конкретный момент. Более подробно все эти процессы можно посмотреть в видео, приведенном в конце статьи.

Мы напишем программу, в которой необходимое количество шагов для двигателя мы будем вводить в мониторе последовательного порта (serial monitor) платы Arduino. Полный текст программы приведен в конце статьи, здесь же мы рассмотрим наиболее важные его фрагменты.

Как мы рассчитали ранее, полное число шагов для полного оборота нашего шагового двигателя, равно 32, пропишем это в следующей строчке кода:

Далее мы должны сказать плате Arduino через какие ее контакты мы будем управлять шаговым двигателем (то есть к каким ее контактам подключен драйвер мотора).

Примечание: последовательность номеров контактов, указанная в приведенной команде (8,10,9,11) – специально упорядочена таким образом чтобы подавать питание на катушки шагового двигателя в правильном порядке. Если вы измените номера контактов, к которым подключен шаговый двигатель, то вы соответствующим образом должны их упорядочить для подачи в приведенную команду.

Мы будем использовать специальную библиотеку для работы с шаговыми двигателями, поэтому для задания скорости вращения шагового двигателя мы можем использовать команду вида:

Для двигателя 28-BYJ48 скорость вращения можно установить в диапазоне от 0 до 200.

Теперь, чтобы двигатель сделал один шаг, мы можем использовать следующую команду:

Количество шагов, которое должен сделать двигатель, определяется переменной “val”. Поскольку мы имеем 32 шага (для оборота) и передаточное число 64 мы должны сделать 2048 (32*64=2048) “шагов” в этой команде для совершения одного полного оборота двигателя.

Соответственно, чтобы шаговый двигатель сделал один шаг по часовой стрелке, необходимо использовать команду:

А один шаг против часовой стрелки:

В нашей программе мы будем считывать значение на аналоговом контакте A0 платы Arduino и сравнивать его с предыдущим значением (Pval). Если оно увеличилось, то мы будем делать 5 шагов двигателем по часовой стрелке, а если уменьшилось – то 5 шагов двигателем против часовой стрелки.

Лучшие цены на АЛИ

Шаг 7: Загрузка кода и тестирование

Загрузите свой код в Ардуино. Если вы запустите свой код и все сработает так, как ожидалось, это потрясающе! Если провода вставлены в неправильные контакты, двигатель просто вибрирует, а не полностью вращается. Играйте со скоростью и направлением двигателя, как сочтете нужным.

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

Имеем гироскутер

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

Мотор-колесо имеет три силовых фазы (это бесколлекторный трехфазный двигатель) и энкодер в виде трех датчиков Холла (с питанием датчиков это 5 контактов) . Контакты по краям разъема – питание, внутренние сигналы от датчиков Холла.


Как я уже заметил, подключить к контроллеру имеющийся в комплекте гироскутера драйвер у меня не получилось. На помощь пришел знаменитый китайский магазин. По итогу был выбран драйвер BLD-300B. Особенностью драйвера можно считать «заточенность» на управление через подстроечный резистор (внутренний либо внешний). Такой драйвер можно использовать для регулировки вращения шпинделя фрезерного станка. Но мне нужно использовать его для управления вращением колеса. При этом должна адекватно работать обратная связь по скорости. Т.е. если сопротивление вращению увеличивается драйвер должен это компенсировать, добавив мощности мотору доведя скорость до заданной.

Если требуется, чтобы драйвер держал заданную скорость, переключите тумблер в положение ON


Если SW2 в положении OFF , при малых оборотах мотор колесо можно остановить рукой. После включения SW2, это сделать затруднительно. Самая элементарная схема подключения изображена ниже. Нужно заземлить EN и BRK. После этого можно управлять мотором посредством внутреннего подстроечного резистора.

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

Входы драйвера EN, BRK, F/R через резистор подтянуты к 5 вольтам питания, как следствие, если их не подключать никуда, они будут находиться в состоянии высокого сигнала (на них будет 5 вольт).

Шаг 1. Что такое шаговый двигатель?

Шаговый двигатель состоит из двух основных частей: ротора и статора.

Ротор является частью двигателя, который фактически вращается и обеспечивает работу. Статор представляет собой неподвижную часть двигателя, в котором размещается ротор. В шаговом двигателе ротор представляет собой постоянный магнит. Статор состоит из нескольких катушек, которые действуют как электромагниты, когда через них проходит электрический ток. Электромагнитная катушка заставит ротор выровняться вместе с ним при зарядке. Ротор приводится в движение путем чередования тока на катушках, протекающий через них.

Шаговые двигатели имеют ряд преимуществ. Они дешевы и просты в использовании. Когда ток не поступает в двигатель, ничего не происходит. Шаговые двигатели также могут вращаться без ограничений и изменять направление в зависимости от установленной полярности.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации