您現在的位置是:首頁 > 籃球

微控制器小製作,感溫彩虹杯墊

  • 由 電子工程師小李 發表于 籃球
  • 2022-08-29
簡介3 彩虹杯墊PCB圖電路使用微控制器內部的PN接面測溫,透過軟體即可讀到溫度值

怎樣分段直線擬合

有一位波蘭愛好者製作了一款感溫LED杯墊,如圖8。1所示。這款杯墊可以感知杯中的飲料溫度,並根據溫度驅動板上的LED,發出暖色或冷色的光芒。這個設計創意得到了很多電子愛好者的關注。但是筆者個人認為,原版的設計存在一些可以改進的地方。比如,由於溫度測定不需要精確,溫度感測器不必使用獨立晶片,片內二極體測溫即可。另外,原設計中的LED採用並聯結構,不能夠獨立控制顏色,尚有改進餘地,於是我設計了這一款改進型的感溫彩虹杯墊。

微控制器小製作,感溫彩虹杯墊

圖8。1 波蘭愛好者製作的感溫杯墊

元件選擇

為儘可能減少元件數量,我使用一片ATTINY24微控制器,同時完成溫度測量以及LED燈的控制。為了減少LED驅動所需元件以及簡化佈線,LED採用了ST505042。這款LED內建有ST313控制器,可以用序列雙極性訊號直接驅動,並可直接串聯,減小了PCB繪製的難度。此外,由於這款控制器是採用恆流驅動方式,所以不會有閃爍的問題,同時也可以在3~5V下的任一電壓處工作良好,不會出現因為電阻限流發生電壓改變時出現的偏色問題。因此,無論是乾電池、鋰電池,還是5V或3。3V電源,都可以使電路良好工作。

設計原理

這個製作的電路結構比較簡單,電路原理圖如圖8。2所示,PCB圖如圖8。3所示。設計時,為避免電源反接導致電路燒燬,在電源路徑上串聯了1個肖特基二極體。之後,使用去耦電容來濾除電源上的干擾。

微控制器小製作,感溫彩虹杯墊

圖8。2 彩虹杯墊電路原理圖

微控制器小製作,感溫彩虹杯墊

圖8。3 彩虹杯墊PCB圖

電路使用微控制器內部的PN接面測溫,透過軟體即可讀到溫度值。微控制器使用一個I/O口連線到兩個阻值相同的分壓電阻,這樣當I/O口輸出電平時,兩個電阻的中點電平為高/低電平,而當I/O口轉為高阻狀態時,電阻中點電平即可輸出1/2VCC,由此可以生成驅動LED所需的雙極性訊號。

LED內建的ST313控制器使用1。2MHz以下的訊號來傳輸資訊,用1/2VCC後接低電平表示邏輯0,用1/2VCC後接高電平表示邏輯1,以此來表達每個LED所需的18bit顏色訊號。當資料線閒置60s以上時,ST313將移位暫存器中的資料鎖存至LED的電流控制器中,以改變LED的顏色。由於我們的連線距離很短,所以不用考慮電磁干擾對於資料正確性的影響。但當長距離傳輸時,由於有1/2VCC的存在,可能會導致LED顏色出現混亂,需要採取措施減少干擾的影響。將LED序列連線,在第1個LED上接入微控制器訊號,就可以根據微控制器輸出的電平訊號單獨控制任何一個LED的RGB顏色了。

程式設計除錯

為了對微控制器進行程式設計,一般使用ISP(線上程式設計)功能進行程式下載。可是這一功能通常需要6條線,至少也需要除電源線外的4條線。這對於自行製作的單面電路板佈線是有一定難度的,而且會部分破壞電路的美觀。一種解決方式是使用微控制器燒寫座進行程式設計,這種方法的缺點是燒寫座價格不菲,而且晶片焊接後較難再次程式設計。

我採用的解決方案是使用AVR的單線除錯功能(debugWIRE)實現程式修改。DebugWIRE是使用單線雙向介面的片上除錯系統,除電源線外,僅需要1條線就可以實現程式的修改和除錯。但是為開啟debugWIRE功能,仍然需要焊接飛線來修改晶片的熔絲位。設定熔絲位完成後,即可撤除飛線,僅使用復位線這1條線來控制晶片的程式。這種方式唯一的要求是需要一個原廠的除錯工具,如AVR Dragon或MKII。之後就可以在AVR Studio中直接模擬程式,並按需要插入斷點,實時檢視各變數的值,以除錯程式的正確性。

需要注意的是,每次斷點的使用都將減少Flash的壽命,所以最好不要用同一塊晶片除錯過多的程式,但除錯完直接使用是沒有什麼問題的。正常結束除錯後,晶片不會在上電時執行程式,在除錯執行時拔掉除錯線,即可讓程式正常執行。使用debugWIRE時,復位線上不要有其他元件。不過,debugWIRE會略微增加休眠功耗,故對功耗要求高的應用最後要將其關閉。

溫度標定

使用微控制器測定溫度時,需要考慮感測器的誤差。由於微控制器測溫是使用片上二極體測溫,所以誤差比較大。在不經標定的情況下,可能只有±10℃的精度,所以需要使用標定方法來提高精度。對於電子測量來說,我們是用電訊號來表達另一個物理量,也就是用電壓來表示溫度,並用ADC來轉換為數字量。因此,我們需要電壓與溫度的函式關係,才能夠用電壓值來反推溫度值。顯然,我們需要知道微控制器測量到的真實溫度。我們可以用一個較高精度的溫度計來獲得溫度值,市售的玻璃水銀溫度計、指標溫度計或遠端溫度計均可,也可使用萬用表附贈的熱電偶,或者是經過鐳射標定的感測器,比如18B20。如果Geek精神夠足,使用冰水混合物等非主流方法亦可。

得知溫度後,接下來就是建立電壓與溫度的函式關係。由於我們最終要由ADC轉換為數字量,所以數字量輸出和溫度的函式關係也是等價的。理想的情況下,我們要取到儘可能多的溫度點,使任何一個輸出值都被覆蓋到,使用查詢表即可用輸出值反推溫度值。但是,這麼多溫度點的覆蓋往往是不現實的,我們只能採集有限個數據點,並擬合出函式曲線。一般來說,函式的次數要低於取樣的資料點數,可以使用最小二乘法來擬合曲線。如果只需要結果,excel就能做到這一點。另外,如果想知道穿過所有點曲線的形狀,可以嘗試使用拉格朗日插值法來獲得函式。一般工程上,採用等距離採集多個數據點,然後分段直線擬合就能得到比較不錯的效果。

這個製作由於對精度要求不高,而且追求簡單,我們假設數字量輸出和溫度的函式關係是線性的,而且每1℃的變化對應數字輸出量變化1。我們只需要1個點就能確定函式的位置。當然,這一點處於待測區間之中會使精度高一些。在這種情況下,只要把待測點的輸出值和標定點的輸出值求差,並把這個差加到標定點的真實溫度值上,就可以求到待測點的真實溫度值。雖然精度仍然不高,但對於這個製作綽綽有餘。

另外,感測器測定出的溫度值可能會有少許的抖動,這會導致系統在臨界溫度上在兩種模式間來回切換。所以,在溫度的判定上,我採用了滯回演算法,即在溫度上升到40℃時切換到高溫模式,而下降到35℃才能切換回普通模式。低溫也應用類似演算法。這樣,系統不會被感測器的抖動所幹擾,工作較為穩定。

製作方法

為組裝整個杯墊,需要將PCB裁為六邊形,並裁取一塊與之形狀一致的有機玻璃板,可以在確定切割線後用鋼尺輔助,以鉤刀劃開。之後,在有機玻璃板中央鑽孔,但要注意鑽頭速度不能太快,進刀量不要太大,以避免溫度過高,導致孔邊緣熔化。在有機玻璃板中央鑽孔。如果有機玻璃板上出現了劃傷,可以用熱風槍加熱損傷部分,有機玻璃的小劃痕會在高溫下消失。之後在PCB上打上熱熔膠,將有機玻璃板粘接在PCB上。最後將導熱膠從有機玻璃板開孔處注入,將開口的上表面和微控制器連線成一體。這樣微控制器就可以測量到杯墊表面的溫度了。製作出來的實物如圖8。4所示。至此,將杯墊連線上電源,整個杯墊就會點亮,發出彩色的光芒,如圖8。5所示,並可以根據杯墊上飲料的溫度,變換出不同的顏色了。

微控制器小製作,感溫彩虹杯墊

圖8。4 製作出的杯墊實物

微控制器小製作,感溫彩虹杯墊

圖8。5 發光效果

Top