调速风扇单片机.docx
《调速风扇单片机.docx》由会员分享,可在线阅读,更多相关《调速风扇单片机.docx(19页珍藏版)》请在冰豆网上搜索。
![调速风扇单片机.docx](https://file1.bdocx.com/fileroot1/2023-2/9/5c97c01f-daa6-47af-bbcd-e16bda7b3821/5c97c01f-daa6-47af-bbcd-e16bda7b38211.gif)
调速风扇单片机
电子与电气综合实训报告
系别:
电气工程系
班级:
xxxxx
姓名:
xx
学号:
xxxxxxxx
实训地点:
B16-503
实训时间:
第4-5周
实训指导老师:
xxxx
一、方案论证
二、硬件电路设计
三、PCB设计
四、焊接调试
五、软件设计
六、实训小结
一、方案论证
1.任务分析
本次实训是基于我们本专业的一个简单生活应用实例。
随着生活水平的改善,科技的不断创新,电子电气产品也不断的改革,从普通式向智能化发展。
这次课题就是关于我们生活中的家用电器——电风扇,这次设计的电风扇是由四个动态数码管组成,第一位是显示档位,一共三档,三档最大,工作时处于低电平状态。
中间两位是横,没有意义为了看上去美观设置的。
最后一位是定时的,从零到九,每一个数字表示5秒。
调档和定时由两个按键控制。
上面就是这次要做的智能风扇的简述。
2.系统框图
按键
AT89C51单片机
数码管显示
PWM功率放大
电机
二、硬件电路设计
1.单片机
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
⒈电源:
⑴VCC-芯片电源,接+5V;⑵VSS-接地端;⒉时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
⒊控制线:
控制线共有4根, ⑴ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:
外ROM读选通信号。
⑶RST/VPD:
复位/备用电源。
①RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外ROM选择/片内EPROM编程电源。
①EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
5.51单片机引脚图如下所示
2.显示
LED显示器又称数码管,八段LED显示器由8个发光二极管组成。
其中7个发光二极管构成字型“8”的各个笔画段,另一个小数点为h发光二极管。
LED显示器有两种不同的形式:
一种是发光二极管的阳极都连在一起的,称之为共阳极LED显示器;另一种是发光二极管的阴极都连在一起的,称之为共阴极LED显示器。
共阴与共阳极数码管的不同在于公共端一个接地一个接电源。
共阴数码管接地,共阳数码管接电源。
当二极管导通时,相应的发光二极管点亮,由点亮的二极管组合而显示各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7D6D5D4D3D2D1D0,于是用8位二进制码就可以表示欲显示字符的字型代码。
与单片机显示图如图4所示。
编码如表3所示
表3LED显示的字符与编码表
显示字符
共阴极字型码
共阳极字型码
0
3FH
C0H
1
06H
F9H
2
5BH
A4H
3
4FH
B0H
4
66H
99H
5
6DH
92H
6
7DH
82H
7
07H
F8H
8
7FH
80H
9
6FH
90H
图4共阳极LED显示器89C51控制电路
3.按键
本次设计的硬件中用了2个键,选择的连接到单片机的端口分别是P1.0,P1.1.其中P1.0用于调节风扇档位;P1.1用于定时调节,按下一次加5秒钟;
4.PWM调速
PWM的意思是脉宽调节,也就是调节方波高电平和低电平的时间比,一个20%占空比波形,会有20%的高电平时间和80%的低电平时间,而一个60%占空比的波形则具有60%的高电平时间和40%的低电平时间,占空比越大,高电平时间越长,则输出的脉冲幅度越高,即电压越高.如果占空比为0%,那么高电平时间为0,则没有电压输出.如果占空比为100%,那么输出全部电压.
三、PCB设计
1.元件封装
2.布局布线规则技巧
元件布局基本规则
1.按电路模块进行布局,实现同一功能的相关电路称为一个模块,电路模块中的元件应采用就近集中原则,同时数字电路和模拟电路分开;
2.定位孔、标准孔等非安装孔周围1.27mm内不得贴装元、器件,螺钉等安装孔周围3.5mm(对于
M2.5)、4mm(对于M3)内不得贴装元器件;
3.卧装电阻、电感(插件)、电解电容等元件的下方避免布过孔,以免波峰焊后过孔与元件壳体短路;
4.元器件的外侧距板边的距离为5mm;
5.贴装元件焊盘的外侧与相邻插装元件的外侧距离大于2mm;
6.金属壳体元器件和金属件(屏蔽盒等)不能与其它元器件相碰,不能紧贴印制线、焊盘,其间距应大于2mm。
定位孔、紧固件安装孔、椭圆孔及板中其它方孔外侧距板边的尺寸大于3mm;
7.发热元件不能紧邻导线和热敏元件;高热器件要均衡分布;
8.电源插座要尽量布置在印制板的四周,电源插座与其相连的汇流条接线端应布置在同侧。
特别应注意不要把电源插座及其它焊接连接器布置在连接器之间,以利于这些插座、连接器的焊接及电源线缆设计和扎线。
电源插座及焊接连接器的布置间距应考虑方便电源插头的插拔;
9.其它元器件的布置:
所有IC元件单边对齐,有极性元件极性标示明确,同一印制板上极性标示不得多于两个方向,出现两个方向时,两个方向互相垂直;
10、板面布线应疏密得当,当疏密差别太大时应以网状铜箔填充,网格大于8mil(或0.2mm);
11、贴片焊盘上不能有通孔,以免焊膏流失造成元件虚焊。
重要信号线不准从插座脚间穿过;
12、贴片单边对齐,字符方向一致,封装方向一致;
13、有极性的器件在以同一板上的极性标示方向尽量保持一致
元件布线规则
1、画定布线区域距PCB板边≤1mm的区域内,以及安装孔周围1mm内,禁止布线;
2、电源线尽可能的宽,不应低于18mil;信号线宽不应低于12mil;cpu入出线不应低于10mil(或8mil);线间距不低于10mil;
3、正常过孔不低于30mil;
4、双列直插:
焊盘60mil,孔径40mil;
1/4W电阻:
51*55mil(0805表贴);直插时焊盘62mil,孔径42mil;
无极电容:
51*55mil(0805表贴);直插时焊盘50mil,孔径28mil;
5、注意电源线与地线应尽可能呈放射状,以及信号线不能出现回环走线
3.PCB设计步骤
1.1电路原理图设计的步骤
(1)设置原理图设计环境;
(2)放置元件;
(3)原理图布线;
(4)编辑和调整;
(5)检查原理图;
(6)生成网络表。
2.1电路原理图设计
电路原理图设计最基本的要求是正确性,其次是布局合理,最后在是正确性和布局合理的前提下力求美观。
根据以上所述的电路原理图设计步骤,两级放大器电路原理图设计过程如下:
(1)启动原理图设计服务器
进入Protel99SE,创建一个数据库,执行菜单File/New命令,从框中选择原理图服务器(SchematicDocument)图标,双击该图标,建立原理图设计文档。
双击文档图标,进入原理图设计服务器界面。
(2)设置原理图设计环境
执行菜单Design/Options和Tool/Preferences,设置图纸大小、捕捉栅格、电气栅格等。
(3)装入所需的元件库
在设计管理器中选择BrowseSCH页面,在Browse区域中的下拉框中选择Library,然后单击ADD/Remove按钮,在弹出的窗口中寻找Protel99SE子目录,在该目录中选择Library\SCH路径,在元件库列表中选择所需的元件库,比如Miscellaneousdevicesddb,TIDatabook库等,单击ADD按钮,即可把元件库增加到元件库管理器中。
(4)放置元件
根据实际电路的需要,到元件库中找出所需的元件,然后用元件管理器的Place按钮将元件放置在工作平面上,再根据元件之间的走线把元件调整好。
(5)原理图布线
利用Protel99SE提供的各种工具、指令进行布线,将工作平面上的器件用具有电气意义的导线、符号连接起来,构成一个完整的电路原理图。
(6)编辑和调整
利用Protel99SE所提供的各种强大的功能对原理图进一步调整和修改,以保证原理图的美观和正确。
同时对元件的编号、封装进行定义和设定等。
(7)检查原理图
使用Protel99SE的电气规则,即执行菜单命令Tool/REC对画好的电路原理图进行电气规则检查。
若有错误,根据错误情况进行改正。
(8)生成网络表
网络表是电路原理图设计和印刷电路板设计之间的桥梁,执行菜单命令Design/CreateNetlist可以生成具有元件名、元件封装、参数及元件之间连接关系的网络表。
经过以上的步骤,完成了两级放大电路原理图的设计。
两级放大电路原理如图1所示。
2.2印刷电路板的设计
电路设计的最终目的是为了设计出电子产品,而电子产品的物理结构是通过印刷电路板来实现的。
Protel99SE为设计者提供了一个完整的电路板设计环境,使电路设计更加方便有效。
应用Protel99SE设计印刷电路板过程如下:
(1)启动印刷电路板设计服务器
执行菜单File/New命令,从框中选择PCB设计服务器(PCBDocument)图标,双击该图标,建立PCB设计文档。
双击文档图标,进入PCB设计服务器界面。
(2)规划电路板
根据要设计的电路确定电路板的尺寸。
选取KeepOutLayer复选框,执行菜单命令Place/Keepout/Track,绘制电路板的边框。
执行菜单Design/Options,在“SignalLager”中选择BottomLager,把电路板定义为单面板。
(3)设置参数
参数设置是电路板设计的非常重要的步骤,执行菜单命令Design/Rules,左键单击Routing按钮,根据设计要求,在规则类(RulesClasses)中设置参数。
选择RoutingLayer,对布线工作层进行设置:
左键单击Properties,在“布线工作层面设置”对话框的“PuleAttributes”选项中设置TodLayer为“NotUsed”、设置BottomLayer为“Any”。
选择WidthConstraint,对地线线宽进行设置:
左键单击Add按钮,进入线宽规则设置界面,首先在RuleScope区域的FilterKind选择框中选择Net,然后在Net下拉框中选择GND,再在RuleAttributes区域将Minimumwidth、Maximumwidth和Preferred三个输入框的线宽设置为1.27mm;
电源线宽的设置:
在Net下拉框中选择VCC,其他与地线线宽设置相同;
整板线宽设置:
在FilterKind选择框中选择WholeBoard,然后将Minimumwidth,Maximumwidth和Preferred三个输入框的线宽设置为0.635mm。
(4)装入元件封装库
执行菜单命令Design/Add/RemoveLibrary,在“添加/删除元件库”对话框中选取所有元件所对应的元件封装库,例如:
PCBFootprint,Transistor,GeneralIC,InternationalRectifiers等。
(5)装入网络表
执行菜单Design/LoadNets命令,然后在弹出的窗口中单击Browse按钮,再在弹出的窗口中选择电路原理图设计生成的网络表文件(扩展名为Net),如果没有错误,单击Execute。
若出现错误提示,必须更改错误。
(6)元器件布局
Protel99SE既可以进行自动布局也可以进行手工布局,执行菜单命令Tools/AutoPlacement/AutoPlacer可以自动布局。
布局是布线关键性的一步,为了使布局更加合理,多数设计者都采用手工布局方式。
(7)自动布线
Protel99SE采用世界最先进的无网格、基于形状的对角线自动布线技术。
执行菜单命令AutoRouting/All,并在弹出的窗口中单击Routeall按钮,程序即对印刷电路板进行自动布线。
只要设置有关参数,元件布局合理,自动布线的成功率几乎是100%。
(8)手工调整自动布线结束后,可能存在一些令人不满意的地方,可以手工调整,把电路板设计得尽善尽美。
(9)打印输出印刷电路板图执行菜单命令File/Print/Preview,形成扩展名为PPC的文件,再执行菜单命令File/printJob,就可以打印输出印刷电路板图
4.PCB板图
四、焊接调试
1.使用元器件检测判断
1.固定电阻器的检测。
将两表笔分别与电阻的两端引脚相接即可测出实际电阻值。
为了提高测量精度,应根据被测电阻标称值的大小来选择量程。
由于欧姆挡刻度的非线性关系,它的中间一段分度较为精细,因此应使指针指示值尽可能落到刻度的中段位置,即全刻度起始的20%~80%弧度范围内,以使测量更准确。
根据电阻误差等级不同。
读数与标称阻值之间分别允许有±5%、±10%或±20%的误差。
如不相符,超出误差范围,则说明该电阻值变值了。
2.二极管的检测
检测小功率晶体二极管
A判别正、负电极(a)观察外壳上的的符号标记。
通常在二极管的外壳上标有二极管的符号,带有三角形箭头的一端为正极,另一端是负极。
(b)观察外壳上的色点。
在点接触二极管的外壳上,通常标有极性色点(白色或红色)。
一般标有色点的一端即为正极。
还有的二极管上标有色环,带色环的一端则为负极。
(c)以阻值较小的一次测量为准,黑表笔所接的一端为正极,红表笔所接的一端则为负极。
B检测最高工作频率fM。
晶体二极管工作频率,除了可从有关特性表中查阅出外,实用中常常用眼睛观察二极管内部的触丝来加以区分,如点接触型二极管属于高频管,面接触型二极管多为低频管。
另外,也可以用万用表R×1k挡进行测试,一般正向电阻小于1K的多为高频管。
C检测最高反向击穿电压VRM。
对于交流电来说,因为不断变化,因此最高反向工作电压也就是二极管承受的交流峰值电压。
需要指出的是,最高反向工作电压并不是二极管的击穿电压。
一般情况下,二极管的击穿电压要比最高反向工作电压高得多(约高一倍)。
3.三极管检测判定基极。
用万用表R×100或R×1k挡测量三极管三个电极中每两个极之间的正、反向电阻值。
当用第一根表笔接某一电极,而第二表笔先后接触另外两个电极均测得低阻值时,则第一根表笔所接的那个电极即为基极b。
这时,要注意万用表表笔的极性,如果红表笔接的是基极b。
黑表笔分别接在其他两极时,测得的阻值都较小,则可判定被测三极管为PNP型管;如果黑表笔接的是基极b,红表笔分别接触其他两极时,测得的阻值较小,则被测三极管为NPN型管。
判定集电极c和发射极e。
(以PNP为例)将万用表置于R×100或R×1K挡,红表笔基极b,用黑表笔分别接触另外两个管脚时,所测得的两个电阻值会是一个大一些,一个小一些。
在阻值小的一次测量中,黑表笔所接管脚为集电极;在阻值较大的一次测量中,黑表笔所接管脚为发射极。
4.固定电容器的检测A检测10pF以下的小电容因10pF以下的固定电容器容量太小,用万用表进行测量,只能定性的检查其是否有漏电,内部短路或击穿现象。
测量时,可选用万用表R×10k挡,用两表笔分别任意接电容的两个引脚,阻值应为无穷大。
若测出阻值(指针向右摆动)为零,则说明电容漏电损坏或内部击穿。
B检测10PF~0.01μF固定电容器是否有充电现象,进而判断其好坏。
万用表选用R×1k挡。
两只技术'>三极管的β值均为100以上,且穿透电流要些可选用3DG6等型号硅三极管组成复合管。
万用表的红和黑表笔分别与复合管的发射极e和集电极c相接。
由于复合三极管的放大作用,把被测电容的充放电过程予以放大,使万用表指针摆幅度加大,从而便于观察。
应注意的是:
在测试操作时,特别是在测较小容量的电容时,要反复调换被测电容引脚接触A、B两点,才能明显地看到万用表指针的摆动。
C对于0.01μF以上的固定电容,可用万用表的R×10k挡直接测试电容器有无充电过程以及有无内部短路或漏电,并可根据指针向右摆动的幅度大小估计出电容器的容量。
2.焊接技巧
正确使用电烙铁
1、电烙铁使用前要上锡,具体方法是:
将电烙铁烧热,待刚刚能熔化焊锡时,涂上助焊剂,再用焊锡均匀地涂在烙铁头上,使烙铁头均匀的吃上一层锡。
2、焊接时间不宜过长,否则容易烫坏元件,必要时可用镊子夹住管脚帮助散热。
3、焊接完成后,要用酒精把线路板上残余的助焊剂清洗干净,以防炭化后的助焊剂影响电路正常工作。
4、电烙铁应放在烙铁架上。
元件焊接顺序
先难后易,先低后高,先贴片后插装。
宗旨:
焊接方便,节省时间。
先焊接难度大的,这主要是指管脚密集的贴片式集成芯片。
如果把这些难度大的放于最后焊接,一旦焊接失败把焊盘搞坏,那就会前功尽弃。
先低后高,先贴片后插装。
这样焊接起来方便。
如先把高的元件焊接了,有可能妨碍其他元件的焊接,尤其是高大的元件密集众多的时候。
如果先焊接插装的元件,电路板就会在焊台上放不平,影响焊接心情
3.电路板的调试
开始程序出了一点问题,自己修改了很长时间可是还是没有成功,后来在同学几次的指导之下,风扇成功运转了。
五、软件设计
1.软件流程图
2.程序
#include
sbitk=P1^1;//功能按键
sbitk1=P1^0;//调速(PWM占空比调节)
bitk_f=0;//按志位
bitk1_f=0;//按键键K标K1标志位
//电源控制
sbitpwm=P3^6;//电机驱动PWM输出端
unsignedchartime;
unsignedchardis[4];//显示缓存
unsignedchardanwei=0;//档位变量0~3
unsignedcharzhangkb=0;//pwm占空比
unsignedcharcodescan[4]={0x8f,0x4f,0x2f,0x1f};
unsignedcharcodeseg[11]={0xa0,0xbb,0x62,0x32,0x39,0x34,0x24,0xba,0x20,0x30,0x7f};
voiddelay(unsignedintms)
{
unsignedintx;
while(ms!
=0)
{
for(x=0;x<125;x++);
ms=ms-1;
}
}
voidchengxu(void)
{
if(k==0)///////按键按下
{
delay(10);//延时消抖
if(k==0&&k_f==0)//再判断
{
k_f=1;///标志位置1
time=time+1;
if(time>9)time=0;
}
}
if(k==1){k_f=0;}//判断按键抬起,标志位置0.
if(k1==0)
{
delay(10);
if(k1==0&&k1_f==0)
{
、
k1_f=1;
danwei++;//档位
if(danwei>3)danwei=0;
}
}
if(k1==1)k1_f=0;
}
main()
{
TMOD=0X12;//2个定时器都工作在方式1即16位定时器
TH0=256-200;
TL0=6;
TH1=(65536-4000)/256;//4ms(数码管扫描)
TL1=(65536-4000)%256;
TR0=1;//启动定时
TR1=1;
ET0=1;//开定时中断0
ET1=1;
EA=1;
while
(1)
{
chengxu();
dis[0]=time%10;//显示定时剩余时间(分个位)
dis[1]=10;//显示-
dis[2]=10;//显示-
dis[3]=danwei;//显示档位
//pwm占空比控制
if(danwei==0){zhangkb=0;P1=0XfF;}//占空比0%
elseif(danwei==1){zhangkb=4;P1=0X7F;}//占空比40%;
elseif(danwei==2){zhangkb=7;P1=0X3F;}//占空比70%
elseif(danwei==3){zhangkb=10;P1=0X1F;}//占空比100%
}
}
voidtime0(void)interrupt1
{
staticunsignedcharj=0;
j++;
if(j>9){j=0;}
if(zhangkb>j){pwm=0;}
elsepwm=1;
}
voidtimer1(void)interrupt3
{
staticunsignedchart,sec,i;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
if(time)t++;
if(t>250){t=0,sec++;}
if(sec>5)//此处应为5s
{
sec=0;
time--;
if(time==0)danwei=0;
}
P2=scan[i];
P0=seg[dis[i]];
i++;
if(i>3)i=0;
}
六、实训小结
通过这次实训对单片机在生活中的应用也有所了解,知道了单片机的重要性,做PCB对布线也有了一定的了解,对元器件有了一点的了解,知道了怎么检测部分元器件的极性以及好坏,还有检验电路。
此外这次智能风扇的制作我受益匪浅,相信这次制作过程也为我以后的工作经验积累了不少,减少了以后工作中的曲折,也提高了工作毅力。