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

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

ПРОГРАММИРОВАНИЕ В ARDUINO IDE

Программирование для управления шаговым двигателем 28BYJ-48-5V в среде 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-х проводной конструктор класса,
Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); 

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

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

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

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

Вносим изменения в метод void Stepper_28BYJ::step(int steps_to_move)
Заменим строку
stepMotor(this->step_number % 4);

На строку
stepMotor(this->step_number % 8);

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

Изменим метод void Stepper_28BYJ::stepMotor(int thisStep)
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;
	}
}


На этом изменения стандартной библиотеки 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» =>>

Просмотров: 1483

Дата: Четверг, 08 Февраля 2018

Обратите внимание на следующие товары:

Контакты

Телефон магазина:
(499) 796-69-91

"Жулебино"

Схема проезда =>>