基于C51单片机步进电机综合控制实验

上传人:无*** 文档编号:48878209 上传时间:2022-01-15 格式:DOCX 页数:34 大小:622.22KB
返回 下载 相关 举报
基于C51单片机步进电机综合控制实验_第1页
第1页 / 共34页
基于C51单片机步进电机综合控制实验_第2页
第2页 / 共34页
基于C51单片机步进电机综合控制实验_第3页
第3页 / 共34页
点击查看更多>>
资源描述
重庆工商大学计算机与信息工程学院学院单片机原理及应用课程实验报告实验名称:步进电机综合控制实验实验班级:班级:指导老师:(组长)一、摘要:本实验利用8051单片机达到控制步进电机的启动、停止、正转、反转、点动、转过指定角度、状态显示和数据指示的目的,使步进电机控制更加灵活。步进电机驱动芯片采用ULN2003,ULN2003具有大电流、高电压,外电路简单等优点。利用ZLG7290模块驱动LED数码管显示速度设定值。通过这个单片机控制系统的设计来掌握步进电机的工作原理和驱动过程以及LED显示原理和ZLG7290模块的使用方法,用LED数码管显示实验要求的状态结果,设计电路的硬件接线图和实现上述要求的程序。关键词:51单片机步进电机ZLG7290ULN2003二、设计内容与要求:1 、任务介绍:实现步进电机按规定的速度正转、反转,转过指定的角度,要有点动功能。所有命令通过键盘输入,步进电机在运行过程中要有状态和数据指示。2 、每套设计文档应包括:系统原理说明、程序框图、电路原理图和程序清单。三、实验器件介绍及原理:本实验采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。在单片机环境下,用ULN2003驱动芯片驱动步进电机,用ZLG7290芯片作用下的按键控制步进电机的运行,从而达到实验要求。其控制框图(图一)为:图一:控制框图1、系统硬件介绍1.1 步进电机1.1.1 相关的技术指标:a、相数:指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机,本实验用的是四相步进电机。电机相数不同,其步距角也不同。b、步距角:表示控制系统每发一个步进脉冲信号,电机所转动的角度。本实验程序运行前要先测量步进电机的步距角。c、拍数:完成一个磁场周期性变化所需脉冲数或导电状态,或指电机转过一个步距角所需脉冲数。本实验用四相八拍运行方式,为A-AB-B-BC-C-CD-D-DA-A1.1.2 工作原理:步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。而不受负在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。1.1.3 步进电机的驱动:步进电机的驱动可以选用专用的电机驱动模块,比如L298、FT5754等,这类驱动模块接口简单,操作方便,它们既可以驱动步进电机,同时也可以驱动直流电机。但本实验使用ULN2003a驱动器,下面介绍该芯片。图二:步进电机及其驱动电路1.2 ULN2003A芯片ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。比如1脚输入,16脚输出,负载接在VCC与16脚之9脚。I:1.2.1 ULN2003的作用:ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器。ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。1.2.3 ULN2003A功能及引脚图:功能:ULN2003是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片。经常在以下电路中使用,作为显示驱动、继电器驱动、照明灯驱动、电磁阀驱动、伺服电机、步进电机驱动等电路中。ULN2003的每一对达林顿都串联一个2.7K的基极电阻在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。ULN2003的封装采用DIP16或SOP16。ULN2003可以驱动7个继电器,具有高电压输出特性,并带有共阴极的续流二极管使器件可用于开关型感性负载。每对达林顿管的额定集电极电流是500mA,达林顿对管还可并联使用以达到更高的输出电流能力。显示电路主要包括大型LED数码管BSI20-1(共阳极,数字7高12cm)和高电压大电流驱动器ULN2003,大型LED数码管的每段是由多个LED发光二极管串并联而成的,因此导通电流大、导通压降高。ULN2003是高压大电流达林顿晶体管阵列电路,他具有7个独立的反相驱动器,每个驱动器的输出灌电流可达500mA,导通时输出电压约1V,截止时输出电压可达50V。ULN2003的17脚为信号输入脚,依次对应的出端为1610脚,8脚为接地端。当驱动电源电压为+12V时,若要求数码管每段导通电流为40mA,则每段的限流电阻为50。则一块ULN2003恰好驱动一个LED数码管的7段。大数码管采用共阳极接法,低电平有效。锁存器输出的电平经NPN三极管9014反相后,再由ULN2003放大后推动大数码管显示图四:ULN2003A弓I脚图1.3 ZLG7290芯片1.3.1 ZLG7290作用及其功能介绍ZLG7290能够直接驱动8位共阴式数码管(或64只独立的LED),同时还可以扫描管理多达64只按键。其中有8只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt键一样。另外ZLG7290B内部还设置有连击计数器,能够使某键按下后不松手而连续有效。采用I2C总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可控任一数码管闪烁。引脚说明如下图:13_12Dig79,1DigbSegB1_LDi端ScgCII.2Di般SegD4Dig3ScgLDig2ScgFDiglSegClhIQDi典Scgil20_1QSDAvcc16IVSCLOSt2lo“NTGM)OSCl/RES17Z,G729O图五:ZLG7290引脚图1.3.2 ZLG7290使用说明ZLG7290B是基于I2C总线接口的芯片。主控单片机ADUC831作为主器件时,内部没有I2C总线功能,因此需用SPI总线的引脚来模拟I2C总线。具体连接如下:ZLG7290BADUC831GNDDGNDSDAMOSISCLSCLOCK/INTINT0VCCDVDD但是,这种连接不是唯一的,只是在所写的软件里需要这样连接。其实中断可以根据自己所选的中断而定。地(GND)和电源(VCC)也可以另外从电源上接过来。所用电源为5V。编译软件使用的是WSD,这个软件主要是用于AD系列芯片的。只要下载扩展名为HEX的文件即可。1.3.3 ZLG7290工作原理ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。此外,ZLG7290B的电路简单,使用也很方便。用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。微控制器可通过两种方式得到用户的键盘输入信息。其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根IO口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。1.3.4ZLG7290驱动数码管及按键开关连接线路图V*图八:ZLG7290驱动按键开关电路图图六:ZLG7290电源部分接线图图七:ZLG7290驱动数码管电路图在本实验运用了十个按键其中:S1按键控制步进电机的运转方向,S2控制步进电机的S6为步启动,S3控制步进电机的关断,S4控制步进电机的单步运行键,S5为步数加键,数减键,S7为速度加键,S8为速度减键,S9为连续运行与指定步数运行切换键。1.4 总电路图:电路图中包含最小系统、驱动电路和显示电路39XTAL1P0.0/AD0RSTP2.0/A8PSEN30VCCALEU23c3BP1.2P3.2/INT08P1.7P3.7/RDJULN2003AAI89C51 Q187654321k1k1k4c5c6C7C1B2B4B5B6B7B1212P1.0P1.1P1.3P1.4P1.5P1.6P3.0/RXDP3.1/TXDP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15COM 1C 2Ck k3434f f fl 卜P3.3/INTP3.4/T0P3.5/T1P3.6/WR141312Seg G Seg HcCONN-DIL16-o-6-VCCrcC2X1CRYSTALZLG7290C3C44560kVCC OSC2 OSC1 /RESSDA SCL /INTGND470pT 22p1N4006GMH OOO OOOQCI8 7 6 5 4 3 2 1ACONN-DIL1638二二二 一21二:26-三10一二二二 一1CONN-DIL16T122pU1C6C1XTAL2I- 10uSeg ASeg B Seg C Seg D Seg ESeg FDig 7Dig 6Dig 5Dig 4Dig 3Dig 2Dig 1Dig 0宰D3R12图九:总电路图1.4.1 最小系统:单片机最小系统或者称为最小应用系统,素质用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:单片机、复位电路、晶振电路。a、复位电路:使用了独立式键盘,单片机的P1口键盘的接口。内部震荡方式和外部b、晶振电路:8051单片机的时钟信号通常用两种电路形式电路得到:中断方式。内部振荡方式的外部电路如下图所示。VCCC5470PU119C110uC6T卜470p二 X210kR1VCCD2U2916151413121110COM 1C 2C 3C 4C 5C 6c 7c1B2B3B4B5B6B7B223344556677811ULN2003A, XTAL1P0 0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2 5/A13P2.6/A14P2.7/A15P1.0P3 0/RXDP1.1P12P3.1/TXDP3 2/INT0P13P3 3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD189AT89C512930-31 39 F 37 36 35 -H3433 3221 222 23 24 25 26 27 281011121314151617图十:时钟振荡电路14 16CCOI1.4.2 驱动电路:通过ULN2003构成比较多的驱动电路,电路图如图十所示。通过单片机的P1.0P1.3输出脉冲到ULN2003的1B4B口,经信号放大后从1C4C口分别输出到电机的A、B、C、D相。1.4.3 显示电路:在该步进电机的控制器中,电机可以正反转,可以连续与单步运行,可以加速、减速,其中电机转速的等级分为4级,为了方便知道电机的运行状态和电机的转速的等级,设计了电机转速,运行状态,和电机的工作状态的显示电路。电机的连续运行用武示,但步运行用d表示。转速一共4级,分别用14来表示,速度从14递增。电机的正向运行用f表示,反向运行用b表示。指定步数运行时其步数从199均可。2、系统软件设计2.1 程序流程图主要作用是根据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制,减速控制按钮,单步运行控制和指定步数运行控制。2.1.1 主流程图如下:2.1.2 外部中断程序流程图如下:外部中断入口2.2 程序清单2.2.1 步进电机测步距角的程序BAEQUP1.0BBEQUP1.1BCEQUP1.2BDEQUP1.3ORG0000HLJMPMAINORG0100HMAIN:MOVSP#60HACALLDELAYSMRUN:MOVR2,#2MOVP1,#08H;AACALLDELAYMOVP1,#0CH;ABACALLDELAYMOVP1,#04H;BACALLDELAYMOVP1,#06H;BCACALLDELAYMOVP1,#02H;CACALLDELAYMOVP1,#03H;CDACALLDELAYMOVP1,#01H;DACALLDELAYMOVP1,#09H;DAACALLDELAYDJNZR2,SMRUNSJMP$循环转动电机控制方式为单双八拍DELAY:单步延时程序MOVR4,#255DELAY1:MOVR5,#255DJNZR5,$DJNZR4,DELAY1RETEND2.2.2步进电机按要求运行的程序/*基于51单片机的异步电机控制程序*/*#include#includeVIIC_C51.H#includeZLG7290.hsbitBA=P1A0;sbitBB=P1A1;sbitBC=P1A2;sbitBD=P1A3;sbitSDA=P1A6;sbitSCL=P1A7;sbitKEY_INT=P3A2;#defineucharunsignedchar#defineuintunsignedint/* 四相步进电动机单、双八拍运行状态表双八拍运行状态表11111110F8H11111100FCHAB11111101F4H11111001F6HBC11111011F2H11110011F3HCD11110111F1H11110110F9HDA*/ucharcodestep_tab=0xf0,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9;延时时间列表uintcodedelaytime4=60,40,20,10;/变量的定义uchar direction;/ 状态变量0 正向, 1 反向uchar continuous;/ 状态变量0 指定步数运行, 1 连续速度运行uchar run;/ 状态变量0 电机未运行, 1 电机运行中uchar speed_num;/ 连续速度运行标号1-4uchar cur_step;/ 八拍运行状态uchar step_num;/ 指定运行的步数,范围 0-99/键值定义# defineKey_dir1# defineKey_Run2# defineKey_stop3# defineKet_Step4# defineKey_step_add5# defineKey_step_sub6# defineKey_speed_add7# defineKey_speed_sub8#defineKey_Con_Set/ 方向键/ 启动键/ 停止键/ 单步运行键/ 步数加键/ 步数减键/ 速度加键/ 速度减键9/ 连续运行与指定步数运行切换键。表示有键按下/定义键盘中断标志,FlagINT0=1volatilebitFlagINT0=0;voidKeyProsess(ucharkey);*/*函数:INT0_SVC()功能:ZLG7290键盘中断服务程序说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平*IvoidINT0_SVC()interrupt0unsignedcharKeyValue;/读取键值KeyValue=ZLG7290_GetKey();/处理键值KeyProsess(KeyValue);/*函数:Delay()功能:定时器实现延时tms*/voidDelay(unsignedintt)do/TH=64536TH1=0xFC;TL1=0x18;TR1 = 1;/ 启动定时器 T1 并等待中断while(!TF1);TF1 = 0;/ 中断请求标致清零TR1 = 0;/ 停止 T1 定时器while(-t);,*函数:DispDir()功能:显示方向子程序说明:dat0正向,1反向*voidDispDir(uchardat)if(dat=0)ZLG7290_SendCmd(0x60+7,0x0f);/F表示正转elseZLG7290_SendCmd(0x60+7,0x0b);/B表示反转,*函数:DispSpeed()功能:显示速度号子程序说明:dat14代表四种不同的速度*void DispSpeed(uchar dat)ZLG7290_SendCmd(0x60+5,dat);/*函数:DispStepNum()功能:显示运行步数号程序说明:间接实现转过指定角度=步距角*步数*/voidDispStepNum(uchardat)unsignedchard;d=dat/10;ZLG7290_SendCmd(0x60+1,d);d=dat-d*10;ZLG7290_SendCmd(0x60+0,d);/*函数:DispContinuous()功能:显示运行状态,连续还是指定步数说明:0指定步数运行,1连续速度运行*/voidDispContinuous(uchardat)if(dat=0)表示指定步数运行状态表示连续速度运行ZLG7290_SendCmd(0x60+3,0x0d);/delseZLG7290_SendCmd(0x60+3,0x0c);/C/*函数:OnStep()功能:实现单步运行*/voidOneStep()if(direction=0)/正向if(cur_step=8)cur_step=1;elsecur_step+;P1=step_tabcur_step;/输出elseif(cur_step=1)cur_step=8;elsecur_step-;P1=step_tabcur_step;/输出I*函数:OnContinue()功能:连续运行*/*voidOnContinue()if(continuous!=0)/连续运行while(run!=0)OneStep();Delay(delaytimespeed_num-1);/延迟目的改变转速else/指定步数运行if(step_num!=0)OneStep();Delay(50);/50ms延迟step_num-;DispStepNum(step_num);/更新显示步数即显示剩下没有执行的步数if(run=0)return;/若停止键按下,则停止elserun=0;/停止return;/*函数:KeyProsess()功能:键值处理程序*/*voidKeyProsess(ucharkey)switch(key)caseKey_dir:/方向键if(run=0)if(direction=0)direction=1;elsedirection=0;DispDir(direction);break;caseKey_Run/启动键if(run=0)run=1;break;caseKey_stop:/停止键if(run!=0)run=0;break;caseKet_Step:/单步运行键实现点动功能if(run=0)run=1;OneStep();run=0;break;caseKey_step_add:/步数加键n=(步距角*60)/(360*t*0.001)单位r/minif(run=0)if(step_num=99)step_num=0;elsestep_num+;DispStepNum(step_num);break;caseKey_step_sub:/步数减键if(run=0)if(step_num=0)step_num=99;elsestep_num-;DispStepNum(step_num);break;caseKey_speed_add:/速度加键if(run=0)if(speed_num=4)speed_num=1;elsespeed_num+;DispSpeed(speed_num);break;caseKey_speed_sub:/速度减键if(run=0)if(speed_num=1)speed_num=4;elsespeed_num-;DispSpeed(speed_num);break;caseKey_Con_Set:/连续运行与指定步数运行切换键。if(run=0)if(continuous=0)continuous=1;elsecontinuous=0;DispContinuous(continuous);break;default:break;/*函数:SystemInit()功能:系统初始化*/voidSystemInit()/初始化单片机TMOD=0x11;/定时器设置,T0,T1方式1:16位定时器Delay(300);/延时300ms等待ZLG7290复位完毕EA=0;IT0 = 1;/INT0, 负边沿触发中断EX0 = 1;/ 允许外部中断INT0FlagINT0 =0;EA = 1;/ 初始化步进电机控制器direction = 0;/ 状态变量0 正向, 1 反向continuous =0;/ 状态变量0 指定步数运行, 1 连续速度运行run = 1; / 状态变量0 电机未运行, 1 电机运行中speed_num =1;/连续速度运行标号1-4cur_step =0; /八拍运行状态step_num = 0;/指定运行的步数,范围 0-99DispContinuous(continuous);DispStepNum(step_num);DispSpeed(speed_num);DispDir(direction);P1=step_tabcur_step;/输出/*主函数main()*/voidmain(void)SystemInit();/系统初始化while(1)/循环检测按键状态if(run=1)OnContinue();四、心得体会本次实验有我们六个人合作完成的,通过本次试验,我们收获了很多,懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。并且巩固以前所学过的知识,而且学到很多在书本上所没有学到过的知识。欢迎下载,谢谢观看!资料仅供参考学习
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


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

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


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