单片机控制步进电机论文设计

上传人:m**** 文档编号:51898020 上传时间:2022-02-07 格式:DOC 页数:29 大小:643.50KB
收藏 版权申诉 举报 下载
单片机控制步进电机论文设计_第1页
第1页 / 共29页
单片机控制步进电机论文设计_第2页
第2页 / 共29页
单片机控制步进电机论文设计_第3页
第3页 / 共29页
资源描述:

《单片机控制步进电机论文设计》由会员分享,可在线阅读,更多相关《单片机控制步进电机论文设计(29页珍藏版)》请在装配图网上搜索。

1、单片机原理与应用技术课程设计论文单片机控制步进电机组 长:组 员:专业班级:电子信息工程 1401 班学 期: 2015-2016 年第二学期 指导教师:东北农业大学电子信息工程系2016年 06 月课程设计小组成员分工明细姓名负责课程设计容(组长)负责绘制电路原理图完成仿真制作PPT(组员)查找相关资料修改调试代码修改论文(组员)查找相关资料撰写论文修改PPT目录1摘要11设计任务要求22设计方案23设计原理 33.1步进电机工作原理 33.2系统设计原理 44硬件设计 55软件设计66 Proteus仿真条件与仿真结果 137总结138参考文献139附录149.1系统完整仿真电路图 149

2、.2系统汇编语言程序源代码 14摘要本次课程设计是通过单片机对步进电机进行控制,通过控制其步 数实现对其步进角度的控制。 我们采用了键盘扫描的方法判断其要转 动的步数, 并控制步进电机的转动及其转动方向。 还采用了温度采集 及报警模块防止其过热而产生损耗。通过 Keil 软件的程序编写及 Protues 软件的仿真,基本达到了课设的要求。关键字:单片机 步进电机 步数 步进角度 键盘扫描 温度采集1. 设计任务要求采用单片机控制一个三相单三拍的步进电机工作。步进电机的旋 转方向由正反转控制信号控制。 步进电机的步数由键盘输入, 可输入 的步数分别为 3、6、9、12、15、18、21、24 和

3、 27 步,且键盘具有 键盘锁功能,当键盘上锁时, 步进电机不接受输入步数, 也不会运转。 只有当键盘锁打开并输入步数时,步进电机才开始工作。电机运转的时候有正转和反转指示灯指示。电机在运转过程中,如果过热,则电机停止运转,同时红色指示 灯亮,同时警报响。本题目的关键之处是:如何生成控制步进电机的脉冲序列。2. 设计方案用单片机(AT89C51为主芯片设计电路来控制四相步进电机以四 相八拍方式工作。1. 设两个按键,分别作开关键盘,左转、右转控制;2. 设 9个触电按键分别控制输入的步数为 3、6、9、12、15、18、21、 24和 27步;3. 设置三个发光二极管分别指示其旋转方向(正转,

4、反转)及温度报 警。4. 使用DS18B20温度传感器感测温度;5. 使用ULN2003A芯片驱动步进电机工作。3. 设计原理: 3.1步进电机的工作原理该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电, 就能使步进电机步进转动。图1是该四相反应式步进电机,图 2是四相步进电机结构示意图。开始时,开关SB接通电源,SA SC SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D A相绕组磁极产生错齿。当开关SC接通电源,SB SA SD断开时,由于C相绕组的磁力 线和1、4号齿之间磁力线的作用,

5、使转子转动,1、4号齿和C相绕 组的磁极对齐。而0、3号齿和A B相绕组产生错齿,2、5号齿就 和A、D相绕组磁极产生错齿。依次类推,A、B、C D四相绕组轮流 供电,则转子会沿着A、B、C D方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八 拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力 矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c 所示:餘冲 jWLAmuuuinrLTin_TL_ri ns j_n_ru cts n n n

6、juiruLFinrLRnimjT- rn_rr_ru J-LTLTL UTL_TL_n n_n_n_rjmruwwuuvtnnnnrn_m_a.单四拍b.双四拍c.八拍图2步进电机工作时序波形图3.2系统设计原理该系统采用的芯片有:DS18B20温度传感器、ULN2003A以及四相 六线步进电机,并且步进电机在双八拍的方式下工作,步矩设置为 5。步进电机的旋转方向由正反转控制信号控制。步进电机的步数 由键盘输入,可通过独立键盘S1S9输入的步数分别为3、6、9、12、15、18、21、24和27步对应的角度为15、30、135, 且键盘S10具有键盘锁功能,当键盘按键时,通过键盘S11选择运

7、转 方向并且输入步数时,步进电机才开始工作;否则,步进电机不接受 输入步数,也不会运转。电机运转的时候有正转指示灯 D2和反转指示灯D3指示。电机在运转过程中用温度传感器采集步进电机外表温度(可设 置),如果过热,则电机停止运转,同时红色指示灯亮,同时蜂鸣器 警报响。4. 硬件设计4.1最小单片机系统4DP1Ito1.1EQD山EVJ內PJ.4C1EQ3TIJ一一 HidFl AT聆呂11 F(l 5HIT*F 兀EBBRjTFFALEfH ?J码二PFTNfjjrtNTpzjrrijP狛 4Pl勺1 I i I 1 I . J I ! I J -* - - - 1 - : - - - 15V

8、电源:给系统供电。复位电路:使AT89C51从程序存储器的0000H单元开始执行程序。 晶振:给单片机运行提供时钟。EA接高电平:表示运行部程序存储器下载的程序。P0 口接排阻:P0 口作为通用的I/O使用需加上拉电阻,这时为准双向口4.2键盘设计sirrIr41PlyPL1更PTJPT4匹白pT?TOGND该电路中采用独立键盘工作方式,共设有 11个按键,分别提供3、6 9、12、15、18、21、24、27布局选择功能、键盘锁功能以及步进电机转动方向选择功能。其中有程序决定起作用4.3步进电机及其驱动电路采用ULN2003A芯片为驱动电路驱动四相电机工作。芯片的四个引脚分别以逆 时针方式连

9、接步进电机对应引脚。4.4温度监测及报警系统使用DS18B20传感器感测温度,当温度高于预设温度时,发光二极管点亮,蜂 鸣器报警。5软件设计软件设计采用汇编语言编写控制程序,主要由以下几个模块组成5.1主函数模块:该模块重要功效是调动温度采集函数、步进电机函数中函数,实现模块化编程。5.2温度检测及报警模块:该模块的重要功效是对步进电机的外表采集温度,并且对已设定 好的数值进行比较, 从而确定机身温度是否过高, 正常时电机正常转 动,当温度过高时电机不再转动,并且蜂鸣器报警,红灯点亮。5.3 键盘扫描模块: 通过键盘扫描模块判断所要走步数,控制步进电机的开关,改变 步进电机的转向。5.4 步进

10、电机驱动模块: 通过单片机的定时器,通过控制延时时间控制转速;在10ms 过后执行中断程序,即使步进电机转动。各模块程序流程图如下:步进电机驱动程序:开始定时器初始化定时器开始计时是否达到是10ms停止是否有步数按下是步进电机转步数减1步数为零键盘扫描模块:步进电机转一步流程图:开始基址取反转数组首地 址,加拍序数即为要 取数温度检测及报警模块:结束主函数模块流程图:开始初始化程序报警、红灯亮、步进电机停电机转动是A6. 仿真条件及结果:仿真条件: 打开元器件单片机属性窗口,在“ Program File ”栏中添加上面编译 好的目标代码文件“ step.hex ”。在“ Clock Freq

11、uency ”栏中输入晶 振频率为 11.0592MHz。仿真结果:按下S10,打开步进电机,每按下3, 6, 9, 1227键,步进电机 反转,转动-15 , -30-135度角;当按下一次S11,步进电机正转, 再按一次,步进电机反转,以此类推。当温度超过 31 度时,步进电 机停止工作,此时发光二极管变亮,蜂鸣器报警。7. 总结:在做课程设计期间,我们得到了周修理老师的指导和原浩强同学 的帮助,在此一并感。本次课程设计,不仅使我们了解并掌握了步进电机的用法,而且 让我们对利用单片机实现控制功能有了更加深刻的理解。 极大的锻炼 了我们的能力, 尤其是理论与实践相结合的能力。 在未来电子信息

12、行 业的竞争中,我们只有尽早将理论应用于实践, 才能更好地理解理论, 才能由此不断创新, 在竞争中拔得头筹。 今后我们将会把精力更多地 放在动手能力的培养上。我们还懂得了, 做学问就要有实事的精神, 哪怕减少生命的长度, 也不能减少实事的态度。8. 参考文献:1.毅刚编著,单片机原理及应用咼等教育,2010。2.郭天祥编著,新概念51单片机C语言教程,2009。9附录9.1系统完整仿真电路图:TALIXTAUD B T fc D 兰盟益养 pntutnIQlopnlnpnhumvzJmnP7 tfhl?7KMRDA灯 fF/TDi F7JfMT| iRJJfciFp-KTVHWPMfjnr9.

13、2系统汇编语言程序源代码SPEED DATA 30H;用于定时中断重载用,与PULS_TIME目反,越大定时越长,也即速度越小PULS_TIME DATA 31H; 拍数周期,为零时将用 speed重载PULS_TIMEDISPSPEED DATA 32H; 显示用级数=15-SPEED越大,转动速度越快STEP DATA 33HPULS ORDER DATA 34H ;拍序数; 显示十位;S4 按下不放计数; 步进电机输出口STEPKEQU S4STEPK1EQUP1.0STEPK2EQUP1.1STEPK3EQUP1.2STEPK4EQUP1.3STEPK5EQUP1.4STEPK6EQU

14、P1.5TH10MSEQU HIGH(65536-10000)TL10MSEQU LOW(65536-10000)TH50MSEQU HIGH(65536-50000)TL50MSEQU LOW(65536-50000)ORIENTKEQU S2SPEEDKEQU S3;12MHZ 晶振 10MS;12MHZ晶振 50MSDISPBUFFER DATA 35H S4_ON_TIME DATA 36H MORTORPORT DATA P2 ORIENT BIT 00HON_OFF BIT 01HONTIME3SBIT 02H;按住超 3sS1BITP0.1;启动/ 停止键S2BITP0.2;正反

15、向命令S3BITP0.3;转速级数S4BITP0.4;转动步数ONOFFKEQU S1/*接线:用导线将 MCU勺 101 连接至U TEMP SENSOR DS18B的0DQ过程:上电,编译、下载程序,按注释说明设置断点,运行程序至断点处,观察寄存 器R7中的数据,用手摸住传感器DS18B20芯片,再运行到断点处,比较 R7的变化。*/A_BITEQU20H; 存放个位数变量B_BITEQU21H; 存放十位数变量FLAGEQU38H; D S 1 8 B2 0是否存在标志DQEQUP2.7 ;DQ引脚由 P0.0 控制;- 初始化及读取温度值子程序 -RE_TEMP:SETB DQ ; 拉

16、高单总线LCALL RESET_1820; 调用复位子程序JB FLAG,ST;判断DS18B2C是否存在HOME:RETST:;DS18B2 0 存在MOA,#OCCH;跳过 ROMS配LCALL WRITE_1820; 调用写入数据子程序MOVA,#44H ; 发出温度转换命令LCALL WRITE_1820; 调用写入数据子程序LCALL RESET_1820; 调用读温度前先复位MOA,#0CCH;跳过 ROMS配LCALL WRITE_1820; 调用写入数据子程序MOVA,#0BEH;发出读温度命令LCALL WRITE_1820; 调用写入数据子程序LCALL READ_1820

17、 ; 调用读取数据子程序LJMP HOME; 复位子程序 RESET_1820:SETB DQ ; 拉高单总线NOPCLR DQ; 拉低单总线; 主机发出复位低脉冲 MOVR1,#3;延时,模拟时序DLY:MOVR0,#53DJNZ R0,$DJNZ R1,DLY; 然后拉高数据线 SETB DQ ; 拉高单总线NOPNOPNOP; 等待DS18B20M应MOVR0,#13H; 延时,模拟时序T2:JNBDQ,T3 ;等待 DS18B20M应DJNZ R0,T2LJMP T4 ;-标志位FLAG=1表示DS18B20存在-T3:SETB FLAG QS18B20 存在LJMP T5;-标志位F

18、LAG=0表示DS18B20不存在-T4:CLRFLAGQS18B20 不存在LJMP T7; 时序要求延时一段时间 T5: ; 延时,模拟时序 MOVR0,#55T6: DJNZ R0,T6T7:SETB DQRET; 写入子程序 WRITE_1820:MOVR2,#8 ; 一共 8 位数据CLRC ;C=0WR1:CLRDQ ; 总线低位,开始写入 MOVR3,#4DJNZ R3,$;保持 16us 以上RRCA ;把字节DATA分成 8个位,环移给C MOVDQ,C ; 写入一个位MOVR3,#12DJNZR3,$; 等待SETBDQ; 重新释放总线NOPDJNZR2,WR1; 写入下一

19、个位SETBDQ; 拉高单总线RETJ读子程序 READ_1820:MOVR4,#2 ; 读出两个字节的数据MOR1,#29H;低位存入29H,高位存入28HRE0:MOVR2,#8 ; 数据位一共有 8 位RE1:CLRC ; 清零进位SETB DQ ; 拉高单总线NOPNOPCLRDQ ; 读前总线保持为低NOPNOPNOPSETB DQ ; 开始读总线释放MOVR3,#4RE2:DJNZ R3,RE2 ; 延时 18usMOVC,DQ ; 从总线读到一个位MOVR3,#12RE3:DJNZR3,RE3; 等待 50usRRCA; 把读得的位值环移给 ADJNZR2,RE1; 读下一个位M

20、OVR1,ADECR1; 存入下一个地址单元DJNZR4,RE0RET; 数据转化子程序 TURN: ; 只保留读回的高 8 位,存入 29H 单元中 MOVA,29HMOVC,40H;28H.O ,将28中的最低位移入 C(4043H对应的是28H的位地址,也可以改用 28H.028H.3)RRCA;将A中容和进位位-起循环右移一位MOVC,41H;28H.1RRCAMOVC,42H;28H.2RRCAMOVC,43H;28H.3RRCAMOV29H,A; 最后的温度值存入29H 单元中RETENDORG 0000HLJMP MAINORG 000BHLJMP TIME0MAIN:LOOP

21、LCALL RE_TEMP ; 调用读取温度子程序LCALL TURN ; 数据转化子程序MOV R7,29HCJNE R7,#31,GOGO: JC LOOPJNC GO1GO1:MOV SP,#50HACALL DELY20MSMOV STEP,#01MOV PULS_ORDER,#00MOV DISPSPEED,#00 ; 作显示用MOV SPEED,#15MOV PULS_ORDER,#07MOV PULS_TIME,#00MOV A,DISPSPEEDINC AMOV DISPBUFFER,ACALL DISPMOV S4_ON_TIME,#00CLR ORIENTCLR ON_OF

22、F ; 为零停止,为 1 运行CLR ON_TIME3SMOV TMOD,#01HMOV TH0,#TH10MSMOV TL0,#TL10MSMOV TH1,#TH50MSMOV TL1,#TL50MSSETB EASETB ET0SETB ET1 *JTESTKEY: JB ON_OFFK,TESTKEY1 ; 判断开关键 CALL DELY20MSJB ON_OFFK,TESTKEY1JNB ON_OFFK,$CPL ON_OFFJB ON_OFF,TESTKEY0MOV A,DISPSPEEDINC AMOV DISPBUFFER,ACALL DISPCLR TR0SJMP TESTKE

23、Y1TESTKEY0: SETB TR0 ; 判断方向键 MOV DISPBUFFER,STEPCALL DISPTESTKEY1: JB ORIENTK,TESTKEY2CALL DELY20MSJB ORIENTK,TESTKEY2JNB ORIENTK,$CPL ORIENTMOV A,#07SUBB A,PULS_ORDER MOV PULS_ORDER,A TESTKEY2: JB ON_OFF,TESTKEY JB SPEEDK,TESTKEY3 CALL DELY20MS MOV A,DISPSPEEDINC AMOV DISPBUFFER,ACALL DISP JNB SPEE

24、DK,$INC DISPSPEEDMOV A,DISPSPEED MOV B,#16DIV ABMOV DISPSPEED,BMOV A,#15SUBB A,DISPSPEEDMOV SPEED,AMOV PULS_TIME,AMOV A,DISPSPEED INC AMOV DISPBUFFER,A ;CALL DISP AJMP TESTKEY3 TESTKEY_: AJMP TESTKEYTESTKEY3: JB STEPK,TESTKEY4CALL DELY20MS JB STEPK,TESTKEY4 MOV DISPBUFFER,STEP CALL DISPTESTKEYL: JNB

25、 STEPK,$INC STEP ;mov step,#03 MOV A,STEP MOV B,#100 DIV AB MOV STEP,BMOV DISPBUFFER,STEP CALL DISP AJMP testkeyendTESTKEY4: JB STEPK1,TESTKEY5CALL DELY20MSJB STEPK1,TESTKEY5MOV DISPBUFFER,STEPCALL DISPJNB STEPK1,$;INC STEPMOV step,#03MOV A,STEPMOV B,#100DIV ABMOV STEP,BMOV DISPBUFFER,STEPCALL DISPA

26、JMP testkeyendTESTKEY5: JB STEPK2,TESTKEY6CALL DELY20MSJB STEPK2,TESTKEY6MOV DISPBUFFER,STEPCALL DISPJNB STEPK2,$;INC STEPMOV step,#06MOV A,STEPMOV B,#100DIV ABMOV STEP,BMOV DISPBUFFER,STEPCALL DISPAJMP testkeyendTESTKEY_: AJMP TESTKEY_TESTKEY6:JB STEPK3,TESTKEY7 CALL DELY20MSJB STEPK3,TESTKEY7 MOV

27、DISPBUFFER,STEP CALL DISPJNB STEPK3,$;INC STEPMOV step,#09MOV A,STEPMOV B,#100 DIV AB MOV STEP,BMOV DISPBUFFER,STEP CALL DISP AJMP testkeyendTESTKEY7:JB STEPK4,TESTKEY8CALL DELY20MSJB STEPK4,TESTKEY8 MOV DISPBUFFER,STEP CALL DISPJNB STEPK4,$;INC STEPMOV step,#12MOV A,STEPMOV B,#100DIV ABMOV STEP,B M

28、OV DISPBUFFER,STEPCALL DISPAJMP testkeyendTESTKEY8: JB STEPK5,TESTKEY9CALL DELY20MSJB STEPK5,TESTKEY9MOV DISPBUFFER,STEPCALL DISPJNB STEPK5,$;INC STEPMOV step,#15MOV A,STEPMOV B,#100DIV AB MOV STEP,BMOV DISPBUFFER,STEP CALL DISP AJMP testkeyendTESTKEY9: JB STEPK6,TESTKEY_CALL DELY20MSJB STEPK6,TESTK

29、EY_MOV DISPBUFFER,STEPCALL DISPJNB STEPK6,$;INC STEPMOV step,#15MOV A,STEPMOV B,#100 DIV ABMOV STEP,BMOV DISPBUFFER,STEPCALL DISPAJMP testkeyendTESTKEYEND:AJMP TESTKEY *TIME0: PUSH ACCPUSH PSW PUSH B MOV TH0,#TH10MS MOV TL0,#TL10MS MOV A, PULS_TIME JNZ MINUSCOUNT MOV PULS_TIME,SPEED MOV A,STEP XRL A

30、,#99 JZ STEPRUN MOV A,STEP JZ RUN_OFF DEC STEP STEPRUN: MOV C,ORIENT JNC STEPRUNF MOV DPTR,#BACKAJMP STEPRUN1 STEPRUNF: MOV DPTR,#FORWARD STEPRUN1: MOV R0, PULS_ORDERMOV A,R0 MOVC A,A+DPTR MOV MORTORPORT,A INC R0 MOV A,R0 MOV B,#08 DIV AB MOV PULS_ORDER,B AJMP TIME0RET; 拍数周期到,重载 ,speed=0 时转速最快;step=

31、99;step=0 ;,为连续运转不转;ORIENT=0 正转,否则反转RUN_OFF: CLR ON_OFFCLR TR0AJMP TIME0RETMINUSCOUNT: DEC PULS_TIME; 拍数周期减 1TIME0RET: MOV DISPBUFFER,STEPCALL DISPPOP BPOP PSWPOP ACCRETI *J DISP: MOV A,DISPBUFFERMOV B,#10 DIV ABMOV DPTR,#TABLE1 MOVC A,A+DPTR MOV SBUF,AJNB TI,$CLR TIMOV DPTR,#TABLE1 MOV A,B MOVC A,A

32、+DPTR MOV SBUF,A JNB TI,$ CLR TI RET *J DELY20MS: MOV R1,#42 DLYLOP:MOV R0,#250DLYLOP1:NOPNOPDJNZ R0,DLYLOP1DJNZ R1, DLYLOP RETTABLE1: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H 段选码 ; 0 1 2 3 4 5 6 7 8 9forward:db 0F1H ,0F3H ,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H back: db 0F9h,0F8h,0Fch,0F4h,0F6h,0F2h,0F3h,0F1hEND

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!