设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10571|回复: 4

Arduino入门教程—拓展实验篇十 驱动步进电机

[复制链接]

签到天数: 431 天

[LV.9]以坛为家II

发表于 2013-8-29 09:57:03 | 显示全部楼层 |阅读模式
本帖最后由 AllBlue 于 2013-8-29 16:17 编辑

驱动步进电机

步进电机英文为(stepper motor),它是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。它由一组缠绕在电机固定部件--定子齿槽上的线圈驱动的;通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在齿上的金属丝则叫做绕组、线圈、或相。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

下面为我们实验用的步进电机及驱动板,如图:

步进电机和驱动板.jpg

励磁方式分两种:

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 四个磁极。 转子:转动的部分
驱动方式及技术参数:
步进电机参数.jpg
:歩距角为步进电机每次能转动的最小角度,1-2相励磁方式使转子每步转动的角度才是步距角;1相励磁方式转子每步转动的角度除以2才是步距角

我们看下电路实物连接图(其中电位器3个引脚分别接GND、+5V、模拟口A0):
步进电机电路图1.jpg
实物图中的驱动板引脚连接我们看不清楚,下面我们帮大家列出UNO与驱动板引脚的对应关系表格:
arduino引脚
驱动板引脚
8
In1
9
In3
10
In2
11
In4
+
+5v
-
Gnd
注意UNO引脚9、10和驱动板引脚In3、In2的对应关系!(这是因为官方的库文件写法和我们的驱动方式不一样,有兴趣的可以自己改下官方的库文件)

下面我们来看下官方例程MotorKnob
  1. /*
  2. * MotorKnob
  3. *
  4. * A stepper motor follows the turns of a potentiometer
  5. * (or other sensor) on analog input 0.
  6. *
  7. * http://www.arduino.cc/en/Reference/Stepper
  8. * This example code is in the public domain.
  9. */

  10. #include <Stepper.h>

  11. // change this to the number of steps on your motor
  12. #define STEPS 100

  13. // create an instance of the stepper class, specifying
  14. // the number of steps of the motor and the pins it's
  15. // attached to
  16. Stepper stepper(STEPS, 8, 9, 10, 11);

  17. // the previous reading from the analog input
  18. int previous = 0;

  19. void setup()
  20. {
  21.   // set the speed of the motor to 30 RPMs
  22.   stepper.setSpeed(30);
  23. }

  24. void loop()
  25. {
  26.   // get the sensor value
  27.   int val = analogRead(0);

  28.   // move a number of steps equal to the change in the
  29.   // sensor reading
  30.   stepper.step(val - previous);

  31.   // remember the previous value of the sensor
  32.   previous = val;
  33. }
复制代码

将例程烧写入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


下面为一下资料,大家下载了解:
驱动板原理图:

步进电机驱动板原理图.pdf (39.68 KB, 下载次数: 187)

该用户从未签到

发表于 2013-9-11 13:33:35 | 显示全部楼层
顶下,想用步进电机拼个自平衡车。
回复 支持 反对

使用道具 举报

签到天数: 431 天

[LV.9]以坛为家II

 楼主| 发表于 2013-9-12 09:19:16 | 显示全部楼层
active 发表于 2013-9-11 13:33
顶下,想用步进电机拼个自平衡车。

祝你成功···········做好可以展示出来
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-9-21 00:53:44 | 显示全部楼层
顶下,想用步进电机拼个自平衡车
回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2017-2-24 09:18:42 | 显示全部楼层
学习学习,很好的资料
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135  

GMT+8, 2017-4-27 11:15 , Processed in 0.391899 second(s), 27 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表