▼
打造FlashForth互動開發環境—有限資源下即時硬體操控的完美呈現
日前,羅賽塔(Rosseta)探測任務的菲萊號(Philae)成功登陸楚留莫夫.格拉希門克彗星(Comet 67P/Churyumov-Gerasimenko)表面,即為Forth程式開發系統展現控制低資源系統能耐的最佳範例。使用歲月超過40年的Forth語言,向以即時機器控制見長,尤其對想在低資源微控制器之單晶片架構上,提供全面性的互動開發環境而言特別方便。如同Mahon Kelly與Nicholas Spies在聯合撰寫的《FORTH:教材與參考》(FORTH: A Text and Reference)一書中所述,Forth語言同時能打造出只需耗費少量記憶體,就能開發出快速運行程式,並允許全面控制微控制器的彈性程式開發環境。
位於澳洲昆士蘭大學的超高音速動力學實驗室(Hypersonics Laboratory)裡,研究人員利用數個震波管(Shock Tube)和膨脹管(Expansion Tube)製造極高速氣流,用來測試超音速燃燒衝壓引擎(Scramjet Engine)和重返大氣層減速傘(Reentry Aeroshell)。測試氣流流速最高可達每秒15公里,不過只能維持極短的時間,從最低數百微秒(μs)到最高數毫秒(ms)不等。為了支援這些實驗,我們量身訂製了一些用於監測、訊號發送和訊號調節的裝置,這些裝置是以微控制器為核心元件,並以FlashForth作為開發環境。經過驗證,這樣的結合可說是建構小型裝置的便利基石。透過命令列存取序列埠連接的週邊裝置,程式設計人員便能輕鬆坐著操控暫存器位元(Register Bit),以在新硬體上進行實驗,同時在熟悉周邊裝置之後,相同的指令能被擷取成為新字詞的定義,以便打造最終應用程式。
起動暫態 為了讓Arduino韌體能透過來自縫紉機的回饋訊號,來決定馬達轉速與停針位置(Needle Position),所以我採用以TCRT5000紅外線感測器為基礎,並在eBay上以不到2美元買到的光學近接開關(Proximity Switch,又稱近接感測器)。儘管你會看到具備不同感測器定位的模組,但它們全都內建調整偵測靈敏度/範圍、數位輸出資料位元與類比電壓輸出等功能。圖1所顯示的馬達轉速感測器紅外線影像,突顯出右側的紅外線LED,具備位在其左側屏障後的光電晶體(Phototransistor)。
我透過Brownell旗下Oxpho-Blue金屬發藍液(Gun Bluing Solution)來塗黑馬達皮帶輪,儘管名稱叫做發藍液,但卻能在鋼材表面形成一個濃黑色的亮面,這無異是個完美絕佳的「黑暗面」。以塑料桿?光的不鏽鋼暖通空調專用膠帶可以提升反射率並增加另一半的反差。由於靈敏度調整電位器(Sensitivity Trimpot)能提供足夠的調整範圍,來關閉膠帶上的輸出並開啟藍化鋼材(Blued Steel)上的輸出,所以我透過中間值的設定,來尋求最佳的平均抗雜訊能力(noise immunity)。
|