教程使用HX711芯片:一步步掌握电子秤的操作

        HX711 是一款专用于高精度电子秤而设计的 24 位 A/D 转换器芯片,其内部集成了差分处理电路、稳压电源、片内时钟振荡器等,使电子秤传感器电路大大地简化。

HX711芯片主要参数:

  1. 工作电压范围:2.6~5.5V;
  2. 内部差分电路可编程增益为32,64,128,其中通道B固定增益为32;
  3. 可选择10Hz或者80Hz的数据输出速率;
  4. 低功耗,其工作电流<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

物联沃分享整理
物联沃-IOTWORD物联网 » 教程使用HX711芯片:一步步掌握电子秤的操作

发表评论