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

Arduino библиотека AccelStepper для шагового двигателя HobbyTech

Библиотека AccelStepper для Arduino позволяет управлять шаговыми двигателями и, в отличие от стандартной библиотеки Stepper, имеет следующие преимущества:

  • поддержка ускорения и замедления
  • поддержка одновременной работы нескольких шаговых двигателей с независимой работой каждого
  • неблокирующие функции
  • поддержка различных типов шаговых двигателей и микрошаговых режимов
  • поддержка Adafruit Motor Shield
  • поддержка SparkFun EasyDriver
  • поддержка очень маленьких скоростей
  • поддержка подклассов

Последнюю версию документации можно загрузить по ссылке (eng).

Рассмотрим основные функции библиотеки AccelStepper:

Определение и конфигурация моторов

Шаговый двигатель, управляемый выделенной платой.

Биполярный шаговый двигатель, управляемый Н-мостом.

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

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

Установка ускорения, в шагах в секунду за секунду.

Управление положением

Переместиться в абсолютно указанное положение. Само движение запускается функцией run().

Переместиться в относительно указанное положение. Само движение запускается функцией run(). Значение distance может быть больше или меньше нуля.

Вернуть текущее абсолютное положение.

Вернуть расстояние до указанного положения. Может использоваться для проверки, достиг ли двигатель указанной конечной точки.

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Начать движение и подождать когда двигатель достигнет указанной точки. Функция не осуществляет возврата пока двигатель не остановится.

Управление скоростью

Установить скорость в шагах за секунду. Само движение запускается функцией runSpeed().

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Читайте также:  Почему появляются рывки на Hyundai Accent причины; Taxi Bolt

Пример использования библиотеки AccelStepper

В нашем примере шаговые двигатели подключены к плате Arduino Uno через драйверы A4988.

Шаговый двигатель

Настройка тока на драйверах шагового двигателя

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

Шаг — угол шага бывает 1,8 град (200 шагов), 5.625 Градусов (64 шага), 7.2 градуса (50 шагов)

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

Количество фаз — количество контактов/проводов у шагового двигателя

  1. Биполярный двигатель — это наиболее простая конфигурация с 4 — мя выводами.
  2. Униполярный двигатель (5 или 6 контактов). Позволяет легко изменить магнитные полюса. Запитав сначала один вывод обмотки, а затем другой — мы изменяем магнитные полюса. Основным недостатком является то, что каждый раз, используется только половина доступных катушечных обмоток.
  3. 8-выводной шаговый двигатель может быть подключен любым из возможных способов:
    • 5 или 6-выводной униполярный,
    • биполярный с последовательно соединенными обмотками,
    • биполярный с параллельно соединенными обмотками,
    • биполярный с одним подключением на фазу для приложений с малым потреблением тока

Драйвер для шагового двигателя

Схема соединений шагового двигателя и Arduino

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

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

Схема подключения шаговый двигатель -EasyDriver -Arduino

Схема подключения шаговый двигатель -EasyDriver -Arduino

Программа для вращения шагового двигателя — EasyDriver и Arduino

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

digitalWrite(dirpin, LOW); // Устанавливаем направление

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

    Похожие записи

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Советы для начинающих. Arduino и шаговый двигатель Nema 17

Перед началом очередного проекта на Arduino, было решено использовать шаговый двигатель Nema 17.

Почему именно Nema 17? В первую очередь, из-за отличного соотношения цена/качество.

Перед подключением Nema 17, за плечами был определенный опыт работы с шаговиком 24byj48 (даташит). Управлялся он и с помощью Arduino, и с помощью Raspberry pi, проблем не возникало. Основная прелесть этого двигателя — цена (около 3 долларов в Китае). Причем, за эту сумму вы приобретаете двигатель с драйвером в комплекте. Согласитесь, такое можно даже и спалить, не особо сожалея о содеянном.

Читайте также:  Замена ламп в Kia Sportage 3 (; ) SL Автомобиль мечты

Теперь появилась задача поинтереснее. Управлять шаговым двигателем 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и запущен, но.

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

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

Читайте также:  Предохранитель прикуривателя киа спектра Kia

Программа для 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

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

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

Ссылка на основную публикацию
Тюнинг уаз хантер под гелендваген
Дерзкий бюджетник УАЗ Хантер в премиальном тюнинге - – автомобильный журнал Легендарный отечественный внедорожник, выпускающийся с небольшими изменениями с 1972...
Треугольные рычаги на приору плюсы и минусы
Подрамник на Приору - цена, производители, назначение Доработка автомобиля, улучшает его характеристики и комфорт,это хороший стимул для применения конструкторской мысли....
Тюнинг уаз хантер под гелендваген
Дерзкий бюджетник УАЗ Хантер в премиальном тюнинге - – автомобильный журнал Легендарный отечественный внедорожник, выпускающийся с небольшими изменениями с 1972...
Управление шаговым двигателем arduino кнопками
Arduino библиотека AccelStepper для шагового двигателя HobbyTech Библиотека AccelStepper для Arduino позволяет управлять шаговыми двигателями и, в отличие от стандартной...

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

Arduino библиотека AccelStepper для шагового двигателя HobbyTech

Библиотека AccelStepper для Arduino позволяет управлять шаговыми двигателями и, в отличие от стандартной библиотеки Stepper, имеет следующие преимущества:

  • поддержка ускорения и замедления
  • поддержка одновременной работы нескольких шаговых двигателей с независимой работой каждого
  • неблокирующие функции
  • поддержка различных типов шаговых двигателей и микрошаговых режимов
  • поддержка Adafruit Motor Shield
  • поддержка SparkFun EasyDriver
  • поддержка очень маленьких скоростей
  • поддержка подклассов

Последнюю версию документации можно загрузить по ссылке (eng).

Рассмотрим основные функции библиотеки AccelStepper:

Определение и конфигурация моторов

Шаговый двигатель, управляемый выделенной платой.

Биполярный шаговый двигатель, управляемый Н-мостом.

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

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

Установка ускорения, в шагах в секунду за секунду.

Управление положением

Переместиться в абсолютно указанное положение. Само движение запускается функцией run().

Переместиться в относительно указанное положение. Само движение запускается функцией run(). Значение distance может быть больше или меньше нуля.

Вернуть текущее абсолютное положение.

Вернуть расстояние до указанного положения. Может использоваться для проверки, достиг ли двигатель указанной конечной точки.

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Начать движение и подождать когда двигатель достигнет указанной точки. Функция не осуществляет возврата пока двигатель не остановится.

Управление скоростью

Установить скорость в шагах за секунду. Само движение запускается функцией runSpeed().

Начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.

Читайте также:  Как активировать карту Татнефть

Пример использования библиотеки AccelStepper

В нашем примере шаговые двигатели подключены к плате Arduino Uno через драйверы A4988.

Шаговый двигатель

Настройка тока на драйверах шагового двигателя

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

Шаг — угол шага бывает 1,8 град (200 шагов), 5.625 Градусов (64 шага), 7.2 градуса (50 шагов)

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

Количество фаз — количество контактов/проводов у шагового двигателя

  1. Биполярный двигатель — это наиболее простая конфигурация с 4 — мя выводами.
  2. Униполярный двигатель (5 или 6 контактов). Позволяет легко изменить магнитные полюса. Запитав сначала один вывод обмотки, а затем другой — мы изменяем магнитные полюса. Основным недостатком является то, что каждый раз, используется только половина доступных катушечных обмоток.
  3. 8-выводной шаговый двигатель может быть подключен любым из возможных способов:
    • 5 или 6-выводной униполярный,
    • биполярный с последовательно соединенными обмотками,
    • биполярный с параллельно соединенными обмотками,
    • биполярный с одним подключением на фазу для приложений с малым потреблением тока

Драйвер для шагового двигателя

Схема соединений шагового двигателя и Arduino

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

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

Схема подключения шаговый двигатель -EasyDriver -Arduino

Схема подключения шаговый двигатель -EasyDriver -Arduino

Программа для вращения шагового двигателя — EasyDriver и Arduino

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

digitalWrite(dirpin, LOW); // Устанавливаем направление

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

    Похожие записи

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Советы для начинающих. Arduino и шаговый двигатель Nema 17

Перед началом очередного проекта на Arduino, было решено использовать шаговый двигатель Nema 17.

Почему именно Nema 17? В первую очередь, из-за отличного соотношения цена/качество.

Перед подключением Nema 17, за плечами был определенный опыт работы с шаговиком 24byj48 (даташит). Управлялся он и с помощью Arduino, и с помощью Raspberry pi, проблем не возникало. Основная прелесть этого двигателя — цена (около 3 долларов в Китае). Причем, за эту сумму вы приобретаете двигатель с драйвером в комплекте. Согласитесь, такое можно даже и спалить, не особо сожалея о содеянном.

Читайте также:  Как Нарисовать Бмв Е34 Карандашом Поэтапно Для Детей

Теперь появилась задача поинтереснее. Управлять шаговым двигателем 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и запущен, но.

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

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

Читайте также:  Предохранитель прикуривателя киа спектра Kia

Программа для 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

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

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

Ссылка на основную публикацию
Тюнинг уаз хантер под гелендваген
Дерзкий бюджетник УАЗ Хантер в премиальном тюнинге - – автомобильный журнал Легендарный отечественный внедорожник, выпускающийся с небольшими изменениями с 1972...
Треугольные рычаги на приору плюсы и минусы
Подрамник на Приору - цена, производители, назначение Доработка автомобиля, улучшает его характеристики и комфорт,это хороший стимул для применения конструкторской мысли....
Тюнинг уаз хантер под гелендваген
Дерзкий бюджетник УАЗ Хантер в премиальном тюнинге - – автомобильный журнал Легендарный отечественный внедорожник, выпускающийся с небольшими изменениями с 1972...
Управление шаговым двигателем arduino кнопками
Arduino библиотека AccelStepper для шагового двигателя HobbyTech Библиотека AccelStepper для Arduino позволяет управлять шаговыми двигателями и, в отличие от стандартной...
Adblock detector