基于单片机原理的步进电机的正反转程89397460
基于单片机的电动机正反转控制设计.doc
基于单片机的电动机正反转控制设计. .基于单片机的电动机正反转控制设计学生:xxx(指导教师:xxx)(xxxxxx电气信息工程学院)摘要:基于单片机的基本理论,本文设计了一种步进电机控制系统。
该系统通过软硬件的设计调试,实现步进电机能根据设定的参数进行开关加减速控制,使控制系统以最短的时间到达控制终点,而又不发生失步的现象;同时它能准确地控制步进电机的正反转,启动和停止。
硬件是以AT89C51单片机为核心的控制电路,主要包括:开关输入电路、液晶显示电路、步进电机的驱动电路等。
软件部分采用C语言编程,主要包括液晶显示程序、步进电机的正反转即快慢程序等。
通过仿真验证了本文设计系统的实用性能。
关键词:步进电机控制系统;调速;单片机The design of motor control system based on SCMStudent:Zhou Tianhang(Supervisor:Liu Yunxia)Electrical and Information Engineering Department of Huainan Normal UniversityAbstract: The basic theory based on SCM. this paper designs a kind of stepping motor control system. The systemgoes through the design of software and hardware. Realize the stepper motor can switch the acceleration and deceleration control according to the given parameters which makes the control system in the shortest time to finish and not out of step. At the same time, it can control the reversing the stepper motor accurately, start and stop. The hardware control circuit AT89C51 microcontroller as the core mainly. Include: switch input circuit, LCD displaying circuit, stepper motor drive circuit. The software is programmed by C language. Include: LCD display program and the stepper motor speed program .The practical performance of the design of the system is validated by simulation.Key words: Stepping motor control system; speed control; Single-xxx(指导教师:xxx)(xxxxxx电气信息工程学院)摘要:基于单片机的基本理论,本文设计了一种步进电机控制系统。
STC89C52单片机控制28byj-48步进电机正反转变速
STC89C52单片机控制28byj-48型步进电机正反转、加减速C语言编写。
在网上找了好久,都没找到合适的,无奈之下,只能用自己写写了。
写的不好,大家勿喷。
主要实现功能,正反转,加减速,暂停。
晚上在宿舍用手机拍的,手机不好,光线也不好。
拍的更不好。
用的是LUN2003驱动板。
刚接触电机,也不是很了解。
看到网上好多一样的文章,所以一些原理就不讲了,直接上源码了。
因为初学,很多要改进的地方。
如果你有更高效率的算法,请联系我QQ394511647,一起讨论,谢谢。
定义的旋转相序为双相八拍。
在代码中都标出来了。
我都测试过了,是可以加减速的,就是加减速还不够完善。
希望大家改改。
源码:/*****************************************************************************/ #include <reg52.h>#define uint unsigned int#define uchar unsigned charuchar code ccw[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//逆时针uchar code cw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//顺时针uchar a,temp;sbit K1 = P1^4;//逆时针sbit K2 = P1^5;//顺时针sbit K3 = P1^6;//暂停sbit K4 = P3^2;//加速sbit K5 = P3^3;//减速void SETP_MOTOR_cw(uchar n);//顺时针void SETP_MOTOR_ccw(uchar n);//逆时针void DelayMS();//延时void speed();//变速void fddelay(uchar b);//防抖uchar N = 192;//外圈数跑3圈(减速比为1:64)uchar num;void main(){while(1){if(K1 == 0){SETP_MOTOR_ccw(N);if(K3 == 0) break;}else if(K2 == 0){SETP_MOTOR_cw(N);if(K3 == 0) break;}else{P0 = 0x00;}}}void DelayMS()//延时{uchar i;uchar ms;ms = num;while(ms--){for(i=0;i<115;i++);}}void fddelay(uchar b)//防抖{uchar i;while(b--){for(i=0; i<120; i++);}}void SETP_MOTOR_ccw(uchar n)//逆时针{uint i,j;num = 2;for(i=0;i<8*n;i++){speed();for(j=0;j<8;j++){if(K3 == 0) break;P0 = ccw[j];if(K2==0){SETP_MOTOR_cw(N);return;}DelayMS();}}}void SETP_MOTOR_cw(uchar n)//顺时针{uint i,j;num = 2;for(i=0;i<8*n;i++){speed();for(j=0;j<8;j++){if(K3 == 0) break;P0 = cw[j];if(K1==0){SETP_MOTOR_ccw(N);return;}DelayMS();}}}void speed()//变速{while(K4==0){fddelay(5);if(K4==1) //这里是判断按键按下弹起来,然后执行num{num+=10;}}while(K5==0){fddelay(5);if(K5==1){num-=10;}}}/**************************************完*************************************/。
基于51单片机控制步进电机正反转
基于51单片机控制步进电机正反转此次采用uln2003模块来链接步进电机;## 步进电机工作原理步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。
每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。
步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。
因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、B、C、D 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。
因此这种通电方式叫做四相单四拍工作方式。
1.电机正转代码unsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};2.电机反转代码unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};代码如下#include <reg52.h>#define uint unsigned int #define uchar unsigned charunsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//²½½øµç»úzhengvoid delay(unsigned int t);sbit S3=P3^4; //反转sbit S4=P3^5; //反停sbit S5=P3^6; // 正停//正转写入数据void motor_z() { unsigned char i,j; for (i=0; i<8; i++) { if(S5==0){break;} for(j=0;j<8;j++){ P1 = tableZ[i]&0x1f; delay(50); } } }//反转写入数据void motor_f(){ unsigned char i,j; for (i=0; i<8; i++) { if(S4==0){break;} for(j=0;j<8;j++){ P1 = tableF[i]&0x1f;delay(50); } }}void delay(unsigned int t)//延时函数{ unsigned int k; while(t--) { for(k=0; k<60; k++) { } }}void main(){while(1){motor_z();if(S3 == 0){motor_f();}}}•1•2•3•4•5•6•7•8•9•10•11•12•13•14•15•16•17•18•19•20•21•22•23•24•25•26•27•29 •30 •31 •32 •33 •34 •35 •36 •37 •38 •39 •40 •41 •42 •43 •44 •45 •46 •47 •48 •49 •50 •51 •52 •53 •54 •55 •56 •1•3 •4 •5 •6 •7 •8 •9 •10 •11 •12 •13 •14 •15 •16 •17 •18 •19 •20 •21 •22 •23 •24 •25 •26 •27 •28 •29 •30 •31•33•34•35•36•37•38•39•40•41•42•43•44•45•46•47•48•49•50•51•52•53•54•55•56protel仿真图如下。
基于单片机AT89S52控制步进电机正反转讲述
目录第一章系统分析 (1)1.1 框图设计 ..............................................21.2 晶振电路 ..............................................2第二章硬件系统设计 (3)2.1 硬件连接图 .............................................32.2 按键功能 ........................................... - 2 -2.3 单片机AT89S52 ..................................... - 2 -2.4 驱动电路 ...............................................42.5 步进电机 (7)第三章软件系统设计 (9)3.1 软件流程图 .............................................93.2 激磁方式 ..............................................10附录 .........................................................12附件A 源程序 .......................................... (12)附件B 仿真结果 (15)参考文献 (17)致谢..........................................................18摘要能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。
本文介绍一种用AT89S52作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。
基于单片机的步进电机转速控制
电子器件市场调研与系统设计实践专业:***班级:姓名:学号:指导教师:****大学****学院**** 年**月**日基于单片机的步进电机调速与正反转控制系统1 系统要求步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。
随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。
本设计基于单片机控制的步进电机设计课题是以单片机为主控制模块,从而实现电机的启停、正反转和调速的目的的一个设计课题。
在课题设计之前,通过互联网了解到了当前步进电机的发展状况及发展前景。
同时也了解了当今最先进的步进电机所具备的功能,方便为课题设计提供参考和借鉴;最后,通过画原理框图的形式,以最直观的方式为整个课题设计制定了流程及要求。
1.1 设计目的《电子器件市场调研与系统设计实践》是本专业的重要实践教学环节,强调实际应用技能训练。
结合自动化专业系列课程的学习,培养我们对电子器件的认知,锻炼我们的市场调研能力,加深我们对自动化专业系列课程知识的掌握。
通过课程设计环节培养学生与人交往、独立思考和处理问题的能力。
1.2 设计内容及要求本次课程设计所选的步进电机是四相步进电机,采用的方法是利用单片机控制步进电机的驱动。
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次课程设计就是通过改变脉冲频率来调节步进电机的速度的,并且通过数码管显示其转速的级别。
基于单片机的电动机正反转控制设计要点
基于单片机的电动机正反转控制设计学生:xxx(指导教师:xxx)(xxxxxx电气信息工程学院)摘要:基于单片机的基本理论,本文设计了一种步进电机控制系统。
该系统通过软硬件的设计调试,实现步进电机能根据设定的参数进行开关加减速控制,使控制系统以最短的时间到达控制终点,而又不发生失步的现象;同时它能准确地控制步进电机的正反转,启动和停止。
硬件是以AT89C51单片机为核心的控制电路,主要包括:开关输入电路、液晶显示电路、步进电机的驱动电路等。
软件部分采用C语言编程,主要包括液晶显示程序、步进电机的正反转即快慢程序等。
通过仿真验证了本文设计系统的实用性能。
关键词:步进电机控制系统;调速;单片机The design of motor control system based on SCMStudent:Zhou Tianhang(Supervisor:Liu Yunxia)Electrical and Information Engineering Department of Huainan Normal University Abstract:The basic theory based on SCM. this paper designs a kind of stepping motor control system. The system goes through the design of software and hardware.Realize the stepper motor can switch the acceleration and deceleration controlaccording to the given parameters which makes the control system in the shortesttime to finish and not out of step. At the same time, it can control the reversing thestepper motor accurately, start and stop. The hardware control circuit AT89C51microcontroller as the core mainly. Include: switch input circuit, LCD displayingcircuit, stepper motor drive circuit. The software is programmed by C language.Include: LCD display program and the stepper motor speed program .The practicalperformance of the design of the system is validated by simulation.Key words: Stepping motor control system; speed control; Single-chip Computer1 绪论1.1 设计研究的目的和意义由于步进电机不需要位置传感器或速度传感器就可以实现定位,即使在开环状态下它的控制效果也是令人非常满意的,这有利于装置或设备的小型化和低成本,因此步进电机在计算机外围设备、数控机床和自动化生产线等领域中都得到了广泛的应用。
单片机课设步进电机控制正反转【最新】
单片机课程设计报告设计题目:步进电机控制系统学院自动化与信息工程学院专业电气工程及其自动化班级姓名学号指导教师王水鱼2010 年秋季学期目录1.设计目的 (2)2.设计的主要内容和要求 (2)3.题目及要求功能分析 (2)4.设计方案 (5)4.1 整体方案 (5)4.2 具体方案 (5)5.硬件电路的设计 (6)5.1 硬件线路 (6)5.2 工作原理 (7)5.3 操作时序 (8)6. 软件设计 (8)6.1 软件结构 (8)6.2 程序流程 (9)6.3 源程序清单 (9)7. 系统仿真 (9)8. 使用说明 (10)9. 设计总结 (10)参考文献 (11)附录 (12)步进电机的控制1.设计目的(1)熟悉单片机编程原理。
(2)熟练掌握51单片机的控制电路和最小系统。
(3)单片机基本应用系统的设计方法。
2.设计的主要内容和要求(1)查阅资料,了解步进电机的工作原理。
(2)通过单片机给参数控制电机的转动。
(3)通过按钮控制启停及反转。
(4)其他功能。
3.题目及要求功能分析步进电机:步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,利用其精度高等特点,广泛应用于各种工业控制系统中。
三相单、双六拍步进电机的结构和工作原理:三相单、双六拍步进电机通电方式:这种方式的通电顺序是:U-U V-V-VW-W-WU-U或为U-UW-W-WV-V-VU-U。
按前一种顺序通电,即先接通U相定子绕组;接着是U、V两相定子绕组同时通电;断开U相,使V相绕组单独通电;再使V、W两相定子绕组同时通电;W 相单独通电;W、U两相同时通电,并依次循环。
单片机电机正反转程序的设计与实现
单片机电机正反转程序的设计与实现下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!一、引言随着工业自动化的发展,电机在各类机械设备中扮演着越来越重要的角色。
基于单片机的直流电机控制(正反转、开关控制)
基于单片机的直流电机控制(正反转,开关控制)原理图如下:程序如下:/*用电机来代表门的转动情况*/#include <reg51.h>//定义变量sbit kaimen=P0^0;sbit zanting=P0^1;sbit fanxiang=P0^2;sbit P2_0=P2^0;sbit P2_1=P2^1;bit Flag = 1;//定义电机正反向标志//函数声明void motor_turn(void); //正反向控制void Timer0_init(void); //定义定时器0初始化/******************************延时处理***************************/void Delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/***************************************************************/void Timer0_int(void) interrupt 1 using 1//定时器0中断处理主要用来处理换方向的时候{TR0 = 0;TL0=(65536-50000)/ 256; //定时50msTH0=(65536-50000)% 256;TR0 = 1;if(Flag == 1)//代表改变方向{P2_0 = 0;P2_1 = 1;}else //方向不变{P2_1 = 0;P2_0 = 1;}}/****************开始转动:人满时候开始转动**************/void motor_start(void){ if(kaimen==1){//Delay(10);if(kaimen==1){P2_0 = 0;P2_1 = 1;}}}/***************有人但是人未满时或者有夹到人的时候暂停*************/void motor_pause(void){ if(zanting==1){Delay(10);if(zanting==1){EA=0;P2_0 = 0;P2_1 = 0;}}}/**********************电机方向转动**************************/ void motor_turn(void)//电机反向转动{if(fanxiang == 1){Delay(10);if(fanxiang == 1){Flag = ~Flag;}while(fanxiang == 1);}}/***********************定时器0初始化**************************/ void Timer0_init(void)//定时器0初始化{TMOD=0x01;TH0=(65536-50000)/ 256;TL0=(65536-50000) % 256;TR0=1;ET0=1;}/**********************主函数***********************/void main(void)//主函数{Timer0_init();while(1){ if(kaimen==1)EA=1; //开始时候开启中断motor_start();motor_pause();motor_turn();}}。
使用单片机89C51控制步进电机程序详细介绍
使用单片机89C51控制步进电机程序详细介绍;步进电机控制程序例程p3.2 正转,p3.3 反转,p3.4停止。
步进电机接p0.0 p0.1 p0.2 p0.3;具体程序如下:org 00hstop: ORL p0,#0ffh ; 步进电机停止loop:jnb p3.2,for2 ; 如果p3.2 按下正转jnb p3.3,rev2 ; 如果p3.3 按下反转jnb p3.4,stop1 ; 如果p3.4按下停止jmp loop ;反复监测键盘for: mov r0,#00h ;正转到tab取码指针初值for1:mov a,r0 ;取码mov dptr,#table ;movc a,@a+dptrjz for ;是否到了结束码00hcpl a ;把acc 反向mov p0,a ;输出到p0开始正转jnb p3.4,stop1 ; 如果p3.4 按下停止jnb p3.3,rev2 ; 如果p3.3按下反转call delay ;转动的速度inc r0 ;取下一个码jmp for1 ;继续正转rev:mov r0,#05h ;反转到tab取码指针初值rev1:mov a,r0mov dptr,#table ;取码movc a,@a+dptrjz rev ;是否到了结束码00hcpl a ;把acc 反向mov p0,a ;输出到p0开始反转jnb p3.4,stop1 ; 如果p3.4 按下停止jnb p3.3,rev2 ; 如果p3.3按下反转call delay ;转动的速度inc r0 ;取下一个码jmp rev1 ;继续反转stop1:call delay ; 按p3.4 的消除抖动jnb p3.4,$ ; p3.4 放开否?call delay ;放开消除抖动jmp stopfor2:call delay ; 按p3.2 的消除抖动jnb p3.2,$ ; p3.2 放开否?call delay ;放开消除抖动jmp forrev2:call delay ; 按p3.3的消除抖动jnb p3.3,$ ; p3.3 放开否?call delay ;放开消除抖动jmp revdelay:mov r1,#40 ;步进电机的转速20ms d1:mov r2,#248 djnz r2,$djnz r1,d1rettable:db 03h,09h,0ch,06h ;正转表db 00 ;正转结束db 03h,06h,0ch,09h ;反转db 00 ;反转结束end。
单片机控制步进电机的正反转
单片机控制步进电机的正反转单片机控制步进电机的正反转最近好长一段时间没有来51hei单片机网了,接近考试的日子越来越近,开始把时间转到考试的准备上了,这两天回过头来想想,应该有快半个月对单片机的学习没有什么进展了,不过我一直坚信,单片机学习的路上,只要你肯坚持,只要你肯吃苦、肯付出,再难的关也不是问题,当然,最近也深深地体会到,学习单片机如果有一个好的老师作为指导,那学起来就不用那么费劲了,不过也没有关系,很多东西,条件不好的时候,就需要自己去改变,去想想其它的法子。
这两天开始研究单片机与步进电机的控制问题,感觉真的很好玩,步进电机在工业的很多地方都有很大的应用,比如流水线的运转,智能小车,系统定位都有很大的用处。
也是一个核心的技术。
步进电机的控制主要是由单片机IO口高低电平的控制以及输出脉冲来控制其转速,达到了一种数模转换的效果。
让单片机以并行二进制数转换成并行脉冲序列,并实现方向控制。
只要是脉冲在步进电机允许的范围之内,每个脉冲将使步进电机转动一个固定的步距角度,根据步距角的大小及实际走的步数,只要知道初始位置,便可以根据计算知道其最终位置了。
步进电机转动时的驱动的电流比较大,所以在使用单片机控制的时候,要在中间加一个放大电路,或者加上一些常用的放大电流的芯片,比如人们很经常用的一个芯片ULM2003.只有这样才能够使步进电机转动,不然会因为电流太小而实现不了效果。
下面把实际效果拿出来分享下:程序如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar num[]={0x01,0x02,0x04,0x08};void delay(uint z){uint a;for(a=0;a<z;a++);}void main(){uchar i;uint j;for(j=0;j<2045;j++){{ P1=num[i];delay(1200);i++;if(i==4)i=0; }}while(1);}其中,z控制转速,j控制转的圈数,由计算和调试得出当j=2045时,步进电机走的圈数为1圈,这样,我们要步进电机走多少圈时,可以在里面嵌套一个程序,达到我们要电机转多少圈的目的。
基于单片机原理的步进电机的正反转程设计报告
基于单片机原理的步进电机的正反转程设计报告步进电机是一种电动机,能够精确地控制旋转角度和位置,广泛应用于工业和自动化控制系统中。
本篇报告将介绍基于单片机原理的步进电机的正反转程设计。
步进电机是一种特殊的电动机,每次输入一个脉冲信号,电机就会转动一个固定的角度,称为步距角。
步进电机的控制原理是通过改变相序对电机进行控制,根据不同的相序,电机可以实现正转或反转。
步进电机的正反转程设计涉及到两个方面,一是电机的控制电路,二是单片机的编程控制。
首先,电机的控制电路是步进电机正反转程设计的关键。
常见的控制电路有两种:全桥驱动电路和双H桥驱动电路。
全桥驱动电路由四个开关管组成,通过对不同开关管的开关控制,可以激活不同的相序,实现电机的正反转。
双H桥驱动电路由两个H桥组成,通过对H桥的开关控制,可以激活不同的相序,实现电机的正反转。
根据实际需求和控制方式选择适合的电机控制电路。
其次,单片机的编程控制是步进电机正反转程设计的关键。
单片机可以通过输出脉冲信号控制电机的正反转和转动速度。
编程时需要设置好脉冲信号的频率和方向,可以通过调节脉冲信号的频率来控制电机的转动速度,通过改变脉冲信号的方向来控制电机的正反转。
在步进电机的正反转程设计中,还可以考虑加入其他功能,如限位检测、位置控制等。
限位检测可以通过加入限位开关来实现,当电机转动到限位位置时,限位开关会触发信号,单片机可以根据信号做出相应的处理。
位置控制可以通过加入编码器等位置传感器来实现,单片机可以根据传感器反馈的信号准确控制电机的位置。
最后,步进电机的正反转程设计需要进行实际的调试和测试。
在实际调试和测试中,需要根据预设的参数和要求,进行电机的正反转程测试和性能评估。
根据实际测试结果,可以对设计进行优化和改进,以达到更好的性能和可靠性。
总之,基于单片机原理的步进电机的正反转程设计是一个复杂而关键的任务,需要综合考虑电机控制电路和单片机编程控制两个方面。
在设计过程中,需要理解步进电机的工作原理和控制原理,结合实际需求和要求进行设计和调试,最终实现电机的可靠正反转程控制。
基于单片机ATS控制步进电机正反转
基于单片机A T S控制步进电机正反转The latest revision on November 22, 2020目录步进电机 (7)附件A 源程序 .......................................... (12)附件B 仿真结果 (15)致谢 (18)摘要能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。
本文介绍一种用AT89S52作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。
本控制系统采用单片机控制,通过人为按动开关实现步进电机的开关,复位。
该系统还增加了步进电机的加速及减速功能。
具有灵活方便、适用范围广的特点,基本能够满足实践需求。
关键词: AT89S52 步进电机 ULN2003第一章系统分析框图设计根据系统要求画出基于AT89S52单片机的控制步进电机的控制框图如图2-1所示。
图2-1基于AT89C52单片机的控制步进电机的控制框图系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。
晶振电路AT89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。
石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。
晶振模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。
最常用的两种类型是晶振模块和集成RC振荡器(硅振荡器)。
晶振模块提供与分立晶振相同的精度。
硅振荡器的精度要比分立RC振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。
图2-2为晶振电路。
图2-2 晶振电路第二章系统设计硬件连接图根据图2-1,可以设计出单片机控制步进电机的硬件电路图,如图3-1所示。
基于单片机的步进电机控制系统设计--毕业设计之欧阳与创编
基于单片机的步进机电控制系统设计摘要:步进电念头由于用其组成的开环系统既简单、廉价,又很是可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。
本文介绍的是一种基于单片机的步进机电的系统设计,用汇编语言编写出机电的正转、反转、加速、减速、停止法度,通过单片机、机电的驱动芯片ULN 以及相应的按键实现以上功能,并且步进机电的工作状态要用相应的发光二极管显示出来。
本文内容介绍了步进机电以及单片机原理、该系统的硬件电路、法度组成,同时对软、硬件进行了调试,同时介绍了调试过程中呈现的问题以及解决问题的办法。
该设计具有思路明确、可靠性高、稳定性强等特点,通过调试实现了上述功能。
关键词:步进机电;脉宽调制;驱念头构;单片机;转动Design of The Control System of StepmotorAbstract:The openloop system which is composed by stepmotor is simple, cheap and very practical, so there are very wide range of applications in printers and other office automation equipment and various control devices, and many other fields.This article describes one design of stepmotor system based on microcontroller.The program of the preparation of a motor , reverse, speed up, slow down, stop is written by compile language. The above functions are realized through the microcontroller, motor driver chip ULN and correspond key , and the work state of stepper motor is diaplayed through the lightemitting diode. This article introduces the principle of stepper motor and singlechip microcomputer, the system hardware circuit, the program components, while software and hardware for the debugging, at the same time introduces the problems which are appeared in the debugging process and the solutions of the problems . The design has the advantages of clear , high reliability, strong stability, etc.,and the abovementioned functions are realized through the debugging..Key Words: Stepper motor; Pulsewidth modulated; driving mechanism; singlechip; rotation目录序言1第1章绪论21.1 课题研究的目的和意义21.2 国内外研究概略21.3 论文的主要研究内容3第2 章步进机电与单片机简介42.1 步进机电介绍42.1.1步进机电概述42.1.2步进机电的工作原理62.1.3 步进机电的分类与选择82.2 步进机电驱动系统介绍92.2.1 步进机电驱动系统简介92.2.2 步进机电绕组的电气特性102.3 单片机原理112.3.1单片机原理概述112.3.2单片机的应用系统122.3.3 AT89C51简介13第3 章系统整体硬件结构173.1系统整图173.2电源部分183.3按键部分183.4驱动部分193.5状态指示部分203.6时钟部分20第4 章系统软件设计214.1 系统开发软硬件环境214.2 系统主法度214.3 查键部分224.4 前进部分224.5 后退部分234.6 加速部分244.7 减速部分25第5 章系统的调试与检测265.1法度编译时的毛病与解决办法265.2 LM7812输出电压毛病与解决办法265.3 步进机电转动毛病及解决办法265.4 结论与展望27参考文献28致谢29附录29附录1:源法度清单30附录2:英文资料及其中文翻译35基于单片机的步进机电控制系统设计序言步进机电作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电机控制课程设计报告书题目基于单片机原理的步进电机的正反转目录目录 (1)摘要 (1)1.概述 (2)1.1课程设计的任务和要求 (2)1.2设计思路框架 (3)1.3设计方案的模块解释 (3)2.系统硬件设计 (3)2.1单片机最小系统原理介绍 (3)2.1.1 AT89C51的工作原理 (4)2.1.2复位电路的工作原理 (7)2.1.3晶振电路的工作原理 (8)2.2电机驱动电路原理介绍 (9)3.系统软件设计 (10)3.1系统流程图 (10)3.2系统程序分析 (11)4.调试过程与结果 (19)5.总结与体会 (20)6.参考资料 (21)7.附录 (22)摘要介绍了步进电机正反转控制原理及其接口驱动控制电路,编制了基于MCS-51单片机的步进电机正反转控制的子程序,并应用wave软件进行了仿真。
证明在并行口控制中,可以利用软件实现环行脉冲分配,实现程序较简单,同时还可以节省硬件投资。
结合单片机控制步进电动机的实际工作环境,从提高控制系统运行的可靠性角度,讨论了实际应用的软件抗干扰技术。
关键词单片机;步进电机;正反转控制1.概 述1.1课程设计的任务和要求电机控制课程设计是考察学生利用所学过的电机控制专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。
最终形成一篇符合规范的设计说明书,并参加综合实践答辩,为后期的毕业设计做好准备。
本次设计考核的能力主要有:专业知识应用能力,包括电路分析、电子技术、单片机、检测技术、电气控制、电机与拖动、微特电机及其驱动、计算机高级语言、计算机辅助设计、计算机办公软件等课程,还包括本专业的拓展性课程如变频器、组态技术、现场总线技术、伺服电机等课程。
项目设计与运作能力,团队协作能力,技术文档撰写能力,PPT 汇报与口头表达能力。
电气与自动化系统的设计与实际应用能力。
要求完成的工作量包括:制作实际成品,并现场演示效果。
学生结合课题进行PPT 演讲与答辩。
学生上交课题要求的各类设计技术文档。
1.2设计思路框架1.3设计方案的模块解释本系统主要由电源模块、控制模块、电机驱动模块、按键中断模块等四个模块组成。
电源模块的功能是将交流220V 电源经过整流转化为直流+5V 电源,以供给控制、显示、驱动等模块供电。
控制模块是系统的主导作用,即51单片机的最小系统,用来发送信号以控制电机及显示。
电机驱动模块使用的是ULN2003芯片。
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的直流工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
按键模块则分为启动按键和中断按键,启动按键使用的是单片机普通的I/O口。
用来控制系统启动。
中断按键则是使用的外部中断口(P3.2,P3.3)。
在系统运行时则可以随时控制电机的加减速。
2.系统硬件设计2.1单片机最小系统原理介绍该电路工作原理:本项目中选用了最基础的C51单片机做为其控制核心,单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,本设计采用AT89C51单片机,最小系统一般应该包括:单片机、晶振电路、复位电路、电源电路。
单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
51单片机最小系统晶振X1也可以采用6MHz或者12MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好。
P0口为开漏输出,作为输出口时需加上拉电阻RP1,阻值一般为10k。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t.设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。
图2-1最小系统电路图2.1.1 AT89C51的工作原理AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
本设计采用AT89C51,它提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。
另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。
闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。
VCC:电源电压GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。
作为输出口时,每一个管脚都能够驱动8个TTL电路。
当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。
P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。
P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。
P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。
闪烁编程时和程序校验时,P1口接收低8位地址。
P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。
闪烁编程或校验时,P2口接收高位地址和其它控制信号。
P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。
对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。
P3口除了作为一般的I/O 口外,更重要的用途是它的第二功能,如下表2-1所示:端口引脚第二功能P3.0RXDP3.1TXDP3.2INT0P3.3INT1P3.4T0P3.5T1P3.6WRP3.7RD表2-1P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。
RST:复位输入。
当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。
ALE/ :当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。
如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。
这个位置后只有一条MOVX和MOVC指令ALE才会被应用。
此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。
在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。
EA/VPP:外部访问允许。
欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。
需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA 端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。
XTAL1:片内振荡器反相放大器和时钟发生线路的输入端。
使用片内振荡器时,连接外部石英晶体和微调电容。
XTAL2:片内振荡器反相放大器的输出端。
当使用片内振荡器时,外接石英晶体和微调电容。
2-2 AT89C51引脚2.1.2复位电路的工作原理单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。
电路中C1(电解电容)、R2组成复位电路,它的作用是将单片机内部特殊功能寄存器和端口寄存器恢复到初始状态,从内部FLASH存储器的初始状态开始执行。
如图所示,当要对晶片重置时,只要按此开关就能完成LED和开关的重置。
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式可由手动复位方式完成。
RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6MHz晶振,则需持续4μS以上才能完成复位操作。
在通电瞬间,由于RC的充电过程,在RST端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位。
CPU在第二个机器周期内执行内部复位操作,以后每个机器周期重复一次,直至RST端电平变低。
在单片机复位期间,AlE 和信号都不产生。
复位操作将对部分专用寄存器产生影响。
上电瞬间由于电容C 上无储能,其端电压近似为零,RST 获得高电平,随着电容器C 的充电,RST 引脚上的高电平将逐渐下降,当RST 引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。