基于单片机ATS控制步进电机正反转
基于单片机的电动机正反转控制设计.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电气信息工程学院)摘要:基于单片机的基本理论,本文设计了一种步进电机控制系统。
单片机课程设计(论文)-开关控制步进电机正反转
绪论步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
在数控机床、医疗器械、仪器仪表、机器人以及其他自动设备中得到了广泛应用,我们使用的计算机外围的一些设备,如软驱、打印机、扫描仪等其运动部件的控制都采用了步进电机。
常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。
这种步进电机的应用最为广泛。
目录1 设计目的 (3)2 硬件电路设计及描述 (4)2.1确定元器件的型号及参数 (4)2.1.1 AT89C51 单片机 (4)2.1.2 ULN2003芯片 (6)2.2 步进电机 (7)2.2.1 永磁式步进电机 (7)2.2.2 步进电机原理以及原理图 (10)2.2.3 功能说明 (11)2.2.4步进电机的静态指标术语 (11)2.2.5 步进电机动态指标及术语: (12)3 程序设计 (13)3.1 编程 (13)3.2 流程图 (14)3.3 程序清单 (15)3.3.1 代码详解 (17)3.3.2 程序分析 (17)4 参考文献 (18)5 结束语 (19)1 设计目的步进电机若加入适当的脉冲信号时,转子则会以一定的步数转动。
如果加入连续的脉冲信号,步进电机就会连续转动,转动的角度与脉冲频率成正比,正、反转可由脉冲的顺序来控制。
本程序通过K1、K2和K3三个按钮开关控制步进电机转动和改变转向,电动机使用1-2相激磁,编程时采用制表的方法。
正转和反转的脉冲信号频率是相通的,但由于使用激磁方式不一样,反转使用了1-2相激磁法,故反转速度为正转的一半。
基于51单片机的步进电机正反转可控设计与仿真
2020.19设计研发基于51单片机的步进电机正反转可控设计与仿真李建中(江苏省海门中等专业学校,江苏南通,226100)摘要:步进电机是伺服控制中的关键部件,对步进电机进行精确高效地控制,是实现精密运动、制造等的重要手段。
釆用51单片机作为电机的控制核心-ULN2003A作为电机的驱动芯片,选用额定电压为5V的小型步进电机,设置正转、反转、停止、加速、减速5个按钮,其中正转、反转和停止均有对应的LED指示灯。
通过Keil进行控制程序的编写,在Proteus 中进行仿真电路的连接,结果表明:电路设计正确;步进电机能够根据按钮指令进行运转,达到了设计预期;系统可应用于某些需要高精度控制的场合。
关键词:步进电机;51单片机;ULN2003A;Keil;ProteusDesign and Simulation of Positive and Negative Rotation ofStepping Motor Based on51Single Chip MicrocomputerLi Jianzhong(Jiangsu Province Haimen Secondary Vocational School,Narrtong Jiangsu,226100)Abst r act;St epper motor is the key compone n t in servo cont r ol.It is an import a n t means to realize precise motion and manufacture to control stepping motor accurately and efficiently.51single chip microcomputer is used as the cont r ol core of the mot o r,uln2003a is used as the driving chip of the motor,the small st e pping motor with:r ated volt a ge of5V is selec t ed,and five buttons of forward rotation,reverse rotation,stop,acceleration and deceleration are set,and the corresponding LED indicator lights are used for forward rotation,reverse rotation and stop.The resuIts show that:the circuit design is correct;the stepper motor can operate according to the button command,which meets the design expectation;the system can be applied to some occasions requiring high-precision control.Keywords:stepper motor;51single chip microcomputer;ULN2003A;Keil;Proteus0引言步进电机在工业制造、数控机床、各种伺服系统中均有应用。
基于单片机原理的步进电机的正反转程89397460
电机控制课程设计报告书题目基于单片机原理的步进电机的正反转目录目录 (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 汇报与口头表达能力。
电气与自动化系统的设计与实际应用能力。
基于单片机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作为核心部件进行逻辑控制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。
单片机控制步进电机正反转的实际应用程序
单片机控制步进电机正反转的实际应用程序/*这是一个控制步进电机正反转的实际应用程序*//*选用的是三相步进电机驱动器,p14口线用做步进电机的脉冲控制*//*p13口线用做步进电机的方向控制。
p15,p16,p17是光耦开关量输入*//*信号端,p20,p21,p22,p23与x25045看门狗存储器相连*//*k7,k8键是设定步进电机转动速度参数的加减键*//*k9是启动运行键,按一下k9,步进电机开始运行,直到p17口线有信号输入才停止*/ /*k10是停止键,任何时候按下k10都将停止步进电机当前的运行*//*k11是步进运行键,按一下,步进电机动一下*//*k12键是反向运行键,按一下,步进电机开始反向运行,知道p15口线有信号才停止*/ /*如果p16口线有信号输入,则只有k12键才起作用,其它键都没反应。
*/START:do;$INCLUDE(REG51.DCL)DECLARE (addrl,n,I,j,ok,ds) byte; /*定义变量*/declare l(5) byte;declare (dat,data) byte at (30h);declare delay word;DECLARE ACO(11) BYTE CONSTANT (05h,9fh,23h,0bh,99h,49h,/*定义LED段码表*/ 41h,1fh,01h,09h,00h);declare si literally 'p21',sck literally 'p20'; /*X25045囗线定义*/declare so literally 'p22',cs literally 'p23';dog:procedure; /* 初始化看门狗x25045 */cs=1;call time(1);cs=0;call time(1);cs=1;end dog;run:procedure; /*步进电机运行脉冲输出程序*/if ok=1 thencall dog;do;p14=0;call time(1);p14=1;call time(1);end;end run;DISPLAY:PROCEDURE(L0,L10); /*显示子程序*/DECLARE (L0,L10) BYTE; /*定义显示二位*/n=L10;n=aco(n); /*十位数BCD码译成段码*/sbuf=n; /*十位数送164显示*/do while ti=0; /*等待发送结束*/call dog; /*看门狗定时器复位*/end;n=L0;n=aco(n);sbuf=n; /*个位数送164显示*/do while ti=0;call dog;end;end display;outbyt: procedure(da); /*向看门狗存储器写入一字节*/ declare (i,da) byte;j=da; /*将要写入的字节赋给临时变量J */do i=0 to 7; /*左移8位,送到口线si */sck=0;j=scl(j,1);si=cy;sck=1; /*每移一位数据,跟一个时钟信号*/end;end outbyt;inbyt: procedure; /* 从看门狗存储器读出一字节*/ declare (i,di) byte;j=0;do i=0 to 7;sck=1;sck=0;cy=so;j=scl(j,1); /*从看门狗存储器读出一字节送入临时变量j*/ end;dat=j;end inbyt;wrenable: procedure; /* 置看门狗写使能*/sck=0;cs=0;; /* write enable command */call outbyt(06h); /* x25045 写使能指令06h */cs=1;sck=0;end wrenable;wrdisable: procedure; /* 置看门狗写禁止*/sck=0;cs=0;; /* write disable command */call outbyt(04h);sck=0;cs=1;end wrdisable;wrregister: procedure; /* 写状态寄存器*/sck=0;cs=0;dat=01h; /* write register command */call outbyt(dat);; /* 00h--1.4S, 20h--200MS, 10h--600MS, 30h--disable Wdog */ call outbyt(00h); /* 设定看门狗定时时间*/;sck=0;cs=1;call time(200); /* wait to complete writting cycle */end wrregister;rdregister:procedure; /* 读看门狗状态寄存器*/sck=0;cs=0;; /* register read command */call outbyt(05h);call inbyt; /* status register read in <DAT> */sck=0;cs=1;end rdregister;wbyte:procedure; /* 看门狗存储器字节写入子程序*/ declare comm byte;sck=0;cs=0;comm=02h; /* 写指令02h */call outbyt(comm);call outbyt(addrl);call outbyt(dat); /* send one byte data to X25043 */cs=1;sck=0;call time(150);end wbyte;rbyte:procedure; /*看门狗存储器字节读出子程序*/declare comm byte;sck=0;cs=0;comm=03h; /* read command */call outbyt(comm);call outbyt(addrl);call inbyt; /* read one byte to <DAT> */sck=0;cs=1;end rbyte;incdata: procedure; /* 参数修改--"加"键处理子程序+ */if p10=0 then /* 如果K7键按下*/do;do while p10=0; /* 等待键松开有效*/call dog; /* 此处必需调用看门狗复位子程序("喂狗"),否则程序将被看门狗复位*/ end;data=data+1; /* 设定值+1 */if data>99 then data=1; /* 规定设定值的上限*/L(1)=data MOD 10; /*将设定值的十位数拆出来送给十位数显示变量L(1) */L(2)=data/10; /*将设定值的个位数拆出来送给个位数显示变量L(2) */call display(L(1),L(2)); /* 将改变后的设定值送164显示出来*/call time(200); /* 延时*/call dog;call time(200);call dog;call wrenable; /* 置存储器写使能*/addrl=00h; /* 置存储器地址*/dat=l(1);call wbyte; /* 将变量L(1)的值写入存储器00h位置*/call wrenable;addrl=01h;dat=l(2);call wbyte; /* 将变量L(2)的值写入存储器01h位置*/end;end incdata;decdata: PROCEDURE; /* 参数修改---"减"键处理子程序- */IF p11=0 THEN /* k8 键处理子程序*/do;do while p11=0;call dog;end;DATA=DATA-1; /* 设定值-1 */if data=0 then data=99;L(1)=data MOD 10;L(2)=data/10;call display(l(1),l(2));call dog;call time(200);call dog;call time(200);call dog;call wrenable;addrl=00h;dat=l(1);call wbyte;call wrenable;addrl=01h;dat=l(2);call wbyte;end;END decdata;starton: PROCEDURE; /* start */declare sd byte;if p12=0 THEN /* K9键处理子程序*/do;do while p12=0;call dog;end;if p17=0 then ok=0; /* 如果p17 口线上有信号输入,则运行标志置0 (停止运行)*/ p13=1; /* 置步进电机正向运转*/call time(200);call dog;do while ok=1; /* 当运行标志为1时,执行速度延时操作*/do sd= 0 to data; /* 根据设定值data的数值延时来确定步进电机运行时的脉冲给定速度*/call dog;end;end;END starton;step: PROCEDURE; /* step */declare sd byte;p13=1; /* 置步进电机正向运转*/call time(200);IF p33=0 THEN /* k11键处理子程序*/do;if p17=0 then ok=0; /* 如果p17上有信号输入,则停止运行*/do while p33=0;do sd= 0 to data; /* 调用延时,调整步进电机的运行速度*/call dog;call time(2);end;call run;call dog;end;end;ok=0;END step;back: PROCEDURE; /* 反向运行处理子程序*/declare sd byte;IF p34=0 THENdo;do while p34=0;call dog;end;if p15=0 then ok=0; /* 反向运行时,如果遇到p15上有信号输入,则停止步进电机运行*/ p13=0; /* 置步进电机反向运行*/call time(200);call dog;do while ok=1;do sd=0 to data; /*根据设定值调节步进电机的运行速度*/call dog;call time(2);end;call run;if (p15=0 or p32=0 ) then ok=0; /* p15 或p32 口线任意一个有信号输入,停止运行*/ end;end;END back;MAIN$PROGRAM: /* 初始化主程序*/ea=0; /* 关中断*/SCON=00h; /*置串口方式0 ,串行数据输出模式*/PCON=00h;tmod=11h;enable; /* 开中断(ea=1) */SCK=0;cs=1; /* 定义存储器口线初始状态*/call wrenable;call wrregister; /* 看门狗存储器初始化*/call wrenable;call dog;p2=0ffh; /* 初始化各个口线的状态*/p1=0ffh;ok=0;p14=1;p32=1;p33=1;p34=1;p13=1;ADDRL=00h; /* 上电复位后从存储器中读出设定的速度值*/CALL rbyte;l(1)=dat;addrl=01h;call rbyte;l(2)=dat;DATA=L(1)+L(2)*10; /*将读出的值合并成十进制,存入变量data中*/ /* 以下是主循环程序*/LOOP:IF p10=0 THEN CALL incdata; /* 检测各个按键是否有按下*/IF p11=0 THEN CALL decdata;if p12=0 thendo;ok=1;call starton;end;if p34=0 thendo;ok=1;call back;end;if p33=0 thendo;ok=1;call step;end;call dog;CALL DISPLAY(L(1),L(2)); /* 将设定值送164显示*/call dog;CALL TIME(100);call dog;GOTO LOOP;END START;。
基于单片机的电动机正反转控制设计要点
基于单片机的电动机正反转控制设计学生: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 设计研究的目的和意义由于步进电机不需要位置传感器或速度传感器就可以实现定位,即使在开环状态下它的控制效果也是令人非常满意的,这有利于装置或设备的小型化和低成本,因此步进电机在计算机外围设备、数控机床和自动化生产线等领域中都得到了广泛的应用。
基于单片机的步进电机转速控制
电子器件市场调研与系统设计实践专业:***班级:姓名:学号:指导教师:****大学****学院**** 年**月**日基于单片机的步进电机调速与正反转控制系统1 系统要求步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。
随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。
本设计基于单片机控制的步进电机设计课题是以单片机为主控制模块,从而实现电机的启停、正反转和调速的目的的一个设计课题。
在课题设计之前,通过互联网了解到了当前步进电机的发展状况及发展前景。
同时也了解了当今最先进的步进电机所具备的功能,方便为课题设计提供参考和借鉴;最后,通过画原理框图的形式,以最直观的方式为整个课题设计制定了流程及要求。
1.1 设计目的《电子器件市场调研与系统设计实践》是本专业的重要实践教学环节,强调实际应用技能训练。
结合自动化专业系列课程的学习,培养我们对电子器件的认知,锻炼我们的市场调研能力,加深我们对自动化专业系列课程知识的掌握。
通过课程设计环节培养学生与人交往、独立思考和处理问题的能力。
1.2 设计内容及要求本次课程设计所选的步进电机是四相步进电机,采用的方法是利用单片机控制步进电机的驱动。
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次课程设计就是通过改变脉冲频率来调节步进电机的速度的,并且通过数码管显示其转速的级别。
基于单片机控制步进电机报告
电子赛培训课作品设计报告题目:单片机控制步进电机姓名:班别:学号:序号:完成时间:2012-5-17华南理工大学广州学院电子信息工程学院目录引言 (1)一、系统方案的选择和论证 (1)二、总体设计 (2)三、单元电路设计 (3)四、整体测试 (4)五、结论 (5)六、总结 (6)七、参考文献 (6)单片机控制步进电机摘要:本设计采用一块AT89C52单片机对一个四相步进电机进行控制,使步进电机在安全温度内按输入的步数和转动的方向进行运行。
控制电机转动的方法采用四相八拍控制法。
本设计采用矩阵键盘实现步进电机不同转动步数的输入以及转向的控制,还有对键盘实现锁键和开锁的作用。
用DS18B20代替电机的测温系统,实现超温报警和停机的功能。
引言随着数字化技术发展,数字控制技术得到了广泛而深入的应用。
步进电机是一种将数字信号直接转换成角位移或线位移的控制驱动元件, 具有快速起动和停止的特点。
因为步进电动机组成的控制系统结构简单,价格低廉,性能上能满足工业控制的基本要求,所以广泛地应用于手工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,投影仪、数码摄像机、大型望远镜、卫星天线定位系统、医疗器件以及各种可控机械工具等等。
设计内容:采用单片机控制一个三相单三拍的步进电机工作。
要实现的功能:一、步进电机的旋转方向由正反转控制信号控制;二、步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24和27步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。
只有当键盘锁打开并输入步数时,步进电机才开始工作;三、电机运转的时候有正转和反转指示灯指示;四、电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。
本次设计的意义:1) 了解51系列单片机及外围相关芯片、电路的工作原理和接口技术,学会进行控制系统软件程序设计。
2) 编制程序完成步进电机速度、方向、及旋转角度的控制。
单片机控制步进电机的正反转
单片机控制步进电机的正反转单片机控制步进电机的正反转最近好长一段时间没有来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圈,这样,我们要步进电机走多少圈时,可以在里面嵌套一个程序,达到我们要电机转多少圈的目的。
基于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仿真图如下。
基于单片机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所示。
基于单片机的步进电机控制系统
4 * f J I A N G S U U N I V E R S I T Y单片机课程设计-- 步进电机控制所属学院:电气信息工程学院 _______专业班级:电气卓越_____________姓名:________________________________学号:_______________________________指导教师:孙__________________ 日期:2015 年6月26日.设计任务1.从键盘上输入正、反转命令,转速参数(16级)和转动步数显示在 LED 显示器上。
显示器上显示:第一位为 0表示正转,为1表示反转;第二位0~F 为转速等级,第三到第六位设定步数。
2.单片机依显示器上显示的正、反转命令,转速级数和转动步数进行相应动作,转动步数减为零时停止转动。
1.步进电机原理如图,当有一相绕组被通电激励时,磁通从正相齿,经过软铁芯的转子,并以最短路径流向负相齿,为使磁通路径最短,在磁场力的作用下,转子被迫移动,使最近的一对齿与被激励的一相对准。
那么,通过对它每相线圈中电流的顺序切换可使电机作步进式旋转。
相数:产生不同对极N、S磁场的激磁线圈对数。
拍数:指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB或 A-B-C-D-A,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.步距角:对应一个脉冲信号电机转子转过的角位移•步距角=360/(转子齿数*拍数)=18度2.LED显示器原理LED 数码管实际上是由七个发光管组成 8 字形构成的,这些段分别由字母a,b,c,d,e,f,g,dp 来表示。
LED显示器有共阳极和共阴极两种接法,共阴极显示器的发光二极管阴极LED连接在一起,通常此公共阴极接地,当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示;同样,共阳极显示器的发光二极管LED阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极为低电平时,发光二极管点亮,相应的字段被点亮。
基于单片机原理的步进电机的正反转程设计报告
基于单片机原理的步进电机的正反转程设计报告步进电机是一种电动机,能够精确地控制旋转角度和位置,广泛应用于工业和自动化控制系统中。
本篇报告将介绍基于单片机原理的步进电机的正反转程设计。
步进电机是一种特殊的电动机,每次输入一个脉冲信号,电机就会转动一个固定的角度,称为步距角。
步进电机的控制原理是通过改变相序对电机进行控制,根据不同的相序,电机可以实现正转或反转。
步进电机的正反转程设计涉及到两个方面,一是电机的控制电路,二是单片机的编程控制。
首先,电机的控制电路是步进电机正反转程设计的关键。
常见的控制电路有两种:全桥驱动电路和双H桥驱动电路。
全桥驱动电路由四个开关管组成,通过对不同开关管的开关控制,可以激活不同的相序,实现电机的正反转。
双H桥驱动电路由两个H桥组成,通过对H桥的开关控制,可以激活不同的相序,实现电机的正反转。
根据实际需求和控制方式选择适合的电机控制电路。
其次,单片机的编程控制是步进电机正反转程设计的关键。
单片机可以通过输出脉冲信号控制电机的正反转和转动速度。
编程时需要设置好脉冲信号的频率和方向,可以通过调节脉冲信号的频率来控制电机的转动速度,通过改变脉冲信号的方向来控制电机的正反转。
在步进电机的正反转程设计中,还可以考虑加入其他功能,如限位检测、位置控制等。
限位检测可以通过加入限位开关来实现,当电机转动到限位位置时,限位开关会触发信号,单片机可以根据信号做出相应的处理。
位置控制可以通过加入编码器等位置传感器来实现,单片机可以根据传感器反馈的信号准确控制电机的位置。
最后,步进电机的正反转程设计需要进行实际的调试和测试。
在实际调试和测试中,需要根据预设的参数和要求,进行电机的正反转程测试和性能评估。
根据实际测试结果,可以对设计进行优化和改进,以达到更好的性能和可靠性。
总之,基于单片机原理的步进电机的正反转程设计是一个复杂而关键的任务,需要综合考虑电机控制电路和单片机编程控制两个方面。
在设计过程中,需要理解步进电机的工作原理和控制原理,结合实际需求和要求进行设计和调试,最终实现电机的可靠正反转程控制。
基于单片机的直流电机控制(正反转、开关控制)
基于单片机的直流电机控制(正反转,开关控制)原理图如下:程序如下:/*用电机来代表门的转动情况*/#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();}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机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所示。
图3-1硬件连接图按键功能按键采用3个功能键,K1、K2和K3按键开关分别接在单片机的~引脚上,用来控制步进电机的转向,作为控制信号的输入端键。
按K1时,步进电机正传;按K2时,步进电机反转;按K3时,步进电机停止转动。
单片机At89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
At89C52主要技术参数如下:与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz~33MHz三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器图2-2 At89C52引脚图图2-3ULN2003驱动电路单片机的输出电流太小,不能直接与步进电机相连,需要增加驱动电路。
对于电流小于的步进电机,可以采用ULN2003类的驱动IC。
ULN2003技术参数如下所示。
最大输出电压:50V。
最大连续输出电流:。
最大连续输入电流:25mA。
功耗:1W。
如图2-4所示为2001/2002/2003/2004系列驱动器引脚图,图3-3左侧1~7引脚为输入端,接单片机P1口的输出端,引脚8接地;右侧10~16引脚为输出端,接步进电机,引脚9接电源+5V,该驱动器可提供最高的电流。
ULN2003 的每一对达林顿都串联一个的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。
ULN2003 采用DIP—16 或SOP—16 塑料封装。
方框图方框图封装外形图ULN2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。
它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。
ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。
用户输出口的外接负载可根据以上参数估算。
采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。
通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。
作用:ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。
比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
该电路的特点如下: ULN2003的每一对达林顿都串联一个的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
图2-4-1ULN2003芯片引脚图ULN2003芯片引脚介绍引脚1:CPU脉冲输入端,端口对应一个信号输出端。
引脚2:CPU脉冲输入端。
引脚3:CPU脉冲输入端。
引脚4:CPU脉冲输入端。
引脚5:CPU脉冲输入端。
引脚6:CPU脉冲输入端。
引脚7:CPU脉冲输入端。
引脚8:接地。
引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。
用于感性负载时,该脚接负载电源正极,实现续流作用。
如果该脚接地,实际上就是达林顿管的集电极对地接通。
引脚10:脉冲信号输出端,对应7脚信号输入端。
引脚11:脉冲信号输出端,对应6脚信号输入端。
引脚12:脉冲信号输出端,对应5脚信号输入端。
引脚13:脉冲信号输出端,对应4脚信号输入端。
引脚14:脉冲信号输出端,对应3脚信号输入端。
引脚15:脉冲信号输出端,对应2脚信号输入端。
引脚16:脉冲信号输出端,对应1脚信号输入端。
参考电路接法如图2-4-2图2-4-2参考电路接法步进电机步进电机的特点:1)一般步进电机的精度为步进角的3-5%,且不累积。
2)步进电机外表允许的温度高。
步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。
3)步进电机的力矩会随转速的升高而下降。
当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。
在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。
步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
步进电机的工作原理:步进电机是一种用电脉冲进行控制 ,将电脉冲信号转换成相位移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比 ,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次设计采用的电机STEPPER-MOTOR型号步进电机,如图图 STEPPER-MOTOR型号步进电机第三章软件设计软件流程图程序设计流程图如图4-1所示,主要包括键盘扫描模块、步进电机正转模块、步进电机反转模块和步进电机定时模块。
图4-1程序设计流程图激磁方式二相步进马达的激磁方式有下列两种:(1).全步激磁全步激磁方式又可分为1 相激磁与2相激磁两种方式,说明如下:1相激磁每次只激磁一相线圈,每输入一个脉波,便产生一步级的转,如图11所示,由图中可知,当激磁依A→B→A→B→A……相顺序,则马达顺时针方向旋转;若依B→A→B→A→B……相顺序激磁,则马达依逆时针方向旋转。
此种激磁方式之优点为线圈消耗功率小,角精确度良好,但其转距小,加上阻尼特性不良,易失步。
图4-2-12相激磁每输入一个脉波,将有二相线圈激磁,如图12所示,由图中可知,若依AB→BA→AB→BA→AB……相顺序激磁,则马达顺时针方向旋转:若依BA→AB→BA→AB→BA……相顺序激磁,则马达转向为逆时针方向。
此种激磁方式由于同时有两组线圈激磁,输出转距较大,加上阻尼效果良好,故能追踪较高的脉波率,但其缺点为耗电较大,容易发热。
图4-2-2(2)半步激磁此种激磁方式又称1-2相激磁,激磁一相线圈和二相线圈交互进行,每加入一数字脉波所转动之角度为原步进角的一半,因此分辨率可提高一倍,且运转时相当平滑,故与2相激磁方式同受广泛使用。
图13为二相步进马达采用1-2相激磁方式之时序图,由图中可知,若依照A→AB→B→BA→A→AB→B→BA→A→AB……相的顺序激磁,则步进马达将以顺时针方向旋转;但如果依照BA→A→AB→B→BA→A→AB→B→BA……相顺序激磁,则马达逆时针方向旋转图4-2-3附录附件A 源程序#include <>sbit p00 = P0^0;sbit p01 = P0^1;sbit p02 = P0^2;unsigned char codeForward[4]={0xFC,0xF9,0xF3,0xF6};Main单片机C语言程序设计实训100例.北京航空航天大学出版社,2010,5[9]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2007[10]郭天祥.新概念51单片机C语言教程——入门、提高、开发、拓展、全攻略[M].电子工业出版社,2011,2致谢在单片机课程设计的学习过程中,在陈老师和各位同学的帮助下,我把老师以前教导的内容反馈到实践中来,在实践中验证了学习到的理论,同时也对理论知识进行了巩固。