新浪博客

[转载]Arduino控制单极(4相6线)步进电机

2013-10-19 01:48阅读:
原文作者:tutu

步进电机具有静态、连续运动、启动、制动的特性。

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

步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。

步进电机大致分三种:永磁式(PM),反应式(VR)和混合式(HB)
混合式(HBハイブリッド型),价格较高,两相电机的步距角(步进角)一般为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72° 。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则‘相数’将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。(步进电机的相数是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同)
而永磁式(PM)的步距角一般为7.5或15度。位置精度低,寿命短,价格较便宜。
反应式电机(VR)价高、转矩(トルク)大、精度较低、噪音大,几乎已经被淘汰。

步进电机的驱动原理是根据输入的脉冲信号 ,每改变一次励磁状态就前进一定角度 (或长度 ) ,若不改变励磁状态则保持一定位置而静止。

这次使用的步进电机为常州万泰(http://www.wantmotor.com.cn/
)的42BYGH801,四相双极6线混合式(HB)
(BYG为感应子式步进电机代号,此外还有57BYG、86BYG、110BYG、(国际标准),而像70BYG、90BYG、130BYG等均为国内标准。)
电机型号 步矩角 机身长 相电压 相电流 相电阻 相电感 静力矩 引线数 转动惯量 定位力矩 重量
Model Step angel ( ° ) Motor Length L(mm) Rate Voltage (V) Rate Current (A) Phase Resistance ( Ω ) Phase Inductance (mH) Holding Torque (g.cm) Lead Wire (NO.) Rotor Inertia (g. c㎡) Detent Torque (g.cm) Motor Weight (kg)
42BYGH801 1.8 48 12 0.4 30 28 3800 6 68 280 0.34
Mechanical Dimensions(外形图)
[转载]Arduino控制单极(4相6线)步进电机
Wiring Diagram(接线图)
[转载]Arduino控制单极(4相6线)步进电机
上图中左为双极驱动Bipolar stepper motors(4线),右为单机驱动Unipolar Stepper Motor(6线)
参见http://arduino.cc/en/Tutorial/MotorKnob
双极驱动电机需要能够控制每个端子的极性,所以驱动电路较复杂(需要H桥电路)。而双极电机只要控制端子的开和关,无需改变极性。
[转载]Arduino控制单极(4相6线)步进电机
1相励磁与2相励磁及双极驱动(バイポーラ駆動)与单机驱动(ユニポーラ駆動)的说明PDF(日文)
http://www.cqpub.co.jp/hanbai/books/37/37331/37331_7syo.pdf#search='ステッピングモーター種類'

二相步进电机和四相步进电机的内部机构没有区别,只是内部引出线的接线方式不同而已。二相电机引出线是4根,四相电机的引出线可以是5根,也可以是6根。除此之外,外表上没有区别。
二相电机只能用两相驱动器驱动,四相电机可以用四相恒压驱动器驱动,也可以用两相恒流驱动器驱动。这就是二相和四相的区别。
[转载]Arduino控制单极(4相6线)步进电机
一些英文规格书上,二相步进电机用Bipolar(双极性)表示,四相步进电机用Unipolar(单极性)表示。
单极性(又称双线或四相),双极性(又称单线或二相)

驱动芯片:ULN2003APG(0.5元左右)或ULN2004(1-2元左右)(放大电路)
控制器:Arduino UNO (2011新版)
传感器:SHARP 2Y0A02 F 83 红外测距传感器
[转载]Arduino控制单极(4相6线)步进电机
[转载]Arduino控制单极(4相6线)步进电机

该图使用Fritzing绘制,下载地址:http://fritzing.org/
fritzing文件下载地址:Stepper_Motor.fz

[转载]Arduino控制单极(4相6线)步进电机

分辨6线单极性步进电机接头
 回收打印机旧电机时最常遇到这种类型的单极性步进电机。6线单极性步进电机通常看起来像是两个单段式电机叠放在一起,每个单段有3根线引出,这种步进电机的引线非常容易分辨。
 分辨6线步进电机引线顺序的工作相当简单。如果它的结构形式是多段式步进电机,那么引线的顺序实际上已经给出了,用数字万用表可以找出每对绕组的公共线。只要保持绕组对的两根引线对应一致,它们的顺序并无关紧要,仅会影响电机的旋转方向而已。
 如果不是多段式的6线步进电机,可以按以下步骤确定绕组对的引线:
 ①使用数字万用表找出每对绕组的公共端。
 ②照上述方法能找出两个绕组对,分隔它们并加以标记。请将其中一个绕组对标记为A和C(也可以是l和3),另一个标记为B和D(也可以是2和4)。在每一对绕组中,哪条引线是何顺序并不重要,只要成对就足够了。

单极性步进电机的步进方式
  单极性步进电机可以来用三种步进方式:单拍、双拍、半拍方式。单拍步进方式是指每次仅给一个绕组通电,结果导致转子旋转,并运动到转子永磁体与具有相反极性的绕组对齐的位置。双拍方式同时给两个绕组通电,这样就导致转子旋转,并在永磁体到达两个通电绕组的中间位置点时平衡。双拍方式的优点是比单拍方式多获得41.4%的输出力矩,不过代价是需要花费后者两倍的能量,因为它有两相绕组同时通电。最后,半拍方式工作时则让两个绕组通电与单个绕组通电方式交替地进行。半拍方式的输出力矩比双拍方式小,随设计不同,在15%——30%之间变化,不过它可以获得双拍方式两倍的步进分辨率(每周两倍的步数)。
由模拟传感器控制步进电机转速的执行代码:
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor根据步进电机每转的步距角数来设定,如这个电机的步距角是1.8
°,那么一周就是200步
// initialize the stepper library on pins 8 through 11:在8~11号引脚上初始化库
Stepper myStepper(stepsPerRevolution, 8,9,10,11);
int stepCount = 0; // number of steps the motor has taken电机已经旋转的步数
void setup() {
// initialize the serial port:初始化串口通信速度为9600位每秒(bps)
Serial.begin(9600);

}
void loop() {
// read the sensor value:读取模拟传感器数值
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:将其映射为0~100的数值
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:设置电机速度,但并不使其旋转
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
// step 1/100 of a revolution:使其旋转1/100步
myStepper.step(stepsPerRevolution/100);
}
}

经测试,使用Arduino 0022版中的MotorKnob stepper_oneRevolution stepper_speedControl三个Examples都能够正常驱动。

单极性步进电机、双极性步进电机及引线数的说明http://www.docin.com/p-17487372.html
相数与引线数的关系:http://hi.baidu.com/%C C%E C%C D%E 2%C C�ky/blog/item/89dff7016a0a1d0b1d958332.html
用万用表测线http://blog.csdn.n

我的更多文章

下载客户端阅读体验更佳

APP专享