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

Как управлять шаговым двигателем с помощью драйвера A4988 и Arduino

<основной класс="главный сайт" id="главный">

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

Обзор

A4988 — это микрошаговый драйвер для управления биполярными шаговыми двигателями со встроенным преобразователем для простоты эксплуатации. Это означает, что мы можем управлять шаговым двигателем всего двумя контактами от нашего контроллера или одним для управления направлением вращения, а другим для управления шагами.

Драйвер обеспечивает пять различных разрешений шага:полный шаг, половина шага, четверть шага, восемь шагов и шестнадцатый шаг. Кроме того, он имеет потенциометр для регулировки выходного тока, тепловое отключение при перегреве и защиту от перегрузки по току.

Его логическое напряжение составляет от 3 до 5,5 В, а максимальный ток на фазу составляет 2 А, если обеспечивается хорошее дополнительное охлаждение, или 1 А продолжительный ток на фазу без радиатора или охлаждения.

Распиновка драйвера шагового двигателя A4988

Теперь давайте внимательно посмотрим на распиновку драйвера и соединим его с шаговым двигателем и контроллером. Итак, мы начнем с 2 контактов на правой стороне кнопки для питания драйвера, контактов VDD и Ground, которые нам нужны для подключения их к источнику питания от 3 до 5,5 В, и в нашем случае это будет наш контроллер, Arduino. Плата, обеспечивающая 5 В. Следующие 4 контакта предназначены для подключения двигателя. Контакты 1A и 1B будут подключены к одной катушке двигателя, а контакты 2A и 2B — к другой катушке двигателя. Для питания двигателя мы используем следующие 2 контакта, Земля и VMOT, которые нам нужны для подключения к источнику питания от 8 до 35 В, а также нам нужно использовать развязывающий конденсатор емкостью не менее 47 мкФ для защиты платы драйвера от скачков напряжения.

Следующие два вывода, Шаг и Направление — это выводы, которые мы фактически используем для управления движениями двигателя. Вывод Direction управляет направлением вращения двигателя, и нам нужно подключить его к одному из цифровых выводов на нашем микроконтроллере, или, в нашем случае, я подключу его к выводу номер 4 моей платы Arduino.

С помощью вывода Step мы управляем микрошагами двигателя, и с каждым импульсом, отправляемым на этот вывод, двигатель перемещается на один шаг. Это означает, что нам не нужно сложное программирование, таблицы чередования фаз, линии управления частотой и так далее, потому что обо всем позаботится встроенный транслятор драйвера A4988. Здесь мы также должны упомянуть, что эти 2 вывода не подключены к какому-либо внутреннему напряжению, поэтому мы не должны оставлять их плавающими в нашей программе.

Далее идет контакт SLEEP, низкий логический уровень переводит плату в спящий режим для минимизации энергопотребления, когда двигатель не используется.

Затем вывод RESET переводит транслятор в предопределенное исходное состояние. Это исходное состояние или исходное положение микрошага можно увидеть на этих рисунках из таблицы данных A4988. Итак, это начальные положения, с которых запускается двигатель, и они различаются в зависимости от разрешения микрошага. Если состояние входа на этот вывод — низкий логический уровень, все входы STEP будут игнорироваться. Контакт Reset является плавающим контактом, поэтому, если мы не собираемся управлять им в нашей программе, нам нужно подключить его к контакту SLEEP, чтобы перевести его в высокий уровень и включить плату.

Следующие 3 контакта (MS1, MS2 и MS3) предназначены для выбора одного из пяти ступенчатых разрешений в соответствии с приведенной выше таблицей истинности. Эти выводы имеют внутренние подтягивающие резисторы, поэтому, если мы оставим их отключенными, плата будет работать в полношаговом режиме.

Последний, контакт ENABLE, используется для включения или выключения выходов FET. Таким образом, высокий логический уровень будет держать выходы отключенными.

Компоненты, необходимые для этого руководства по Arduino

Вы можете получить компоненты с любого из следующих сайтов:

Схемы схем

Вот полные схемы. Я буду использовать привод в полношаговом режиме, поэтому я оставлю 3 контакта MS отключенными и просто подключу выводы Direction и Step привода к контактам 3 и 4 на плате Arduino, а также к земле и 5 В. контакты для питания платы. Также я буду использовать конденсатор 100 мкФ для развязки и адаптер 12 В, 1,5 А для питания двигателя. Я буду использовать биполярный шаговый двигатель NEMA 17, и его провода A и C будут подключены к контактам 1A и 1B, а провода B и D — к контактам 2A и 2B.

Ограничение тока A4988

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

Однако это уравнение не всегда верно, так как существуют разные производители платы драйвера A4988. Вот демонстрация моего случая:я отрегулировал потенциометр и измерил опорное напряжение 0,6 В. Таким образом, ограничение тока должно быть равно 0,6*2, что равно 1,2 А.

Теперь, поскольку я использую драйвер в полношаговом режиме, и, согласно техническому описанию A4988, в этом режиме ток обмотки может достигать только 70% от предельного тока, 1,2 А * 0,7 будет равняться 0,84 А. Чтобы проверить это, я загрузил простой код, который посылает непрерывный логический высокий уровень на вывод Step (чтобы мы могли лучше видеть ток), и подключил свой счетчик последовательно с одной обмоткой двигателя и включил его. То, что я получил, было 0,5 А, что означает, что уравнение не было правильным для моего случая.

Arduino и код A4988

Вот пример кода. Сначала мы должны определить штифты Step и Direction. В нашем случае это контакты 3 и 4 на плате Arduino, они называются stepPin и dirPin, и в разделе настройки мы должны определить их как выходы.

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); 
    delayMicroseconds(500); 
    digitalWrite(stepPin,LOW); 
    delayMicroseconds(500); 
  }
  delay(1000); // One second delay
  
  digitalWrite(dirPin,LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}
Code language: Arduino (arduino)

В секции цикла сначала мы установим контакт направления в высокое состояние, что позволит двигателю двигаться в определенном направлении. Теперь, используя этот цикл for, мы заставим двигатель совершить один полный оборот. Поскольку драйвер установлен в полношаговый режим, а наш шаговый двигатель имеет угол шага 1,8 градуса или 200 шагов, нам нужно отправить 200 импульсов на шаговый штифт, чтобы совершить один полный оборот. Таким образом, цикл for будет иметь 200 итераций, и каждый раз он будет устанавливать вывод Step в высокое, а затем в низкое состояние для создания импульсов. Между каждым digitalWrite нужно добавить некоторую задержку, от которой будет зависеть скорость мотора.

После этого полного цикла мы сделаем задержку в одну секунду, затем изменим направление вращения, установив dirPin в низкое состояние, и теперь сделаем 2 полных цикла с этим циклом из 400 итераций. В конце есть еще одна секундная задержка. Теперь давайте загрузим код и посмотрим, как он будет работать.

Я сделал еще один пример для этого урока, где я контролирую скорость двигателя с помощью потенциометра. Вот исходный код этого примера:

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4; 

int customDelay,customDelayMapped; // Defines variables
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
 
  digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
  
  customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
  // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
  int customDelay = analogRead(A0); // Reads the potentiometer
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
  return newCustom;  
}Code language: Arduino (arduino)

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

  1. Управление монетоприемником с помощью Arduino
  2. Arduino с Bluetooth для управления светодиодом!
  3. Arduino Nano:управление двумя шаговыми двигателями с помощью джойстика
  4. Управление серводвигателем с помощью Arduino и MPU6050
  5. Как читать температуру и влажность на Blynk с DHT11
  6. Как создавать музыку с помощью Arduino
  7. Управление автомобилем с помощью Arduino Uno и Bluetooth
  8. Как использовать Modbus с Arduino
  9. Управление шаговым двигателем 28BYJ-48 с помощью джойстика
  10. Робот-помощник AI с Arduino и Python