HX711体重秤 电子称 软硬件设计

  • 学习826次

目前市场上大概有两种称重传感器。一种是4条线的全桥称重传感器,另外一种是3条线的半桥称重传感器。

这里说的全桥和半桥,指的是传感器身上的电阻应变片组成的桥。

全桥传感器内部原理:

电阻全桥

全桥称重传感器的内部有4个应变片,组成了电阻桥,引出4条线,颜色分别是红色、黑色、白色、绿色。

半桥传感器内部原理:

半桥称重传感器的内部有2个电阻应变片,引出3条线,实际上组合的是一个半桥。这3条线的颜色分别是红、黑、白,其中,红色是电阻应变片中间引出的。

HX711模块:

HX711模块是比较常用的一种电子称测量模块。HX711芯片内部实际上是由“放大器+ADC模数转换器”组成的一种芯片。其中,A通道的放大倍数为128或者64,B通道的放大倍数为32,ADC精度是24位。

我们一般把传感器连接到A通道。

接线方法:全桥称重传感器

全桥称重传感器的红线接E+、黑色接E-、白色接A-、绿色接A+。

接线方法:半桥称重传感器

半桥称重传感器有两种应用,一种是两个半桥传感器组成的应用,另外一种是四个半桥传感器组成的应用。

两个半桥传感器的接法:假设两个传感器为A和B,传感器的白线接B传感器的黑线,一起接到E+;A传感器的黑线接B传感器的白线,一起接到E-;A传感器的红线接到S+;B传感器的红线接到S-。

四个半桥传感器的接法:相邻黑接黑、相邻白接白、最后4个红线分别接到E+、E-、S+、S-。

程序代码:

unsigned long ReadCount(void)
{
  unsigned long Count;
  unsigned char i;
	
  ADDO=1;
  ADSK=0;
  Count=0;
  while(ADDO);
  for(i=0;i<24;i++)
  {
    ADSK=1;
    Count=Count<<1;
    ADSK=0;
    if(ADDO)Count++;
  }
  ADSK=1;
  Count=Count^0x800000;
  ADSK=0;
  return(Count);
}

要点1:该函数的返回值就是采集到的ADC值,这是一个24位的值,所以确保在定义的时候,要把接收ADC值的变量定义为32位的,不可以定义成16位的或者8位的。

要点2:很多人不理解为什么要把采集到的值与0x800000进行“异或”运算。这是因为,HX711直接取出来的数值,是以补码的形式出现的,并且是有符号的值。

  • 以十进制表示,最小值为-8388608,最大值为8388607。
  • 以十六进制补码表示,最小值是0x800000,最大值是0x7FFFFF。这就是我们得到的还没有与0x800000进行异或运算之前的ADC值。

“异或”运算的作用是把得到的ADC值,由原来的“-8388608~8388607”变成“0~16777215”。这是一个结论,如果你想知道是怎么实现的,举几个例子进行一下运算就知道了。

技巧

我们最终得到的ADC值,是24位的,如果你想降低精度,比如你只需要16位精度,那么,你可以把最终的值右移8位就可以。

发表评论

关闭菜单