单片机课程设计直流电机控制器程序设计.doc

上传人:文库蛋蛋多 文档编号:4147483 上传时间:2023-04-07 格式:DOC 页数:35 大小:170.50KB
返回 下载 相关 举报
单片机课程设计直流电机控制器程序设计.doc_第1页
第1页 / 共35页
单片机课程设计直流电机控制器程序设计.doc_第2页
第2页 / 共35页
单片机课程设计直流电机控制器程序设计.doc_第3页
第3页 / 共35页
单片机课程设计直流电机控制器程序设计.doc_第4页
第4页 / 共35页
单片机课程设计直流电机控制器程序设计.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《单片机课程设计直流电机控制器程序设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计直流电机控制器程序设计.doc(35页珍藏版)》请在三一办公上搜索。

1、沈 阳 工 程 学 院课 程 设 计设计题目: 直流电机控制器程序设计 系 别 班级 学生姓名 学号 指导教师 职称 起止日期:2010年 12月 27 日起至 2011年 1 月 7 日止沈阳工程学院课程设计任务书课程设计题目: 直流电机控制器程序设计 系 别 班级 学生姓名 学号 指导教师 职称 课程设计进行地点: 任 务 下 达 时 间: 10年 12月27日起止日期: 10年12月27日起至11年1月7日止教研室主任 年 月 日批准1.设计主要内容及要求;编写直流电机控制器程序。要求:1)具有PWM调速功能。 2)可以固定值调速,也可以连续调速。 3)能够进行速度级别显示。2.对设计论

2、文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。(3).论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求进行打印。(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。3.时间进度安排;顺序阶段日期计 划 完 成 内 容备注112月27日教师讲解题目,学生查阅相关资料212

3、月28日查阅相关资料、进行方案论证312月29日确定调速和显示方法412月30、31日编写程序51月4、5日调试程序61月6日撰写论文71月7日论文答辩沈 阳 工 程 学 院 单片机 课程设计成绩评定表系(部): 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通

4、顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分中 文 摘

5、要 直流电动机以其良好的线性调速特性、简单的控制性能、较高的效率、优异的动态特性, 一直占据着调速控制的统治地位。但是模拟控制电路有以下缺陷:模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。在用了PWM技术后,避免了以上的缺陷,实现了数字方式来控制模拟信号,可以大幅度降低成本和功耗。PWM输出脉冲占空比的变化,利用占空比的变化调整加在电机电枢绕组上的电压,改变电压随即改变电机电流,转速依据电流的大小来改变。脉宽调制(PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。系统的响应速度和稳定精度等指标比较好;具有很强的抗噪性,且

6、有节约空间、比较经济;电枢电流的脉动量小,容易连续,而且可以不必外加滤波电抗也可以平稳工作;系统的调速范围宽;使用元件少、线路简单。我的设计方案主要是通过控制定时器的初值,实现占空比可调,还应用了单片机中的LCD显示,定时器,外部中断从而达到学习、了解单片机相关指令在各方面的应用。它能实现的基本功能包括运行的开启与停止,连续调速,固定值调速,LCD显示,并且实现连续调速与固定值调速之间的双向切换功能。 关键词 单片机,LCD显示,PWM 无极调速 ,外部中断目录课程设计任务书I沈 阳 工 程 学 院III单片机 课程设计成绩评定表III中 文 摘 要IV1 设计任务描述11.1 设计题目:直流

7、电机控制器程序设计11.2 设计要求11.2.1 设计目的12 设计思路23 设计方框图34 各部分程序设计及参数计算44.1PWM调速44.2定时器初始化:44.3 连续调速54.4连续调速跳转到固定值调速64.5固定值调速74.6固定值调速跳转到连续调速84.7 液晶显示84.8 灯循环亮104.9 延时105 单片机和主要电路简介115.1 C8051单片机简介115.2 PWM调速原理115.3 液晶显示电路116 程序流程图137 小结148致谢159 参考文献16附录 程序清单171 设计任务描述1.1 设计题目:直流电机控制器程序设计1.2 设计要求1.2.1 设计目的熟练地应用

8、C8051单片机,运用定时器,外部中断和液晶显示。采用PWM调速是比较方便的。通过改变电机电枢电压接通时间与通电周期的比值(占空比)来控制电机速度。课程设计能够将所学内容应用到实践。 1.2.2 基本要求1)具有PWM调速功能。 2)可以固定值调速,也可以连续调速。 3)能够进行速度级别显示。1.2.3 发挥部分1) 单片机外部中断能控制电动机开启与停止2) 当开启PWM脉冲时,LCD显示 welcome to this system 3)LCD能够实时显示电动机的当前转速 THE SPEED IS r/min 4)LCD能够显示电动机的状态 加速显示up 减速显示down 5)通过LED显示

9、灯的两灭,可以知道现在的脉冲占空比的值 6) 可以实现电动机连续调速与固定值调速之间的双向切换2 设计思路调速信号的产生众所周知, 直流电动机转速n可表示如下:式中: U-电枢两端的电压 I-电枢电流 R -􀀂电枢电路总电阻;-每级磁通量 k-􀀂电动机结构参数。从式中可知, 改变U、􀀁、R 等变量都可达到调速的目的, 但最方便有效的调速方法是对电枢电压U进行控制。设计方案是应用PWM脉冲宽度调制技术实现速度的调节,通过改变电机电枢电压接通时间与通电周期的比值(占空比)来控制电机速度。即通过调节高低电平的比值来调节占空比,可以用来个定时器T0

10、,T1来实现,则占空比,当我们选择定时方式1时,每次都要重装初值,可以通过改变定时的重装初值, 来改变定时器的定时时间,从而来改变占空比。 1.无级调速:选用了两个定时器T0和T1,分别控制高电平和低电平,每次按下中断6,定时器T0加100,定时器T1减100,每次按下中断7,定时器T0减100,定时器T1加100,这样就实现了定时周期不变,占空比改变,高电平所占时间增加,低电平所占时间减小,此时输出电压变大,若连接电动机,电动机处于加速状态。高电平所占时间减小,低电平所占时间增大,此时输出电压变小,若连接电动机,电动机处于减速状态。2.固定值调速:在固定值调速过程中,每次按下中断6,程序跳转

11、到不同初始值的设定程序, 执行不同初始值的程序,转速就不同,从而实现固定值调速。 3.液晶显示:因为调速过程中一直保持周期不变,则高电平的时长与电流的大小成正比,而高电平的时长,与定时器的初值有关,定时器初值经过运算后的结果发送给LCD显示,这样可以使显示的数值更接近实际转速,而不是凭空想象,具有实际用途。在每次加速的子程序后,把一个变量置1,然后在显示程序中对这一位进行判断,若如果为1,则显示up,不为1,则显示down,从而能够对加速和减速在液晶中显示出来。同理,在液晶显示程序中,对另一个变量进行判断,可以再开启时显示 welcome to this system4.灯的显示:在固定值调速

12、的过程中每按下INT6,电动机的转速发生变化,当不同的灯亮时,我们就可以知道现在占空比是多少,有利于观察和调节占空比。5停止:在固定值调速中,按下INT6能跳转到我设定的5个固定值,如果不按INT7, 再按下INT7时,电动机停转。3 设计方框图C8051F020单片机外部中断6连续减速,固定值调速以及电动机的开启电动机的停止和连续加速外部中断7连续减速和固定值的切换占空比的值LED灯电动的转速和级别显示液晶显示4 各部分程序设计及参数计算4.1定时器初始化:1) 选择时钟脉冲fosc=16MHz 并选择12分频, 则CKCON=00H2) 选择定时器T0和T1,定时器T0的中断向量表是000

13、BH,定时器T1的中断 向量表是001BH, 工作方式1,TMOD=11H,初值相等,实现方波。3)输出端口为推挽方式 4)we(0);显示0转/分 5)while(1);不断循环执行以下程序 初始化部分程序: CKCON&=0XE7;/选择12分频 TMOD=0X11;/选择定时器0,1和工作方式一 OSCICN=0X07;/选择系统时钟16MHZ P00=0;/输出端口清零 TH0=c3;/定时器T0赋初值 TL0=c4; TH1=c1;/定时器T1赋初值 TL1=c2; EA=1;/中断总使能 ET0=1;/允许T0中断 ET1=1;/允许T1中断 we(0);/显示0转/分 XBR2=

14、0X40;/交叉开关使能 P1MDOUT=0XFF;/P1口输出方式为推挽 EIE2=0X30;/中断6,7使能 while(1);4.2 方波脉冲的实现当按下INT6时,执行TR0=1,从而开启定时器T0,当定时时间到了以后,跳到中断TIME0,并且关掉T0,开启T1;进入中断TIME1后,并且关掉T1,开启T0;这样不断的循环,就出现了方波。/定时器中断0/void time0() interrupt 1 P00=1;/端口输出高电平 TR0=0;/关闭定时器T0 TH1=c1;/重装初值 TL1=c2; TR1=1;/开启定时器1/定时器中断1/void time1() interrup

15、t 3 P00=0;/端口输出低电平 TR1=0;/关闭定时器T1 TH0=c3;/重装初值 TL0=c4; TR0=1;/关闭定时器T0 4.3连续减速调速 用c5来记录当前的状态,第一次按INT6时,执行case1,即开启方波脉冲,还执行才C11=0,即液晶会显示 welcome to this system;第二次按INT6时,执行case2,调用lianxujian()函数,并且调用we(c3),显示当前转速;以下同理,第五次按INT6时,执行case5,调用lianxujian()函数,并且调用we(c3),显示当前转速;并且执行c5=1;调回case2,继续减速,从而实现连续减速。

16、 void INT6 interrupt 18 P3IF=0; /中断标志位清零 c5=c5+01; switch(c5) case 1:TR0=1;/开启定时T0,P0.0输出方波 c11=0;/显示 welcome to this system we(c3);/显示当前转速 for(i=0;i=24000;i+);/延时程序 break; case 2:lianxujian(); we(c3);/显示当前转速 for(i=0;i=24000;i+); break; case 3:lianxujian(); we(c3); for(i=0;i=24000;i+); break; case 4

17、:lianxujian(); we(c3); for(i;i=24000;i+); break; case 5:lianxujian(); c5=1;/c5置1,回到case1,实现连续加速 we(c3); for(i;i=24000;i+); break;4.5固定值调速我所设计的程序中,有五个固定值,当到达第五个固定值后,再按INT6,则电动机停转。在P30没有接地时,当按INT7时,执行c5=5,这之后第一次按下INT6时,就回执行case6,调用gudingzhi(n)函数,实现固定值调速。第二次按下INT6时,就回执行case7,调用gudingzhi(n)函数,实现固定值调速。第三

18、次按下INT6时,就回执行case7,调用gudingzhi(n)函数,实现固定值调速。由于每次的n值不同,就会有不同的占空比。第六次按下INT6时,就回执行case11,执行TR0=0,TR1=0,从而关闭电动机。同时可以通过观察灯的亮灭来,知道当前的占空比是多少,当LED1亮时,占空比为10%;当LED3亮时,占空比为30%;当LED5亮时,占空比为50%;当LED7亮时,占空比为70%;当LED全灭时,占空比为90%;跳转部分程序:case 6:gudingzhi(12);/占空比10% we(c3); P11=0; for(i=0;i=18000;i+); break; case 7:

19、gudingzhi(6);/占空比30% we(c3); P11=1; P13=0; for(i=0;i=18000;i+); break; case 8:gudingzhi(0);/占空比50% we(c3); P11=1; P13=1; P15=0; for(i=0;i=20000;i+); break; case 9:gudingzhi(-6);/70% we(c3); P11=1; P13=1; P15=1; P17=0; for(i=0;i=20000;i+); break; case 10:gudingzhi(-12);/占空比90% we(c3); P17=1; for(i=0;

20、i=20000;i+); break; case 11:TR0=0;/关闭定时器T0 TR1=0;/关闭定时器T1 c5=0;/回到连续加调速 P16=0; for(i;i=24000;i+); break; 4.6固定值调速跳转到连续调速 由于P30接地,则P30=0,不会发生跳转,每按INT7后,执行if以后的语句,实现固定值与连续减之间的切换;当P30没有接地,即P30=1,则执行else 后的语句:当电动机处于固定值状态时,实现固定值与连续加速之间的调速;当处于连续减的状态时,就实现了连续减和连续加的切换。因此实现了连续加,连续减,和固定值三者之间的调速。 P30=0,当按下INT7时

21、,会在C5=1和C5=5之间切换,再按INT6会实现固定值与连续减之间的切换; P30=1,每按下INT7时,执行连续加速。从而实现固定值和连续减速到连续加速的控制; 转换的部分程序如下: void INT7 interrupt 19 P3IF=0; if(P30=0) /当P30=0时,执行这个程序 c6=c6+01; / 这个程序实现连减和固定值调 switch(c6) / 速的切换 case 1:P3IF=0; c5=1;/跳到连续减调速 P30=1;/ P30端口置1 we(c3); for(i=0;i=9000;i+); break; case 2:P3IF=0; c5=5;/跳到固

22、定值调速 P30=1;/P30端口置1 c6=0; we(c3); for(i=0;i=9000;i+); break; else c10=c10+01; /当P30=1时,实现连续加调速 switch(c10) case 1 : P3IF=0; liannxujia(); P30=0; we(c3); for(i=0;i=9000;i+); break; case 2: P3IF=0; liannxujia(); we(c3); for(i=0;i=9000;i+); break; case 3 : P3IF=0; liannxujia(); c10=0; we(c3); for(i=0;i

23、0;lcddatacount-) data1=*lcdpoint; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x500;x+); P7=0xc0;/实现换行功能 P6=0x1; P6=0x0; for(x=0;x100;x+); lcdpoint=&netdata;/显示百位 for(lcddatacount=0;lcddatacount=10;lcddatacount+) if(lcddatacount=q) data1=*lcdpoint; P7=data1; P6=0x05; P6=0x04; lcd

24、point+; else lcdpoint+; for(x=0;x100;x+); lcdpoint=&netdata;/显示十位 for(lcddatacount=0;lcddatacount=10;lcddatacount+) if(lcddatacount=p) data1=*lcdpoint; P7=data1; P6=0x05; P6=0x04; lcdpoint+; else lcdpoint+; for(x=0;x100;x+); lcdpoint=&netdata;/显示个位 for(lcddatacount=0;lcddatacount=10;lcddatacount+) i

25、f(lcddatacount=o) data1=*lcdpoint; P7=data1; P6=0x05; P6=0x04; lcdpoint+; else lcdpoint+; for(x=0;x0;lcddatacount-) data1=*lcdpoint; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x0;lcddatacount-) data1=*lcdpoint; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x0

26、;lcddatacount-) data1=*lcdpoint; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x0;lcddatacount-) data1=*lcdpoint; c10=0; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x0;lcddatacount-) data1=*lcdpoint; c11=1; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x

27、+); for(x=0;x500;x+); void sysclk(void) OSCICN=0x05; void port(void) XBR0=0x00; P74OUT=0xf0;void lcd(void)P6=0x01;for(x=0;x50;x+);P7=0x38;P6=0x1;P6=0x0;for(x=0;x10;x+);P7=0x0e;P6=0x1;P6=0x0;for(x=0;x50;x+);P7=0x06;P6=0x1;P6=0x0;for(x=0;x100;x+);P7=0x01;P6=0x1;P6=0x0;for(x=0;x100;x+); 4.8 连续加函数,连续减函数

28、以及固定值函数 void liannxujia()连续加调速函数,void lianxujian()连续减调速函数通过改变定时器的初值,来改变定时器的定时器的定时时间的长短,从而来改变占空比,但为了保证周期不发生变化,必须高电平增加多少,低电平就得减少多少,为了使调速更细腻,每次低位减100,如果,CY=1,则高位减一;同理,每次低位加100,如果,CY=1,则高位加1;void gudingzhi(n)固定值调速函数,每次T0高位加n,每次T1高位减n;n是每次调用传来的常量,从而实现了固定值调速。部分程序如下:P3IF=0; c4=c4+100;/通过改变定时器的初值改变转速 if(CY=

29、0) c3=c3+1; c2=c2-100; if(CY=1) c1=c1-1; c9=1;/控制显示upvoid lianxujian()/连续减调速函数P3IF=0; c4=c4-100;/调节高低电平时长 if(CY=0) c3=c3-1; c2=c2+100; if(CY=1) c1=c1+1; c9=0;/控制显示down void gudingzhi(n)/固定值调速函数P3IF=0; c3=c7-n;/调节高低电平时长 c1=c7+n;5 单片机和主要电路简介5.1 C8051单片机简介C805lF020单片机是美国cygnal公司推出的完全集成的混合信号系统级Mcu芯片,具有高

30、速、流水线结构。有64个数字L0引脚,拥有与805l兼容的cIP一51内核(可达25MIPS);片上资源丰富,包括:5个通用的16位定时器,5个捕捉比较模块的可编程计数器定时器阵列PCA;12位100 ksps的8通道ADC和8位500 ksps的ADC,两个12位DAC,具有可编程数据更新方式;64玑ASH存储器,4352字节RAM,可寻址64K字节地址空间的外部数据存储器接口,具有在系统重新编程能力,并允许现场更新805l固件;片内还有全速、非侵入式的系统调试接口、看门狗定时器等。C8051F020是真正能独立工作的片上系统,所有模拟和数字外设均可由用户同件使能。支持观察和修改存储器、寄存

31、器,支持断点、观察点、单步及运行和停机命令。在使用JTAG调试时,所有的模拟和数字外设都可伞功能运行。由此看出,C805lF020单片机具有丰富的片上硬件资源和极高的运算速度,能简化硬件电路,几乎不需要系统扩展就可满足控制系统对硬件资源的需求。因此采用c805lF020单片机作为控制器,由其PCA提供PwM波形。5.2 PWM调速原理PWM一脉冲宽度调制技术,通过对微处理器输出来的一系列数字脉冲的宽度进行i周制,等效地获得模拟电路所需要波形,从而实现对模拟电路控制的一种非常有效的技术。冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。例如输出正弦半波:用一系列等幅不等宽的脉冲来代替一个正弦半波,将止弦半波看成v个相连的脉冲序列,宽度相等但幅值不等;用矩形脉冲代替,等幅不等宽,中点重合,面积(冲量)相等,宽度按止弦规律变化。当要改变等效输出正弦波幅值时,按同一比例改变各脉冲宽度即可。对小功率直流电机采用PwM调速是比较方便的。通过改变电机电枢电压接通时间与通电周期的比值(占空度)来控制电机速度。改变占空度的方法有3种:(1)定宽调频法,保持t1不变,t2变化,这样周期T随之改变;(2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号