最近我要完成自走車自動避障的功能,用的是超音波感測器,搭配NI CompactRIO控制器,要設計出當超音波感測到有障礙物時,必須馬上使伺服馬達停止運轉,並且要自動左轉(或右轉),以順利避開障礙物!
此超音波感測器只要給電源5v,就會傳一個方波波形(如下圖),當方波波形越寬時,超音波所量測的距離越遠(越窄,越近)。但我從CompactRIO所擷取到的波形跟示波器所測量的波形怎麼會怪怪的(為什麼)?
如果所擷取到的波形是這樣的話,那程式該如何設計呢?
最近我要完成自走車自動避障的功能,用的是超音波感測器,搭配NI CompactRIO控制器,要設計出當超音波感測到有障礙物時,必須馬上使伺服馬達停止運轉,並且要自動左轉(或右轉),以順利避開障礙物!
此超音波感測器只要給電源5v,就會傳一個方波波形(如下圖),當方波波形越寬時,超音波所量測的距離越遠(越窄,越近)。但我從CompactRIO所擷取到的波形跟示波器所測量的波形怎麼會怪怪的(為什麼)?
如果所擷取到的波形是這樣的話,那程式該如何設計呢?
換個方式說,LabVIEW要如何判斷所擷取到的方波寬度?
有什麼想法都可以說說看,我可以參考,謝謝!
如何判斷所擷取到的方波寬度,我以前有做過類似的東西,我是去得到開關ON/OFF的時間,意即,得到邏輯1和0的時間,我想應該跟你想做的差不多吧,你可以試著用計時器去做看看…
真是太感謝 aming 的回答了。
請問可否敘述你所說的 "得到開關ON/OFF的時間,意即,得到邏輯1和0的時間" 的流程,因為我想了很久都做不出來。
你已經得到 Pulse 波型訊號了,那就可以直接量測波型寬度,這可是Labview 的強項喔.
我做了個範例你給你看,你可以調整Frequency 就會自動量測出pulse 寬度了.
真是太感謝 KENLIN 了,不過檔案是8.6版,我開不起來,可否麻煩轉成8.5版? ~ 謝謝 ~
不好意思,問題又出現了。
將您的程式做些修改後應用在我的程式裡面,超音波訊號可以擷取到並顯示,Pulse width也可以判斷的出來
,不過為什麼Rising trigger location和Falling trigger location會等於"0"呢?(我覺得是資料型態的錯誤,要把DBL→圖表,可是不知如何轉換?)
以你的波型來看,訊號並不會在0 上下振蕩,所以你的 Trigger level 應該設在3左右才能抓到正確的值.
請問KENLIN,Trigger level的作用是什麼,我試了一下超音波的訊號波形都擷取的到,不過有些波形就怪怪的?
可以多看看NI 內建的說明文件,每一元件都有詳細的說明.
level specifies the threshold value signal in must cross before a trigger is detected. The default is 0.
我已經設計成下圖的樣子,訊號也可以正常擷取 (不過 wait 時間需設為50ms),

但無法判斷波形寬度,我附上我的主程式Project.zip,並看了很多書皆沒有想到,此虛線部分的資料形態轉換該如何解決?
~ 謝謝 ~
pfrhsd951234639748.0256712963後來問了NI工程師,問題已經解決,是要用DMA的技巧,讓它可以隨時接收隨時傳送,這樣速度會加快。
之後的避障功能就得自己設計囉!謝謝各位的幫忙!