Arduino и шаговый двигатель Nema


Теперь появилась задача поинтереснее. Управлять шаговым двигателем Nema 17 (даташит). Данная модель от оригинального производителя реализуется по цене около 40 долларов. Китайские копии стоят раза в полтора-два дешевле - около 20-30 долларов. Очень удачная модель, которая часто используется в 3D принтерах и CNC-проектах. Первая возникшая проблема - как подобрать драйвер для этого двигателя. Силы тока на пинах Arduino для питания не хватит.

Nema17 - фотография

Выбор драйвера для управления Nema 17

Google подсказал, что для оживления Nema 17 можно использовать драйвер A4988 от Poulou (даташит).

A4988 - фото

Кроме того, есть вариант использования микросхем L293D. Но A4988 считается более подходящим вариантом, так что на нем и остановились во избежание потенциальных проблем.

Подключение Nema 17 через A4988

Подключение было реализовано на основании этой темы на Arduino форуме. Рисунок приведен ниже.

Схема подключения A4988

Собственно, данная схема присутствует практически на каждом блоге-сайте, посвященном Arduino. Плата была запитана от 12 вольтового источника питания. Но двигатель не вращался. Проверили все соединения, еще раз проверили и еще раз...

Первая проблема

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

Вторая проблема

Когда все было распаяно, двигатель опять перестал двигаться. Почему? Не понятно до сих пор. Пришлось вернуться к макетной плате. И вот тут возникла вторая проблема. Стоит предварительно было посидеть на форумах или внимательно почитать даташит. Нельзя подключать-отключать двигатель когда на контроллер подано питание! В результате контроллер A4988 благополучно сгорел.

Эта проблема была решена покупкой нового драйвера на eBay. Теперь, уже с учетом накопленного грустного опыта, Nema 17 был подключен к A4988и запущен, но...

Шаговый двигатель сильно вибрирует

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

Программа для Arduino

Оказалось, что есть замечательная библиотека для шаговых двигателей, написанная ребятами из Adafruit. Используем библиотеку AcclStepper и шаговый двигатель начинает работать плавно, без чрезмерных вибраций.

Основные выводы

  1. Никогда не подключайте/отключайте двигатель, когда на контроллер подано питание.
  2. При выборе источника питания, обратите внимание не только на вольтаж, но и на мощность адаптера.
  3. Не расстраивайтесь, если контроллер A4988 вышел из строя. Просто закажите новый ;)
  4. Используйте библиотеку 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

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(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

}

Похожие статьи

Arduino UNO как осциллограф

Arduino UNO как осциллограф

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

Скачиваем программу Processing , после чего её устанавливать не нужно - она запускается с EXE-файла.

Arduino основы программирования

Arduino основы программирования

Здесь мы научимся писать элементарную программу способную сделать что-либо интересное для новичка. Здесь вы узнаете, как написать простейший скетч для Arduino используя стандартый IDE. Мы пока пропустим использование входов-выходов, но обратим внимание на связь через USB. Синтаксис языка Arduino точно повторяет язык C, поэтому на нем мы останавливаться не будем. Мы сконцентрируемся на конкретных аспектах Arduino языка, в котором вы можете использовать все принципы, которые присущи языку C: переменные, операторы, состояния, типы, константы и т.д.

Как работают шаговые двигатели

Как работают шаговые двигатели

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

Подключение к ардуино датчика вращения енкодер KY-040

Подключение к ардуино датчика вращения енкодер KY-040

Енкодер вращения KY-040 - это поворотный датчик, который индицирует степень поворота оси и в каком направлении она вращается.

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

Комплект антенн для усиления сигнала FPV для Hubsan H501S H107D

Комплект антенн для усиления сигнала FPV для Hubsan H501S H107D

Специальный комплект для увеличения дистанции при управлении квадрокоптером Hubsan H501S H107D из магазина Алиэкспресс.

Начало работы с Arduino в Windows

Начало работы с Arduino в Windows

Необходимое железо — Arduino и USB-кабель

В этом руководстве предполагается, что вы используете Arduino Uno, Arduino Duemilanove, Nano или Diecimila. 

Вам потребуется также кабель стандарта USB (с разъемами типа USB-A и USB-B): такой, каким, к примеру, подключается USB-принтер. (Для Arduino Nano вам потребуется вместо этого кабель с разъемами А и мини-В).

Так же сейчас популярны стали платы с микро юсб - например от китайских производителей Robotdyn.Они мне больше импонируют со стороны 

универсальности , но как говорят олдфаги - чем больше металла в разъеме ,тем он надежнее ! 

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.

1. Управляем маленькими моторчиками

Управление маленьким двигателем может быть может осуществляться довольно просто. Если двигатель достаточно маленький, он может быть непосредственно соединен с выводом Arduino, и просто изменяя уровень управляющего сигнала от логической единицы до нуля будем контролировать моторчик. Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень - заняться управлением двигателями при помощи транзисторов.

Подключим миниатюрный вибромоторчик к нашему Arduino.

Серводвигатель MG995 и 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 SIM800 MicroSIM с антенной и ардуино

Миниатюрный модуль GSM/GPRS сотовой связи на основе компонента SIM800L , разработанного компанией SIMCom Wireless Solutions. Русскоязычная версия сайта SIMCom здесь. Стандартный интерфейс управления компонента SIM800L предоставляет доступ к сервисам сетей GSM/GPRS 850/900/1800/1900МГц для отправки звонков, СМС сообщений и обмена цифровыми данными GPRS. Поставляется с встроенной антенной, также можно подключить дополнительные антенны для улучшения качества сигнала.

Управлять модулем можно при помощи персонального компьютера через преобразователь интерфейса USB-UART или непосредственно через UART модулем микроконтроллера самостоятельной разработки или Arduino, Raspberry Pi и аналогичными.

Контроль трафика на ардуино - светофор Arduino DIY схема+ код

Контроль трафика на ардуино - светофор Arduino DIY схема+ код

Проектируем :

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

Нам нужно три светодиода красного, желтого и зеленого цветов на каждом перекрестке. Пересечение разделено на четыре полосы: Lane1, Lane 2 Lane 3 и Lane 4.


Установка драйвера CH340 для ардуино arduino и отключение цифровой подписи драйверов для windows

Установка драйвера CH340 для ардуино arduino и отключение цифровой подписи драйверов для windows

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

Автономная "смарт" машина на Arduino + код

Автономная "смарт" машина на Arduino + код

Автономная "смарт" машина на Arduino

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

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

Поворотный стол с фоторезисторами на Arduino

Поворотный стол с фоторезисторами на Arduino

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

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

 Подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Сегодня мы рассмотрим подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Теги: Arduino и шаговый двигатель Nema