在洗衣機家電中,一個可靠的水位檢測系統是必須的。
常用的洗衣機水位信号狀态有空桶,低水量,中水量,高水量,滿水五種水位信号,水位檢測電路将不同信号給至洗衣機的控制系統,以備洗衣機下一步的動作。
傳統的常用洗衣機的檢測系統如下示意圖:
如圖示,當洗衣機中的水進入氣路時,氣路中的空氣受到擠壓,擠壓程度與洗衣機裡水位高低有直接的關系。
與氣路相接的傳感器模塊其實為一個LC電路,氣壓會推動磁芯棒進入線圈,從而改變線圈上的電感L值。
此系統配合傳統芯片4069(反向器)構成震蕩電路,水位的變化會讓磁芯産生位移,從而導緻電感L值變化,進而引起系統LC震蕩電路的頻率變化,震蕩電路經經微控制器MCU檢測出頻率的變化從而反算出水位位置。
ES32H040x系列産品是東軟載波微電子推出的一款集成了水位檢測電路的32位M0 MCU。
芯片中集成了上述類4069的電路,使得洗衣機上的水位傳感器能夠自主震蕩起來。
如何使檢測結果更準确
接下來的内容将介紹怎樣使得檢測的結果更準确,怎樣可以做到檢測10檔水位的檢測,做到10檔的水位檢測需要滿足什麼條件,以及如何實現。
首先分析幾種主流傳感器,主要區别為檢測中心頻率的不同,有20KHz的也有40KHz的,在不同水位的條件下,頻率有一定的偏移,因此影響水位檢測精度的主要參數為測量震動頻率的系統時鐘的精度,以及測量精度和計算精度。
從市面上幾種傳感器參數看,難度最大的為一個能檢測10 2級水位的傳感器,我們這裡以此傳感器為标本提取參數,以此水位傳感器反推對我們的的MCU的時鐘精度要求。
其中一水位傳感器參數如下:
水位狀态 |
檢測頻率 |
L0(空桶) |
41.2 KHz |
L1 |
40.6 KHz |
L2 |
40.3 KHz |
L3 |
40.0 KHz |
L4 |
39.7 KHz |
L5 |
39.5 KHz |
L6 |
39.3 KHz |
L7 |
39.1 KHz |
L8 |
38.9 KHz |
L9 |
38.7 KHz |
L10 |
38.5 KHz |
補水 |
38.7 KHz |
最小檔位差為0.2KHz,因此能可靠區分出來需要0.1KHz以内的精度,40K的頻率控制在正負0.1KHz,有此反推,24M OSC精度需要控制在正負0.1×24M/40K=60KHz,24M OSC精度換算為120K/24M=0.5%,24M OSC需要控制為正負0.25%。
采用另一塊傳感器僅五檔(3 2檔)水位參考:
水位狀态 |
檢測頻率 |
L0 (初始水位) |
42.3 KHz |
L1 |
41.7 KHz |
L2 |
41.2 KHz |
L3 |
40.8 KHz |
L4 (溢水) |
36.5 KHz |
同樣原理換算至24M精度需求為0.45K/40K=1.125%以内,24M OSC需要控制為正負0.56%。
水位檢測模塊為保證水位檢測精度,需要控制OSC精度。目前主流MCU内部晶體很難控制在這個數值範圍内,一般内晶的誤差會超過1%。
不排除檔位少的傳感器,在經過空桶校準後可用的情況,但從技術角度很難控制,所以用來做水位檢測還是建議使用外部晶振(外晶精度一般在正負20PPM,精度足夠)。
采用40K的傳感器,每個波形的周期大緻為25uS。此時必須使用高頻率的時鐘來計數運算,從而提升測量的精度。
ES32H040x的主頻最高可以達到48MHz,這樣水位傳感器的一個周期可以計數25×48=1200,如果計數多1或少1,反推過來的頻率産生的誤差為(以少1為例)48×1000000us/1199=40033.36因此在MCU系統中測量周期的計數誤差會是33Hz的整數倍。
以上述10檔水位傳感器的标準,誤差不能超過100Hz,因此周期計數範圍波動不能超過3,這時候的MCU的舍入誤差影響也是比較大的。
我們可以從以下幾個方面,繼續控制采樣計數的精度:1.采樣多次求平均值。2.一次計很多次脈沖。3.計算時注意保留小數部分。
采用多次求平均的ES32H040x的實現:ES32H040x支持水位檢測模塊輸入後通過外設互聯後觸發一個16位TIMER的捕捉中斷服務,用來捕捉脈沖的周期,然後經多次采樣後再平均。此種方式程序簡單,但會導緻中斷頻繁,占用MCU大量運行資源,并不建議使用。
建議方式一:使用DMA傳輸數據,多次采樣僅觸發一次中斷。
例如,使用DMA傳輸捕獲到的水位數據,且每8個脈沖執行一次捕獲采樣(周期×8),采樣1001次後DMA中斷,總共得到1000個數據(8000個脈沖),此時的時間消耗為8/40 =200MS。然後進行數據處理,按大小排序後取中間的800個數據再取平均值。
注意數據量較大的除法要保留小數部分;使用浮點數運算,以免産生求整數的舍入誤差;最終的結果保留至小數點後2位數據。
建議方式二:增加每一次捕獲采樣捕獲的脈沖數。如上例每8個脈沖執行一次捕獲采樣,雖然芯片的捕獲功能不足以捕獲8000個脈沖執行一次捕獲采樣,但可以用另一種方式實現。
同樣也是使用DMA功能,用來采8000個脈沖後産生中斷結束一次批量采樣,隻是要使用另外一組定時器用來計數。
從接到第一幀數據中斷開始計時,計8001個脈沖的周期内的OSC個數。
使用16位的定時器,進定時中斷時把計數轉存在一個長型變量裡進行累加,這樣當DMA中斷時(8000個脈沖完成)長型變量裡計數 現有定時器中的計數值為8000個脈沖的OSC個數,再然後直接除去8000,計數周期值注意采用浮點數保留2位小數。
經過以上處理得到的結果将是一個穩定的數據。8000個脈沖周期僅200MS,對洗衣機來說每秒或幾秒鐘一次的數據頻次已經足夠。并不會導緻采樣多次造成的數據輸出時間過長。
總結ES32H040x芯片的水位檢測模式分二線制與三線制,無論哪種方式,上述的計算方式都适用。
另外,ES32H040x具有128K Byte Flash,8K Bytes Ram空間,LQFP48封裝,31路增強型觸摸檢測通道,支持LCD 與LED顯示驅動,16通道12位ADC及多路TIMER,RTC功能,2路IIC,2路SPI,1路UART,2路USART,1路LPUART。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!