HX711 是一款专用于高精度电子秤而设计的 24 位 A/D 转换器芯片,其内部集成了差分处理电路、稳压电源、片内时钟振荡器等,使电子秤传感器电路大大地简化。
HX711芯片主要参数:
- 工作电压范围:2.6~5.5V;
- 内部差分电路可编程增益为32,64,128,其中通道B固定增益为32;
- 可选择10Hz或者80Hz的数据输出速率;
- 低功耗,其工作电流<1.6mA,断电电流<1uA;
HX711芯片内部框图 如下:
HX711内部带有A、B两路输入电路,可通过MUX电路(即同一时间下只能选用A或者B通道进行转换)切换进入差分电路,然后进入24bit ADC转换电路,转换的数据经DOUT、PD_SCK引脚传输到MCU;其中内部稳压电路为芯片内部各模块电路提供稳定的工作电压。 S8550用于稳压电路的控制模拟输入电源,为传感器提供稳定的模拟输入电压。内部稳压电路的输出电压Vavdd由R1、R2电阻和芯片的输出参考电压决定,
即:Vavdd=Vbg(R1+R2)/R2(其中Vbg=1.25V)。
HX711控制时序
(1)如上图,在HX711未进入采集周期时,DOUT保持高电平,此时MCU控制的PD_SCK应保持低电平;
(2)当DOUT的状态变为低电平时,HX711进入采集周期,保持低电平时间T1>1us;
(3)然后MCU开始控制PD_SCK输出25~27个时钟周期,其不同的周期数代表不同的增益和通道,如下图:
此时是对通道A,增益为128进行采集,MCU输出25个时钟周期。其中高字节在前,低字节在后。
(4)PD_SCK输出25个时钟周期完毕后,PD_SCK保持低电平,等待下一个采集周期开始。
(5)由于HX711的24bit数据中,最高位为符号位,其余为有效位,需对采集的数据进行二进制补码操作。
对应的HX711驱动程序
对应以上时序的HX711驱动程序如下:
unsigned long ReadCount(void)//请参考HX711芯片手册{u32 Count = 0;u8 i;ADSK=0;while(ADDO);//等待AD转换结束for (i=0;i<24;i++){ADSK=1;Count=Count<<1;//变量左移一位,右侧补零delay_us(1);ADSK=0;if(ADDO)Count++;delay_us(1);}ADSK=1;Count=Count^0x800000;//第25个脉冲下降沿来时,转换数据delay_us(1);ADSK=0;delay_us(1);return(Count);}
电子秤数据采集电路
电子秤常用的压力传感器为全桥式应变传感器,其与HX711连接电路图如下:
HX711采集压力传感器的2、4线的电压差,并进行128倍增益后,然后进行AD转换,得出最终的AD值。
因为电子秤压力传感器一般为线性传感器,即我们可对采集出来的AD数据进行一元一次方程计算,即
重量值=A*AD+B;(A为压力传感器的线性曲线的斜率,B为压力传感器的线性曲线的截距)
经以上计算后,可得出准确的重量值。
计算重量程序如下:
//****************************************************//称重//****************************************************void Get_Weight(){Weight_Shiwu = ReadCount();Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重Weight_Shiwu = (unsigned int)((float)(Weight_Shiwu*10)/GapValue)-qupi; //计算实物的实际重量}
链接:https://pan.baidu.com/s/11T4aiJtqfWrTb-aUOq6Kfw
提取码:oolv