自2009年10月23日在宿舍里没什么事做&&之前做的TDA2030又出了点问题&&在一个偶然的时候看到了一手机的盒子,所以想到用这个手机外壳做一个功放.开始构思整个制作。
做功放首先要考虑的是做什么功放,思考了一段时间,最后决定做10+10W的TDA2009加AT89S52,CD4051等做为控制和检测系统.接下来要做的就是去收集任何关于2009的功放的资料和画电路板了。
最初构思结构:
整个电路以模块化建设为主,以便于在以后有其他想法时不会因为需要它其中的某部分电路而带这这个功放板,再一个就是不必因为其中某部分电路严重损坏而丢弃整块板。
整个电路分为以下模块:
1, 中央处理器模,以TA89S52为核心元件;
2, 功率模块,以TDA2009为核心元件;
3, 信号采样模块以LM393为核心元件;
4, 控制,显示模块;
5, 电源模块,其中正电源用全波整流输出,5V电源用7805稳压输出;负电源采用半波整流 7905稳压输出;
6, 音量控制模块等,以CD4051为核心元件。
整个电路功能构思(实际与构思基本一致):
1, 信号输入检测,在60秒内无信号输入自动关机;
2, 可进入睡眠模式,既定时关机功能(范围为1~60分种);
3, 10级LED电平显示;
4, 工作时间显示;
5, 欠压,过流,短路延迟断电保护,保护装置动作后无需更换部件既可从新开机;
6, 机体温度检测,当机体温度到达n摄氏度时让电路开始以声音或光的方式发出警告。当温度继续升高并到达一定高度时自动打开电扇,温度降低后又自动关闭;
7, 可用按键控制音量等。
画电路板中……
首先画完的是功率,电源和音量控制模块,原来的计划是将这几个模块分开,但由于雕刻机的原因,他们只能在一起了,但他们之间没有任何联系,在必要的时候随时可将他们割断;
焊接并调试完成!!
接下来是画中央处理器(CPU)和控制,显示板面。
中央处理器部分:
正在雕刻控制部分:
、
CPU模块:
显示,控制面板:
制作完这些模块后就要进行单片机(AT89S52)进行调试了……
开始编写程序:
(此程序版本为09.11.21)
- /***********************************************************
- 单片机引脚说明:
- P1口:0为数码管开关的总开关;
- 1,2,3,4均为数码管开关;
- 5继电器开关;
- 6为嗡鸣器;
- 7风扇(在原I/O口上加了一三极管)
- 三个外接LED:P2.5, 6,7;其中在主板上的LED是P2.5;
- 接有上拉电阻(接数码管)的是P0口;
- LM393的是P2.3,4 ;其中第一组输出是P2.4 ;
- P三口全部引出;
- P2.0,1,2为CD4051控制端;
- 其他引脚:
- 电源:vss 16\GND38
- 寄存器选通:29;
- **************************************************************/
- #include<reg52.h>
- #define lxx unsigned char
- #define lxd unsigned int
- sbit lm393a=P2^4;
- sbit lm393b=P2^3;
- /****393因脚定义***/
- sbit zhongkaiguan=P1^0;
- sbit k1=P1^4;
- sbit k2=P1^3;
- sbit k3=P1^2;
- sbit k4=P1^1;
- /****数码管开关****/
- sbit shijianjia=P3^0;
- sbit shijianjian=P3^1;
- sbit yljia=P3^4;
- sbit yljian=P3^5;
- sbit guanji=P3^6;
- /******按键*******/
- sbit xhsr=P2^6; //信号输输入
- sbit jianchewendu=P2^7; //检测温度
- sbit yxz=P2^5;
- /*******LED******/
- sbit a=P2^0;
- sbit b=P2^1;
- sbit c=P2^2;
- sbit xhjc=P3^7;
- sbit fs=P1^7;
- sbit jdq=P1^5;
- sbit wmq=P1^6;
- /*****特殊脚*****/
- bit wdjca;
- lxx sz[]={0x88,0xbe,0xc4,0x94,0xb2,0x91,0x81,0xbc,0x80,0x90,};
- lxx yl,yljc,wdjc,wjs,wjss,guanjis;
- lxd haomiao,Miao,fen,yxxs,miaotiaozhuan,ylxs,fens,xssj;
- void ys(lxd YS){while(YS--);}
- /*************************************************准备工作******************************************************/
- void xs(void)
- {
-
- if(ylxs>=1){P0=sz[yl];k1=0;}else
- {
- k1=1;
- if(Miao<=15){P0=sz[Miao%10];k1=0;ys(200);k1=1;
- P0=sz[Miao/10%10];k2=0;ys(200);k2=1;
- }
- if(xssj>=1||fen<=1){P0=sz[fen%10];k3=0;ys(200);k3=1; if(fen/10%10){P0=sz[fen/10%10];k4=0;ys(200);k4=1;}}
- else k2=k3=1;
-
- }
- }
- void csh(void)
- {
- TMOD=0x11;
- TH0=15535/256;TL0=15535%256;
- TR0=1;ET0=1;
- TR1=0;ET1=1;
- EX0=1;IT0=0;
- EX1=1;IT1=0;
- EA=1;
- }
- void ajpd(void)
- {
- if(yljia==0){ys(20000);if(yljia==0){TR1=1;if(yl<=6)yl++;ylxs=120;}}
- if(yljian==0){ys(20000);if(yljian==0){TR1=1;if(yl>=1)yl--;ylxs=120;}}
-
- if(lm393b==0){fs=0;}else {fs=1;}
- if(lm393a==0){wjs=1;}else{wjs=0;}
-
- if(shijianjia==0){ys(20000);xssj=200;if(shijianjia==0&&fen<=59){fen++;}}
- if(shijianjian==0){ys(20000);xssj=200;if(shijianjian==0&&fen>=2){fen--;}}
- /*************************************/
- if(guanji==0){ys(50000);if(guanji==0){ys(50000);if(guanji==0)jdq=1;}}
- /**************************************/
- if(xhjc==1){Miao=60; xhsr=0;} else xhsr=1;
- if(yl==0){a=1;b=1;c=1;}
- if(yl==1){a=0;b=1;c=1;}
- if(yl==2){a=1;b=0;c=1;}
- if(yl==3){a=0;b=0;c=1;}
- if(yl==4){a=1;b=1;c=0;}
- if(yl==5){a=0;b=1;c=0;}
- if(yl==6){a=1;b=0;c=0;}
- if(yl==7){a=0;b=0;c=0;}
-
- }
- void main(void)
- {
- csh();
- yl=3;
- fen=59;
- jdq=0;
- Miao=30;
-
- zhongkaiguan=0;
- while(1)
- {
- xs();
- ajpd();
- }
- }
- void nzd0(void)interrupt 1
- {
- TH0=15535/256;
- TL0=15535%256;
- haomiao++;
- if(wjs==1){wjss++;} //温度是否达到??
- if(wjss>=10){jianchewendu=0;}else{jianchewendu=1;}
- if(wjss==30)wjss=0;
- if(haomiao==40){haomiao=0;Miao--;fens++;}
- if(fens==60){fen--;fens=0;}
-
- if(Miao==0||fen==0){jdq=1;}else jdq=0;
- miaotiaozhuan++;
- if(miaotiaozhuan>=40)yxz=0;else yxz=1;
- if(miaotiaozhuan==40)miaotiaozhuan=0;
-
- if(xssj>=1){xssj--;}
- }
- void nzdi(void)interrupt 3
- {
- TH1=15535/256;TL1=15535%256;
- ylxs--;
-
- if(ylxs==0){TR1=0;}
-
- }
- void wz0(void)
- {
- yljc=yl;
- yl=0;
- }
- void wz1(void)
- {
-
- }
复制代码
Over!!!
在编写程序时遇到了问题:因为要对输入信号检测进行编程,而在电路中我是将P3^7直接接到LM393的输出,与LED并联,在LM393的电路中是高电平有效,而单片机又默认I/O口的状态为1,所以我认为应该让P3^7初始化为0然后再检测高电平。可问题出现了:这样做虽然可以检测到是否有信号输入,而在电平显示中的最低位却不亮了……
后来说来神奇:我删除了P3^7初始化为0的命令,再试就得了。我想我知道为什么让他初始化为0为什么不亮了,原因是LM393的输出能力有限,他输出的1是LED两端的2V电压而且电流小,“拼不过” 单片机的0,但他的出现依然使得单片机的P3^7电压升高但小于2V,所以单片机还可以检测到有信号输入但LED不亮。
但有点不明白为什么不让P3^7初始化LED就不亮并且依然可以检测到信号呢??
原因暂不明。。。。。。
结论:平时要注意自己的知识储备!
把程序写入AT89S52后就开始试机了。(试机中……)
中央处理器,显示局部调试:
调试成功后就可进行整体试机了。
在试机的过程中损坏了一块单片机,原因暂不明。。。。。。。
OK,可以进行整体调试了。
调试时也要不断对他们进行调整,比如为了美观,将显示面板的一排电平显示的LED换成了绿色的等。
电路整体测试:
电路整体测试基本顺利,一个电路一般是不能没有外壳的,在设计电路时我是就打算将这一电路装到一手机盒里,所以在画PCB时就要量手机盒的相关尺寸,但测量总是会有误差的,当时测量是我就没有考虑到装电路板时要剪掉的那部分的尺寸,使得大当装上电路板时由于电路板有点小所导致的机壳前有点空缺。只是我一般都比较乐观,既然有空缺那就将就着拿来当空气流通的窗口吧!!!!
结论:量一物体的尺寸时一定要考虑周到!
接下来就是装机了。
将电路板装入机盒:
(有点乱)
在即将完成制作时又发现了一个问题,既在没有信号输入时喇叭也会发出一些躁声,怀疑是功率部分出了问题,将输入信号未经过音量控制部分发现躁声消失;再怀疑是音量控制部分的问题。在这部分可能会造成干扰的只有电源和CD4051的三个控制端,所以试着在CD4051控制端的A,B,C分别接一50p的电容滤波,结果没用。拿示波器来检查,A,B,C端都有24MHz的干扰,即使加有电容依然不济于事;接着检查了其他线路,结果发现除了GND以外每一条都受到24MHz的干扰。所以又试者在单片机+5v电源处加一电感滤波,但结果好象不怎么明显……
一个不经意让我发现似乎在扫描数码管时干扰特别大,所以只要尽量不去扫描数码管干扰应该就可以减小好多。
又回头编写程序,让信号输入检测时显示的时间在小于15s时才显示,定时关机在小于等于1时或有关于时间的按键按下时才显示,否则4个数码管全部关闭。
结果和我想的一样,干扰果然少了好多——至少听起来。
结论:电路出了问题不要只从硬件上找原因,要适当的考虑考虑软件,生活中同样适用!!
整个制作完成:(已经在2009年11月21日星期六投入正常使用)
整个制作总结:
做这个制作所需的知识并不多,一个普通的电子专业的学生应该都能做。在这过程中遇到了很多在设计时没有想到的问题(上面只列出了一小部分,还有比如模块与模块之间都是采用插针连接的,怎么处理好接头就是一个问题了等),从这些问题可以让我感觉到平时积累知识的重要性和让我感觉到想象与现实的差距。
在一个就是自己做一个制作花的钱并不比买一个成品少,但又能充实自己的业余生活和积累一些相关经验,所以不要做这种制作太多,但又不要不做。
|