APP下载

基于HX711的精密万用表设计

2021-09-17刘景文

科技信息·学术版 2021年10期

摘要:本文在分析数字万用表结构基础上,结合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-)男,天津市人,天津滨海职业学院电子信息工程技术教研室主任,副教授,硕士。研究领域:嵌入式应用、计算机视觉。