YFROBOT创客社区
标题: Arduino入门教程—拓展实验篇十 驱动步进电机 [打印本页]
作者: AllBlue 时间: 2013-8-29 09:57
标题: Arduino入门教程—拓展实验篇十 驱动步进电机
本帖最后由 AllBlue 于 2013-8-29 16:17 编辑
驱动步进电机
步进电机英文为(stepper motor),它是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。它由一组缠绕在电机固定部件--定子齿槽上的线圈驱动的;通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在齿上的金属丝则叫做绕组、线圈、或相。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
下面为我们实验用的步进电机及驱动板,如图:
[attach]531[/attach]
励磁方式分两种:
1、1相励磁方式:即A-B-C-D每相依次通电。当A相通电时,由于NS相吸引的原因,转子上离A相最近的磁极转动到A相位置,然后B相通电,离B相最近的转子磁极转到B相位置,然后C相D相依次通电,这样转子就一步一步的转动起来通过ABCD依次通电就可以实现转子不停的转动。
2、1-2相励磁方式:即通电方式变为了A-AB-B-BC-C-CA,原理和1相励磁方式相同,不同点当AB相通电时转子转动到AB相之间磁拉力最强的地方。
注:定子:电机中固定的部分叫做定子,如ABCD 四个磁极。 转子:转动的部分。
驱动方式及技术参数:
[attach]524[/attach]
注:歩距角为步进电机每次能转动的最小角度,1-2相励磁方式使转子每步转动的角度才是步距角;1相励磁方式转子每步转动的角度除以2才是步距角。
我们看下电路实物连接图(其中电位器3个引脚分别接GND、+5V、模拟口A0):
[attach]530[/attach]
实物图中的驱动板引脚连接我们看不清楚,下面我们帮大家列出UNO与驱动板引脚的对应关系表格:
arduino引脚 | 驱动板引脚 |
8 | In1 |
9 | In3 |
10 | In2 |
11 | In4 |
+ | +5v |
- | Gnd |
注意UNO引脚9、10和驱动板引脚In3、In2的对应关系!(这是因为官方的库文件写法和我们的驱动方式不一样,有兴趣的可以自己改下官方的库文件)
下面我们来看下官方例程MotorKnob :- /*
- * MotorKnob
- *
- * A stepper motor follows the turns of a potentiometer
- * (or other sensor) on analog input 0.
- *
- * http://www.arduino.cc/en/Reference/Stepper
- * This example code is in the public domain.
- */
- #include <Stepper.h>
- // change this to the number of steps on your motor
- #define STEPS 100
- // create an instance of the stepper class, specifying
- // the number of steps of the motor and the pins it's
- // attached to
- Stepper stepper(STEPS, 8, 9, 10, 11);
- // the previous reading from the analog input
- int previous = 0;
- void setup()
- {
- // set the speed of the motor to 30 RPMs
- stepper.setSpeed(30);
- }
- void loop()
- {
- // get the sensor value
- int val = analogRead(0);
- // move a number of steps equal to the change in the
- // sensor reading
- stepper.step(val - previous);
- // remember the previous value of the sensor
- previous = val;
- }
复制代码将例程烧写入UNO中后,我们调节电位器,会发现步进电机会随着电位器的调节而转动!
例程中还有3个实验,在这里就不一一介绍了,下面我们介绍下,官方库文件的相关语法。
官方步进电机库文件Stepper:
1、Stepper():创建一个Stepper类型变量
语法
Stepper(steps, pin1, pin2)
Stepper(steps, pin1, pin2, pin3, pin4)
参数
steps:设定步进电机的转一圈的步数
pin1, pin2, pin3, pin4:arduino UNO 的引脚编号(分两线、四线;pin3, pin4为可选)。
2、setSpeed():设定步进电机的转速(每分钟转数)
这个函数不会使电机转动,只是设定转速,当调用step()函数才能转动
语法
Stepper: setSpeed(rpms)
参数
Stepper:一个Stepper类型变量rpms:电机在一分钟内的转数(正数)
3、step() :给电机一个特定的步数使其转动,该速度由最近一次调用的 setSpeed() 函数来确定。
(这个函数会产生祖塞 ,也就是说,它会等待,直到电机完成转动并把控制权传递给下一行程序。例如,你对速度进行设置,比如给步进电机设置1 RPM的转速和设置step(100) ,即步进电机以1rpm的转速转100步,此功能将需要整整一分钟来运转。为了更好地控制,保持高速,推荐每一个step()只走几步。 )
语法
Stepper: step(steps)
参数
Stepper:一个Stepper类型变量
steps:电机依据这个步数进行转动,正数为一个方向,负数为反方向(整数)
以上为步进电机的库文件语法,相信几个语法看完,你对上面的程序更加了解,对步进电机的使用更加熟练。
这是官网教程地址:
http://arduino.cc/en/Tutorial/MotorKnob
下面为一下资料,大家下载了解:
驱动板原理图:
[attach]523[/attach]
驱动板用芯片ULN2003英文手册:
[attach]521[/attach]
驱动板用芯片ULN2003中文手册:
[attach]522[/attach]
步进电机原理讲述:
[attach]525[/attach]
作者: active 时间: 2013-9-11 13:33
顶下,想用步进电机拼个自平衡车。
作者: AllBlue 时间: 2013-9-12 09:19
active 发表于 2013-9-11 13:33
顶下,想用步进电机拼个自平衡车。
祝你成功···········做好可以展示出来
作者: yuailong 时间: 2013-9-21 00:53
顶下,想用步进电机拼个自平衡车
作者: devwei095 时间: 2018-6-13 17:43
学习学习,很好的资料
作者: tiantianyouyou 时间: 2019-5-2 08:05
不错不错,学习一下
作者: tiantianyouyou 时间: 2019-5-2 08:06
步进电机的使用更加熟练
作者: tiantianyouyou 时间: 2019-5-4 20:23
学习学习,很好的资料
作者: tiantianyouyou 时间: 2019-5-4 20:31
好资料啊,谢谢分享
作者: lucq7896 时间: 2019-7-17 06:24
正要做这个实验
作者: qqoo 时间: 2021-9-27 20:55
找了好久,终于在这里找到了资料,谢谢楼主
作者: UNO 时间: 2021-9-28 08:16
可以收藏我们论坛,方便后续找资料
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/) |
Powered by Discuz! X3.1 |