前言
就像學軟件要了解些組成、編譯等知識一樣,玩硬件如果只用人家封裝好的模塊,而不了解它們的內部機制,感覺也有點不自在~其實,在很長時間以前就覺得該在模擬電路方面深入點了,可是總是找不到切入點,拿無線電的知識發現根本無法涉足,最近正好由于做一個軟硬件結合的“玩具”而引發了必須自己設計傳感器的需求,所以就趁勢在模擬電路的海洋里遨游下吧,嘿嘿~下面是今天(不,是昨天)做的關于這方面的調查和研究,哈哈,課太多又要把最新版的Ubuntu想方法裝進我的老掉牙的只有40G大小的移動硬盤里,結果就忙到了現在~
第一步、淘寶上看看有沒有現成的超聲波模塊散件:
ps:比較便宜的一個,采用芯片,右邊像排阻的東西!網上有人說這種芯片來做超聲波接收芯片有點誤人子弟~,不過想做成收發單獨的東西,用他們的產品只能模仿學習一下電路!
PS:這幾款和上面一款類似~還有比較坑的幾款就是直接采用超聲波測距模塊~
PS:怎么像樓主在幫人家做廣告呢~哈哈~
第二步、查閱相關資料,看看怎么DIY:
下面是從一個同學的畢業設計的論文中看到的,他沒有采用上述淘寶賣家普遍采用的接收模塊,而是用普通的模擬電路知識設計的。由于protues這個軟件無法 模擬出超聲波的真正的收發,所以下面的各個元件的參數我無法確是否正確,下圖就先僅作框架參考~(一會要仔細分析那個同學畢業設計給的方法到底行不 行!),這里先大致說一下,左下部分為超聲波發送模塊,通過一根線和MCU的P3.6腳相連,想通過單片機在該腳產生40KHz的矩形波然后通過多個 74HC04進行放大從而驅動超聲波發送模塊,右下部分的接收模塊包含接收、濾波、比較等運算,最后能根據接收到的超聲波是否為40KHz而產生一個信號 從而引發單片機中斷。
此外,我還發現,用80c52+12MHz的晶振,產生40KHz的矩形波在protues里模擬很不正常!這里for(a=0;a<200; a++){ P36=!P36; delays();}就是每隔一定時間讓P36腳的電壓翻轉實現輸出矩形波的效果,顯然設這里的delays()的延時為t,那么產生的矩形波的周期就是 2*t,若果需要40Khz的矩形波則delay()延時t就大約為12.5us,而如下面代碼中我采用的是delays()延時10次,結果產生的波形 如下圖所示:以MCU的12Mhz來算,這10次i--應該不會占用那么多的機器周期吧!(這個確實很令人疑惑)
復制代碼
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define ulong unsigned long
4 #define uint unsigned int
5 sbit P36=P3^6;
6 sbit P32=P3^2;
7 uchar data tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
8 bit again;
9 void delays();
10 void main()
11 {
12 uchar a;//一次發送方波數
13 TMOD=0x01;//T0計數方式1
14 TH0=0;
15 TL0=0;
16 IT0=1;//INT0負脈沖觸發
17 EA=1;//開總中斷
18 EX0=1;//開外部INT0中斷
19
20 again=1;
21 while(1)
22 {
23 while(again==1)
24 {
25 P36=0;
26 TR0=1;//T0開始計數
27 for(a=0;a<200;a++)//產生100個40Khz方波
28 {
29 P36=!P36;
30 delays();
31 }
32 //again=0;
33 }
34 }
35 }
36 void intersvro(void)interrupt 0 using 1 //INT0中斷服務程序
37 {
38 uint bwei,swei,gwei;
39 uchar DH,DL;
40 ulong COUNT;
41 ulong num;
42 TR0=0;//停止計數
43 DH=TH0;
44 DL=TL0;
45 COUNT=TH0*256+TL0;
46 num=(344*COUNT)/20000;
47 bwei=num/100;
48 swei=num%100/10;
49 gwei=num%10;
50 P1=tab[bwei];
51 P0=tab[swei];
52 P2=tab[gwei];
53 TH0=0;
54 TL0=0;
55 }
56 void delays()
57 {
58 int i=10;
59 while(i--);
60 }
復制代碼
鑒于上述的疑惑,我暫且把它歸結為protues仿真效果不好,要實測!但是感覺還是不怎么甘心呢,于是就拿555做個多諧振蕩器來試著產生40Khz的矩形波試試:結果發現結果還是挺接近的~那么看樣還是80C52的問題了!在此過程中又萌發一個利用555產生這個40kHz的矩形波,然后MCU只是給出使能信號使555工作就行了,這樣一方面可以減輕MCU的工作量,另一方面又會產生比較標準的40KHz的矩形波,哈哈,不錯,不錯!(這里T=(R1+2*R2)*C*Ln2 占空比Q=(R1+R2)/(R1+2*R2) D1是為了產生對稱的方波)。
最后,還是對那個接收部分不放心,于是還得拿出模擬電路的書仔細分析一下~這里我從LM741研究起,在網上找了些資料包括說明文檔甚至是英文的說的都不是很好,于是往書里找資料,發現竟然是當時學的一個芯片!!!進而發現上述的接收部分的核心非常類似于有源濾波器,可是由于模擬電路知識差不多考完就忘了,當初那些復雜的公式還是強記的,所以上面那個電路雖不復雜但是還是牽連很多知識的!準備有空好好重學一下它了!
經過這些調查和學習發現,如果不用特殊的模塊(淘寶上商家賣的那種采用紅外線驅動芯片來驅動超聲波)也能用簡單的運放電路做出來,可能用運放做出來的簡單的電路存在精度不是很高的問題吧~接下來準備再仔細研究一下芯片式的和普通運放式的,然后采購些元件,具體做了~
小結:
時間過得真是快,還沒干點什么事它就沒有了!有時候驀然回首,會被它的無情嚇到!今天就大致了解了下超聲波模塊,在產品方面千篇一律細分可分成兩種陣營(直接模塊上的二次開發與開發模塊一體開發),還是如當初的想法,這些都不適合改造以滿足自己的需求;在技術方面,發現有采用集成芯片的和采用普通運放的,客觀來說他們各有利弊吧,而感覺自己的模電知識略顯薄弱,要加把勁啦! |