使用 Arduino 控制步进电机
步进电机将整个旋转过程分为多个离散步骤,范围从每转 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); }