Arduino uno как подключить шаговый двигатель
СТАНОК С ЧПУ СВОИМИ РУКАМИ
Последние публикации
- Гравировка CO2-лазером герба РФ на стеклянном стаканчике
Подробнее - Гравировка CO2-лазером фотографии на стекле
Подробнее - Интернет-сервис формирования G-кода из BMP, JPG, GIF, PNG
Подробнее - Рисуем в Paint эскиз для резки CO2-лазером
Читать - Определение величины задержки между шагами ШД
Читать - Гравировка CO2-лазером на металле с использованием пасты
Читать - Резка по изображению «от руки», чертежу или растровой картинке
Читать
Заметки
- Прошиваем GRBL в Ардуино UNO. Ошибка avrdude: stk500_recv(): programmer is not responding
Читать - Изготовление источника питания для двигателей из старых зарядников.
Читать - Муфта соединения оси шагового двигателя и оси винтовой передачи.
Читать - Каретка винтовой передачи скольжения станка с ЧПУ.
Читать - Подключение драйвера ШД на TB6560 к Ардуино, шаговому двигателю и БП.
Читать - Запуск CO2-лазера при отрицательной температуре
Читать
Подключаем к станку с ЧПУ на базе Ардуино более мощные и быстрые ШД 17HS3404N в корпусе Nema 17 и драйверы шаговых двигателей DM420A
Порывшись на любимом мной сайте китайских товаров выбрал, как мне кажется самый бюджетный и подходящий вариант: гибридные шаговые двигатели 17HS3404N в корпусе Nema 17 с четырьмя управляющими проводами и драйвера ШД DM420A.
С доставкой такой комплект обошелся в 88 долларов, что более чем в полтора раза увеличило стоимость простого станка с ЧПУ на базе Arduino. Теперь самодельный станок с числовым программным управлением стоит около 170 долларов или 5000 рублей.
Гибридные шаговые двигатели 17HS3404N в корпусе Nema 17 с четырьмя проводами
С шаговыми двигателями всё более или менее понятно. Четыре проводка: черный, зелёный, красный, синий. Обратите внимание, что имеет место следующее соответствие между цветом провода ШД 17HS3404N и выходами драйвера шагового двигателя DM420A:
Цвет провода двигателя 17HS3404N | Метка пина драйвера DM420A |
---|---|
черный | A+ |
зелёный | A- |
красный | B+ |
синий | B- |
Драйвер управления гибридными шаговыми двигателями DM420A. Подключение к Ардуино.
Драйвер крайне умный и умеет работать в двух режимах. Переключение между режимами автоматическое и никакие переключатели трогать не надо.
— режим управления отрицательным сигналом;
— режим управления положительным сигналом типа LOW (0, Сток) и HIGH (5 В), который используется для цифровых Pin’ов Arduino в режиме OUTPUT.
Драйвер DM420A. Управление отрицательным сигналом
Этот режим в чистом виде не подходит для подключения к Ардуино: необходимо использовать дополнительные электронные компоненты. Подключение DM420A в режиме управления отрицательными сигналами:
— на вход +5 драйвера ШД DM420A подаём +5;
— по умолчанию, без подключения сигнала, драйвер находится в состоянии Enable (включен). Если на ENBL подвести -5 В, то драйвер перестанет управлять ШД.
— направление вращения задаётся подачей -5 В (в одну сторону) или размыканием (в другую);
— на вход PUL подаём -5В и размыкаем цепь, это соответствует перемещению ШД на один шаг.
Драйвер DM420A. Подключение к Arduino и управление сигналами LOW-HIGH цифровых пинов в режиме OUTPUT.
Этот режим подходит для работы с Ардуино. Схема подключения представлена ниже:
Обратите внимание, что земля (Gnd) Ардуино НЕ идёт на DC- драйвера DM420A, как это иногда советуют сделать. Дело в том, что при установке значения LOW на цифровом пине Ардуино, находящемся в режиме OUTPUT, этот пин работает как «0», то есть «приёмник» тока.
Это подтверждается документацией по Ардуино, а также примером подключения диода к двум цифровым пинам, находящимся в режиме OUTPUT: на одном пине выставлено значение LOW, на другом HIGH.
Итак:
— на вход +5 драйвера шагового двигателя DM420A подаём +5В;
— если на ENBL подаётся значение LOW (0), то драйвер не управляет ШД, если HIGH, то переходит в состояние Enable (включен);
— направление вращения ШД определяется сигналом, поданным на DIR: LOW или HIGH;
— подача на PUL значения HIGH, а затем LOW определяет перемещение ротора ШД на один шаг;
Замечания по работе шагового двигателя 17HS3404N и драйвера ШД DM420A, подключенного к Ардуино в режиме управления значениями LOW-HIGH.
— Время переключения драйвера из режима Disabled в режим Enabled составляет 15 миллисекунд. Таким образом, если вы планируете программно управлять включением и отключением ШД, то после подачи на вход ENBL драйвера DM420A сигнала, включающего управление, необходимо сделать паузу 20 миллисекунд, и только после этого посылать управляющие сигналы на PUL.
— Если вы не собираетесь контролировать включение-выключение управления шаговым двигателем, то на вход ENBL драйвера DM420A можно подать +5В от выхода Ардуино. Также, если вообще ничего не подключать к входу ENBL драйвера DM420A, то он будет в состоянии включен (Enable).
— В режиме 200 шагов на оборот между пульсациями на входе PUL необходимо сделать паузу 2 миллисекунды, чтобы дать шаговому двигателю отреагировать на команду перемещения ротора. То есть, если на PUL передать следующие сигналы:
HIGH — LOW — [пауза 2мс] – HIGH – LOW — [пауза 2мс] – HIGH – LOW — [пауза 2мс],
то ротор ШД сделает 3 шага за 6 миллисекунд.
— Для выставления режима работы 200 шагов на оборот и подключения шагового двигателя 17HS3404N на драйвере ШД DM420A необходимо установить переключатели в следующее положение:
Обозначение переключателя | Положение переключателя |
---|---|
SW1 | ON |
SW2 | ON |
SW3 | ON |
SW4 | OFF |
SW5 | ON |
SW6 | ON |
SW7 | ON |
— Находясь в состоянии удержания шаговые двигатели 17HS3404N греются гораздо сильнее, чем во время вращения.
По аналогичной схеме подключаем ещё два комплекта драйвер ШД DM420A — шаговый двигатель 17HS3404N. Питание для ШД 17HS3404N я сделал общее из блока питания для роутера (12В, 2А).
Драйверы поставил стопочкой с небольшим смещением, чтобы иметь лёгкий доступ к входам. Всё собрал на листе фанеры.
На фото: 3 драйвера шаговых двигателей DM420A, установленные друг на друга, нижний прикручен к листу фанеры саморезами. За драйверами общий блок питания, приклеен двухсторонним скотчем. Справа плата Ардуино, прикручена саморезами. Пины 13,12,11,10,9,8 Arduino подключены к пинам DIR, PUL трёх драйверов ШД DM420A. Выход +5 Ардуино подключен ко входам +5 и ENBL драйверов. То есть, при включении схемы включается управление шаговыми двигателями 17HS3404N. Программное управление включением-выключением ШД не используется. Схема рабочая.
Прошивку для Ардуино для работы с драйверами шаговых двигателей DM420A можно скачать в разделе Прошивка.
Советы для начинающих. Arduino и шаговый двигатель Nema 17
Перед началом очередного проекта на Arduino, было решено использовать шаговый двигатель Nema 17.
Почему именно Nema 17? В первую очередь, из-за отличного соотношения цена/качество.
Перед подключением Nema 17, за плечами был определенный опыт работы с шаговиком 24byj48 (даташит). Управлялся он и с помощью Arduino, и с помощью Raspberry pi, проблем не возникало. Основная прелесть этого двигателя — цена (около 3 долларов в Китае). Причем, за эту сумму вы приобретаете двигатель с драйвером в комплекте. Согласитесь, такое можно даже и спалить, не особо сожалея о содеянном.
Теперь появилась задача поинтереснее. Управлять шаговым двигателем Nema 17 (даташит). Данная модель от оригинального производителя реализуется по цене около 40 долларов. Китайские копии стоят раза в полтора-два дешевле — около 20-30 долларов. Очень удачная модель, которая часто используется в 3D принтерах и CNC-проектах. Первая возникшая проблема — как подобрать драйвер для этого двигателя. Силы тока на пинах Arduino для питания не хватит.
Выбор драйвера для управления Nema 17
Google подсказал, что для оживления Nema 17 можно использовать драйвер A4988 от Poulou (даташит).
Кроме того, есть вариант использования микросхем L293D. Но A4988 считается более подходящим вариантом, так что на нем и остановились во избежание потенциальных проблем.
Как уже упоминалось выше, использовались двигатель и драйвер, заказанные из Китая. Ссылки ниже.
Ссылки для заказа необходимого оборудования из Китая
Подключение Nema 17 через A4988
Подключение было реализовано на основании этой темы на Arduino форуме. Рисунок приведен ниже.
Собственно, данная схема присутствует практически на каждом блоге-сайте, посвященном Arduino. Плата была запитана от 12 вольтового источника питания. Но двигатель не вращался. Проверили все соединения, еще раз проверили и еще раз.
Первая проблема
Наш 12 вольтовый адаптер не выдавал достаточной силы тока. В результате адаптер был заменен на 8 батареек АА. И двигатель начал вращаться! Что ж, тогда захотелось перескочить с макетной платы на прямое подключение. И тут возникла
Вторая проблема
Когда все было распаяно, двигатель опять перестал двигаться. Почему? Не понятно до сих пор. Пришлось вернуться к макетной плате. И вот тут возникла вторая проблема. Стоит предварительно было посидеть на форумах или внимательно почитать даташит. Нельзя подключать-отключать двигатель когда на контроллер подано питание! В результате контроллер A4988 благополучно сгорел.
Эта проблема была решена покупкой нового драйвера на eBay. Теперь, уже с учетом накопленного грустного опыта, Nema 17 был подключен к A4988и запущен, но.
Шаговый двигатель сильно вибрирует
Во время вращения ротора двигатель сильно вибрировал. О плавном движении не было и речи. Гугл вновь в помощь. Первая мысль — неправильное подключение обмоток. Ознакомление с даташитом шагового двигателя и несколько форумов убедили, что проблема не в этом. При неправильном подключении обмоток двигатель просто не будет работать. Решение проблемы крылось в скетче.
Программа для Arduino
Оказалось, что есть замечательная библиотека для шаговых двигателей, написанная ребятами из Adafruit. Используем библиотеку AcclStepper и шаговый двигатель начинает работать плавно, без чрезмерных вибраций.
Основные выводы
- Никогда не подключайте/отключайте двигатель, когда на контроллер подано питание.
- При выборе источника питания, обратите внимание не только на вольтаж, но и на мощность адаптера.
- Не расстраивайтесь, если контроллер A4988 вышел из строя. Просто закажите новый 😉
- Используйте библиотеку AcclStepper вместо голого кода Arduino. Шаговый двигатель с использованием этой библиотеки будет работать без лишних вибраций.
Скетчи для управления шаговым двигателем
Простой 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
if (a 400) // вращение на 200 шагов в направлении 2
Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.
AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)
int dir = 1; //используется для смены направления
Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)
dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(1000); //задержка на 1 секунду
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!
Ардуино и шаговый двигатель: основы, схемы, подключение и управление
Шаговые двигатели используют для управления положением чего-либо, или для вращения рабочего узла с заданной скорости и на заданный угол. Такие особенности сделали возможным его применение в робототехнике, станках с числовым программным управлением (ЧПУ), и других системах автоматизации. В этой статье мы рассмотрим ряд вопросов связанных с устройством шаговых двигателей и способами их управления с помощью микроконтроллера Arduino.
Шаговый двигатель отличия от обычного
Все используемые на практике электродвигатели работают за счет электродинамических явлений и процессов происходящих в магнитных полях роторов и статоров. Как мы уже упомянули, любой двигатель состоит как минимум из двух частей – подвижной (ротор) и неподвижной (статор). Для его вращения нужно чтобы и магнитное поле тоже вращалось. Поле ротора вращается вслед за полем статора.
В принципе, таких базовых сведений достаточно для понимания общей картины работы электрических двигателей. Однако на самом деле промышленность производит различные варианты электродвигателя, среди которых:
1. Асинхронный двигатель с короткозамкнутым или с фазным ротором.
2. Синхронный двигатель с обмотками возбуждения или с постоянными магнитами.
3. Двигатель постоянного тока.
4. Универсальный коллекторный двигатель (работает и на постоянном токе и на переменном, ведь обмотки ротора сами подключаются и отключаются от контактов источника питания за счет конструкции ламелей и якоря).
5. Бесщеточные двигатели постоянного тока (BLDC).
7. Шаговые двигатели.
Последние два вида несут особую ценность, благодаря возможности их, в определенной степени, точного позиционирования в пространстве. Давайте подробнее рассмотрим конструкцию шагового двигателя.
Определение
Шаговым двигателем называется бесщеточный электродвигатель синхронного типа. На статоре расположено определенное число обмоток, подключение которых вызывает поворот ротора на определенный угол, зависящий от числа шагов. Другими словами ток в обмотке статора вызывает поворот вала на дискретный угол.
При равномерной и последовательной смене полярностей напряжения на обмотках и переключении запитанных обмоток происходит вращение шагового двигателя, подобно обычному электродвигателю, хотя на самом деле просто происходит регулярный поворот на фиксированный угол.
Шаговый двигатель иногда называют двигателем с конечным количеством положений ротора. Звучит не совсем понятно, давайте разберемся. Представим обычный двигатель – положение его ротора никак не фиксируется, то есть он просто вращается пока подключено питание, а когда оно отключается, то останавливается через какое-то время, зависящее от его инерции. Положений ротора может быть сколько угодно много, а отличаться они могут на мельчайшие доли градуса.
В шаговом двигателе подключение обмотки или нескольких обмоток вызывает «примагничивание» ротора по отношению к этим обмоткам. Внешне это выглядит именно как поворот вала на определенный угол (шаг). Так как количество шагов является одной из важных характеристик этого типа электропривода, то и количество положений ротора равно количеству шагов. Новичкам сложно понять, как это может быть, и как он в таком случае вращается – на самом деле все достаточно просто, мы это покажем на иллюстрациях и описаниях ниже.
Конструкция
На статоре электродвигателя закреплены обмотки возбуждения. Его ротор выполняется из магнитомягких или магнитотвердых материалов. От материала ротора зависит крутящий момент и фиксация вала при обесточенных обмотках. Эти параметры могут быть критичными.
Поэтому выделяют магнитотвердые роторы (они же на постоянных магнитах) и магнитомягкие (реактивные) роторы, кроме них есть и гибридные роторы.
Гибридный ротор делают зубчатым, количество зубцов соответствует количеству шагов. Зубцы расположены вдоль оси ротора. При этом такой ротор разделен на две части поперек. Между ними установлен постоянный магнит, таким образом, каждая из половин ротора является полюсом магнита. Также следует сказать, о том, что половины ротора повернуты на половину шага зубцов друг относительно друга.
Как уже было сказано, такой двигатель является синхронным, так и процесс его вращения заключается в создании вращающего поля ротора, за которым стремится магнитный ротор, а это реализовывается за счет переключения контроллером обмоток поочередно.
Виды шаговых двигателей ШД по конструкции обмоток делят на три основных группы по схеме подключения обмоток:
3. С четырьмя обмотками.
Биполярные электродвигателя в большинстве своем имеют 4 контакта – это выводы с двух обмоток. Внутри двигателя они по большому счету никак не соединены между собой. Основной проблемой является то, что нужно обеспечить переключение полярности питания, это значит, что драйвер и сам процесс управления усложнится.
Униполярные напоминают соединение обмоток по схеме звезды. Другими словами, у вас есть 5 выводов – 4 из них это концы обмоток, а 1 – точка соединения всех обмоток.
Для управления таким двигателем нужно просто подавать поочередно питание на каждый из концов обмотки (или их пару, в зависимости от выбранного режима вращения), таким образом будет запитываться каждый раз половинка обмотки. Может работать в биполярном режиме, если запитывать полностью всю обмотку минуя отвод от её середины.
Двигатели с 4 обмотками имеют преимущество в том, что вы можете подключить обмотки любым удобным для вас образом и получить как биполярный, так и униполярный двигатель.
Режимы управления
Различают 4 основных режима управления шаговым двигателем:
1. Волновое управление.
Волновым управлением называют управление одной обмоткой. Т.е. одновременно ток течет через одну из обмоток, отсюда две отличительных черты – низкое энергопотребление (это хорошо) и низкий крутящий момент (это плохо).
В данном случае этот двигатель делает 4 шага за один оборот. Реальные же двигатели делают десятки шагов за один оборот, это достигается бОльшим количеством чередований магнитных полюсов.
Полношаговое управление является наиболее часто используемым. Здесь напряжение подается не на одну обмотку, а на две сразу. Если обмотки соединены параллельно – то ток удваивается, а если последовательно, то удваивается напряжение питания соответственно. С одной стороны в таком методе управления двигатель потребляет больше энергии, с другой – крутящий момент 100%, в отличие от предыдущего.
Полушаговое управление интересно тем, что становится возможным более точное позиционирование вала двигателя, благодаря к тому, что к целым шагам добавляются еще и половинки это достигается совмещение предыдущих двух режимов работы, а обмотки чередуются, то включаясь попарно, то по одной.
Стоит учесть, что момент на валу плавает от 50 до 100% в зависимости от того 1 или 2 две обмотки задействованы в данный момент.
Еще более точным является микрошаговый. Он похож на предыдущий, но отличается тем, что питание на обмотки подаётся не полной величины, а постепенно изменяющейся. Таким образом, изменяется степень воздействия на ротор каждой из обмоток и плавно изменяется угол поворота вала в промежуточных шагам положениях.
Где взять шаговый двигатель
Купить шаговый двигатель вы успеете всегда, но настоящие радиолюбители, самодельщики и электронщики славятся тем, что могут из мусора сделать что-то полезное. Наверняка, у вас дома найдется хотя бы один шаговый двигатель. Давайте разберемся, где нужно искать, чтобы найти такой двигатель.
1. Принтера. Шаговые двигатели могут стоять на вращении вала подачи бумаги (но может быть и двигатель постоянного тока с датчиком перемещения).
2. Сканеры и МФУ. В сканерах часто устанавливают шаговый двигатель и механическую часть, направляющую вдоль которой ходит каретка, эти детали также могут стать полезны при разработке самодельного ЧПУ станка.
3. CD и DVD приводы. В них также можно достать и штанги и винтовые валы для самоделок и различных ЧПУ.
4. Floppy-дисководы. В дискетниках также есть шаговые двигатели, особо ценятся флопики формата 5.25”.
Драйвер для шагового двигателя
Для управления шаговыми двигателями используют специализированные микросхемы-драйвера. В большинстве своем это H-мост из транзисторов. Благодаря такому включению появляется возможность включать на обмотку напряжение нужной полярности. Эти микросхемы подходят и для управления двигателями постоянного тока с поддержкой изменения направления вращения.
В принципе очень маленькие двигателя можно запустить и прямо от пинов микроконтроллера, но обычно они выдают до 20-40 мА, чего в большинстве случае недостаточно. Поэтому приведем несколько примеров драйверов для шаговых двигателей:
1. Платы на базе L293D. Их множество, одна из таких продается под отечественной маркой «Амперка» под название Troyka Stepper, пример его использования в реальном проекте приведен на видео ниже. Преимущество конкретно этой платы в том, что на ней расположены микросхемы логики которые позволяют сократить количество используемых для управления пинов.
Сама по себе микросхема работает под напряжение 4.5-36В и выдает ток до 600мА-1А в зависимости от корпуса ИМС.
2. Драйвер на базе A4988. Питается напряжением до 35В, выдерживает ток до 1А без радиатора, а с радиатором до 2А. Может управлять двигателем, как целыми шагами, так и частями – от 1/16 шага до 1 шага, всего 5 вариантов. Содержит два H-моста. С помощью подстроечного резистора (видно на правом фото) можно задавать выходной ток.
Размер шага задается сигналами на входах MS1, MS2, MS3.
Вот схема его подключения, каждый импульс на входе STEP задает поворот двигателя на 1 шаг или на микрошаг.
3. Драйвер на базе ULN2003 работает с двигателями на 5 и на 12В и выдаёт ток до 500 мА. На большинстве плат расположены 4 светодиода индицирующих работу каждого из каналов.
Также на плате вы можете видеть клеммную колодку для подключения двигателей, кстати, многие из них продаются именно с таким разъёмом. Примером такого двигателя является 5В модель – 28BYJ-48.
И это не все варианты драйверов для шаговых двигателей, на самом деле их еще больше.
Подключение к Arduino драйвера и шагового двигателя
В большинстве случаев нужно использовать микроконтроллер в паре с драйвером для шагового двигателя. Давайте рассмотрим схему подключения и примеры программного кода. Рассмотрим подключение на базе последнего приведенного драйвера – ULN2003 к плате Arduino. И так у него есть 4 входа, они подписаны, как IN1, IN2 и т.д. Их нужно соединить с цифровыми пинам платы ардуино, а к драйверу подсоединить моторчик как показано на рисунке ниже.
Далее в зависимости от способа управления вы должны подавать на входы 1 или 0 с этих пинов включая 1 или 2 обмотки в нужно последовательности. Код программы полношагового управления выглядит примерно так:
Arduino и шаговый двигатель Nema
Теперь появилась задача поинтереснее. Управлять шаговым двигателем Nema 17 (даташит). Данная модель от оригинального производителя реализуется по цене около 40 долларов. Китайские копии стоят раза в полтора-два дешевле — около 20-30 долларов. Очень удачная модель, которая часто используется в 3D принтерах и CNC-проектах. Первая возникшая проблема — как подобрать драйвер для этого двигателя. Силы тока на пинах Arduino для питания не хватит.
Выбор драйвера для управления Nema 17
Google подсказал, что для оживления Nema 17 можно использовать драйвер A4988 от Poulou (даташит).
Кроме того, есть вариант использования микросхем L293D. Но A4988 считается более подходящим вариантом, так что на нем и остановились во избежание потенциальных проблем.
Подключение Nema 17 через A4988
Подключение было реализовано на основании этой темы на Arduino форуме. Рисунок приведен ниже.
Собственно, данная схема присутствует практически на каждом блоге-сайте, посвященном Arduino. Плата была запитана от 12 вольтового источника питания. Но двигатель не вращался. Проверили все соединения, еще раз проверили и еще раз.
Первая проблема
Наш 12 вольтовый адаптер не выдавал достаточной силы тока. В результате адаптер был заменен на 8 батареек АА. И двигатель начал вращаться! Что ж, тогда захотелось перескочить с макетной платы на прямое подключение. И тут возникла
Вторая проблема
Когда все было распаяно, двигатель опять перестал двигаться. Почему? Не понятно до сих пор. Пришлось вернуться к макетной плате. И вот тут возникла вторая проблема. Стоит предварительно было посидеть на форумах или внимательно почитать даташит. Нельзя подключать-отключать двигатель когда на контроллер подано питание! В результате контроллер A4988 благополучно сгорел.
Эта проблема была решена покупкой нового драйвера на eBay. Теперь, уже с учетом накопленного грустного опыта, Nema 17 был подключен к A4988и запущен, но.
Шаговый двигатель сильно вибрирует
Во время вращения ротора двигатель сильно вибрировал. О плавном движении не было и речи. Гугл вновь в помощь. Первая мысль — неправильное подключение обмоток. Ознакомление с даташитом шагового двигателя и несколько форумов убедили, что проблема не в этом. При неправильном подключении обмоток двигатель просто не будет работать. Решение проблемы крылось в скетче.
Программа для Arduino
Оказалось, что есть замечательная библиотека для шаговых двигателей, написанная ребятами из Adafruit. Используем библиотеку AcclStepper и шаговый двигатель начинает работать плавно, без чрезмерных вибраций.
Основные выводы
- Никогда не подключайте/отключайте двигатель, когда на контроллер подано питание.
- При выборе источника питания, обратите внимание не только на вольтаж, но и на мощность адаптера.
- Не расстраивайтесь, если контроллер A4988 вышел из строя. Просто закажите новый 😉
- Используйте библиотеку AcclStepper вместо голого кода Arduino. Шаговый двигатель с использованием этой библиотеки будет работать без лишних вибраций.
Скетчи для управления шаговым двигателем
Простой 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
if (a 400) // вращение на 200 шагов в направлении 2
Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.
AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)
int dir = 1; //используется для смены направления
Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)
dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(1000); //задержка на 1 секунду
Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
Похожие статьи
Arduino UNO как осциллограф
Контроллеры Arduino можно использовать как простейший осциллограф, для наблюдения за быстро изменяющимися электрическими сигналами.
Скачиваем программу Processing , после чего её устанавливать не нужно — она запускается с EXE-файла.
Arduino основы программирования
Здесь мы научимся писать элементарную программу способную сделать что-либо интересное для новичка. Здесь вы узнаете, как написать простейший скетч для Arduino используя стандартый IDE. Мы пока пропустим использование входов-выходов, но обратим внимание на связь через USB. Синтаксис языка Arduino точно повторяет язык C, поэтому на нем мы останавливаться не будем. Мы сконцентрируемся на конкретных аспектах Arduino языка, в котором вы можете использовать все принципы, которые присущи языку C: переменные, операторы, состояния, типы, константы и т.д.
Как работают шаговые двигатели
Использование шаговых двигателей является одним из самых простых, дешевых и легких решений для реализации систем точного позиционирования. Эти двигатели очень часто используются в различных станках ЧПУ и роботах. Сегодня я расскажу о том, как устроены шаговые двигатели и как они работают.
Подключение к ардуино датчика вращения енкодер KY-040
Енкодер вращения KY-040 — это поворотный датчик, который индицирует степень поворота оси и в каком направлении она вращается.
Это отличный прибор для контроля шаговых и серво — двигателей. Из него получится крутой орган управления менюшкой настроек контроллера. Вы также можете использовать его в качестве цифрового потенциометра.
Комплект антенн для усиления сигнала FPV для Hubsan H501S H107D
Специальный комплект для увеличения дистанции при управлении квадрокоптером Hubsan H501S H107D из магазина Алиэкспресс.
Начало работы с Arduino в Windows
Необходимое железо — Arduino и USB-кабель
В этом руководстве предполагается, что вы используете Arduino Uno, Arduino Duemilanove, Nano или Diecimila.
Вам потребуется также кабель стандарта USB (с разъемами типа USB-A и USB-B): такой, каким, к примеру, подключается USB-принтер. (Для Arduino Nano вам потребуется вместо этого кабель с разъемами А и мини-В).
Так же сейчас популярны стали платы с микро юсб — например от китайских производителей Robotdyn.Они мне больше импонируют со стороны
универсальности , но как говорят олдфаги — чем больше металла в разъеме ,тем он надежнее !
Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.
1. Управляем маленькими моторчиками
Управление маленьким двигателем может быть может осуществляться довольно просто. Если двигатель достаточно маленький, он может быть непосредственно соединен с выводом Arduino, и просто изменяя уровень управляющего сигнала от логической единицы до нуля будем контролировать моторчик. Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень — заняться управлением двигателями при помощи транзисторов.
Подключим миниатюрный вибромоторчик к нашему Arduino.
Серводвигатель MG995 и Arduino ,подключение,распиновка + код
Серводвигатель MG995 и Arduino
Серводвигатель MG995 поставляется с проводом длиной 30 см и 3-мя ‘S’ контактами типа мама. Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.
Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.
Управление двигателем постоянного тока через реле с помощью ардуино
Подключаем мотор, источник питания и реле
Позитивный контакт мотора — switch 1 COM input на реле
Отрицательный контакт мотора — switch 2 COM input на реле
9v позитивный контакт на батарейке — switch 1 NO на реле и switch 2 NO на реле
9v отрицательный контакт на батарейке — switch 1 NC и switch 2 NC на реле
Модуль GSM GPRS SIM800 MicroSIM с антенной и ардуино
Миниатюрный модуль GSM/GPRS сотовой связи на основе компонента SIM800L , разработанного компанией SIMCom Wireless Solutions. Русскоязычная версия сайта SIMCom здесь. Стандартный интерфейс управления компонента SIM800L предоставляет доступ к сервисам сетей GSM/GPRS 850/900/1800/1900МГц для отправки звонков, СМС сообщений и обмена цифровыми данными GPRS. Поставляется с встроенной антенной, также можно подключить дополнительные антенны для улучшения качества сигнала.
Управлять модулем можно при помощи персонального компьютера через преобразователь интерфейса USB-UART или непосредственно через UART модулем микроконтроллера самостоятельной разработки или Arduino, Raspberry Pi и аналогичными.