Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Полнофункциональная библиотека для управления биполярным шаговым двигателем на Arduino

Компоненты и материалы

Arduino UNO 1 шт.
Драйвер двигателя L293D (двухканальный H-мост, Texas Instruments) 1 шт.

Приложения и сервисы

О проекте

Ранее я публиковал библиотеку для униполярных шаговых двигателей. Она идеально управляла скоростью, направлением, числом оборотов, углом поворота и другими параметрами, но только для униполярных двигателей. Биполярные шаговые двигатели также широко используются, поэтому я разработал отдельную библиотеку для них.

Представляю библиотеку bi_polar_Stepper для Arduino, предназначенную для всех типов биполярных шаговых двигателей. Библиотека содержит 9 функций для вращения и управления двигателем по требованиям промышленногоmotion control. Основные возможности:

  1. Управление любым биполярным шаговым двигателем.
  2. Управление направлением вращения.
  3. Точное управление числом оборотов (1, 2, 3, 4…).
  4. Точная установка скорости в об/мин (RPM) с точностью до 95%.
  5. Точный поворот на заданный угол 0–360° с точностью 80–100%.
  6. Совместимость со всеми платами Arduino.
Полнофункциональная библиотека для управления биполярным шаговым двигателем на Arduino

Для использования скопируйте папку bi_polar_Stepper в директорию библиотек Arduino (например, C:\arduino-1.6.7\libraries).

Описание функций библиотеки

  1. bi_polar_Stepper(int pin1, int pin2, int pin3, int pin4) — создаёт экземпляр с указанием пинов Arduino, подключенных к драйверу.
  2. set_step_per_rev(int steps) — задаёт количество шагов на один оборот (угол шага / разрешение). Введите угол шага двигателя для точного управления.
  3. set_RPM(int rpm) — устанавливает скорость в об/мин, двигатель вращается с заданной скоростью (до 95% точности).
  4. rotate_CW() — запускает вращение по часовой стрелке. Для непрерывного вращения вызывайте в цикле.
  5. rotate_CCW() — запускает вращение против часовой стрелки. Для непрерывного — в цикле.
  6. rotate(int dir) — вращает в заданном направлении: 1 — по часовой, 0 — против.
  7. rotate_one_rev(int dir) — поворачивает ровно на 1 оборот в заданном направлении.
  8. rotate_n_rev(int dir, int num) — поворачивает на заданное число оборотов в заданном направлении.
  9. rotate_x_deg(int deg) — поворачивает на заданный угол 0–360° в любую сторону с точностью 80–100%.

Примеры использования

1. Непрерывное вращение в одну сторону на 60 об/мин

#include <bi_polar_Stepper.h>
#define steps 200 // измените под ваш двигатель
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 60;
void setup() {
  Serial.begin(9600);
  Serial.println("bipolar stepper motor library test program");
  my_step_motor.set_step_per_rev(steps);
  my_step_motor.set_RPM(rpm);
  Serial.println("motor rotates clockwise");
}
void loop() {
  my_step_motor.rotate_CW();
}

2. Поочерёдный поворот на 1 оборот по и против часовой стрелки на 30 об/мин

#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
  Serial.begin(9600);
  Serial.println("bipolar stepper motor library test program created by Ashutosh Bhatt");
  my_step_motor.set_step_per_rev(steps);
  my_step_motor.set_RPM(rpm);
}
void loop() {
  Serial.println("motor rotates clockwise");
  my_step_motor.rotate_one_rev(1);
  delay(1000);
  Serial.println("motor rotates anti-clockwise");
  my_step_motor.rotate_one_rev(0);
  delay(1000);
}

3. По часовой на 100 об/мин (2 оборота), против — на 50 об/мин (2 оборота) циклически

#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
  Serial.begin(9600);
  Serial.println("Bipolar stepper motor library test program created by Ashutosh Bhatt");
  my_step_motor.set_step_per_rev(steps);
}
void loop() {
  my_step_motor.set_RPM(100);
  for(i=0;i<100;i++) my_step_motor.rotate(1);
  delay(2000);
  my_step_motor.set_RPM(50);
  for(i=0;i<100;i++) my_step_motor.rotate(0);
  delay(2000);
}

4. 4 оборота по часовой на 20 об/мин, 2 оборота против на 10 об/мин

#include <bi_polar_Stepper.h>
#define steps 200
bi_polar_Stepper my_step_motor(2, 3, 4, 5);
int i;
void setup() {
  Serial.begin(9600);
  Serial.println("Unipolar stepper motor library test program created by Ashutosh Bhatt");
  my_step_motor.set_step_per_rev(steps);
}
void loop() {
  my_step_motor.set_RPM(20);
  my_step_motor.rotate_n_rev(1, 4);
  delay(2000);
  my_step_motor.set_RPM(10);
  my_step_motor.rotate_n_rev(0, 2);
  delay(2000);
}

5. Поворот на 90° по и против часовой стрелки на 30 об/мин

#include <bi_polar_Stepper.h>
#define motor_steps 200
bi_polar_Stepper my_step_motor(8, 9, 10, 11);
int rpm = 30;
void setup() {
  Serial.begin(9600);
  Serial.println("bipolar stepper motor library test program");
  my_step_motor.set_step_per_rev(motor_steps);
  my_step_motor.set_RPM(rpm);
  Serial.println("motor rotates 90 deg back and forth");
}
void loop() {
  my_step_motor.rotate_x_deg(90);
  delay(2000);
  my_step_motor.rotate_x_deg(270); // 270° против = 90° по часовой с другой стороны
  delay(2000);
}

Примечание: Для двигателей с большим током и напряжением вместо L293D можно использовать L298 или комплект из 4 отдельных транзисторов Дарлингтона (TIP122, TIP142 и др.).

Библиотека и примеры тестировались на:

Код библиотеки

Библиотека управляет RPM, направлением, оборотами, углом поворота всех типов биполярных шаговых двигателей с точностью 95%.

Нет предпросмотра (только скачивание).

Схемы

Эта схема управляет RPM, направлением, углом поворота, числом оборотов биполярного шагового двигателя.

Полнофункциональная библиотека для управления биполярным шаговым двигателем на Arduino

Производственный процесс

  1. Двигатели переменного магнитного сопротивления: типы, работа и применение
  2. Шаговые двигатели: типы, характеристики и практические применения
  3. Интегрированные драйверы упрощают дизайн высокомощных шаговых двигателей
  4. Sensor Telemetry 2.0.1 — продвинутый мониторинг температуры с Azure IoT Hub
  5. Raspoulette: Прототип солнечной автономной системы двери курятника
  6. DIY автономная турель Nerf — умный Nerf-пушка на шаговых двигателях, камере и Arduino
  7. Автоматизированный свайпер для Tinder и Bumble на Arduino UNO и шаговом двигателе
  8. Сервоприводы vs Шаговые двигатели: проясняем современную серую зону
  9. Понимание линейных моторов: от электрической энергии к точному линейному движению
  10. Серводвигатели: принцип работы и значение