精確的雙溫度控制器

三月 18, 2016
Facebook
Twitter
這不是什麼複雜的概念,也不會非常難執行,所以我不懂為什麼沒有人生產這樣的商品…

我住的地方氣候相當寒冷,而我的工作室和車庫都有暖氣。沒工作的時後,我不想將車庫和工作室維持在工作的溫度,但在冬天時我想維持合理(冰點以上)的溫度。沒人在時,我希望這些空間能持在50到55°F,當我進去工作時再加熱到68到70°F。我一直用標準的機械式溫度控制器來達成這個目的,但來回滑動設定點的過程讓我覺得不是很精確。
如果有人做出「雙設定點溫度控制器」就好了…。我在很多地方找過,但都沒有如願。當然,現在已經有智慧型溫度控制器,可以偵測你是不是在房間裡、Wi-Fi連線和記錄你的習慣,但仍然沒有提供兩個設定點的簡單裝置。看來,如果有人會做出雙設定點溫度控制器的話,捨我其誰。
它不需要很複雜,只要有一個按鈕讓我啟動「工作溫度」,和另一個按鈕來啟動「外出溫度」。同時我還需要能分別微調兩個設定點的功能。這兩個設定點和使用中的運作模式(工作 / 外出)必須在停電時還能維持,並且在電力恢復後自動重新啟動。這兩個溫度控制器只需要控制一個壁掛式瓦斯暖氣機,所以一個繼電器觸點就足夠了。這樣的裝置其實就是一個簡單的Arduino專題。讓我們動手吧!

我們的雙設定點溫度控制器將盡可能使用市售元件,而外殼將以3D列印製作。

這個專題裡的Arduino相容微控制器將採用Sparkfun RedBoard。微控制器開發板的選擇並非關鍵。但是請注意,這裡的3D列印外殼左側的孔是專為RedBoard設計的。如果你選擇使用其他的Uno相容開發板,就很可能需要重新設計左側面板。其餘的RedBoard覆蓋區和Uno的規格相符,所以外殼的其他部份應該都能和Uno相容。

另外,我選用專題裡的這款繼電器是因為我購買很多其他零件的那家供應商剛好有貨。雖然這個專題也可以用不同的繼電器擴充板來製作,要注意如果選用不同的繼電器,就很可能需要修改外殼的設計來容納不同的規格。

材料

  • Sparkfun RedBoard (相容Arduino Uno)
  • Olimex 16X2 Arduino 序列LCD顯示器開發板,附按鈕
  • Vktech Home Appliance DHT22/AM2302數位溫度溼度測量感測器
  • Arduino DC 5V線圈繼電模組(供SCM開發 / 家電控制)
  • 5V Micro USB充電轉換器
  • 100入可堆疊排針(6pin 50入 + 8pin 50入)(供擴充板焊接)
  • 10K電阻
  • #4 × ⅜ 螺絲 (11)
  • Cat-5 線(1)
  • 熱縮套管
  • 焊錫
工具

  • 烙鐵
  • 旋轉切割工具
運作原理
我的溫度控制器的特殊設計讓它在安裝、編寫程式或連接加熱電線時不需要拆解。對溫度控制器(或任何Arduino相容微控制器)編寫程式時,也不需要將電腦擺在裝置旁邊。IOGEAR有一款很好用的無線4埠USB分享站(GUWIP204),可以在任何有Wi-Fi訊號的地方對裝置進行遠端程式編寫。安裝裝置的驅動程式後,你的電腦會將GUWIP204上的遠端USB連接埠視為電腦本機的一部份。將Wi-Fi USB分享器拿到溫度控制器所在位置、將溫度控制器的USB線插入分享器、啟動分享器,接著就能遠端對裝置編寫程式。

溫度控制器的顯示器會在左上方告訴你使用中的溫度設定為何(T1或T2)。此處下方會顯示實際的設定點數值。在右下方會看到實際溫度和相對濕度(因為感測器也提供這個資訊)。在真正需要加熱時,還會在顯示器的中下方看到一個星號,表示繼電器已關閉。實際溫度和濕度每2.5秒更新一次。顯示器在任何按鈕按下後會持續亮起60秒。

第一步:切割微控制器的可堆疊排針

  • 將Olimex開發板直接放在微控制器開發板上,首先會發現的是它無法平放。電源接頭會和LCD板的底面相抵觸,讓針腳無法完全插入。
  • 這時可堆疊排針就派上用場了。我們要將排針插入兩塊板子之間,使兩塊板子分離,讓它們能平整連接。在安裝排針之前,我們有幾件事要做。首先,用尖嘴鉗將開發板針腳底部的塑膠小隔片移除。
  • 如此可以確保兩塊板子會盡可能貼齊。接下來,切下幾個可堆疊排針來對應開發板針腳,可以用旋轉切割工具甚至斜嘴鉗來切割。

第二步:切割感測器和繼電器的堆疊排針

我們還可以切一些可堆疊排針做為感測器和繼電器的插座。我們需要三個4pin排針,一個3pin排針和兩個2pin排針。在切割原本的6pin排針時,試著保留幾個內部針腳,將它們做為繼電器和感測器導線的信號連接器。

第三步:裁切開發板針腳

  • 排針切割完成後,將它們安裝在開發板上,接著將開發板和微控制板接合。完全接上後,你會發現可堆疊排針的上方和下方都有一點多餘的針腳長度。
  • 將兩塊板子分開,移除排針,接著裁切開發板針腳來填滿上方的空間。同樣地,裁切堆疊排針來填補下方的空間。接著將LCD板、修改後的堆疊排針和微控制器重新組裝起來,確認每個部份穩固貼齊。
  • 如果從側面來看,會發現有一長排通過LCD電路板焊接的針腳。
  • 這些針腳需要裁切,否則會影響外蓋的密合度。用旋轉工具或是小型的斜嘴鉗來將針腳切割和打磨到接近PCB的地方。

第四步:將LCD開發板上的LED解焊(或覆蓋)

  • 在我完成第一個原型後,我發現外殼內部發出很多光。這個專題中總共有三個LED會在溫度控制器啟動時發光。雖然微控制板的電源LED藏得很好,LCD開發板和繼電器的電源LED會造成外殼從內部發光。你可以直接將LCD開發板上的LED解焊,但我發現對繼電器這麼做會讓它故障。我也聽說可以直接用黑色指甲油將那些LED覆蓋住來隱藏光線,但可惜我手邊沒有那種東西。將LCD開發板上的電源LED解焊(或覆蓋)。
  • 將電源繼電器上的電源LED板解焊並橋接(或覆蓋LED)。

第五步:準備線束

  • 接下來,我們要製作線束。我用的是廢棄的Cat5E網路線,但你也可以用任何小口徑的實心絞線來進行。因為我用的是Cat5E,我選擇橘色線做為感測器/繼電器5V電源、綠色線做為感測器/繼電器接地、藍色做為繼電器信號線,而棕色做為感測器信號線。因為感測器和繼電器都需要電源和接地,所以5V線和接地線會有單一饋電和雙接頭(Y字形)。感測器和繼電器信號線只需要在兩端的單一接頭。每條線的長度要兩英吋以上。為電源和接地線進行Y字形焊接,再用熱縮套管包覆。將一個多餘的可堆疊排針針腳(切割排針時產生)焊接到繼電器和感測器信號線的末端,接著用熱縮套管保護信號線針腳。
  • 使用修改後的可堆疊排針讓我們的感測器和繼電器有很適合的接頭插座,而不需要直接焊接到裝置上。這樣如果繼電器或感測器故障,要更換就很容易。修改後的堆疊排針也很適合用來焊接DHT22感測器需要的10K上拉電阻。首先將排針的第三針腳切掉,因為感測器並不需要。接著用尖嘴鉗將10K電阻的兩隻腳分別纏繞在排針上鄰近的針腳。將腳纏繞上去會讓焊接電阻變得很容易,而且可以確保它在我們焊接線束時不會鬆脫。電阻兩腳纏繞完成後,將電阻焊接固定,並且用斜嘴鉗將多餘的線剪掉。

第六步:焊接線束

  • 現在我們要焊接線束。記得熱縮套管要在將線焊接到排針「前」先套進去。焊接時讓熱縮套管和接點之間保持充份距離,預防過早收縮。將其中一條5V電源線(橘色)和電阻一起焊接到感測器接頭的外部接點。感測器信號線(棕色)要和電阻一起焊接到內部接點。接地線(綠色)要焊接到感測器接頭的另一側空針腳旁邊。繼電器信號線(藍色)焊接到3針腳排針的一側。剩下的5V電源線(橘色)焊接到繼電器接頭的中央針腳。剩下的接地線(綠色)連接到繼電器接頭的另一側。所有接點都焊接完成後,將熱縮套管移到定位,並加熱收縮。
  • 接下來將未固定的5V電源線和接地線焊接到LCD開發板上的接點。你也可以在微控制板上焊接,但因為我們已經修改過開發板,所以我決定不要「破壞」微控制板。雖然在(左邊算起)第三個按鈕下方,LCD開發板有六個孔,但我們只用了四個針腳。我們要將接地線(綠色)焊接到右邊的針腳,並將5V導線焊接到右邊第二個針腳。可以參考附圖,或直接從微控制器追溯5V線和接地線,確認它們的位置。

第七步:列印外殼

图片

將外殼列印出來。我用Makerbot Replicator 2X和Hatchbox出品的白色ABS線材進行列印。設計外殼時用的是TurboCad 3D,以.STL格式匯出,然後載入Makerware來產生.X3G列印檔。(Hatchbox的ABS線材,尤其是白色線材,最適合的列印溫度是220°C,而非Makerware預設的230°C。)外殼的底座有供微控制板和繼電器使用的安裝墊。底座還有一個安裝感測器用的小架子和側面讓繼電器控制線穿過外殼的兩個孔。外殼的左側面板有兩個讓電源和程式編寫使用的連接孔,還有一個小架子來支撐LCD面板的左側,讓它在按鈕被按下時不會使微控制板傾斜。外殼的蓋子不僅有LCD面板所需的孔、按鈕和感測器,更有兩個孔可以調整插入盒中的繼電器控制線螺絲。外殼有兩個耳片,讓它可以固定在牆面上,甚至是只有2×4的面板。你可以從Haute Solutions網站下載包含相關TCW、DWG、STL和X3G檔案的壓縮檔。

第八步:將元件都裝入外殼

  • 首先用四個#4×⅜螺絲將開發板固定到外殼。接著將感測器信號線(棕色)連接到微控制板的腳位2、將繼電器信號線(藍色)連接到腳位3。注意到我將導線裡的電顯扭絞起來,讓接線和組裝更容易一點。
  • 將修改後的「間隔」排針放到LCD開發板上。接著將繼電器/感測器針腳稍微向外彎折,讓LCD開發板可以在微控制板上對齊安裝。繼電器只需要兩個螺絲就能安裝,而感測器只需要一個。將線束連接到感測器和繼電器。感測器上的電阻從正面看起來應在左邊。繼電器上的信號線(藍色)應該要在右邊。
  • 放置左側面板時仔細確保小架子能妥善支撐LCD開發板。接著裝上右側,放上蓋子,再用四個螺絲固定兩側和蓋子。用標籤機(或麥克筆)為按鈕從左到右標示「T1」、「-」(減號)、「+」(加號)和「T2」。

第九步:下載程式碼

  • Haute Solutions網站下載最新版的雙設定點溫度控制器程式碼。你還會需要Olimex LCD資料庫和Ladyada的 DHT資料庫。將這兩個資料庫擷取到你的個人「DocumentsArduinoLibraries」資料夾、載入Arduino程式開發環境,接著就能對溫度控制器編寫程式。啟動溫度控制器時,應該要看到歡迎使用的訊息和溫度控制器程式碼的版號。
  • 溫度控制器完成啟動程序後,就會在螢幕上看到實際設定點和溫度/相對濕度。
  • 因為我們不想要讓這臺數位溫度控制器在臨界條件每2.5秒就開關一次,我們在程式中加入了數位磁滯。程式中也設定2°F為溫度的「超越值」,所以如果你將目標溫度設在70°F,而溫度下降到69°F,則暖器會啟動並加熱到72°F才關閉。這個設定可以用程式碼中的TOVERSHOOT變數調整。
  • 程式碼的設計同時也讓微控制器中EEPROM記憶體的持續更新降到最低。(EEPROM記憶體有很大但仍有限的更新循環數。)我們不在每次有按鈕按下時更新EEPROM,而只有在設定被變更且經過60秒閒置時間後才更新它。如此讓溫度增減時不會有無謂的更新。目前使用的設定點(T1/T2)和相關的設定點都儲存在EEPROM記憶體中,讓溫度控制器可以在停電後還原到之前的運作狀態。

第十步:設定並安裝雙設定點溫度控制器

  • 根據預設,較低的設定點(T1)會是45°F,而較高的設定點(T2)在90°F。這些值其實是溫度控制器程式設定的最小值和最大值,因為我們不想讓溫度下降到太接近冰點,也不想為了加熱而將房子燒掉。當溫度控制器初次啟動時,會使用較低的設定點(T1)。用減號(-)和加號(+)按鈕來將T1調整到你想要的較低(外出)溫度。注意,無法調整到低於最低值(45°F)或高於最大值(90°F)的溫度。T1設定完成後,按下T2按鈕,然後用加減號按鈕來調整需要的較高(在家)溫度。即使溫度控制器失去電源,這兩個設定點都不會遺失。(它們儲存在微控制器的EEPROM中。)將兩個設定點調整到需要的溫度後,只要隨時按下T1就能啟用較低設定,而按下T2就能啟用較高設定。要在工作室開工:「T2」!工作完成了:「T1」!就是這麼簡單。
  • 將溫度控制器安裝在牆上或其他合適的表面。溫度控制器的蓋子上有兩個小孔,可以讓小型一字起子將繼電器上相關的螺絲轉鬆或轉緊。這些孔應該會在繼電器上NO(常開)端子的正上方。將螺絲都轉鬆,將加熱電路的電線穿過外殼側面上對應的孔,接著再鎖緊。溫度控制器可以透過USB埠或圓形連接器來供電。

(譯:屠建明)
[原文]

Social media & sharing icons powered by UltimatelySocial