自2009年10月23日在宿舍里沒什么事做&&之前做的TDA2030又出了點問題&&在一個偶然的時候看到了一手機的盒子,所以想到用這個手機外殼做一個功放.開始構(gòu)思整個制作。
做功放首先要考慮的是做什么功放,思考了一段時間,最后決定做10+10W的TDA2009加AT89S52,CD4051等做為控制和檢測系統(tǒng).接下來要做的就是去收集任何關(guān)于2009的功放的資料和畫電路板了。
最初構(gòu)思結(jié)構(gòu):
整個電路以模塊化建設(shè)為主,以便于在以后有其他想法時不會因為需要它其中的某部分電路而帶這這個功放板,再一個就是不必因為其中某部分電路嚴重損壞而丟棄整塊板。
整個電路分為以下模塊:
1, 中央處理器模,以TA89S52為核心元件;
2, 功率模塊,以TDA2009為核心元件;
3, 信號采樣模塊以LM393為核心元件;
4, 控制,顯示模塊;
5, 電源模塊,其中正電源用全波整流輸出,5V電源用7805穩(wěn)壓輸出;負電源采用半波整流 7905穩(wěn)壓輸出;
6, 音量控制模塊等,以CD4051為核心元件。
整個電路功能構(gòu)思(實際與構(gòu)思基本一致):
1, 信號輸入檢測,在60秒內(nèi)無信號輸入自動關(guān)機;
2, 可進入睡眠模式,既定時關(guān)機功能(范圍為1~60分種);
3, 10級LED電平顯示;
4, 工作時間顯示;
5, 欠壓,過流,短路延遲斷電保護,保護裝置動作后無需更換部件既可從新開機;
6, 機體溫度檢測,當機體溫度到達n攝氏度時讓電路開始以聲音或光的方式發(fā)出警告。當溫度繼續(xù)升高并到達一定高度時自動打開電扇,溫度降低后又自動關(guān)閉;
7, 可用按鍵控制音量等。
畫電路板中……
首先畫完的是功率,電源和音量控制模塊,原來的計劃是將這幾個模塊分開,但由于雕刻機的原因,他們只能在一起了,但他們之間沒有任何聯(lián)系,在必要的時候隨時可將他們割斷;
焊接并調(diào)試完成!!
接下來是畫中央處理器(CPU)和控制,顯示板面。
中央處理器部分: 
正在雕刻控制部分:
、
CPU模塊:

顯示,控制面板:

制作完這些模塊后就要進行單片機(AT89S52)進行調(diào)試了……
開始編寫程序:
(此程序版本為09.11.21)
- /***********************************************************
- 單片機引腳說明:
- P1口:0為數(shù)碼管開關(guān)的總開關(guān);
- 1,2,3,4均為數(shù)碼管開關(guān);
- 5繼電器開關(guān);
- 6為嗡鳴器;
- 7風(fēng)扇(在原I/O口上加了一三極管)
- 三個外接LED:P2.5, 6,7;其中在主板上的LED是P2.5;
- 接有上拉電阻(接數(shù)碼管)的是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;
- /****數(shù)碼管開關(guān)****/
- 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)
- {
-
- }
復(fù)制代碼
Over!!!
在編寫程序時遇到了問題:因為要對輸入信號檢測進行編程,而在電路中我是將P3^7直接接到LM393的輸出,與LED并聯(lián),在LM393的電路中是高電平有效,而單片機又默認I/O口的狀態(tài)為1,所以我認為應(yīng)該讓P3^7初始化為0然后再檢測高電平。可問題出現(xiàn)了:這樣做雖然可以檢測到是否有信號輸入,而在電平顯示中的最低位卻不亮了……
后來說來神奇:我刪除了P3^7初始化為0的命令,再試就得了。我想我知道為什么讓他初始化為0為什么不亮了,原因是LM393的輸出能力有限,他輸出的1是LED兩端的2V電壓而且電流小,“拼不過” 單片機的0,但他的出現(xiàn)依然使得單片機的P3^7電壓升高但小于2V,所以單片機還可以檢測到有信號輸入但LED不亮。
但有點不明白為什么不讓P3^7初始化LED就不亮并且依然可以檢測到信號呢??
原因暫不明。。。。。。
結(jié)論:平時要注意自己的知識儲備!
把程序?qū)懭階T89S52后就開始試機了。(試機中……)
中央處理器,顯示局部調(diào)試:

調(diào)試成功后就可進行整體試機了。
在試機的過程中損壞了一塊單片機,原因暫不明。。。。。。。
OK,可以進行整體調(diào)試了。
調(diào)試時也要不斷對他們進行調(diào)整,比如為了美觀,將顯示面板的一排電平顯示的LED換成了綠色的等。
電路整體測試:

電路整體測試基本順利,一個電路一般是不能沒有外殼的,在設(shè)計電路時我是就打算將這一電路裝到一手機盒里,所以在畫PCB時就要量手機盒的相關(guān)尺寸,但測量總是會有誤差的,當時測量是我就沒有考慮到裝電路板時要剪掉的那部分的尺寸,使得大當裝上電路板時由于電路板有點小所導(dǎo)致的機殼前有點空缺。只是我一般都比較樂觀,既然有空缺那就將就著拿來當空氣流通的窗口吧。。!
結(jié)論:量一物體的尺寸時一定要考慮周到!
接下來就是裝機了。
將電路板裝入機盒:

(有點亂 )
在即將完成制作時又發(fā)現(xiàn)了一個問題,既在沒有信號輸入時喇叭也會發(fā)出一些躁聲,懷疑是功率部分出了問題,將輸入信號未經(jīng)過音量控制部分發(fā)現(xiàn)躁聲消失;再懷疑是音量控制部分的問題。在這部分可能會造成干擾的只有電源和CD4051的三個控制端,所以試著在CD4051控制端的A,B,C分別接一50p的電容濾波,結(jié)果沒用。拿示波器來檢查,A,B,C端都有24MHz的干擾,即使加有電容依然不濟于事;接著檢查了其他線路,結(jié)果發(fā)現(xiàn)除了GND以外每一條都受到24MHz的干擾。所以又試者在單片機+5v電源處加一電感濾波,但結(jié)果好象不怎么明顯……
一個不經(jīng)意讓我發(fā)現(xiàn)似乎在掃描數(shù)碼管時干擾特別大,所以只要盡量不去掃描數(shù)碼管干擾應(yīng)該就可以減小好多。
又回頭編寫程序,讓信號輸入檢測時顯示的時間在小于15s時才顯示,定時關(guān)機在小于等于1時或有關(guān)于時間的按鍵按下時才顯示,否則4個數(shù)碼管全部關(guān)閉。
結(jié)果和我想的一樣,干擾果然少了好多——至少聽起來。
結(jié)論:電路出了問題不要只從硬件上找原因,要適當?shù)目紤]考慮軟件,生活中同樣適用!
整個制作完成:(已經(jīng)在2009年11月21日星期六投入正常使用)

整個制作總結(jié):
做這個制作所需的知識并不多,一個普通的電子專業(yè)的學(xué)生應(yīng)該都能做。在這過程中遇到了很多在設(shè)計時沒有想到的問題(上面只列出了一小部分,還有比如模塊與模塊之間都是采用插針連接的,怎么處理好接頭就是一個問題了等),從這些問題可以讓我感覺到平時積累知識的重要性和讓我感覺到想象與現(xiàn)實的差距。
在一個就是自己做一個制作花的錢并不比買一個成品少 ,但又能充實自己的業(yè)余生活和積累一些相關(guān)經(jīng)驗,所以不要做這種制作太多,但又不要不做。
|