摘要:本文在分析數字萬用表結構基礎上,結合HX711的A/D特性,給出電壓、電阻測量電路的硬件設計方案;利用STM32F103C8T6,在MDK4.73開發環境下,用C語言實現HX711數據的獲取及處理,完成基于HX711的精密萬用表設計。
關鍵詞:HX711;通態電阻;固件庫
萬用表是一種測量電流、電壓及電阻等多種電學參量的儀表。自上世紀80年代,MAXIM公司推出3位半萬用表專用芯片ICL7106/7107后,指針式萬用表被數字式萬用表逐步取代,數字式萬用表以靈敏度高、精確度高、顯示清晰、過載能力強等特點被普及。
數字式萬用表核心部分由A/D(模擬/數字)轉換芯片、外圍元件、液晶顯示器構成。在測量不同電學參量時,通過外圍元件將電學參量變成適合的電壓傳遞A/D轉換芯片,A/D轉換芯片將電壓變成數值,最后通過液晶顯示器顯示,A/D轉換是數字式萬用表的核心。
HX711是一款專為高精度電子秤而設計的24位A/D轉換器芯片。與同類型其它芯片相比,該芯片集成了包括穩壓電源、片內時鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應速度快、抗干擾性強等優點[1]。雖然HX711是一款專為電子秤而設計A/D芯片,利用其24位A/D,添加外圍電路,結合MCU完全可以設計出智能、精密的數字萬用表。
1、系統硬件設計
基于HX711的精密萬用表屬于實驗性質的萬用表,適合面向弱電方向的人員使用,只實現了直流電壓、電阻兩個電氣參數的測量功能。
1.1 電壓測量電路的硬件設計
電壓測量部分有10V、1V、0.1V三個量程。HX711有兩個A/D采集端口,共3種測量方式,采用通道A 128分貝方式,可以測量正、負20mv范圍內的電壓值。考慮到HX711的零漂等因素,最大值設定為正、負10mv。
根據歐姆定律可以方便設計出電壓測量電路,電壓測量電路由R1、R2、R3三個電阻串聯,待測電壓流過這三個電阻。
R1阻值為三個電阻總阻值的百分之一,10V以下電壓流過三個電阻時,R1兩端的電壓就是總電壓的百分之一,即10mv,所以,10V量程時,測量R1兩端電壓。
R1、R2阻值為三個電阻總阻值的十分之一,1V以下電壓流過三個電阻時,R1、R2兩端的電壓就是總電壓的十分之一,即10mv,1V量程時,測量R1、R2兩端電壓。0.1V以下量程時,直接測量R1至R3間的電壓。
由于電阻的標稱是不連續的,R1阻值選擇1K,R2由3.9K和5.1K兩個電阻組成,R3選擇39K和51K兩個電阻組成。
1.2 量程切換電路的硬件設計
萬用表多采用多檔位的旋轉開關,來實現選擇測量項目和量程切換。本設計采用電子開關CD4066來實現量程自動切換,CD4066由四個雙向電子開關構成,每個雙向電子開關的控制端施加高電平,開關導通;施加低電平,開關呈高組態。
R1經過項目切換開關接HX711負極測量端、其他三處測量點經過電子開關合并后,再經過項目切換開關接HX711正極測量端。測量表筆接最終經過項目切換開關接到R1、R3兩端。
1.3 電阻測量電路的硬件設計
電路由Rx和Rn串聯接3.3V構成,Rn阻值已知,Rx為待測電阻,用HX711測量Rx兩端電壓,總電壓3.3V減去測量值即為Rn兩端電壓,計算可知Rx阻值。
在測量Rx兩端電壓時,為簡化電路和編程,仍采用通道A 128分貝方式,人為設定滿量程電壓為16.5mV,設定Rx量程為10、100、1k、10k歐姆四個量程,對應Rn理論取值為2k、20k、200k、2M歐姆。由2k、18k、180k、1800k四個電阻串聯。量程為10歐姆時,由CD4066將3.3V加到2k電阻上;量程為100歐姆時,由CD4066將3.3V加到18k電阻上。
CD4066具體型號為tc4066bp,它在5V電壓下,25度時通態電阻典型值為290歐姆。筆者測量在3.3V電壓下,為292歐姆,實踐阻值還應加上292。
1.4 其他電路設計
測量項目切換選擇四刀三置開關,四個開關引腳,三個腳分配給某測量項目,一個引腳接地,選擇不同測量項目時,同接上拉電阻的MCU某引腳連接,使其由1變0,通知MCU切換測量項目。測量電路和STM32F103C8T6共用電源3.3V。
2、軟件設計
基于HX711的精密萬用表,MCU采用32位的STM32F103C8T6,開發環境選擇MDK4.73,固件庫為V3.5.0。
DATA、CLK為HX711的數據、時鐘引腳,DATA引腳選擇GPIO_Mode_IN_FLOATING模式,CLK引腳選擇PIO_Mode_Out_PP模式。讀取HX711數據程序過程如下:
定義u32變量val、unsigned char變量i,初值為0;GPIO_SetBits設置DATA為1,GPIO_ResetBits 設置CLK為0;GPIO_ReadInputDataBit讀DATA值,作為while的退出條件。以i為變量,循環24次執行:CLK置1,val左移1位,CLK置0;GPIO_ReadInputDataBit讀DATA值,作if條件;為1時,val加一。CLK置1,CLK置0。數據由val返回。
讀取HX711數據,依據測量項目進行處理,后數據在液晶模塊上顯示,最后根所選擇的HX711輸出速率進行延時,完成一次數據采集、處理。因采取C語言實現,可方便移植到其他MCU上。
利用HX711的24位A/D轉換性能,通過電子開關CD4066進行量程切換,在STM32F103C8T6的控制下,實現自動切換量程的精密數字萬用表,實現電壓、電阻兩個電氣參數的測量,精密、量程自動切換是本設計的優點,可以在此基礎上輕松實現其他電氣參數的測量。
參考文獻:
[1]HX711 datasheet [Z]. http://www.aviaic.com,2018年.P1.
作者簡介:劉景文(1968-)男,天津市人,天津濱海職業學院電子信息工程技術教研室主任,副教授,碩士。研究領域:嵌入式應用、計算機視覺。