小弟最近玩超聲波,最初參考網上最常用的CXA20106電路制作信號接收回路,發現以下典型問題:
1.CXA20106接收增益很大,導致發射探頭衍射的波會第一個到達接收電路,示意圖如下
由于發射和接收探頭距離大約是5mm到10mm左右,導致發射探頭輸出8個超聲波后,會由于衍射作用(很微弱)直接進入接收探頭,導致接收到如圖r1一樣的回波,但這個波不是我們所需要的,我們需要測量的是t1到r2之間經過的時間。R1的存在也導致了cxa20106制作接收有很大盲區的問題(筆者按這種方法制作的盲區大約在10cm--25cm左右)。如果測量物體很近,導致r2與r1重疊,無法分辨的原因,根本解決方法是將r1消除掉。
2.網上大多數賣的都是需要單片機配合定時器來采集數據,有一個TRIG,還有一個out,通過trig一個高電平,測量直到out輸出低電平的時間,得到距離,但這樣有個問題,比如主單片機在所有定時器占用情況下,會導致無法測量數據或者測量變得很棘手。
發現上述問題,小弟設計一款超聲波電路,能很好的解決以上兩個問題。不說廢話了,上圖
先說第一個問題如何解決的,此次設計的超聲波接收電路依然是cxa20106,與普遍超聲波電路不同的是這個芯片的2腳多接了個兩個電阻,U1芯片2腳是控制整體接收增益的,筆者試驗如果只用C1和R1可以降低很多增益,使接收只能從2cm-30cm,再遠的話由于返回的超聲波太弱而無法接收,適當減小R1的值可以提高增益,這樣我們如果通過R2和Ra串聯接負極的話(相當于減小了R1的值,提高了增益),測量距離會編程15cm-400cm左右,有時好的話會變成500cm,這里小弟設計打算用stm8的PC7接口來控制整體增益。
第二個問題對于很多人來說肯定想到如何解決了,既然超聲波上用到了單片機,那串口輸出數據就很簡單了!對,小弟這里用的就是串口來輸出數據。9600bps,8數據位1停止位。在終端里面打印如下,單位是毫米mm:
說說整體工作過程。上述電路加電后,單片機將PD3、PD2口初始化為推挽模式,PD2和PD3是直接驅動發射探頭。經過發射8個40Khz超聲波后,將PC7口設置為高阻態,此時整機處于低增益模式下,打開Tim2的1通道捕獲中斷,等待回波,此時單片機有件很重要的事兒就是當波傳出后,等待2ms,讓接收探頭躲過第一次衍射的波!打開高增益(PC7=0),來接收距離遠物體返回的波。一旦接收到波,捕獲模式會自動保存定時器的數據到捕獲寄存器,此時就可以將數據轉變為距離了。
用單片機的捕獲中斷做的穩定性不錯在1m內,固定距離測量,串口輸出數據精確度在1mm左右,在3m距離下,測量結果大約有2mm跳變。
審核編輯:劉清
-
單片機
+關注
關注
6063文章
44925瀏覽量
647090 -
超聲波
+關注
關注
63文章
3105瀏覽量
139873 -
定時器
+關注
關注
23文章
3288瀏覽量
117254 -
低電平
+關注
關注
1文章
175瀏覽量
13601
發布評論請先 登錄
超聲波頻率和功率對在線式超聲波清洗的影響如何?

評論