完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、实验目的
1.了解步进电机的工作方式及原理 2.通过编程控制步进电机的正转,反转,加速,减速 二、前言 步进电机是一种将电脉冲转变为角位移的执行机构,通俗一点讲:当步进驱动 器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。可 通过控制脉冲数来控制角位移量,从而达到准确的定位目的,也可通过控制脉冲的 频率来控制电机的转速和加速度;从而达到调速的目的。 三、 实验器件 1.步进电机,分为六线制(MOTOR-STEPPER)和四线制(MOTOR-BISTEPPER) 2.ULN2003(大电流驱动阵列) ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受 50V的电压,输出还可以在高负载电流并行运行。 引脚1:CPU脉冲输入端,端口对应一个信号输出端。 引脚2:CPU脉冲输入端。 引脚3:CPU脉冲输入端。 引脚4:CPU脉冲输入端。 引脚5:CPU脉冲输入端。 引脚6:CPU脉冲输入端。 引脚7:CPU脉冲输入端。 引脚8:接地。 引脚10:脉冲信号输出端,对应7脚信号输入端。 引脚11:脉冲信号输出端,对应6脚信号输入端。 引脚12:脉冲信号输出端,对应5脚信号输入端。 引脚13:脉冲信号输出端,对应4脚信号输入端。 引脚14:脉冲信号输出端,对应3脚信号输入端。 引脚15:脉冲信号输出端,对应2脚信号输入端。 引脚16:脉冲信号输出端,对应1脚信号输入端。 电路基本理论 当步进驱动器接 收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换 相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。通过控制脉 冲个数即可以控制角位移量,从而达到准确定位的目的。控制步进电机的转向,即 给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。 它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。同时通过控制脉冲频 率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机的基本参数: (一)步进电机的静态指标术语 1、相数:产生不同对N、S磁场的激磁线圈对数。常用m表示。 2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A. 3、步距角:对应一个脉冲信号,电机转子转过的角位移用Θ表示,Θ=360°(转子齿数运行拍数),以四相50齿电机为例,四拍运行时步距角为Θ=360°/(450)=1.8°(整步)。 (二)步进电机动态指标术语 1、步距角精度:步进电机每转过一个步距角的实际值与理论值的误差,用百分比表示,误差/步距角*100%,四拍控制5%以内,八拍控制15%以内。 2、电机正反转控制:当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时正转,通电时序为DA-D-CD-C-BC-B-AB-A时为反转。 步进电机的工作原理 步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。 图1是该四相反应式步进电机的工作原理图。 开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0,3号齿对齐,同时,转子的1,4号就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。 当开关SC接通电源时,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2,5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。 六线电机对应的连线标号. 延时函数 这个delay()的时间长短是控制转速的,有一定范围的,在一定范围内,越小越快,超过了的话,电机识别不了脉冲就不转了。延时函数过长,电机动一下停一下,过短则速度快。 电机的选择 MOTOR-STEPPER:步进电机以下是源码 #include #define uchar unsigned char #define uint unsigned int ***it key1 = P1^0; ***it key2 = P1^1; ***it key3 = P1^2; ***it key4 = P1^3; uchar speed=65; uchar code zheng[] = {0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; uchar code fan[] = {0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; void delay1ms(uint t){ char i; while(t--){ for(i=0;i<113;i++); } } void main() { uchar i; while(1){ if (key1==0){ for(i=0;i<8;i++){ P2 = fan; delay1ms(speed); } } if (key2==0){ for(i=0;i<8;i++){ P2 = zheng ; delay1ms(speed); } } if (key3==0){ speed = speed + 5; if (speed>100) speed = 100; } if (key4==0){ speed = speed - 5; if (speed<40) speed = 40; } } } 问题 一开始选错电机,导致电机只朝一个方向移动,与预期结果不合,后换电机,问题得到解决。 后序改进 可以做一个数码管,显示正反转和当前对应的转速. 文章难免有错误之处,恳请留言指正 |
|
|
|
只有小组成员才能发言,加入小组>>
2386 浏览 0 评论
8910 浏览 4 评论
36487 浏览 19 评论
4981 浏览 0 评论
24307 浏览 34 评论
1376浏览 2评论
1630浏览 1评论
2018浏览 1评论
1442浏览 0评论
388浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:11 , Processed in 1.303336 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号