实验十步进电机与直流电机控制实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子科技大学中山学院学生实验报告院别:电子信息学院课程名称:微处理器实验班级:12电信A姓名:学号:实验名称:十、步进电机与直流电机控制实验实验时间:2014年12月1日成绩:教师签名:批改时间:一、实验原理与目的1、掌握步进电机工作原理、单片机接口电路及程序控制方法。2、掌握直流电机工作原理、单片机接口电路及程序控制方法。步进电机和直流电机是机电一体化系统中常用的两种电动执行设备。步进电机可在电脉冲信号的控制下,实现快速启停以及精确的角位移控制。直流电机可通过H桥电路切换转向,并可利用PWM技术进行调速。ZSC-1实验箱为MCU1配置了一个四相步进电机(其最小步距角为5.625°/64)和一个减速直流电机。图3.10.1为步进电机实验电路。P2.4~P2.7某根口线输出低电平时,相应的功率三极管导通,其所连接的一相线圈通电,口线输出高电平时线圈断电。程序以一定的时间间隔依次输出单4拍、双4拍或4-8拍方式对应的相序字,便可控制步进电机转动,颠倒相序字顺序,或改变时间间隔,步进电机的转向和转速也随之改变。图中按键KX0~KX3可用于步进电机转向、转速的控制输入。3KP2.425STC12C5A60S22SB772VccLA1N41483KP2.5262SB772VccLB1N41483KP2.6272SB772VccLC1N41483KP2.7282SB772VccLD1N4148MCU1KX0KX1KX2KX3P3.2P3.4P3.5P3.712141517图3.10.1步进电机实验电路图3.10.2为直流电机实验电路,其核心为功率三极管T104~T107组成的H型全桥驱动电路。在单片机控制信号作用下,4个功率管呈现多种不同的通断组合,使电机处于相应工作状态。图中按键KX0~KX3可用于直流电机转向、转速的控制输入。STC12C5A60S2VccP1.67P1.45P1.78MCU1KX0KX1KX2KX3P3.2P3.4P3.5P3.712141517123U107A74HC08456U107B74HC08T1042SB772T1052SB772T1072SD882T1062SD8822K2K2K2K1N4148X4MMT102REVENMFWD图3.10.2直流电机实验电路表10-1为不同控制信号组合对应的直流电机状态。进行调速控制时,单片机先将FWD、REV置为10或01组合,再通过ENM输出PWM信号,利用PWM信号的不同占空比来调节电机绕组的平均电压,从而实现电机转速的控制。表3.10.1直流电机控制功能表ENMFWDREV电机状态ENMFWDREV电机状态000制动100制动001惰行101反转010惰行110正转011惰行111制动二、实验设备1、PC机一台(已安装KeiluVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。三、实验内容与分析1、设计程序,控制四相步进电机以4-8拍方式(步距角为5.625°/64)正转90°,停2s,然后反转90°,再停2s,如此循环。①在Keil中编写源程序。C语言参考程序如下(请将下划线部分补充完整)://********************************头文件声明*************************#includereg51.h//*******************************数据类型定义************************typedefunsignedcharuint8;typedefunsignedintuint16;//*******************************常量数组声明************************uint8codeFWD_TABLE[8]={0xEF,0xCF,0xDF,0x9F,0xBF,0x3F,0x7F,0x6F};//4-8拍正转相序字uint8codeREV_TABLE[8]={0x6F,0x7F,0x3F,0xBF,0x9F,0xDF,0xCF,0xEF};//4-8拍反转相序字//******************************函数原型声明*************************voidDelay(uint16ms);//*********************************主函数****************************voidmain(){uint8i,j;while(1){for(j=0;j128;j++)//正转90°(1024步)for(i=0;i8;i++){P2=FWD_TABLE[i];//查表并输出正转相序字Delay(5);//软件延时(控制步进电机转速)}Delay(2000);for(j=0;j128;j++)//反转90°(1024步)for(i=0;i8;i++){P2=REV_TABLE[i];//查表并输出反转相序字Delay(5);//软件延时(控制步进电机转速)}Delay(2000);}}//******************************软件延时函数*************************voidDelay(uint16ms){uint16i;do{for(i=700;i;i--);}while(--ms);}//********************************程序结束***************************②在Keil中创建工程,加入源程序文件,设置选项,进行编译、连接、转换处理,生成HEX格式的单片机程序文件。③用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载(注意MCU1要先断电再上电)。④验证程序运行效果。也可对程序做适当修改,试验多种不同的控制方案和运行效果。2、设计程序,通过按键KX0、KX1调节步进电机的转速,通过按键KX2、KX3切换其转向。C语言参考程序如下(请将下划线部分补充完整)://********************************头文件声明*************************#includereg51.h//*******************************数据类型定义************************typedefunsignedcharuint8;typedefunsignedintuint16;//*********************************口线声明**************************sbitP32=P3^2;sbitP34=P3^4;sbitP35=P3^5;sbitP37=P3^7;//*******************************常量数组声明************************uint8codePHASE_TABLE[8]={0xEF,0xCF,0xDF,0x9F,0xBF,0x3F,0x7F,0x6F};//4-8拍相序字//******************************函数原型声明*************************uint8ScanKey();voidDelay(uint16ms);//*********************************主函数****************************voidmain(){inti=0,j,k,SpeedTime=25;uint8Key,Direction=0;while(1){P2=PHASE_TABLE[i];//查表输出当前相序字if(Direction==0)//准备下一个相序字{if(++i=8)i=0;}else{if(--i0)i=7;}for(j=0;jSpeedTime;j++)//由SpeedTime控制总延时{for(k=700;k;k--);//以1ms为延时单位Key=ScanKey();if(Key==0xFF)continue;//无键按下,则继续延时循环while(ScanKey()!=0xFF);//有键按下,等待按键释放后再处理if(Key==0){if(SpeedTime5)SpeedTime-=5;//KX0按下,则加速}elseif(Key==1){if(SpeedTime50)SpeedTime+=5;//KX1按下,则减速}elseif(Key==2)Direction=0;//KX2按下,则正转elseif(Key==3)Direction=1;//KX3按下,则反转break;//从延时循环中跳出}}}//**************************独立键盘扫描函数*************************uint8ScanKey(){if(P32==1&&P34==1&&P35==1&P37==1)return0xFF;//无键按下时,返回0xFFDelay(10);//延时消抖if(P32==0)return0;//KX0~KX3按下,分别返回0,1,2,3if(P34==0)return1;if(P35==0)return2;if(P37==0)return3;return0xFF;//无键按下时,返回0xFF}//******************************软件延时函数*************************voidDelay(uint16ms){uint16i;do{for(i=700;i;i--);//以1ms为延时单位}while(--ms);}//********************************程序结束***************************3、设计程序,控制直流电机全速正转2s,反转2s,然后再慢速正转2s,反转2s,如此循环。C语言参考程序如下(请将下划线部分补充完整)://********************************头文件声明*************************#includereg51.h//*******************************数据类型定义************************typedefunsignedcharuint8;typedefunsignedintuint16;//****************************特殊功能寄存器声明*********************sfrP1M1=0x91;sfrP1M0=0x92;//*********************************口线声明**************************sbitENM=P1^4;sbitREV=P1^6;sbitFWD=P1^7;//*******************************全局变量声明************************uint16PwmHighTiming,PwmLowTiming;uint8PwmHighTH0Buff,PwmHighTL0Buff,PwmLowTH0Buff,PwmLowTL0Buff;bitPwmPhase=1;//******************************函数原型声明*************************voidPWMInit();voidPWMOut(uint8Duty);voidDelay(uint16ms);//******************************中断服务函数*************************voidT0ISR()interrupt1{if(PwmPhase==1)//切换输出电平及定时

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功