94
技術社區[雲棲]
《仿人機器人原理與實戰》一3.3 熱平衡模擬器
本節書摘來異步社區《仿人機器人原理與實戰》一書中的第3章 ,第3.3節,作者布萊恩·伯傑倫(Bryan Bergeron) 托馬斯B. 塔爾博特(Thomas B. Talbot) 王偉 魏洪興 劉斐 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。
3.3 熱平衡模擬器
接下來的一組實驗將教會你在熱動態平衡中如何利用上述控製模型。在這裏所學到的原則適用於多種控製係統,不管控製目標是仿人機器人還是其他機械電子設備。
3.3.1 初級熱平衡模擬器
我們首先使用一個類似於圖3-3所示的簡易熱交換係統。假設你手頭沒有可以安裝熱水儲槽的仿人機器人軀幹,我們就用分散的零件做形式上的模擬。這種方法的好處是能夠對初始設置進行快速修改,並且使熱平衡過程的可視化。
3.3.2 器材清單
為了建立基礎的熱平衡模擬器,你將要用到以下器材:
- 6~12V直流水泵
- 10英尺長、直徑3/16英寸的魚缸用矽樹脂水管,或直徑1/8英寸的銅管
- 矽樹脂密封膠管
- 熱水(來自水龍頭)或浸入式加熱器
- 接頭或者密封膠,用來將管子連接到泵上
- 絕熱的1加侖儲槽
- Arduino Uno或等效控製器
- Arduino的USB連接線
- 水泵電源
- 運動控製擴展板或者多通道的額定電流2A的MOSFET管
- 防水的10kΩ熱電偶
- 10kΩ、1/4W電阻
- 人體模型的頭部或者其他平台
- 壓縮空氣罐或散熱片
與之前的項目類似,你可以隨意更換更便宜和更容易獲得的器材。例如,用浸入式加熱器加熱儲槽中的熱水是一種方便的方法,但是來自於水龍頭的熱水同樣可以。同時,對1加侖儲槽也沒有特殊要求。對於我們的實驗目的,用毛巾或者氣泡包裹的不鏽鋼或者鋁合金的罐子跟實驗室中那種帶玻璃纖維的燒杯效果是一樣的。在調試係統時,密封的油漆桶可以作為廉價的替代儲槽。
在上述清單中,最關鍵的是低壓直流水泵、水管和相關接頭。低壓直流電源既安全又便於控製。檢查可用的直流水泵,可采用浸沒於水中的水泵,或者是帶輸入輸出連接頭的、用於船底排水和小噴泉的那種水泵。如圖3-8所示,我們使用浸入式、12Vdc、額定1.2A、350gal/h的船底排水泵,大概16美元。盡管350gal/h的輸出量對我們的實驗來說可能偏大不少,但是你至少要每分鍾從10英尺長、3/16英寸粗的管子中抽走1~2L水。
如圖3-8所示,器材包括直徑3/16英寸的矽橡膠管、一個帶接線柱的MOSFET擴展板、一個通用管徑適配器和兩個熱電偶探頭,其中一個是自製的,另一個是采購的。銅管可以用來替代矽橡膠水管,紅外溫度計最好有,盡管不是必需的。溫度計能夠幫助你快速了解各器件的溫度,而不需要直接接觸器件。
我們用矽橡膠管製作熱輻射器。誠然,矽橡膠不是熱交換的最佳材料,但是它很便宜且比銅管更容易製作。除非知道怎麼做,否則你將會在製作間裏為尋找合適的銅接頭而花費整個下午。然而,如果你已經有銅管或者鋁管,並且知道怎麼使用,那就不用矽橡膠管了,這樣係統的響應時間會更快。
因為Arduino接口的驅動能力隻有40mA,所以我們需要一個更大功率的晶體管或者H橋來驅動水泵。圖3-9展示了一些基於MOSFET管和集成橋電路的可選方案。位於左邊的Sparkfun電機擴展板采用6個MOSFET提供6個大電流通道,位於右邊的Grove擴展板利用L298N雙橋驅動。單個帶內部二極管保護的多通道MOSFET(比如FairChild公司的RFP30N06LE),與散熱片、PCB和輸入輸出接頭組合在一起是最緊湊且最容易獲得的單個電機驅動方案,如圖3-9中部所示。如果你決定使用單個MOSFET管,請使用PCB和大負載的接頭。如果使用麵包板,那麼你可能會燒壞線路。
3.3.3 電路
如圖3-10所示,電路由Arduino控製器(帶多通道MOSFET、12Vdc泵驅動接口)和熱電偶探頭(提供模擬信號輸入)組成。熱電偶與10kΩ阻值電阻R1串聯分壓,使得當溫度上升時,端口A0的輸入電壓更高。回想一下,熱電偶的溫度係數是負的,所以阻值隨溫度增加而下降。因此,隨著溫度上升,R1兩端的電壓增加,從而引起Arduino讀數增加。
3.3.4 構造
從原理圖中就可以看出,連接電子器件的工作量不大。如果選用10kΩ熱電偶作為溫度探頭,那麼你需要做防水安裝。將熱電偶插入1英尺的管子中,用矽膠密封確保電路連接幹燥。采用足夠的熱縮管包住線頭和焊接接頭,避免因水和蒸氣的原因造成短路。圖3-11展示了用於製造防水熱電偶探頭的主要材料。
橡膠或者塑料帽的密封性更好,但是會犧牲響應時間,靈敏的溫度傳感器對於精確控製係統非常關鍵。用防水且不導電的材料包裹熱電偶,其溫度變化會滯後於水溫,這與包裹材料的質量和熱傳導特性有關。如果不自己製作溫度探頭,那麼可以買預先標定好的防水探頭,探頭帶有薄的熱傳導帽,響應時間短。完整的自製熱電偶探頭和商用熱電偶探頭如圖3-8所示。
真正的挑戰在於管路製作,包括支撐平台製作。理想情況下,管子是埋在皮膚薄膜下的,以模擬突起的靜脈。為了達到說明問題的目的,我們采用廉價的服裝模特頭部,並將矽橡膠管像發帶一樣纏繞起來,如圖3-12所示。管子上可覆蓋一些假發,使得外觀更加自然。
另一種可選方案是利用銅管纏繞在服裝模特頭部或其他平台上,這樣導熱和輻射效果更好。例如,如圖3-13所示,將銅管纏繞在運動輥上。注意連接到泵上的是彈性氣管。不管采用什麼形式的管子和支撐平台,你都將發現,構造工作最困難的部分就是把水管連接到水泵上。例如,如果泵的出口外徑(OD)與管子的內徑(ID)不匹配,那麼你可能需要管徑變換器,如同本章開始展示的那種。
3.3.5 編程
如程序清單3-1所示,我們首先建立最基本的代碼,實施閉環和負反饋開關控製器。
清單3-1 Arduino代碼,用於泵速開關控製的熱平衡
這個例子主要依賴於通過Serial.println()函數送到串口監視器中的數據。如果熱電偶的讀數顯示溫度高於setPoint的溫度,那麼泵就會打開,將水送到熱輻射器中循環,在那裏水的熱量被釋放到環境中。當熱電偶顯示溫度達到setPoint或者更低時,泵停止工作。
setPoint和pumpSpeed的最佳值取決於初始設定。在我們的實驗中,setPoint取值600,大約位於冷水管和熱水管中水溫的中間值。pumpSpeed的最佳值取決於係統設計和預期響應時間。如果選用的是大流量的泵,那麼選用較小的pumpSpeed值將會更加安全。
假設連接正常,泵可以在全速下工作,那麼核心溫度應快速下降。然而,也很有可能會出現setPoint溫度超調。相反,如果將泵速調到很小,熱量從儲槽中散失就需要更長的時間,setPoint溫度超調的可能性也更小一些。顯然,多次嚐試和失敗是必不可少的。
3.3.6 操作
接下來要做的事情是,要麼用熱水裝滿儲槽,要麼用浸入式電加熱器把水加熱。不管用哪種方法,儲槽中水的溫度必須要比設定值高一點兒。另外,你應該賦給變量setPoint一個合理的溫度值,例如,一方麵你當然不想融化泵上的塑料零件;另一方麵你要把水溫設定得比外部溫度高一大截,否則熱輻射器就輻射不了多少熱量。
如果使用浸入式電加熱器而不是熱水,那麼紅外溫度計或者直接接觸式溫度計都有助於確定何時拔掉加熱器。你當然不想讓水泵都“沸騰”起來。除了防止過度高溫,沒有必要測量絕對溫度。我們的目的是突出熱電偶讀數的變化趨勢,以便與其他更先進的控製算法的結果相比較。
如果係統遇到這樣或那樣的困難,你可以在空氣中而不是在水中調試,從而節省時間。將熱電偶從儲槽中拔出,待其幹燥。接著,修改變量setPoint的值,使其剛好比外界溫度高一點兒。用手擠壓探頭,將探頭的溫度升到高於變量setPoint的值,並用壓縮空氣降溫。檢查泵的連接和熱電偶的完整性。如果你沒有做好熱電偶的密封,那麼線頭上的水可能會造成不正常的實驗結果。
確定探頭和相關電路都工作正常後,再把變量setPoint改為原來的值。如果仍然有問題,那麼請檢查泵和相關電路。注意:如果你在調試水泵,那麼某些浸入式器件必須與水長期接觸,便於潤滑和帶走熱量。
最後更新:2017-07-21 11:02:44