步驟1:硬件設計
這將是我最簡單的Instructable硬件之一。您甚至都不需要面包板,這些零件可以通過簡單的跳線連接。盡管我討厭為這個項目熱粘合,但這是一個完美的選擇。
使用的零件:
-Arduino PRO Micro
-繼電器模塊(如果您的負載消耗的電流超過10A,請不要使用圖示的10A模塊!)
-HLK-PM01-5V微型電源(低功耗,環保,無負載損耗《0.1W)。盡管看起來可能不像,但這是一個微型隔離電源(不是無變壓器電源TPS,在所有Arduino/ESP項目中都應不惜一切代價避免使用)
-HC12收發器
-HC12 USB加密狗的另一端
-任何230V電源板
接線:
有些誤入歧途的人認為中性線(BLUE)中的電流(在單相交流電源的情況下)低于熱線(BROWN)中的電流。這是不正確的。 2個串聯負載(一個是我們的電流表)上的單相交流網絡中的電流完全相同。將ACS電流傳感器放在零線的唯一好處是,如果您在負載斷開時(通過開關或繼電器)觸摸它,則不會被屏蔽,因為另一方面有0的電流流過如果即使在關閉狀態下也要觸摸棕色電線(如果開關和繼電器位于電流表之后),則電源電壓會穿過您的身體到達地面。因此,從安全角度來看,可以說將ACS電流傳感器放在中性線上比較安全,但是在隱蔽的環境中這并不重要,并且在設備開啟時也不要觸摸任何電線。
對于我的電路,主電源230V首先進入繼電器(除非處于受控狀態,否則它將始終處于閉合狀態),然后我使用了一根剛性導線,該導線甚至可以輕松承受20安培的電流,從而將ACS與之連接在一起。這根電線還有助于在熱粘合之前將組件固定在適當的位置。
我最初的想法是將整個電路構建到配電盤中,但是正如我的圖片所示,它們使這些組件有意地不可拆卸(哦!)。所以我只剪了主電源線,然后將其放在接線盒中。
最后一點請注意,如果負載消耗的電流超過10A,則不應使用10A繼電器。確保您已閱讀設備的數據表或使用電流表進行測試以查看峰值電流是什么。
該項目的棘手部分是無線電通信,因為我的洗衣機和烘干機都在地下室。我已經嘗試了一些解決方案以查看它們是否可行:
1,ESP32/8266 wifi-》并非所有wifi信號都被完全阻止的機會
2、2G/3G/4G-》沒電了,死了
3,Lora-》正常工作,但是對于該項目來說是一個過大的殺傷力
4,433Mhz廉價發射器,它確實可以工作在12V的升壓TX功率下但會干擾使用此頻段的氣象站和其他設備。最初,我沒有計劃在該版本中使用中繼,否則就沒有一個簡單的發送器就足夠了。
因此,我最終選擇了HC12遠程收發器作為該項目的理想選擇。盡管那里的一些人聲稱距此只有幾公里,但由于信號干擾,我未能在市區達到200米的距離,但這對于該項目而言卻是完美的。該收發器支持許多不同的傳輸模式,從1200Bps-》 115200 Bps到最低,最低為1200,可以很好地與我的距離和障礙物配合使用。這個小模塊讓我印象深刻,它能夠通過3個樓層和兩個單元之間的多個門進行通信。
步驟2:HC12注意事項
本節是可選的,如果您對此內容不感興趣,則可以跳過此部分,因為該模塊僅適用于短距離開箱即用的設置。如果您的環境中的通信仍然有問題,請繼續閱讀。
我發現有許多教程和手冊,其中提到HC12可以根據串行帶寬自動調整無線電傳輸速度。
但是不幸的是,這不是事實。您不能只執行HC12.begin(1200)并期望通信以5000 bps的速度進行空中傳輸(這對于我們的應用程序是最佳的)。
必須首先將其置于編程模式,將SET引腳拉低至GND,然后發送AT + B1200命令,但是一旦完成,它就會寫入閃存,您將不必再次更改它。
但也不要忘記第一次與設備通信時,您使用的是9600bps,將其設置為任何其他波特率時,您將變得亂碼,必須相應地更改代碼。
因此,從
1,讓程序使用HC12.begin(9600)打開串行端口;
2,將HC12的編程器引腳(SET)連接到GND
3,您的程序將HC12.println(“ AT + B1200”)發送出去
4,此時設備設置為1200bps Serial/5000 bps Air,您將無需再次執行此過程(除非您的發射器壞了并且您必須編寫一個新的程序)
5,您必須修改程序以每次使用HC12.begin(1200)來打開序列號。
從理論上講,這使我想到了HC12節點可以相互重新編程。為此,您可以執行類似PROG_MODE的命令,并且遠程Arduino接收到它后,它將HC12的編程器引腳下拉到地面,然后發送“ AT +任何帶寬”命令,關閉其串行并以新的帶寬重新打開,然后本地節點本質上是一樣的。為了在修改波特率后重啟,您的程序可以在啟動時將HC12置于編程模式(通過將SET拉到GND),并執行AT + RX,模塊以當前設置的帶寬返回,并將其用作基值。
默認設置為FU3,9,600bps(8位數據,無校驗,一個停止位),CH001(433.4MHz)。為了獲得最遠的通訊距離,可以將串行端口的波特率設置為較低。
我還購買了一些HC12 USB加密狗進行測試,這對他們有好處,因為它們不僅可以在框,但它們具有用于編程的簡潔PROGRAMMER按鈕。使用這些模塊后,我遇到的一個問題是,我將它們置于未知狀態(不同的通道,不同的波特率)幾個月了,在將它們從抽屜中拉出后,它們不再起作用了,因此如果您更改參數,最明智的做法是在盒子上或模塊上打印一個小標簽,或記錄您的項目,這樣可以避免一個小時的QQ操作。
制造商聲稱,您始終可以通過將端口設置為9600Bps并將AT + DEFAULT發送到設備來重置設置,但不幸的是,這并不總是正確的:(
其中之一是我的加密狗可以正常工作,另一個在編程器模式下什么都沒有響應,于是我被迫從其他設置的1200Bps手動進行嘗試,嘗試向其發送命令,但無濟于事。我在網上搜索了一下之后,找到了解決方案,需要長時間按住PROGRAMMER(重置)按鈕,雖然不需要這么長的時間,類似于WRTG硬重置的30,30,30的做法肯定會起作用:在設備運行時按住按鈕5秒鐘插上電源,拔下設備的電源,按住按鈕,重新插上電源,然后將按鈕重置為DEFAULT。
我有另一個物理HC12模塊,我在其中更改了設置,但再也無法使其正常工作2 Arduino Megas,Leonardo和Pro Micro,因此除非您必須最好地更改參數事情是讓它們保持默認狀態。我已經更改了默認通道,因為稍后我可能會執行另一個HC12項目,并且不想干擾這個項目。
步驟3:Arduino代碼
ACS 712可以測量直流電流,但也可以使用它來測量AC。我不會在其他文章中詳細介紹它:
http://henrysbench.capnfatz.com/henrys-bench/ardu 。..
如果您不感興趣如何完成操作,只需拿我的代碼并調整電壓(ACS 712 10A/20A/30A模塊的110/230V和ACS類型值)即可。
監視2臺設備的操作變得有些棘手。幸運的是,與這種B級干衣機一樣,它在能源使用方面(不斷消耗超過1200W)浪費了很多精力,它可以與洗衣機區分開來,而洗衣機在運行時從1W的待機待機功率變為500W(我要指出的是模式,例如90C上的白色清洗,甚至可以達到2KW,但我從未使用過)。該軟件正在查詢放大器,計算每秒許多CPU(或我們稱為MCU)周期的功率,但是有一個問題,如前所述,洗衣機即使打了三分鐘的神奇寶貝,也可能會降到非常低的功耗模式。在夢想中如果我們每5分鐘將這個值拉一次,則很有可能是不準確的,因此在代碼中實現了一種稱為平滑的技術,該技術將這個值取100倍并取平均值。對于每個新值,將生成并除以所有數字的總和,生成平均值,然后將其用于平滑外圍數據。因為每次取一個新值(例如等待100個新值)時都會進行這種平均,所以在計算此運行平均值時沒有滯后時間。
測量數據:
1,洗衣機
128W的使用情況-》在電機旋轉周期之間可以下降到-》 1W
0.5-1.5W待機
2,烘干機
超過1275W的使用量!
2W待機
可以定義以下狀態:
if powercons_for_5mins 《 1.5W washing ready
if powercons_for_5mins 《 5W drying ready
if powercons_for_5mins 》 50W washer is running
if powercons_for_5mins 》 500W dryer is running
if powercons_for_5mins 》 1350W dryer+washer is running
消息本來可以每5分鐘發送一次,但是我希望在負載打開時進行1秒的延遲以進行進一步的調試。還用這種方式檢測到一些奇怪的異常。
由于電源電壓從不改變,因此公式始終為P = 230 * I(測量安培)。
EOL_LOAD_WD,1,5.6,1350
完成洗滌和干燥后,系統仍將采樣功耗,但不會再發送任何消息。最終通知將重復3次,例如:
EOL_LOAD_OFF,0,0,0
EOL_LOAD_OFF,0,0,0
EOL_LOAD_OFF,0,0,0
有關代碼的一些注釋:
由于中繼只是一種額外的添加,因此很少(或永遠不會)使用繼電器的常閉狀態可以延長其使用壽命。該代碼將繼電器設置為0,這意味著它將需要變為高電平以關閉設備(而不是將其打開)。
pinMode(POWER_RELAY, OUTPUT);
digitalWrite(POWER_RELAY, LOW);
該代碼將計算功率并將其評估為發送特定事件的標準,但所有發送的數據僅用于調試,這是我們對3種狀態采取的唯一操作:
if (Match(eolstate, “EOL_LOAD_WF”) != NULL)
system(“/home/pi/eol.sh wf”);
if (Match(eolstate, “EOL_LOAD_DF”) != NULL)
system(“/home/pi/eol.sh df”);
if (Match(eolstate, “EOL_LOAD_WDF”) != NULL)
system(“/home/pi/eol.sh wdf”);
其中F表示完成。這些狀態取決于以前的狀態(洗衣機/干衣機是否正在運行)。例如,洗衣機正在運行,干衣機已關閉,則代碼將進入else if(PowerAVG 《500 && PowerAVG》 50)部分并打印EOL_LOAD_W,但這不是我們關心的,而是在洗滌完成時。然后,一旦機器完成并且在較長的時間段內功耗下降到1W,則代碼進入其他情況,如果(PowerAVG 《10 && PowerAVG》 1)但由于先前狀態eol_state》 = 1為1,它將打印EOL_LOAD_WDF消息并鎖定(將狀態設置為0)。下次進入此代碼段時,當計算機物理關閉且負載低于1瓦時,負載將處于備用EOL_LOAD_S,將生成EOL_LOAD_OFF并將eol狀態設置為0。到達實際打印段后,只要eol狀態高于1,就會將數據發送出去并鎖定。
通常,當我花大量時間分別設計硬件和軟件并將電路放在一起時,我將無法工作必須花幾天的時間來解決錯誤,而不是在這個項目中。只有四個小問題:
1,當沒有負載時,ACS712會給出一個浮動讀數,因為1天的整日測試表明,該讀數在0.09A-》 0.16A之間。這類似于壁掛式功率計,在無負載時默認為0.10A。解決方案:我沒有使用偽造的功率值并對此進行調整,而是輸入了一個簡單的if檢查方法,即檢查電流消耗是否低于0.20A,將其設置為0。
2,平滑代碼存在問題由于樣本數量而導致的AVG功率計算無法適合整數變量,例如1000W * 100 element = 100000,因此已更改為unsigned long,可以存儲0到4,294,967,295的值,除法結果應始終較低,因此
3,需要用外部天線替換小線圈天線,我使用的是標準的2.4Ghz wifi天線(請記住,任何天線總比沒有好。天線)。我最初使用線圈天線進行的測試有效,但是一旦設備組裝完成,我的數據包就會大量丟失,這可能是由于高壓電線的干擾。在樓上的接收器中,我還通過將一根簡單的導線連接到線圈的末端來擴展線圈。
4,無論我在連接負載并關閉時的低電流忽略代碼,有時都會出現電流尖峰,例如:
2019-04-17 13:42:12 =》 [EOL] Data received at 2019-04-17 13:42:12 =》 EOL_LOAD_S,0,0.22,1
2019-04-17 13:42:13 =》 [EOL] Data received at 2019-04-17 13:42:13 =》 EOL_LOAD_OFF,0,0.00,0
其中(也許是其他人打開/關閉設備的電源線上的某些波動?!)。無法忽略1W,因為這是確定空閑狀態的方法,但是幸運的是,這些波動永遠不會超過10 Watts才能使程序進入WDF狀態,因此將其記錄下來。
比使用1400W吹風機測試這種新電路更好的方法是:P在平滑代碼中使用100個樣本使我大約需要2分鐘來完全傳播功率變化,這意味著需要2分鐘從負載打開狀態到其實際值。一旦負載被關閉,它大約需要花費相同的時間下降到0。但是,我要注意的是,這是通過設備在HC12上發送數據的保持時間1000(1秒)來完成的。如果設備在1分鐘內沒有任何工作,則只需采樣并保持循環,這些循環將發生得更快,而100個元素將不夠。這就是為什么我將示例提交速率保留為1秒而不是每隔五分鐘發送一次的主要原因。
在接收器端,Raspberry PI運行C基本代碼并發揮不同的作用。
這次沒有Closure和ToDo列表,因為我認為這個項目做得很好:-)
步驟1:硬件設計
這將是我最簡單的Instructable硬件之一。您甚至都不需要面包板,這些零件可以通過簡單的跳線連接。盡管我討厭為這個項目熱粘合,但這是一個完美的選擇。
使用的零件:
-Arduino PRO Micro
-ACS 712電流傳感器:20A
-繼電器模塊(如果您的負載消耗的電流超過10A,請不要使用圖示的10A模塊!)
-HLK-PM01-5V微型電源(低功耗,環保,無負載損耗《0.1W)。盡管看起來可能不像,但這是一個微型隔離電源(不是無變壓器電源TPS,在所有Arduino/ESP項目中都應不惜一切代價避免使用)
-HC12收發器
-HC12 USB加密狗的另一端
-任何230V電源板
接線:
有些誤入歧途的人認為中性線(BLUE)中的電流(在單相交流電源的情況下)低于熱線(BROWN)中的電流。這是不正確的。 2個串聯負載(一個是我們的電流表)上的單相交流網絡中的電流完全相同。將ACS電流傳感器放在零線的唯一好處是,如果您在負載斷開時(通過開關或繼電器)觸摸它,則不會被屏蔽,因為另一方面有0的電流流過如果即使在關閉狀態下也要觸摸棕色電線(如果開關和繼電器位于電流表之后),則電源電壓會穿過您的身體到達地面。因此,從安全角度來看,可以說將ACS電流傳感器放在中性線上比較安全,但是在隱蔽的環境中這并不重要,并且在設備開啟時也不要觸摸任何電線。
對于我的電路,主電源230V首先進入繼電器(除非處于受控狀態,否則它將始終處于閉合狀態),然后我使用了一根剛性導線,該導線甚至可以輕松承受20安培的電流,從而將ACS與之連接在一起。這根電線還有助于在熱粘合之前將組件固定在適當的位置。
我最初的想法是將整個電路構建到配電盤中,但是正如我的圖片所示,它們使這些組件有意地不可拆卸(哦!)。所以我只剪了主電源線,然后將其放在接線盒中。
最后一點請注意,如果負載消耗的電流超過10A,則不應使用10A繼電器。確保您已閱讀設備的數據表或使用電流表進行測試以查看峰值電流是什么。
該項目的棘手部分是無線電通信,因為我的洗衣機和烘干機都在地下室。我已經嘗試了一些解決方案以查看它們是否可行:
1,ESP32/8266 wifi-》并非所有wifi信號都被完全阻止的機會
2、2G/3G/4G-》沒電了,死了
3,Lora-》正常工作,但是對于該項目來說是一個過大的殺傷力
4,433Mhz廉價發射器,它確實可以工作在12V的升壓TX功率下但會干擾使用此頻段的氣象站和其他設備。最初,我沒有計劃在該版本中使用中繼,否則就沒有一個簡單的發送器就足夠了。
因此,我最終選擇了HC12遠程收發器作為該項目的理想選擇。盡管那里的一些人聲稱距此只有幾公里,但由于信號干擾,我未能在市區達到200米的距離,但這對于該項目而言卻是完美的。該收發器支持許多不同的傳輸模式,從1200Bps-》 115200 Bps到最低,最低為1200,可以很好地與我的距離和障礙物配合使用。這個小模塊讓我印象深刻,它能夠通過3個樓層和兩個單元之間的多個門進行通信。
步驟2:HC12注意事項
本節是可選的,如果您對此內容不感興趣,則可以跳過此部分,因為該模塊僅適用于短距離開箱即用的設置。如果您的環境中的通信仍然有問題,請繼續閱讀。
我發現有許多教程和手冊,其中提到HC12可以根據串行帶寬自動調整無線電傳輸速度。
但是不幸的是,這不是事實。您不能只執行HC12.begin(1200)并期望通信以5000 bps的速度進行空中傳輸(這對于我們的應用程序是最佳的)。
必須首先將其置于編程模式,將SET引腳拉低至GND,然后發送AT + B1200命令,但是一旦完成,它就會寫入閃存,您將不必再次更改它。
但也不要忘記第一次與設備通信時,您使用的是9600bps,將其設置為任何其他波特率時,您將變得亂碼,必須相應地更改代碼。
因此,從
1,讓程序使用HC12.begin(9600)打開串行端口;
2,將HC12的編程器引腳(SET)連接到GND
3,您的程序將HC12.println(“ AT + B1200”)發送出去
4,此時設備設置為1200bps Serial/5000 bps Air,您將無需再次執行此過程(除非您的發射器壞了并且您必須編寫一個新的程序)
5,您必須修改程序以每次使用HC12.begin(1200)來打開序列號。
從理論上講,這使我想到了HC12節點可以相互重新編程。為此,您可以執行類似PROG_MODE的命令,并且遠程Arduino接收到它后,它將HC12的編程器引腳下拉到地面,然后發送“ AT +任何帶寬”命令,關閉其串行并以新的帶寬重新打開,然后本地節點本質上是一樣的。為了在修改波特率后重啟,您的程序可以在啟動時將HC12置于編程模式(通過將SET拉到GND),并執行AT + RX,模塊以當前設置的帶寬返回,并將其用作基值。
默認設置為FU3,9,600bps(8位數據,無校驗,一個停止位),CH001(433.4MHz)。為了獲得最遠的通訊距離,可以將串行端口的波特率設置為較低。
我還購買了一些HC12 USB加密狗進行測試,這對他們有好處,因為它們不僅可以在框,但它們具有用于編程的簡潔PROGRAMMER按鈕。使用這些模塊后,我遇到的一個問題是,我將它們置于未知狀態(不同的通道,不同的波特率)幾個月了,在將它們從抽屜中拉出后,它們不再起作用了,因此如果您更改參數,最明智的做法是在盒子上或模塊上打印一個小標簽,或記錄您的項目,這樣可以避免一個小時的QQ操作。
制造商聲稱,您始終可以通過將端口設置為9600Bps并將AT + DEFAULT發送到設備來重置設置,但不幸的是,這并不總是正確的:(
其中之一是我的加密狗可以正常工作,另一個在編程器模式下什么都沒有響應,于是我被迫從其他設置的1200Bps手動進行嘗試,嘗試向其發送命令,但無濟于事。我在網上搜索了一下之后,找到了解決方案,需要長時間按住PROGRAMMER(重置)按鈕,雖然不需要這么長的時間,類似于WRTG硬重置的30,30,30的做法肯定會起作用:在設備運行時按住按鈕5秒鐘插上電源,拔下設備的電源,按住按鈕,重新插上電源,然后將按鈕重置為DEFAULT。
我有另一個物理HC12模塊,我在其中更改了設置,但再也無法使其正常工作2 Arduino Megas,Leonardo和Pro Micro,因此除非您必須最好地更改參數事情是讓它們保持默認狀態。我已經更改了默認通道,因為稍后我可能會執行另一個HC12項目,并且不想干擾這個項目。
步驟3:Arduino代碼
ACS 712可以測量直流電流,但也可以使用它來測量AC。我不會在其他文章中詳細介紹它:
http://henrysbench.capnfatz.com/henrys-bench/ardu 。..
如果您不感興趣如何完成操作,只需拿我的代碼并調整電壓(ACS 712 10A/20A/30A模塊的110/230V和ACS類型值)即可。
監視2臺設備的操作變得有些棘手。幸運的是,與這種B級干衣機一樣,它在能源使用方面(不斷消耗超過1200W)浪費了很多精力,它可以與洗衣機區分開來,而洗衣機在運行時從1W的待機待機功率變為500W(我要指出的是模式,例如90C上的白色清洗,甚至可以達到2KW,但我從未使用過)。該軟件正在查詢放大器,計算每秒許多CPU(或我們稱為MCU)周期的功率,但是有一個問題,如前所述,洗衣機即使打了三分鐘的神奇寶貝,也可能會降到非常低的功耗模式。在夢想中如果我們每5分鐘將這個值拉一次,則很有可能是不準確的,因此在代碼中實現了一種稱為平滑的技術,該技術將這個值取100倍并取平均值。對于每個新值,將生成并除以所有數字的總和,生成平均值,然后將其用于平滑外圍數據。因為每次取一個新值(例如等待100個新值)時都會進行這種平均,所以在計算此運行平均值時沒有滯后時間。
測量數據:
1,洗衣機
128W的使用情況-》在電機旋轉周期之間可以下降到-》 1W
0.5-1.5W待機
2,烘干機
超過1275W的使用量!
2W待機
可以定義以下狀態:
if powercons_for_5mins 《 1.5W washing ready
if powercons_for_5mins 《 5W drying ready
if powercons_for_5mins 》 50W washer is running
if powercons_for_5mins 》 500W dryer is running
if powercons_for_5mins 》 1350W dryer+washer is running
消息本來可以每5分鐘發送一次,但是我希望在負載打開時進行1秒的延遲以進行進一步的調試。還用這種方式檢測到一些奇怪的異常。
由于電源電壓從不改變,因此公式始終為P = 230 * I(測量安培)。
EOL_LOAD_WD,1,5.6,1350
完成洗滌和干燥后,系統仍將采樣功耗,但不會再發送任何消息。最終通知將重復3次,例如:
EOL_LOAD_OFF,0,0,0
EOL_LOAD_OFF,0,0,0
EOL_LOAD_OFF,0,0,0
有關代碼的一些注釋:
由于中繼只是一種額外的添加,因此很少(或永遠不會)使用繼電器的常閉狀態可以延長其使用壽命。該代碼將繼電器設置為0,這意味著它將需要變為高電平以關閉設備(而不是將其打開)。
pinMode(POWER_RELAY, OUTPUT);
digitalWrite(POWER_RELAY, LOW);
該代碼將計算功率并將其評估為發送特定事件的標準,但所有發送的數據僅用于調試,這是我們對3種狀態采取的唯一操作:
if (Match(eolstate, “EOL_LOAD_WF”) != NULL)
system(“/home/pi/eol.sh wf”);
if (Match(eolstate, “EOL_LOAD_DF”) != NULL)
system(“/home/pi/eol.sh df”);
if (Match(eolstate, “EOL_LOAD_WDF”) != NULL)
system(“/home/pi/eol.sh wdf”);
其中F表示完成。這些狀態取決于以前的狀態(洗衣機/干衣機是否正在運行)。例如,洗衣機正在運行,干衣機已關閉,則代碼將進入else if(PowerAVG 《500 && PowerAVG》 50)部分并打印EOL_LOAD_W,但這不是我們關心的,而是在洗滌完成時。然后,一旦機器完成并且在較長的時間段內功耗下降到1W,則代碼進入其他情況,如果(PowerAVG 《10 && PowerAVG》 1)但由于先前狀態eol_state》 = 1為1,它將打印EOL_LOAD_WDF消息并鎖定(將狀態設置為0)。下次進入此代碼段時,當計算機物理關閉且負載低于1瓦時,負載將處于備用EOL_LOAD_S,將生成EOL_LOAD_OFF并將eol狀態設置為0。到達實際打印段后,只要eol狀態高于1,就會將數據發送出去并鎖定。
通常,當我花大量時間分別設計硬件和軟件并將電路放在一起時,我將無法工作必須花幾天的時間來解決錯誤,而不是在這個項目中。只有四個小問題:
1,當沒有負載時,ACS712會給出一個浮動讀數,因為1天的整日測試表明,該讀數在0.09A-》 0.16A之間。這類似于壁掛式功率計,在無負載時默認為0.10A。解決方案:我沒有使用偽造的功率值并對此進行調整,而是輸入了一個簡單的if檢查方法,即檢查電流消耗是否低于0.20A,將其設置為0。
2,平滑代碼存在問題由于樣本數量而導致的AVG功率計算無法適合整數變量,例如1000W * 100 element = 100000,因此已更改為unsigned long,可以存儲0到4,294,967,295的值,除法結果應始終較低,因此
3,需要用外部天線替換小線圈天線,我使用的是標準的2.4Ghz wifi天線(請記住,任何天線總比沒有好。天線)。我最初使用線圈天線進行的測試有效,但是一旦設備組裝完成,我的數據包就會大量丟失,這可能是由于高壓電線的干擾。在樓上的接收器中,我還通過將一根簡單的導線連接到線圈的末端來擴展線圈。
4,無論我在連接負載并關閉時的低電流忽略代碼,有時都會出現電流尖峰,例如:
2019-04-17 13:42:12 =》 [EOL] Data received at 2019-04-17 13:42:12 =》 EOL_LOAD_S,0,0.22,1
2019-04-17 13:42:13 =》 [EOL] Data received at 2019-04-17 13:42:13 =》 EOL_LOAD_OFF,0,0.00,0
其中(也許是其他人打開/關閉設備的電源線上的某些波動?!)。無法忽略1W,因為這是確定空閑狀態的方法,但是幸運的是,這些波動永遠不會超過10 Watts才能使程序進入WDF狀態,因此將其記錄下來。
比使用1400W吹風機測試這種新電路更好的方法是:P在平滑代碼中使用100個樣本使我大約需要2分鐘來完全傳播功率變化,這意味著需要2分鐘從負載打開狀態到其實際值。一旦負載被關閉,它大約需要花費相同的時間下降到0。但是,我要注意的是,這是通過設備在HC12上發送數據的保持時間1000(1秒)來完成的。如果設備在1分鐘內沒有任何工作,則只需采樣并保持循環,這些循環將發生得更快,而100個元素將不夠。這就是為什么我將示例提交速率保留為1秒而不是每隔五分鐘發送一次的主要原因。
在接收器端,Raspberry PI運行C基本代碼并發揮不同的作用。
-
洗衣機
+關注
關注
13文章
682瀏覽量
43855 -
監控器
+關注
關注
1文章
321瀏覽量
27342 -
Arduino
+關注
關注
188文章
6490瀏覽量
190074
發布評論請先 登錄
ABP2液體壓力傳感器,智能洗衣機水位檢測首選!超高精度0.25%,讓洗衣更智能!

應用在洗衣機液位中的兩通道測量高精度電容調理芯片-MDC02

東芝洗衣機解決方案

霍爾元件的應用——洗衣機

仿真設計|基于51單片機的全自動洗衣機模擬系統

DEKRA德凱為青島海爾洗衣機有限公司頒發阿曼低電壓符合性認證證書,助力拓展中東市場

靈動微電子在洗衣機中的MCU方案布局

評論