




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 电机驱动及转速测量实验1实验目的(1)掌握单片机通用I/O口的使用;(2)掌握使用单片机定时器产生占空比可调的PWM波;(3)掌握使用单片机定时器2的捕获功能实现电机转速测量的方法。2实验电路2.1实验装置硬件说明电机控制实验箱的原理框图如图1所示。图1 电机控制实验箱原理框图从图1可知,控制电机需要两个信号,分别为方向控制和转速控制,控制信号经过驱动电路后驱动电机运转,在电机的轴上安装有塑料转盘,转盘上装有小磁铁,当电机运动时带动小磁铁运动,每个小磁铁经过安装的霍尔传感器后,霍尔传感器都会输出一个脉冲信号,这个脉冲信号在实验中用于检测电机的转速。电机有两种控制方式,即手动方式和自动方式。在手动方式时,可以通过开关来控制电机方向;通过旋转电位器可以控制电机速度。在自动方式时,通过程序来控制电机的方向和转速。在本实验中,采用信号发生器模拟产生电机转速信号(模拟自动方式),由示波器观察单片机发出的驱动信号(模拟手动方式)。在下一次电机转速控制中会采用电机。2.2实验装置接口说明杜邦线连线单片机IO口模块接口杜邦线数量功能P0J38数码管数据段P2.2J2(B)1段锁存P2.3J2(A)1位锁存P3J248矩阵键盘数据段P1.0示波器1输出PWMP1.1信号发生器1捕获计数GND信号发生器、示波器地端2共地3开发环境程序开发调试软件为KeilC,下载软件为S51ISP,关于这两个软件的使用方法请参考“键盘显示实验指导书”。4实验要求(1)通过实验箱上的键盘输入调整PWM波的占空比,具体要求如下:l 当按键为0时,其占空比为20%,LED1显示值为0;l 当按键为1时,其占空比为40%,LED1显示值为1;l 当按键为2时,其占空比为60%,LED1显示值为2; l 当按键为3时,其占空比为80%,LED1显示值为3;用示波器观察以上PWM波波形。(2)将测量到的电机转速显示到实验箱的数码管LED3LED6上,转速单位为“转/分”。电机转速信号用信号发生器模拟产生。5例程参考见附录6实验报告(1)绘出硬件原理图(2)给出软件流程图(3)写出实验步骤(4)附上带注释的软件源码,并对各模块进行说明(5)总结实验心得7注意事项(1) 实验四的程序建立在本次实验的基础上,本实验中的两个功能(测速、输出PWM)必须要能够同时实现,并不互相影响。(2) 合理分配好定时器资源。附录:实验参考程序#include uchar PulsNum=0; /脉冲数计数器/unsigned int OverFlow=0; /定时器2溢出次数计数器#define KeyPort P3/unsigned char Speed=0;/unsigned char Time;#define DataPort P0 /定义数据端口 程序中遇到DataPort 则用P0 替换sbit LATCH1=P22;/定义锁存使能端口 段锁存sbit LATCH2=P23;/ 位锁存#define HIGH (65536-10000)/256#define LOW (65536-10000)%256sbit DCOUT = P14;/定义电机信号输出端口sbit DCIN=P12;unsigned char flag2=0;unsigned char flag1=0; unsigned char PulsNum=0; /脉冲数计数器unsigned int OverFlow=0; unsigned datal=0; /捕捉值的低8位unsigned datah=0; /捕捉值的高8位 unsigned char PwmL=1500;unsigned char PwmH=1500;unsigned long CountPerMinute=60000000; /每分钟计数值=fosc/12*60=5*fosc=5*11.0592Munsigned int speed=0;unsigned int delay_num = 10; /速度值void CaculateSpeed(unsigned a,unsigned b);unsigned int TargetSpeed=0,SpeedError,SpeedErrorIntg;unsigned char TISignal=0;/*- 全局变量-*/unsigned char PWM_ON; /定义速度等级#define CYCLE 10 /周期Unsigned char code DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char code WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsigned char TempData8; /存储显示值的全局变量/*- 函数声明-*/void DelayUs2x(unsigned char t);/us级延时函数声明 void DelayMs(unsigned char t); /ms级延时void Display(unsigned char FirstBit,unsigned char Num);/数码管显示函数unsigned char KeyScan(void);/键盘扫描void Init_Timer0(void);/定时器初始化/*- 主函数-*/void main (void)unsigned char num; PWM_ON=0;Init_Timer0(); /初始化定时器0,主要用于数码管动态扫描/TempData0=0x5E; /d/TempData1=0x39; /Cwhile (1) /主循环 num=KeyScan(); /循环调用按键扫描 if(num=1)/第一个按键,速度等级增加 PWM_ON=1; PwmH=600; PwmL=2400; else if(num=2)/第二个按键,速度等级减小 PWM_ON=3; PwmH=1200; PwmL=1800; else if(num=3)/第二个按键,速度等级减小 PWM_ON=5; PwmH=1800; PwmL=1200; else if(num=4)/第二个按键,速度等级减小 PWM_ON=7; PwmH=2400; PwmL=600; if(flag2=1) unsigned k,b,s,g; /k,b,s,g分别代表千位、百位、十位、各位 unsigned int middle=0;/定义中间变量,代表计算的余数 if(speed=0)&(speed8;/计数值赋为低电平时间值 TL0=(65536-PwmH);/ %256 DCOUT=0; /输出低电平 Display(0,8); else if(DCOUT=0) /当前为低电平 TH0=(65536-PwmL)8;/计数值赋为高电平时间值 TL0=(65536-PwmL);/ %256 DCOUT=1; /输出高电平 Display(0,8); /* static unsigned char count; TH0=(65536-1000)/256; /重新赋值 2ms TL0=(65536-1000)%256; /Display(0,8); / 调用数码管扫描 if (count=PWM_ON) DCOUT = 0; /如果定时等于on的时间, /说明作用时间结束,输出低电平 count+;if(count = CYCLE) /反之低电平时间结束后返回高电平 count=0;if(PWM_ON!=0) /如果开启时间是0 保持原来状态 DCOUT = 1; */ /*-按键扫描函数,返回扫描键值-*/unsigned char KeyScan(void) unsigned char keyvalue; if(KeyPort!=0xff) flag1=1; DelayMs(10); if(KeyPort!=0xff) keyvalue=KeyPort; while(KeyPort!=0xff);switch(keyvalue) case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; case 0xf7:return 4;break; case 0xef:return 5;break; case 0xdf:return 6;break; case 0xbf:return 7;break; case 0x7f:return 8;break; default:return 0;break; return 0;void time2() interrupt 5 if(EXF2=1) /捕捉引起的中断 PulsNum+; /脉冲个数加1 if(PulsNum=1) /定时器清零 OverFlow=0; /定时器2溢出次数计数器清零 TH2=0; TL2=0; else if(PulsNum=9) /电机转一圈后计算转速 TR2=0; datal=RCAP2L; /读取捕捉值 datah=RCAP2H; CaculateSpeed(datah,datal);/计算转速 TR2=1; PulsNum=0; /脉冲个数清零 EXF2=0; /清中断标志 else if(TF2) /计数溢出引起的中断 OverFlow+; /溢出次数加1 TF2=0; /清中断标志 /*-定时器1 中断服务函数-*/static int time=0;void time1() interrupt 3 /TH1=(65536-1000)/256; /重新赋值 2ms /TL1=(65536-1000)%256; /Display(0,8); / 调用数码管扫描 /*TH1=0;TL1=0;time+; /每1ms,time 加1if(time=200) /time 加满2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45441-2025温室气体产品碳足迹量化方法与要求塑料制品
- 湘豫名校联考2024-2025学年高三下学期第二次模拟考试语文试卷(图片版无答案)
- 【道路运输企业主要负责人】理论考题及答案
- 2025个人向个人借款的合同
- 2025农田租赁合同书下载
- 2025租房合同模板下载3
- 高校毕业生创业扶持政策全新实施方案
- 长春建筑学院《铁路行车织》2023-2024学年第二学期期末试卷
- 证券从业资格考试题库与答案(A卷)
- 九州职业技术学院《工程项目成本规划与控制》2023-2024学年第二学期期末试卷
- 瑞幸加盟合同范本
- CJJ 122-2017 游泳池给水排水工程技术规程
- 【人教部编版】五年级语文下册第13课《人物描写一组 摔跤》教学课件
- 读书分享读书交流会《四世同堂》
- 2024年人教精通版四年级下册英语期末专项复习-阅读理解
- 中医推拿基础培训课件
- 防电信诈骗安全教案
- 产品履历表完
- 保健食品备案产品可用辅料及其使用规定
- 肺癌伴胸腔积液护理查房
- 健康管理中的健康教育与健康促进研究
评论
0/150
提交评论