1. 內容簡介 電子化秤重在生活中,已逐漸取代傳統彈簧、天平等量測工具,例如電子計價秤、電子體重秤等。設計電子秤產品主要的組件有:傳感器、ADC和MCU單芯片。本文所設計的電子秤就是利用壓力傳感器(Load Cell)將壓力物理量轉換為電壓訊號,再將電壓轉換為數字顯示出來。由于電壓為模擬量,所以要用ADC將它轉換為數字信號。此時也需要MCU單芯片來控制電子秤主機板上的訊號處理與顯示功能。 纮康HY16F188控制芯片內建高精密ΣΔ 24 Bit ADC、可程序放大PGA和多段式穩壓輸出等功能,可以很大幅簡化PCB周邊線路。具有高分辨率、高分辨率、低溫漂的ΣΔ24 AD轉換器,可以精準完成由模擬到數字的轉換。雖然輸出速率不是非常高,但用于像電子秤這種對于轉換速率要求不高的產品,是沒有問題的。 2. 原理說明 2.1 感測組件 Load Cell的原理是在鋁制的棒上面貼上一片由橋式電阻所組成的應變儀,即惠斯頓電橋,如圖2-1所示。因為電橋上的4個電阻(阻值相同),所以當有電壓施加在VIN+與VIN-兩端時V+ = V-,即電橋達到了平衡。 分辨率分為外部分辨率和內部分辨率,外部分辨率為Load Cell滿量程的輸出電壓值與需要識別的最小重量引起的電壓值之比,最小重量可以定義為1g、0.5g、0.1g等。 內部分辨率是衡量電子秤等級的一個重要指針。一般我們以目視法認定的內部分辨率通常是指我們經軟件處理后LCD顯示只有1格滾動時,此時滿量程的格數就是內部分辨率,其1格所代表的訊號約為2~3倍RMS Noise。 內外分辨率之比越小,電子秤精度越高,但內外分辨率之比是有限制的。比如Load Cell滿量程壓差為3mV,要做到3000 Count,內外比為1:10的電子秤,如果不經過信號放大,那最小要處理的信號為3mV/(3000X10)=0.1μV。而ΣΔ24所能處理的最小信號值大約為65nV,所以假如內外比再減小的話將產生使ADC不能識別的信號。如果使用OPAMP的話則會增加成本。所以內外分辨率之比要穩定在一定范圍內。 芯片ADC性能能否達到規格要求,通常是以RMS Noise來推算外部是否穩定內部分辨率比值。對于開發電子秤產品而言,使用HY16F188芯片其所能達到的最大內部分辨率的瓶頸在于Input RMS Noise而不在于ADC的分辨率。 HY16F188的ADC待測信號在由PGA、AD倍率調整器的放大后(PGA=32,ADGN=4),經OSR=32768每秒輸出10筆ADC值的條件下,其Input RMS Noise約為65nV,但由于其Input Noise主要由Thermal Noise組成,所以如果我們透過平均的軟件處理是可以再將Input Noise進一步降低。 如果我們使用8筆的軟件平均處理其Input RMS Noise約為40nV,3倍RMS Noise代表約1格的滾動,即為120nV。在使用2.4V Load Cell驅動電壓,1mV/V的Load Cell,滿量程時壓差可達2.4mV,所以在此情形下我們可以得到20000 Counts的內部分辨率。 2.2 控制芯片 單片機簡介:HY16F系列32位高性能Flash單片機(HY16F188) 纮康HY16F系列32位高性能Flash單片機(HY16F188) (01)采用最新Andes 32位CPU核心N801處理器。 (02)電壓操作范圍2.4~3.6V,以及-40℃~85℃工作溫度范圍。 (03)支持外部20MHz石英震蕩器或內部20MHz高精度RC震蕩器。 擁有多種CPU工作頻率切換選擇,可讓使用者達到最佳省電規劃。 (3.1)運行模式 350uA@2MHz/2 (3.2)待機模式 10uA@32KHz/2 (3.3)休眠模式 2.5uA (04)程序內存64KBytes Flash ROM。 (05)數據存儲器8KBytes SRAM。 (06)擁有BOR and WDT功能,可防止CPU死機。 (07)24-bit高精準度ΣΔADC模擬數字轉換器 (7.1)內置PGA (Programmable Gain Amplifier)最高可達128倍放大。 (7.2)內置溫度傳感器。 (08)超低輸入噪聲Rail to Rail運算放大器OPAMP。 (09)多功能CMP模擬比較器,并可支持4組硬件Touch Key功能模塊。 (10)16-bit Timer A模塊。 (11)16-bit Timer B模塊具PWM波形產生功能。 (12)16-bit Timer C模塊具Capture/Compare 功能。 (13)硬件SPI/I2C/UART串行通訊模塊。 (14)硬件RTC時鐘功能模塊。 3. 系統設計 3.1硬件說明 Load Cell輸出的模擬信號傳輸至HY16F188,MCU通過本身的ADC轉換,采集AD信號值,經過運算處理得出對應的重量值,顯示到LCD上,可以通過4X4矩陣的按鍵輸入進行相關的設定操作,可進入Sleep模式減低功耗。 整體應用PCB主板如上圖所示。 (A)中央處理器: HY16F188 (Andes 32-bit MCU Core + HYCON 24-bit ΣΔADC + UMC 64K Flash) 功能為量測電信號、控制、運算包含功能為儲存校正參數。 (B)顯示芯片:HY2613 (HYCON LCD Driver LCD Segment 4X36) 負責LCD驅動。 (C)電源電路:9V轉3.3V電源系統。 (D)模擬感測模塊:壓力傳感器(Load Cell)。 (E)在線燒錄與ICE連結電路,透過EDM的連接,可支持在線燒錄模擬。 并擁有強大的C平臺IDE以及HYCON模擬軟件分析工具與GUI等支持。 PCB電路圖: 3.2電路說明 3.2.1 芯片ADC說明 Load Cell輸入電壓由內置穩壓器2.4V輸出供給VDDA,ADC內部的PGA放大32倍,Gain放大4倍,參考電壓由VDDA –VSS供給,FRB[0]設置[1],則ΔVR_I=1.2V ,由于ΣΔ24具有良好的溫漂特性,整體的溫度曲線約略為±10PPM,所以只要選擇低溫漂系數Load Cell,就可以達到溫度漂移的要求。 3.2.2 矩陣鍵盤說明 在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣一個端口(如PT2埠8PIN)就可以構成4X4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出1鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。 矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,并將行線所接的MCU的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣通過讀入輸入線的狀態就可得知是否有鍵按下。 矩陣按鍵識別方法: (A)行掃描法: 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法, 如上圖所示鍵盤,介紹過程如下。 (1)判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 (2)判斷閉合鍵所在的位置在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 (B)高低電平翻轉法: (1)首先讓PT2口高四位為1,低四位為0。若有按鍵按下,則高四位中會有一個1翻轉為0,低四位不會變,此時即可確定被按下的鍵的行位置。 (2)然后讓PT2口高四位為0,低四位為1。若有按鍵按下,則低四位中會有一個1翻轉為0,高四位不會變,此時即可確定被按下的鍵的列位置。 最后將上述兩者進行或運算即可確定被按下的鍵的位置。 3.2.3 LCD Driver電路說明 LCD驅動電路 MCU通過IIC與LCD driver通訊,電路簡單,操作方便,只須將數據發送給LCD driver HY2613,MCU就可以處理其它事情,且更新數據方便。 3.3軟件說明 整體程序流程圖 3.3.1程序功能簡介 (1)上電后除了MCU的初始化,對LCD初始化,讀取0g校正值、標準重量校正值和標準重量值,且抓取ADC的0點ADC值。初始化過程LCD顯示00.000g,待初始化完成會進入ADC稱重,LCD顯示重量格式為XX.XXXg。 (2)矩陣按鍵操作 (3)ADC校正操作: 此操作只在稱重模式下有效,操作流程如圖所示。 圖ADC校正模式工作流程 3.3.2 ADC數據處理 ADC設置為對輸入信號?SI放大128倍,數據輸出率為ADC-CK/32768,每秒輸出10筆數據,最終取有效位數為16Bit。截取原始數據16Bit,進行平均滑動濾波處理。每8筆數據做一次平均值,得到的平均值再截取高16Bit作為ADC最終轉換值。平均滑動濾波實現如圖所示。啟動ADC后,丟棄前2筆數據,第3筆數據開始存儲。 由于小訊號放大到128倍,ADC的輸出Bit只能達到±15 Bit,如果使用軟件平均方式可以再將ADC的分辨率提升1~2Bit。將新的ADC值與7個ADC Buffer值相加除以8輸出到ADC OUT如圖,此目的是將8筆ADC做平均輸出,這可以將Noise平均提高信號輸出的Bit數。 當ADC平均輸出后,將新值移到Buffer 1 ,Buffer 1移到Buffer 2…Buffer6移到Buffer 7,如圖。 由于平均輸出的反應時間比較慢,當有較大的ADC值變化時,需要跳過此平均程序。當ADC新值大于ADC 平均值超過0X200時,先記錄此新ADC值,但不加入平均值運算,如果下一次的ADC值還是超過0X200,將新值取代所有ADC的Buffer并輸出;如果下一次的ADC值沒有超過,可回到平均流程。 ADC校正信息: 此操作只在稱重模式下有效,操作流程如圖所示。 圖ADC校正模式工作流程 3.3.3矩陣按鍵處理 3.4.3 LCD顯示處理 MCU與LCD Driver通過IIC通訊協議,兼容EEPROM的讀寫通訊協議,所以LCD Driver可以與EEPROM等其它IIC通訊協議的組件可共享一條IIC BUS。LCD Driver的設備地址為0X7C,根據MSB的最高位是0或1決定下一個Byte是發送命令還是數據。 LCD Driver操作步驟: (01)初始化開始條件并啟動I2C。 (02)發送Slaver Address。 (03)發送命令或地址,根據數據的最高位為0或1決定下1個Byte是發送數據還是命令。 通過命令可以設置相關的LCD 功能,包括功耗模式、Reset、關閉/打開顯示、背光功能及設置Duty及Bias,以適應不同的LCD顯示屏。 1. 實驗紀錄 |