直流电机的转速控制单片机原理及应用课程设计Word格式文档下载.docx
《直流电机的转速控制单片机原理及应用课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《直流电机的转速控制单片机原理及应用课程设计Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![直流电机的转速控制单片机原理及应用课程设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/2/630522dd-2f27-4436-a2f5-92f64727a9d9/630522dd-2f27-4436-a2f5-92f64727a9d91.gif)
在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;
或在单片机周立功实验箱上进行相关设计并调试。
四、课程设计要求
详见《单片机课程设计题目
(二)》
五、进度安排
序号
内容
天数
1
布置任务,熟悉课题要求
0.5
2
总体方案确定,硬件电路设计
1.5
3
软件编程
4
在实验箱上调试
5
总结,撰写课程设计报告
七、课程设计报告内容:
总结设计过程,写出设计报告,设计报告具体内容要求如下:
1.课程设计的目和设计的内容。
2.课程设计的要求。
3.控制系统总框图及系统工作原理。
4.控制系统的硬件电路连接图,电路的原理。
5.软件设计流程图及其说明。
6.电路设计,软件编程、调试中遇到的问题及分析解决方法。
7.实验结果及其分析。
8.体会。
第二部分
课
程
设
计
报
告
1课题简介6
1.1课题的目的6
1.2课题的设计任务及要求6
2直流电机的转速控制方案设计7
2.1总体设计思路7
2.2总设计框图7
3直流电机的转速控制硬件电路设计8
3.1硬件电路总图8
3.2硬件电路分块介绍8
3.2.1单片机8
3.2.1按键电路10
3.2.1显示电路10
3.2.1电动机11
4直流电机的转速控制软件编程设计13
4.1程序总设计思路13
4.2程序分段介绍13
4.2.1主程序13
4.2.2定时中断程序14
5实验与结果分析16
5.1系统调试方案16
5.2调试过程中出现的问题及解决方法16
6小结与体会17
参考文献18
附录19
1课题简介
1.1课题的目的
学习直流电机转速的PWM控制原理及电路的实现。
用单片机定时器和端口共同产生PWM波,控制直流电机的转动速度。
用D1区的按键KEY1和KEY2实现占空比的增加和降低,实现手动调速。
1.2课题的设计任务及要求
1.掌握PWM电机功率驱动电路的原理;
2.按键能增减PWM波的占空比;
3.LED数码管显示PWM波的占空比;
4.设计硬件原理图;
5.编写程序。
2直流电机的转速控制方案设计
2.1总设计思路
本直流电机调速系统设计的思路是以单片机系统为依托,根据PWM调速的基本原理,以直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速为依据,实现对直流电动机的平滑调速,并通过按键电路控制速度的变化。
直流电机调速系统主要是由硬件和软件两大部分组成。
硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。
而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现对电机转速的有效控制。
直流电机的转速与施加的电压成正比,而直流电机调速的最常见方法是施加一个PWM(脉宽调制)方波,其占空比对应于所需速度。
电机起到一个低通滤波器作用,将PWM信号转换为有效直流电平。
PWM又被称为“开关驱动装置”,是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。
本课程设计中是利用单片机对PWM信号的软件实现方法。
51系列典型产品89C5l具有两个定时器T0和T1。
通过设定定时器初值和工作方式,可以实现从89C5l的任意输出口输出不同占空比的脉冲波形。
由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。
因此,首先必须明确定时器的定时初值与定时时间的关系。
这样,我们可以通过设定不同的定时初值,从而改变占空比,进而达到控制电机转速的目的。
该控制系统主要包括硬件装置和控制软件两部分,初步设定的电路是由AT89C51单片机、显示电路、按键电路、驱动电路和直流电动机等组成。
2.2总设计框图
图2.1总设计框图
3直流电机的转速控制硬件电路设计
3.1硬件电路总图
图3.1硬件电路总图
如上图所示,在设计中,采用了8051单片机作为整个控制系统的控制电路的核心部分,配以按键、显示模块,实现对电动机转速参数的显示和改变,采用查询按键作为命令的输入,单片机在程序控制下,定时不断地给直流电机驱动芯片发送PWM波形,采用PWM调速方式,通过改变PWM的占空比改变电动机的电枢电压,从而实现对电动机的调速。
而改变占空比,是通过改变单片机内部定时器的软件计数次数,实现高低电平时间占总周期的比率,则占空比会改变,并通过调用显示程序将占空比在LED上显示出来。
3.2硬件电路分块介绍
3.2.1单片机(下图为protel中的8051单片机,但介绍以AT89C51为准)
图3.2单片机引脚图
1、单片机简介
单片机是在一块芯片上集成了中央处理单元CPU、随机存储器RAM、只读存储器ROM、定时器/计数器和多种输入/输出(I/O),如并行I/O、串行I/O和A/D转换器等,就其组成而言,一块单片机就相当于一台计算机。
单片机是靠程序运行的,它自动完成任务的过程,也就是它一条条执行指令的过程。
为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。
存储器由许多存储单元(最小的存储单位)组成,指令就存放在这些单元里,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了地址,就可以找到这个存储单元,其中存储的指令就可以取出,然后再被执行。
2、单片机中断系统简介
引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求,CPU暂时中断原来的事务A,转去处理中断事件B,对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
单片机中断源:
(1)/INT0(P3.2):
外部中断0。
可由IT0选择其为低电平有效还是下降沿有效。
当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0置1,向CPU申请中断。
(2)/INT1(P3.3):
外部中断1。
可由IT1选择其为低电平有效还是下降沿有效。
当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1置1,向CPU申请中断。
(3)TF0:
片内定时/计数器T0溢出中断请求标志。
当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
(4)TF1:
片内定时/计数器T1溢出中断请求标志。
当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
(5)RI或TI:
串行口中断请求标志。
当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断,这两位必须由软件清零。
3、单片机定时器/计数器简介
51单片机内部设有两个16位的可编程定时器/计数器。
可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。
在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
16位的定时/计数器分别由两个8位专用寄存器组成,即:
T0由TH0和TL0构成;
T1由TH1和TL1构成,这些寄存器是用于存放定时或计数初值的。
此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。
TMOD主要是用于选定定时器的工作方式;
TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
3.2.2按键电路
按键电路图如下所示,总共两个按键S1和S2,分别接在单片机的P2.0和P2.1端口上,另一端都接地。
在主程序中不断查询键是否被按下,如果键被按下则调用相应的子程序,改变高低电平的软件计数次数,则可以改变占空比,从而实现电机转速的增加和降低。
图3.3按键电路图
3.2.3显示电路
显示电路如下所示,采用的是ZLG7290的芯片,由于采用了I2C总线接口,因而硬件电路连接非常简单。
它的数据线SDA引脚接到AT89C51的RXD引脚上,时钟信号线SCL引脚接到AT89C51的TXD引脚上,RST-L引脚接到AT89C51的/WR引脚上。
图3.4显示电路图
3.2.4电动机及驱动电路
直流电动机及驱动电路接线图如下所示。
H桥功率驱动电路是一种典型的智能功率集成电路,4个三极管组成H的4条垂直腿,而电机就是H中的横杠。
H桥式电机驱动电路包括4个三极管和一个电机。
要使电机运转,必须导通对角线上的一对三极管。
根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的运转。
图3.5电动机及驱动电路图
1、直流电机的分类
直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种:
直流发电机(将机械能转化为电能)、直流电动机(将电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号)。
而此次课程设计是以直流电动机作为元件。
2、直流电动机的结构
直流电动机由定子和转子两部分组成,在定子上装有磁极,其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕组,绕组通过换向器和电刷引出。
对于一个已经制造好的直流电动机来说,当励磁电压和负载转矩恒定时,它的转速由电枢两端的电压决定,即电枢电压越高,电机转速就越快,电枢电压降低,电机就减速。
3、直流电动机的调速原理(PWM脉宽调制原理)
PWM脉宽调制的基本原理是冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同,冲量指窄脉冲的面积,效果基本相同是指环节的输出响应波形基本相同。
PWM脉宽调制是通过控制单片机所产生的PWM波的占空比,改变电机两端的平均电压大小,从而达到控制电动机转速的目的。
PWM波形的产生通常有软件和硬件两种方法,本课程设计采用的是单片机对PWM波形的软件实现方法。
51单片机具有两个定时器T0和T1,通过控制定时器初值T0和T1,结合软件计数次数,可以实现从AT89S5l的端口输出不同占空比的脉冲波形。
下图所示为占空比为0.5的PWM波形。
图3.6占空比为0.5的PWM波
4直流电机的转速控制软件编程设计
4.1程序总设计思路
在主程序内部进行AT89S51单片机内部的定时器T0初始化,并且设置定时器中断,产生PWM波形。
然后不断查询键是否被按下,如果没有,继续查键;
如果有键被按下了,则判断是键1还是键2,接着执行相关操作(增加或减少高低电平软件计数的次数),改变PWM波形的占空比,从而改变电动机的转速,并且在LED上显示占空比。
4.2程序分段介绍
4.2.1主程序
主程序中主要进行定时器初始化,设置占空比初值(电动机转速初值),调用显示程序,然后不断查询按键,如果键被按下,则调用相应改变转速的子程序。
主程序流程图如下所示。
图4.1主程序流程图
主程序段:
MAIN:
MOVSP,#50H
MOVTMOD,#01H
MOVTH0,#0FEH;
设初值,1次中断时间为1ms
MOVTL0,#0CH
MOVR2,#0EFH;
LED显示
SETBEA;
开中断
SETBET0;
定时器中断允许
MOVR1,#10;
高电平软件计数R1次数
MOVR2,#10;
低电平软件计数R2次数
MOV40H,#10
MOV41H,#10
LOOP0:
ACALLDISPLAY;
ACALLLOOP1
SJMPLOOP0
DISPLAY:
MOVP2,R2
RET
LOOP1:
CLRA
MOVP1,#0FFH
MOVA,P1;
查键
CPLA
JZEXIT
ACALLYANSHI;
调用延时程序,消除抖动
MOVA,P1;
再次查键,确认
CPLA
JZEXIT
JBACC.0,UP
JBACC.0,DOWN
EXIT:
RET
4.2.2定时器中断程序
1、定时中断程序总体介绍
定时中断程序是用来产生PWM波形的,用寄存器R1和R2来分别存放高低电平的软件计数次数,当定时器定时1ms时间到,则转到中断服务程序,先检测R1是否为零,若不为零,将P1.0口置1,然后将R1减1,退出中断服务程序;
若R1为零,则检测R2是否为零,不为零的话,将R2减1后退出,若R2也为零,则重新给两个存储器赋值。
程序流程图如图4.2所示。
2、定时器初值的计算
取PWM波的总周期为20ms,定时器采用方式1,每次定时1ms。
则定时器的初值计算为:
(216-X)*1*10-6=1*10-3,计算的X为FE0CH,则TH0=0FEH,TL0=0CH。
3、PWM波的实现
这里我们采用的是单片机对PWM波形的软件实现方法。
51单片机具有定时器,通过控制定时器初值,结合软件计数次数,可以实现从AT89S5l的端口输出不同占空比的脉冲波形。
具体实现方法为:
在主程序中设置好初值,并且打开定时器中断,定时器开始计时。
当1ms时间到,定时器中断,转到中断服务程序,在中断服务程序中,检测高电平的软件计数次数是否已为零,不是的话,将次数减1后退出。
直到高电平次数为零了,将P1口翻转,转为低电平,低电平的时间控制与高电平相同。
当高低电平计数次数都为零时,给TO定时器重新赋初值,如此循环,则可以产生PWM波。
而通过查询按键,调用子程序,可以改变高低电平的计数次数,就可以改变PWM波的占空比,从而实现对电机转速的控制。
图4.2定时中断程序流程图
定时中断程序段:
IT00:
MOVA,R1
JZLOW1
SETBP1.0
DECR1
SJMPRETURN
LOW1:
MOVA,R2
JZFUZHI
CLRP1.0
DJNZR2,FUZHI
FUZHI:
MOVR1,40H
MOVR2,41H
RETURN:
RETI
5实验与结果分析
5.1系统调试步骤
按照PROTEL上的图,在硬件上连接电路。
然后打开电脑上的Keil软件,编译程序,没有错误后,设置好相关参数。
接着打开单片机实验箱开关,运行程序,观察实验箱上的电动机运转和数码管的显示情况,按键观察电机的转速变化和显示的占空比。
根据电动机的运转和数码管的显示反复调整修改程序,直到达到要求。
5.2调试过程中出现的问题及解决方法
问题1:
程序编译时候出现各种错误。
解决方法:
我们的程序在编译时出现很多错误,下面举几个典型的例子。
第一,显示的错误是:
跳转到中断服务程序那句“LJMPIT00”有未被定义的字符。
我们找了很多原因,以为不是在英文状态下输入的,又重新输了一遍,可还是不行。
然后我们又以为是0输成了O,可是改了还是不对。
最后请老师过来看程序后才知道,我们把END放在了主程序的结尾处,所以后面的定时中断服务程序没有被定义。
第二,显示的错误是:
非法引用被保护的字符。
这个错误比较容易理解,我们在程序段标号的后面加了个1就好了。
问题2:
实验箱上的数码管的显示总是错误,会闪个不停,有时候又不亮,或者显示的占空比数值不对。
开始我们找不到问题出在哪里,以为调用显示程序有错误,可是程序检查了几遍,没有错误。
然后因为我们用了好几个寄存器,所以想到可能显示子程序里和主程序中的寄存器重复使用了,我们改过来之后,数码管显示还是不对。
无奈之下,我们又猜想,可能是那个实验箱或者接的线有问题,换了一个实验箱,重新接线运行,还是同样的情况。
最后请教了夏老师,才知道是因为我们采用的ZLG7290芯片,是I2C接口电路,而主程序中的东西与之相冲突。
所以我们将显示电路换成了LED灯,采用8个LED灯的显示情况来大致表示占空比的大小。
换了显示电路,我们的程序也更简单明了。
问题3:
电动机正常转动,LED灯也亮,但是按键加减速时,电机和灯都没有反应。
夏老师让我们分步实现功能,先检查PWM波的产生是否正确,然后再进行按键调速。
所以我们选取了几个占空比初值,运行程序后,发现电机的转速是有明显的变化的,所以确定产生PWM波的程序的对的。
所以就是改变转速那里出了问题,然后我们就有的放矢,重点检查错误的地方。
问题4:
我们按键的时候,按一次键,LED灯会左移或者右移好几个,电机的转速也会忽然变快,或者忽然停止。
为了让电机转速的改变有明显的几个等级,我们尽量小心翼翼地按键,可是不管我们怎么小心,还是出现上面的情况。
后来才知道因为我们用的是按键中断的程序,而单片机实验箱上的按键灵敏度不对,所以才导致这样。
在老师的建议下,我们更改了程序,换成了按键查询程序,并且加了一段延时程序来消除抖动。
在一次次尝试、失败和改正之后,我们的设计成果终于达到要求了。
一开始,电动机转速适中,LED灯中间一个熄灭,其余点亮。
当按下KEY1时,LED灯左移一位,电机转速减慢,直到接近停止;
按下KEY2时,LED灯右移一位,电机转速加快,直到达到最大转速。
6小结与体会
为期一周半的单片机课程设计圆满地画上句号,其中的努力与辛苦自是不必多说,但我们的收获也是课堂教学无法比拟的。
下面就我个人而言,简单说说体会吧。
还记得在课程设计开始之前,我心里就忐忑不安,因为自己在编程这方面确实没有天赋。
所以我本着勤能补拙和笨鸟先飞的原则,把我们之前的做的单片机实验又复习了一遍。
虽然对我编程能力的提高没有质的改变,但多点量的积累总归是好的,而且后来的事实证明,复习让我更快地进入了状态,而且对我的搭档起到了帮助。
两人一个课题,我的搭档能力很强,而我喜忧参半。
喜的是有个强有力的帮手,忧的是可能自己不能得到更好的锻炼,所以我从一开始就告诉自己要多下点功夫。
我们组的课题是“直流电机的转速控制”,一拿到课题,我们就上网查询直流电机调速的原理、PWM波形产生的原理以及如何改变PWM波的占空比,我们还去图书馆借了有关Protel画图的书,做足了准备工作。
在课程设计过程中,最让我们头疼的就是编程了。
我们做的是硬件设计,用ZLG7290作显示,我们一开始用查表的方法改变占空比,程序很复杂,而且在Keil上编译有很多错误,我们大概花费了半天的时间改这个程序,后来夏老师给我们建议,说可以设一个基值时间,然后通过计基值时间的次数控制高低电平的时间,而改变占空比就只要改变软件计数的次数。
所以我们改变了程序,思路也清晰多了。
后来的修改程序与调试硬件都简单多了,所以我深深地体会,编程最重要的就是思路,有了整体的思想,把流程图画出来,再编写程序就如探囊取物了。
而我还需要在这方面多下点功夫,把单片机的基础知识掌握牢固,然后多看点程序,理清程序的思路。
在整个课程设计过程中,我努力减小自己与搭档的差距,我提前去实验室,把当天的任务理清楚;
我晚一点离开实验室,把程序再多看看想想,在硬件上再调试一会。
子曰:
取法乎上,得乎其中。
我不断提高对自己的要求,这样才能得到更大的进步。
总的来说,这次的课程设计对我有很大的帮助。
一方面,我认识到自己在灵活运用所学的知识方面还有缺陷,所以以后会注意不只专注于课堂上理论知识的学习,而会学着将零散的知识点结合起来,将所学的内容融会贯通。
其次,和搭档的合作也让我受益匪浅,他灵活的思想和遇到问题时能迅速发现问题所在的能力让我十分佩服,也励志向他学习,而且两个人合作让我们很好地完成了任务。
最后,这次的课程设计让我对单片机更加了解,在这短短的一周半时间内,我几乎把单片机的课本翻了个遍,学习的效率和所学到的东西完全不亚于单片机考试前的复习。
书到用时方恨少,平时还得多学点知识,这样才能更好地运用到实践方面。
参考文献
[1]张毅刚主编,单片机原理及应用,北京:
高等教育出版社,2004
[2]陈涛编著,单片机应用及C51程序设计,北京:
机械工业出版社,2008
[3]皮大能主编,单片机课程设计指导书,北京:
北京理工大学出版社,2010
附录
程序段:
ORG0000H
LJMPMAIN
ORG000BH
LJMPIT00
ORG0100H
MOVSP,#50H
MOVTMOD,#01H
设初值,1次中断时间没1ms
MOVTL0,#0CH
MOVR2,#0EFH