以下作品由安信可社區用戶大貓的魚制作
PART.01
引言
在工業場景中,電極式水位計常被用于鍋爐、壓力容器、水箱等設備,實現水位的實時監測與高低水位報警,保障設備安全運行。
當然在民用場景里應用也較為廣泛,像日常可見的熱水器、加濕器、飲水機等家電,內部都有水位監測裝置。
這些裝置往往不需要精準的水位距離,只需要知道水位是否在上下限中,避免干燒或溢水問題即可。
PART.02
功能介紹
?本模塊采用工業上常用的DC24V供電(6V~30V都可),板載運行指示燈與配網按鈕。
?使用RS485總線與外部設備通訊。
?主機使用標準的MODBUS RTU協議便可設備進行查詢與控制。在水位采集上,為了避免電極極化同時也是延長電極使用壽命,沒有使用直接通直流電源方案轉而使用公共電極發射PWM脈沖,在三個副電極(采樣電極)上產生電壓變化,單片機使用AD口采樣電壓的方案。
?在不用的水質、氣壓、溫度等環境下,同一水位采樣回來的電壓值不盡相同,所以在本模塊中可以對每個通道的觸發閾值進行設置,從而適應不同的生產/生活環境。
?既然使用了Ai-WB2模組作為主控,設備不聯網就太過可惜了,因此加入了網絡功能。
用戶在對設備配網后,設備便連接上對應的MQTT服務器訂閱了相關主題(可在代碼中更改)。這樣使得模塊的拓展性大大增加。
可以通過MQTT協議將設備連接至小程序、網站或公司內部使用的服務器等,使得多設備聯動,會更加智能化。
PART.03
硬件設計
硬件部分較為簡單,主要在于軟件。
主控采用Ai-WB2-12F模組。
模組內置低功耗的32位RISC CPU,276KB RAM和豐富的外圍接口,包括 SDIO,SPI,UART,I2C, IR remote,PWM,ADC,DAC,PIR 和 GPIO等。
本次項目的硬件需求為:
●一路LED
●一路按鍵檢測
●一路PWM輸出
●三路ADC采樣
●一路485通訊
使用Ai-WB2-12F模組作為主控完美適配。
電源部分分兩級,輸入24V轉5V部分采用L7805芯片進行降壓(建議采用DCDC,手頭有這個芯片才采用這顆LDO),隨后通過經典的AMS1117-3.3,將5V降壓至3.3V作為主控芯片的供電。
眾所周知485為半雙工通訊,相較于UART的RX 、TX多了一個控制接收和發送的控制引腳,為了方便直接搭了一個自動收發電路,在9600波特率的低速場合下運行是完全沒有問題的,這樣對于軟件層面上來講和UART就沒什么不同了。
下面是本項目的原理圖與PCB圖。
圖1 原理圖
圖2 PCB二維圖
PART.04
軟件設計
4.1 主控軟件設計
本項目的單片機軟件方面主要使用了GPIO、PWM、ADC、UART、MQTT等。整體軟件工作流程為:
①設備上電,檢測配網按鍵是否按下。
②如果配網按鍵按下,則進入配網模式;設備會先開啟STA模式連接存儲的配網信息,連接不上wifi則會發出一個AP熱點重新配網。用戶手機輸入密碼12345678連接SSID為ai-think的熱點(熱點名和密碼可改)。隨后打開瀏覽器輸入192.168.169.1進入配網頁面進行配網。
③如果配網按鍵未按下,或網絡連接成功后,設備在公共電極上產生PWM脈沖,通過三通道ADC實時采樣副電極電壓,與觸發閾值進行比較從而判斷水位狀態。
④設備實時的通過MODBUS和MQTT協議與外部設備進行交互,將水位狀態、采樣值、閾值等信息傳輸出去。
具體軟件流程圖如下:
圖3 系統軟件流程圖
4.2 Modbus通訊協議
4.2.1寄存器地址表
| 地址 | 功能 | 數值類型 | 讀/寫 |
| 0x0100 ~ 0x0102 | 三路水位狀態寄存器 | Bool | R |
| 0x0200 ~ 0x0202 | 三路通道采樣值寄存器 | Uint16 | R |
| 0x0300 ~ 0x0302 | 三路觸發閾值寄存器 | Uint16 | R/W |
| 0x0400 | 設備站號寄存器(0站號作為廣播地址) | Uint8 | R/W |
4.2.2 指令簡介
目前本模塊支持的功能碼有01、03、06三個功能碼,如修改站號相關指令使用廣播地址00即可。
01-讀線圈狀態
發送查詢三路水位狀態:
| 01 | 01 | 01 | 00 | 00 | 03 | 7D | F7 |
| 站號 | 功能碼 | 寄存器地址H | 寄存器地址L | 讀取數量H | 讀取數量L | CRC16H | CRC16L |
返回:
| 01 | 01 | 01 | 04 | 50 | 4B |
| 站號 | 功能碼 | 數據字節數 | 低三位代表水位狀態 | CRC16H | CRC16L |
03-讀保持寄存器
發送查詢通道1采樣值命令:
| 01 | 03 | 02 | 00 | 00 | 01 | 85 | B2 |
| 站號 | 功能碼 | 寄存器地址H | 寄存器地址L | 讀取數量H | 讀取數量L | CRC16H | CRC16L |
返回:
| 01 | 03 | 02 | 00 | 0F | F8 | 40 |
| 站號 | 功能碼 | 數據字節數 | 通道1采樣值H | 通道1采樣值L | CRC16H | CRC16L |
06-設置單個保持寄存器值
發送設置通道1觸發閾值為命令:
| 01 | 06 | 03 | 00 | 0B | B8 | 8E | CC |
| 站號 | 功能碼 | 寄存器地址H | 寄存器地址L | 設置閾值H | 設置閾值L | CRC16H | CRC16L |
返回:(與發送指令相同)
| 01 | 06 | 03 | 00 | 0B | B8 | 8E | CC |
| 站號 | 功能碼 | 寄存器地址H | 寄存器地址L | 設置閾值H | 設置閾值L | CRC16H | CRC16L |
4.3 MQTT通訊協議設計
當給模塊配網成功后,模塊便將配網WIFI的ssid和password存至內部flash中了。下次再上電便會直接直接Wi-Fi。
模塊成功連接網絡后便會進行連接設定的MQTT服務器并訂閱相關主題。給模塊添加這個功能主要就是為了增加模塊拓展性與智能性,讓它不再單單是個連接PLC的485模塊。
模塊訂閱:waterLevel/cmd 主題,接收其他端(小程序,網站等)發送的控制命令,并在 waterLevel/res 主題中發送響應消息。
其他端訂閱: waterLevel/res 接收模塊的響應消息,在 waterLevel/cmd 發布控制消息。
通訊協議為:
//查詢水位命令格式 { "id":1,
//設備的485站號 "cmd":0,
//查詢命令 0:查詢水位狀態與采樣值,1:查詢/設置閾值 }
//查詢閾值命令格式 { "id":1,
//設備的485站號 "cmd":1,
//查詢命令 0:查詢水位狀態與采樣值,1:查詢/設置閾值 }
//設置閾值命令格式 { "id":1,
//設備的485站號 "cmd":1,
//查詢命令 0:查詢水位狀態與采樣值,1:查詢/設置閾值
"TH1":100,
//通道1 要設置的閾值 "TH2":100,
//通道2 要設置的閾值 "TH3":100,
//通道3 要設置的閾值
}
PART.05
實物演示
還是先來幾張實物圖:

圖4 PCB焊接后圖
圖5 模塊實物圖
模塊的對外接口主要有3種:
●首先是DC 6V~30V的電源輸入,使用工業上常用的24V開關電源接上就行了
●其次是485通訊接口的A B線
●最后是電極接口,模塊標的SCOM作為電極公共端連接設備外殼(一定要是導電的如蒸氣鍋爐等)或單獨連接一根最長的電極,剩下三個S1、S2、S3連接三根不同長度的電極即可。
在視頻演示中,由于沒有找到電極就直接使用了長短不一的銅柱代替了,就這樣做了一個簡易的測試裝置,在蒸汽鍋爐中也是能正常使用的,原理都是相同的。具體演示視頻如下:

PART.06
總結
這次做的電極式水位計模塊各種的功能還是很適用于工控場合的。
因為筆者不太喜歡只做功能上的堆疊不去考慮現實應用,。當然這個小項目還有些不足,受限于Ai-WB2的引腳數量,沒有再做對應三個通道的DO有些可惜,雖然有些遺憾,但哪有完全完美的事物呢?
這次的小項目就到這啦!!!下次再見吧
附件:
附件:電極式水位計_s.zip
原貼地址
【電子DIY作品】基于Ai-WB2的電極式水位計
審核編輯 黃宇
-
WIFI
+關注
關注
82文章
5509瀏覽量
213529 -
水位計
+關注
關注
0文章
98瀏覽量
12825
發布評論請先 登錄
壓力式水位計的監測應用與技術特性分析
投入式水位計的溫度與氣壓補償:如何保障測量精度?
投入式水位計數據傳輸方式解析:支持遠程監控嗎?
雷達水位計:高精度非接觸式水位監測的核心裝備與應用實踐
投入式水位計的水位測量原理:從水壓到水位的轉換
投入式水位計為何適合長期監測水庫、河流、測壓管等環境?
從水庫到巖土邊坡:投入式水位計的四大核心應用場景
投入式水位計與傳統浮子式儀器性能對比分析
投入式水位計:助力水資源規劃與結構安全
南京峟思:YSP-G型水位計的基準值校準全流程
YSP-G型投入式水位計能測量哪些場景的水位變化?
革新水位監測:投入式水位計如何以“五大優勢”領跑行業?
低價不貴!安信可WiFi+BLE模組Ai-WB2系列
電子DIY作品 基于Ai-WB2的電極式水位計
評論