使用 Arduino 控制步进电机

arduinoarduino boardsarduino idearduino programming language

步进电机将整个旋转过程分为多个离散步骤,范围从每转 12 步到 200 步(对应于每步 30 度到每步 1.8 度的角度)。直流电机连续旋转,而步进电机则以步进角离散旋转。

电路图

单极和双极步进电机的电路图和所需组件可在此处找到 − https://www.arduino.cc/en/Tutorial/LibraryExamples/StepperOneRevolution

请注意,步进电机通过达林顿阵列(用于单极步进电机)或 H 桥(用于双极步进电机)连接到 Arduino Uno 的 8-11 引脚。步进电机使用外部电源供电,因为它消耗的电量太多,无法直接从 Arduino 板供电。

代码演练

我们将演练示例代码。转到文件 → 示例 → 步进电机 → stepper_oneRevolution

或者,可以在 GitHub 上找到代码 − https://github.com/arduinolibraries/Stepper/blob/master/examples/stepper_oneRevolution/stepper_oneRevolution.ino

通过此代码,我们使步进电机朝一个方向旋转一圈,朝相反方向旋转一圈。

我们首先包含 Stepper 库并定义每圈的步数(根据步进电机的规格进行更改)

#include <Stepper.h>

const int stepsPerRevolution = 200;

接下来,我们使用stepsPerRevolution和连接到步进电机的Arduino的四个引脚初始化Stepper对象。

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

在设置中,我们以RPM为单位设置步进电机的速度,并初始化串行。

void setup() {
   // 将速度设置为60 rpm:
   myStepper.setSpeed(60);
   // 初始化串行端口:
   Serial.begin(9600);
}

在循环中,我们让电机朝一个方向每转stepsPerRevolution,然后朝相反方向每转stepsPerRevolution(只需添加一个负号)

void loop() {
   // 朝一个方向每转一圈:
   Serial.println("clock");
   myStepper.step(stepsPerRevolution);
   delay(500);

   // 朝另一个方向每转一圈:
   Serial.println("counterclockwise");
   myStepper.step(-stepsPerRevolution);
   delay(500);
}

相关文章