在下面两个推文给出了HX711的转换介绍。
如果使用HX711替代万用表进行高速测量高精度ADC,那么存在以下的问题?
HX711转换速率是多少?
HX711两个通道公模电压范围时多少?
HX711的差模转换电压范围是多少?
通过分析HX711的数据手册,理论上回答上面的问题。
根据手册中的介绍,可以知道A,B两个通道的输入范围是40mV。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的64 增益,用于系统参数检测。
根据HX711的内部功能模块示意图,通过测量其中的(PIN6)VBG,来反过来确定HX711的输入差模电压范围。
▲ 图1 电子秤应用典型方案
通过输出不同脉冲可以读取A,B两个通道的数值。
如果不切换通道,连续读取数值的周期可以100ms。
一旦切换通道,连续读取数值的周期必须大于500ms。否则读取的数据输出都是0xffffff。
为什么?
将A-设置为0, 然后改变A+。下面是A+与ADC结果之间的关系。
▲ IN与ADC之间的关系
▲ IN与ADC之间的关系
▲ IN与ADC之间的关系
通过上面的测试,可以看到HX711的公模输入范围需要大于一定的数值。所以它不适合从0V开始测量。
`
``python
#!/usr/local/bin/python
#============================================================
#============================================================
from headm import *
from tsmodule.tsstm32 import *
from tsmodule.tsvisa import *
dp1308open()
dp1308p6v(0)
time.sleep(2)
setv = linspace(0, 5, 50)
adim = []
adc = []
meter = [0,0,0,0]
for v in setv:
dp1308p6v(v)
time.sleep(.5)
meter = meterval()
printf(meter)
stm32cmd('hx711read')
val = stm32memo(1)
printf(val)
adim.append(meter[0])
adc.append(val[0])
tspsavenew(‘hx711’, inv=adim, outv=adc)
plt.plot(adim, adc)
plt.xlabel(“In(V)”)
plt.ylabel(“ADC”)
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
#============================================================