☛ 功能说明

利用 Arduino UNO 开发板控制步进马达转动,控制方式为读取可变电阻的电压变化来改变步进马达的转动。步进马达的转动根据每次由可变电阻读取值与前次的值比较,来改变步进马达的转动方向及转动步数。

步进马达简介

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为 ” 步距角 “,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机驱动方式:

⑴ 1 相励磁法:每一瞬间只有一个线圈导通,其他线圈休息。其特点是励磁方法简单,耗电低,精确度良好。但是力矩小、震动大,每次励磁信号走的角度是标称角度。

⑵ 2 相励磁法:每一瞬间有两个线圈同时导通,特点是力矩大、震动较小,每次励磁转动角度是标称角度。

⑶ 1-2 相励磁法:1 相和 2 相轮流交替导通,精度较高,且运转平滑。每送一个励磁信号转动二分之一标称角度。有称为半步驱动。4 相电机中,1、2 种方式称 4 相 4 拍,3 种称 4 相 8 拍。 

1 相励磁、2 相励磁和 1-2 相励磁方式如下表所示。

ULN2003 芯片简介

ULN2003 只能驱动单极电机,也就是有中间抽头,电流只有一个方向流向。双极电机需要 H 桥驱动,每个线圈可以正反向施加电压。

☛ 使用材料

Arduino UNO R3  开发板 × 1、ULN2003 芯片 × 1、步进马达 28BYJ-48 × 1、可变电阻 20KΩ × 1。

☛ 电路图及面包板接线图

☛ 程式码

#include <Stepper.h>                         //使用 Stepper.h 函式库
#define STEPS 512                            //步进马达的步进数

int previous = 0;                            //上一次的读取模拟量

Stepper stepper(STEPS, 2, 4, 3, 5);          //建立 Steeper 资料形态的物件

void setup()
{
     stepper.setSpeed(20);                   //设定步进马达的转速为 20 RPM
}

void loop()
{
     int val = analogRead(0);                //读取 AD 值  
     stepper.step(val - previous);           //把步进值设置为这次和上次读取的差值
     previous = val;                         //记下这次读取值,方便下次比较

}