基于某51单片机地PWM直流电机调速报告材料Word文档格式.docx
- 文档编号:22579841
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:20
- 大小:923.53KB
基于某51单片机地PWM直流电机调速报告材料Word文档格式.docx
《基于某51单片机地PWM直流电机调速报告材料Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于某51单片机地PWM直流电机调速报告材料Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
直流电机,51单片机,C语言,数码管
一、设计任务与要求
1.1设计任务
1).对更多小器件的了解
2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用
3).掌握仿真软件的运用和原理图的绘制
4).加深焊接的技巧,提高焊接的能力
5).熟悉调试方法和技巧,提高解决实际问题的能力
6).熟悉设计报告的编写过程
1.2设计要求
1).四个按键分别实现改变转向,加速,减速与暂停的功能
2).H桥电路驱动直流电机
3).一个红光和一个绿光二级管指示电机转向
4).四位数码管显示转速
二、方案总体设计
设计一个基于51单片机的可调直流电机。
设计一个电路来驱动直流电机;
利用单片机部精确到微妙的定时计数器来实现产生一个周期为100毫秒的PWM由P1^6和P1^7互换输出;
红光和绿光指示灯来标明转向;
P0和P2口控制段选和位选来实现四位一体数码管显示转速;
利用P1^0,P1^1,P1^2和P1^3连接四个按键实现转向,加速,减速与暂停的功能;
利用复位按键功能来实现复位操作。
2.1方案一
51单片机的定时/计数器工作在模式2时是一个可以自动重装载的8位定时/计数器。
工作时高八位和低八位装入相同的初值,当低八位装满时,高八位的值自动装入到第八位中,从而可以省去用户软件中重装初值常数的语句,可产生相当精确的定时时间。
由于只有八位参与计数,所以其计数周期最大为256微妙。
采用初值装入0x38,每个200微妙进入一次中断,500次中断为100毫秒,即产生波形周期为100毫秒的PWM。
ULN2003是一个驱动芯片,部含有七个反向器。
每个反向器都是有两个大功率NPN三极管组成的。
可以选用这七个反向器中的两个作为放大作用。
再接两个三极管作为开关作用,组成一个直流电机的驱动电路。
P1^6和P1^7一个高电平一个低电平来控制转向与转速。
再在P1^6和P1^7分别接一个红色和绿色发管二极管来表明转向。
P0口控制数码管的段选,P2的四个引脚控制数码管的位选来显示速度。
P1^0,P1^1,P1^2和P1^3连接四个按键控制转向,加速,减速与暂停。
2.2方案二
51单片机的定时/计数器工作在模式0时是一个16位位定时/计数器。
工作时高八位和低八位各装入初值,当低八位装满时,高八位加1。
由于是16位参与计数,所以其计数周期最大为65536微妙。
由于要把占空比从0每次加1%加到100%,所以形成一个波形周期至少要中断100次。
采用初值高八位装入0xfc,初值低八位装入0x18,每个1000微妙进入一次中断,100次中断为100毫秒,即产生波形周期为100毫秒的PWM。
利用两个NPN两个PNP搭建一个H桥电路来驱动直流电机,再在H桥两边的基极公共端各接一个上拉电阻,用来增大流入基极的电流。
组成一个驱动直流电机的电路。
2.3系统采用方案
1)总体设计
图1为设计总体框架图,通过该图大致的介绍了一下整个可调直流电机各个主要部分。
图1系统总体框架
2)总体工作原理
由于定时器工作模式2是八位,可装入的值太小,每形成一个周期的方波需要进入500次定时器中断,由于进入中断的次数太多,所以很容易出现在低八位装满本应触发而程序还在中断子程序中运行,而无法触发中断的情况,所以不采用工作模式2。
工作模式0只需要进入定时中断100次就可以形成一个周期的方波,所以选择功能模式0。
方案一和方案二中的驱动电路都可以驱动直流电机。
方案一中用到一块ULN2003芯片和两个三极管,而方案二中可以有两个三极管实现放大作用来取代ULN2003,无需使用驱动芯片,电路更加精简,制作成本更低。
所以使用方案二中的驱动电路。
指示灯,控制按键,数码管和复位方面的设计在方案一和方案二中一样。
综上考虑,最终方案确定为方案二。
三、硬件设计
3.1单片机最小系统
单片机要正常工作,首先要产生片时钟信号。
在单片机部的振荡器的输入端XTAL1和输出端XTAL2之间接一个石英晶振就可以够成一个自激振荡器。
再在两端之间串联接个电容并且在两个电容之间接地以便于稳定频率还对振荡频率有微调作用。
电容通常选30PF左右,振荡脉冲频率围为0~24MHZ。
该电路中选用12MHZ晶振。
时钟电路图如下:
图2时钟电路图
单片机在启动时与其他微处理器一样,要让CPU及系统各部件处于确定的初始状态,并从初始开始工作。
这就需要复位操作。
复位电路有两种方式:
上电自动复位和按键自动复位。
上电自动复位只是在开始接通电源瞬间复位,接下来想要再次复位就需要断电重启,不方便。
按键自动复位不仅可以在开始接通电源瞬间复位还可以通过按下按键复位随时复位。
所以选择按键复位方式。
复位电路如下:
图3复位电路图
3.2数码管显示模块
直流电机的转速采用四位数码管显示。
控制数码管的显示有两个部分:
位选控制和段选控制。
位选是控制数码管显示哪位,段选是控制数码管显示的字样。
数码管分为共阳与共阴,部结构差不多,唯一的区别就是部二极管方向的布置不同。
在连接电路时这两种数码管位选与段选的连接不同。
共阳数码管的位选接高电平,段选接低电平。
共阴数码管的位选接低电平,段选接高电平。
该数码管显示模块采用四位一体共阴数码管,P0口八个引脚段选控制,P2口的四个引脚位选控制。
数码管显示原理图如下:
图4数码管显示系统图
3.3系统电源
为了方便控制系统的上电与断电,系统电源中连接了一个蓝白自锁开关。
此开关两边各有三个引脚,不同的连接方式,开关的控制方法就不同。
电源的正负极各接在此开关的两边。
为了方便观察电源是否接上,在电路中的VCC与GND之间接一个发光二极管并且加一个限流电阻防止发光二极管烧坏,电源通电时发光二极管亮,断电时,则暗。
再接四个排针便两边的两个排针用于外部电源给系统上电,中间的两个排针是用于单片机烧录程序。
如图所示:
图5系统电源图
3.4驱动电路
直流电机直接接在单片机引脚上是驱动不了电机的,所以要搭建一个驱动电路。
图6为该设计中用来驱动直流电机H桥电路,所用元器件为两个S9012三级管,两个S9013三极管,两个1K电阻,两个470电阻。
三极管为开关和放大作用,470电阻为限流作用,由于单片机的拉电流太小,1K为上拉电阻为基极提供电流。
左右两端分别接P1.1和P1.0单片机引脚,只要P1.1和P1.0单片机引脚交换着一个输PWM,一个低电平就可以控制电机的转速和转向了。
图6直流电机驱动电路
3.5整体电路
这是采用网络标号的画出的以一整体电路图。
它将整可调直流电机的电路原理图分为八个部分:
电源模块,P0口上拉电阻,四位共阴数码管,51单片机,复位晶振电路,控制按键,转向指示灯和电机驱动电路。
整原理看起来美观,并且根据标号很容易找到与之对应的引脚。
图7整体电路图
四、软件设计
4.1keil软件介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
4.2系统程序流程
1)主程序流程
图8为PWM调控直流电机的主程序流程图。
通过该图可以直观的了解到整个调控程序的大致走向为先判断暂停键,控制转向键,加速键和减速键是否按下,并在判断每个键是否按下后执行相应的命令,让直流电机做出相应的调整。
再让数码管显示此时直流电机的转速(转向是由一个红色和一个绿色的放光二极管接在分别接在控制直流电机的两个引脚上,程序在控制转向时,自动跟随引脚的电平变化亮灭,不需要程序特意控制),接着又重新回到判断按键的程序中,如此不断重复循环。
图8主程序流程图
2)中断程序流程
图9为PWM调控直流电机的中断程序流程图。
方波主要是由单片机部精确到毫秒的定时器每次以间隔相同的时间进入中断,并在主程序中由控制按键调控与高电平持续时间的相关参数,从而控制每个周期的方波高电平和低电平各自持续的时间,即控制了方波的占空比。
通过该图也可以清晰明了的知道,该中断程序主要涉及的就是方波的调控。
先是判断高电平是否未达到调控的时间,如果未达到则让gdp+1,即让继续高电平保持。
如果gdp为100则说明主程序已经把方波调控到一直保持高电平,就让gdp为0,就可以一直输出高电平了。
如果高电平达到了调控的时间,就让控制电机的两个引脚都为低电平并让ddp+1,即让继续低电平保持。
如果低电平未达到了调控的时间,就进入主程序继续保持低电平等待下一次中断。
如果低电平达到了调控的时间,就让ddp=gdp=0,即重新开始下一个方波。
图9定时器中断程序流程图
五、仿真与实现
5.1proteus软件介绍
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持KEIL,IAR和MPLAB等多种编译器。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;
在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。
实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。
因此,Proteus有较高的推广利用价值。
5.2仿真过程
图10为使用keil软件编写程序时的调试过程图。
我用的是C语言来编写。
第一次编写完程序后,然后编译一下,出现的对话框中显示有几个错误,点击错误提示,主程序会出现光标只向错误的地方,根据这个错误提示,然后进行更改,再编译一下,程序还是显示有错误,再重复上次的操作,进过了几次修改后,就如图所示没有错误提示了。
编写程序就是这样,需要不断修改,程序才能准确。
程序编写好,还要编译成HEX文件。
只有HEX文件才能烧录到到单片机上。
图10keil软件仿真图
图11为proteus仿真原理图。
连接好电路图后,箭头放在单片机上单击右键,在出现的对话框中点击EDITPROPOTES再在出现的对话框中点击programfile那行的那个文件图标,从里面找出先前已经在KEIL软件中编译的HEX文件。
点击文件后,然后在单击editcomponent对话框的右上角的OK选项。
然后点击Proteus的首界面的左下角形状是黑色三角型的play键,仿真图上的显示系统就出现了初始状态,单击控制开关,秒表开始计数,再单击一下控制开关后,计时停止。
也可以点击play键右边那个step键,让程序一步一步执行step键右边是pause键,按一下这个键程序就暂停运行,再按一下程序就又开始运行。
仿真完后按一下stop键结束仿真。
当看到仿真电路上出现现象和操作时所达到的效果和我在编程时所预想的情况一样后,再保存所画的电路图,单击左上角的file中,再在出现的选项中单击save,可以选择自己想要保存的地方。
下次打开proteus时可以单击file,再在出现的选项中单击opendesign的选项,可以从保存的地方直接选择所画的电路图打开,并且可以直接仿真。
做这次设计我学会了利用示波器的使用,感觉proteus真的是非常强大。
虽说Proteus仿真软件是一款功能强大很好用的软件,但仿真毕竟是仿真,和实际还是有差距的,我在proteus中调试电机的时候发现电机,明明电机两端的电路连接是一样但电机却不稳定,有时候转着转着就停,还有时候会自己反转,我仔细检查了电路和所以的元器件参数,没有问题。
我知道可能我连接的驱动电路本身就有问题,但我没操作控制按键,电机就自动变化。
于是我直接在电机两端接VCC和GND,电机还是不稳定,转着转着有时候就停了。
感觉最让人头疼就是,在仿真软件中可以实现设计的功能,都等到做出板子来却不行,而且不是器件的参数选择的问题,而是电路连接错误。
这样又要把焊上的器件去下来,板子都焊得乱七八槽了。
图11proteus仿真图
5.3实物制作与调试
图12为实物图的背面,图13为实物图的正面。
程序写好后在proteus仿真能够有效的调控直流电机后,我认为电路总体是一个没什么大问题,紧接着就画了洞洞板图,经过了五六个小时的焊接,实物就出来了。
顺利的烧录进去了程序然后开始调试,调试的结果是,数码管正常得显示转速并且能手按键控制加速减速的显示,指示灯也随加速过程由暗变为频率逐渐变大得闪烁,最后一直亮。
减速的时候就相反。
在调节转向的时候两个指示灯也会交换变化。
但就是直流电机不会转。
最开始的想法就是焊接错误,因为之前做的两个板子,也是不能一次性焊好,都要经过检查出错误解决后才能正常工作。
我先仔细检查一下有没有连接错误,确定没有连接错误后,我就开始检查有没有虚焊或者短路,尤其是检查驱动电路那里,细微得检查了一遍,也没有检查出错误。
我想软件是没有错误的,在仿真软件中能输出方波,如果电路正确并且没有焊接错误就应该会转。
那我想可能就是电路问题,可我看不出有什么问题觉得理论上,直流电机应该转。
于是我用万用电表去测,测得在插直流电机两端的排针上有4.7V左右的电势差,我就觉得很奇怪,既然有这么大电势差,直流电机应该转啊,接下载器上的3.3v电源电压都转得好快。
刚开始用ULN2003芯片在接两个上拉电阻组成的驱动电路,上拉电阻选用的是1K的电阻。
老师觉得太大了,我就并联了两个270欧的电阻,可情况还是一样,有足够的电势差就是转不了。
刚开始也觉得270欧的电阻算小的了,后来我就查了一下这类直流电机的参数,直流电机的驱动电流需要200毫安左右。
简单得一计算就知道,上拉电阻应该选25欧左右的电阻。
我就又并联了两个27欧的电阻,刚开始以为这下子应该能让直流电机转了。
焊接好了,测试一下,结果还是一样。
这下子有点懵了,不知道是我的板子上存在焊接错误,我没发现还是驱动电路有我理解错误的问题。
我想到了仿真上能实现,就不会有什么大问题,我就有开始检查板子的焊接有没有问题,又经过了仔细得检查了一边后还是没发现问题。
后来就再在板子上加两个三极管做开关放大作用,直流电机还是转不起来,于是又检查了一遍电板子是否有焊接问题,还是没有查出错误。
于是我就找到uln2003部的三极管组成结构图,分析了之后,发现了一个问题就是从电源出发有两条路导通,一条经过直流电机,一条没有,形成分流使流过直流电机的电流变小无法驱动直流电机,可能是这个原因导致之前连接的三种电路无法使直流电机转动起来。
于是又开始连接过H桥电路,直流电机还是不转,我想可能是单片机拉电流太小驱动不了,我查了一下单片机P1引脚的拉电流不到1毫安,于是我又接了上拉电阻,还是不转,分析电路觉得没有错误,检查焊接也没查出错误。
后来连接了老师给定的电路还是一个H桥电路,这次不用ULN2003芯片,实际上ULN2003起不到什么作用,直接接在单片机引脚上,连接好电路后偶尔有时候直流电机有时候会转,但转的时候三极管会发烫,不转之后,我测了单片机控制直流电机引脚的电平,本应该是输出高电平,但电压表显示的却只有1.8V电压,引脚电压被下拉了,由于PNP发射极接VCC,NPN发射极接GND,基极的电压为1.8V导致又出现前面两条通路,一条流过直流电机,一条没有,分流是流过直流电机的电流过小,驱动不了的问题。
后面学长又连接了一个H桥电路,但是是NPN接VCC,PNP接GND,这样连接避免了基极电压下拉,可以驱动直流电机转动,但是不是很快,我在板子重新焊接驱动电路时加了上拉电阻,并且限流电阻更小,焊接好后,直流电机还是不能转,最后在老师的指导下,放下是指示灯分流的原因,把指示灯接地改为接VCC可避免分流的影响,但实物做出来后,直流电机转得好慢,我用万用电表测了一下单片机的控制引脚,本来输出为低电平,但测得电压值大小只有1.8V。
我想是电阻用得太小,单片机引脚的电压背嵌位在1.8V,老师分析也是单片机电压引脚被上拉,之后我换了一个1K的电阻,直流电机转速就快了,我测一下输出低电平的控制引脚为0.6V,避免了之前两条路导通的问题。
后面又遇到一个问题,就是正反转的转速不一样,可能是三极管在之前发烫过,有些损坏的原因,暂时没有去检查。
经过八天的调试,板子终于差不多做好了。
图12实物图背面
图13实物图正面
5.4使用说明
如图13所示:
此可调直流电机包含的元器件有:
STC89C52单片机一块,直流电机一个,IC插座一个,排阻一个,排母若干,四位一体数码管一个,六个排针,四个两脚轻触开关,一个四脚轻触开关,八个电阻,一个电解电容,两个瓷片电容,两个红色的放光二极管,一个绿色的放光二极管,一个蓝白自锁开关,一个晶振和四个三极管。
整个可调直流电机布置在一块70×
90大小的洞洞板上。
四位一体数码管用于显示直流电机的转速,单片机下方的四个按键为控制按键,从左往右第一个为转向控制键,第二个为加速键,第三个为减速按键,第四个为暂停键。
控制按键右边为有两个S9013,,两个S9012,两个1K电阻和两个470欧电阻组成的直流电机驱动电路,直流电机两端接在驱动电路中间的两个排针上。
驱动电路右边有一个红光二极管和一个绿光二极管作为转向指示灯。
数码管右边的那个按键为复位按键,每按一次系统就复位一次,回到初始状态。
复位按键上方的四个排针从左至右依次接5V的VCC,RXD,TXD,GND。
复位按键下方的蓝白自锁开关为电源开关,当排针接好电源后,按下蓝白自锁开关则系统上电,按起蓝白自锁开关则系统断电。
蓝白自锁开关上方的红色发光二极管为电源指示灯,当系统接通电源时,指示灯亮,当系统断开电源时,指示灯暗。
使用前应先上电。
接上电源后由于开关断开系统还未上电,按下蓝白自锁开关后,电源接通。
通上电时,首先单片机连接电源时,先是数码管显示速度为0,红色放光二极管闪烁。
可以按加速键,每按一次速度加六十分之一,直到增加到最大的1200每分钟转速为止就不能再加了,发光二极管在此过程中闪烁得越来越快,最后发光二极管一直亮。
也可以按减速键,每按一次速度减少六十分之一,直到速度减为0,不能再减了,发光二极管在此过程中闪烁得越来越慢。
按一下转速控制键,直流电机的转向就改变了,同时两个转向指示灯的状态也互换了。
该可调直流电机主要就是由这四个控制键调控。
六、总结
6.1设计总结
我的课题是基于51单片机的PWM直流电机调速的设计。
当我选择了这个课题的时候,我就先开始想在平常生活中直流电机是怎样的,可以怎样控制直流电机,需要一些什么器件。
在确定了自己要设计一个怎样的可调直流电机之后就开始列出做这个秒表所需要的元器件。
这个秒表是基于给定的显示系统上设计的,所以在设计电路原理图之前,我先要掌握给定的显示系统原理图的连接方式和连接原理。
这一些都弄明白之后,我再考虑如何在现有的基础上进行外围设计使之达到预想的功能。
经过一番斟酌,确定我的外围硬件只需添加四个轻触开关,一些电阻,四个三极管,两个发光二极管就可以实现可调直流电机的功能。
由于我的可调直流电机的元器件是焊接在一个70×
90大小的洞洞板上,所以为了以后方便焊接,减少焊接错误,需要在洞洞板软件中的一个70×
90大小的洞洞板底图上画出洞洞板图,设计线路的时候要尽量减少飞线的使用,画完之后和给出的图进行对照,确定我没有连接错误之后,修正洞洞板图,使线路没有断路并且更加笔直,接点处没有连线出头,修正完后保存洞洞板图。
硬件设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 PWM 直流电机 调速 报告 材料