Arduino 简明教程
Arduino - Stepper Motor
步进电机是一种无刷同步电机,它将一个完全旋转划分为若干步。与直流无刷电机在施加固定直流电压后持续旋转不同,步进电机以离散的步进角度旋转。
因此,步进电机的每转步数为 12、24、72、144、180 和 200,从而导致每个步的步进角度为 30、15、5、2.5、2 和 1.8 度。可以控制带有或不带有反馈的步进电机。
想象一下遥控飞机上的一个电机。该电机在一个或另一个方向上非常快地旋转。你可以通过提供给电机的功率来改变速度,但你无法告诉螺旋桨在特定位置停止。
现在想象一下打印机。打印机内部有很多运动部件,包括电机。其中一个这样的电机充当送纸器,它旋转辊筒,在纸上打印墨水时移动纸张。该电机需要能够将纸张移动精确的距离,以便能够打印下一行文本或图像的下一行。
连接到螺纹杆的另一个电机来回移动打印头。同样,该螺纹杆需要移动一个精确的量,然后才能依次打印一个字母。这就是步进电机派上用场的地方。
How a Stepper Motor Works?
普通直流电机只能朝一个方向旋转,而步进电机可以以精确的增量旋转。
步进电机可以根据需要旋转精确的角度(或步数)。这使你可以完全控制电机,从而让你可以将它移动到精确的位置并保持该位置。它通过在非常短的时间内为电机内部的线圈供电来实现此目的。缺点是,你必须始终向电机供电,才能使其保持在你所需的位置。
现在,你所需要知道的是:要移动一个步进电机,就是要告诉它向一个方向或另一个方向移动一个确定的步数,并告诉它以什么速度沿该方向移动。步进电机有多种类型。这里描述的方法可用于推断出如何使用教程中未提到的其他电机和驱动器。但是,我们始终建议你查阅你所用的型号的电机和驱动器的说明书和指南。
Arduino Code
/* Stepper Motor Control */
#include <Stepper.h>
const int stepsPerRevolution = 90;
// change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(5);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}