Звоните нам!
Звоните нам!
Связаться с нами
zakaz@robot-kit.ru
Москва, Жулебинский бульвар д.36 корп.1
Пн-Пт 11:00–19:00
Сб-Вс 11:00–17:00
0Избранное0Сравнить
0Корзина пуста

Корзина

Ваша корзина пуста

Каталог товаров
0Избранное0Сравнить
0Корзина пуста

Корзина

Ваша корзина пуста

Подключение шагового двигателя 28BYJ-48-5V к Arduino. Часть 3.

Программирование для управления шаговым двигателем 28BYJ-48-5V в среде ARDUINO IDE.

В предыдущей статье =>> мы подробно разобрали свойства шагового двигателя 28BYJ-48-5V, драйвера на базе ULN2003 и их подключение к плате Arduino.

ПРОГРАММИРОВАНИЕ В ARDUINO IDE
Библиотеки для управления шаговыми двигателями в ARDUINO IDE.

1. Библиотека Stepper - программная библиотека входит в стандартную среду разработки Arduino IDE. Библиотека Stepper предназначенная для работы с шаговыми двигателями без редуктора. Библиотека Stepper поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Предназначена для решения простых задач при управлении одним двигателем.

Если Вы установили среду Arduino IDE, библиотека Stepper у Вас уже есть.
Но все же приводим ссылку для скачивания.

Посмотреть/скачать последнюю версию библиотеки Stepper бесплатно =>>

Применение библиотеки Stepper для управления шаговым двигателем 28BYJ-48-5V является не самым эффективным решением. Но на ее основе можно написать собственную библиотеку для Arduino IDE.

2. Библиотека AccelStepper. Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48-5V (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.

  • Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей
  • Поддержка ускорения и замедления
  • Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора
  • Функции API не используют функцию delay и не прерывают работу
  • Поддержка выбора функции для реализации шага позволяет работать совместно с библиотекой AFMotor
  • Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967)
  • Поддержка низких скоростей
  • Расширяемый API
  • Поддержка подклассов

Данная библиотека не входит в стандартную среду разработки Arduino IDE.

Посмотреть/скачать последнюю версию библиотеки AccelStepper бесплатно =>>

3. Библиотека CustomStepper– библиотека может быть использована для управления различными шаговиками, но настройки по умолчанию для шагового двигателя 28BYJ-48-5V.
Данная библиотека не входит в стандартную среду разработки Arduino IDE.

Посмотреть/скачать последнюю версию библиотеки CustomStepper бесплатно =>>

4. Собственная библиотека для управления шаговым двигателем 28BYJ-48

Посмотреть/скачать версию библиотеки Stepper_28BYJ (архив zip 9.9 КБ) бесплатно =>>

За основу берется стандартная библиотека Stepper среды Arduino IDE. 

Именно этот пример мы рассмотрим подробно.

Но сначала вернемся еще раз к режимам работы шагового двигателя 28BYJ 48.

Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.

  • Полношаговый режим — за 1 такт, ротор делает 1 шаг.
  • Полушаговый режим — за 1 такт, ротор делает ½ шага.

Библиотека Stepper, стандартная библиотека среды Arduino IDE, поддерживает только полношаговый метод управления мотором.

Таблица последовательности тактов:

Мы реализуем в примере полушаговую схему коммутации двигателя 28BYJ-48.


Таблица последовательности тактов:

Приступаем к написанию библиотеки (модификации стандартной библиотеки Stepper).

Смотрим состав библиотеки Stepper

  • Stepper.cpp
  • Stepper.h
  • keywords.txt
  • папка с примерами использования библиотеки

Создаём новую папку. Называем её Stepper_28BYJ (расположение папки на данный момент не важно).

Копируем файлы в нашу новую папку.

Переименовываем файлы Stepper.h в Stepper_28BYJ.h и Stepper.cpp в Stepper_28BYJ.cpp

Вносим следующие изменения в файл Stepper_28BYJ.h

Все вхождения Stepper заменяем на Stepper_28BYJ (тут очень поможет команда Ctrl+H любого текстового редактора).

Так подключается конкретный шаговый двигатель 28BYJ-48-5V с использованием 4-х проводов, удаляем 2-х проводной конструктор класса,

<font color="#993300">Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); </font>

а так же переменную, которая в библиотеке Stepper использовалась для запоминания, каким конструктором экземпляр класса был создан.

<font color="#993300">int pin_count;</font>

В файле Stepper_28BYJ.cpp производим замену с использованием Ctrl+H. У нас должна получиться библиотека которая от стандартной отличается только названием класса.

Удаляем реализацию 2-х проводного конструктора.

В 4-x проводном конструкторе удаляем сроку, которая инициализирует переменную pin_count, так как мы её не используем.

<font color="#993300">this->pin_count = 4;</font>

Вносим изменения в метод void Stepper_28BYJ::step(int steps_to_move)

Заменим строку

<font color="#993300">stepMotor(this->step_number % 4);</font>

На строку

<font color="#993300">stepMotor(this->step_number % 8);</font>

Так как используем полушаговый режим работы шагового двигателя 28BYJ-48, а он различает 8 различных состояний управляющих сигналов.

Изменим метод void Stepper_28BYJ::stepMotor(int thisStep)

<font color="#993300">void Stepper_28BYJ::stepMotor(int thisStep)
{
    switch (thisStep) {
        case 0:    // 0001
            digitalWrite(motor_pin_1, LOW);
            digitalWrite(motor_pin_2, LOW);
            digitalWrite(motor_pin_3, LOW);
            digitalWrite(motor_pin_4, HIGH);
        break;
        case 1:    // 0011
            digitalWrite(motor_pin_1, LOW);
            digitalWrite(motor_pin_2, LOW);
            digitalWrite(motor_pin_3, HIGH);
            digitalWrite(motor_pin_4, HIGH);
        break;
        case 2:    //0010
            digitalWrite(motor_pin_1, LOW);
            digitalWrite(motor_pin_2, LOW);
            digitalWrite(motor_pin_3, HIGH);
            digitalWrite(motor_pin_4, LOW);
        break;
        case 3:    //0110
            digitalWrite(motor_pin_1, LOW);
            digitalWrite(motor_pin_2, HIGH);
            digitalWrite(motor_pin_3, HIGH);
            digitalWrite(motor_pin_4, LOW);
        break;
        case 4:    // 0100
            digitalWrite(motor_pin_1, LOW);
            digitalWrite(motor_pin_2, HIGH);
            digitalWrite(motor_pin_3, LOW);
            digitalWrite(motor_pin_4, LOW);
        break;
        case 5:    // 1100
            digitalWrite(motor_pin_1, HIGH);
            digitalWrite(motor_pin_2, HIGH);
            digitalWrite(motor_pin_3, LOW);
            digitalWrite(motor_pin_4, LOW);
        break;
        case 6:    //1000
            digitalWrite(motor_pin_1, HIGH);
            digitalWrite(motor_pin_2, LOW);
            digitalWrite(motor_pin_3, LOW);
            digitalWrite(motor_pin_4, LOW);
        break;
        case 7:    //1001
            digitalWrite(motor_pin_1, HIGH);
            digitalWrite(motor_pin_2, LOW);
            digitalWrite(motor_pin_3, LOW);
            digitalWrite(motor_pin_4, HIGH);
        break;
    }
}
</font>

На этом изменения стандартной библиотеки Stepper можно считать законченным.

Небольшое замечание к примерам использования библиотеки:

В описании шагового двигателя сказано, что коэффициент деления редуктора равен 64. В редукторе скорость вращения вала самого двигателя понижается 4 раза со следующими коэффициентами - 32/9, 22/11, 26/9 и 31/10. Перемножив данные дроби, получаем число 63,6839506173. Если пересчитать количество шагов на 1 полный оборот вала, то получим, 360 градусов /(5,625 градусов/63,6839506173)=4075,7728395062. Поэтому в примерах я использовал число 4076.

Посмотреть/скачать версию библиотеки Stepper_28BYJ (архив zip 9.9 КБ) бесплатно =>>

Установить библиотеку Stepper_28BYJ в среду Arduino IDE Вам поможет статья «Установка библиотек в Arduino IDE» =>>

Рекомендуемые товары
0Избранное
Товар в избранных
0Сравнение
Товар в сравнении
0Просмотренные
0Корзина
Товар в корзине