称重传感器及HX711 24位ADC的重量参数检测

一、HX711 24位ADC

HX711采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。

称重传感器及HX711 24位ADC的重量参数检测_第1张图片

称重传感器及HX711 24位ADC的重量参数检测_第2张图片

称重传感器及HX711 24位ADC的重量参数检测_第3张图片

有需要下载相关数据手册的,可以在立创商城找到该芯片,并下载其芯片手册(好像HX711的不全,可以看看HX712的,读数据部分都差不多的,只是712只能读一个传感器,而且带电池检测,适合低功耗的产品)。

二、称重传感器

        大部分做小玩意用的都是这种称重传感器,总共4根线,是一个全桥电阻,可以看上面的电路图,通过测量其电阻,两两之间的阻值一样,说明是相邻的线,一般红黑为一组,白绿为一组,E+/E-/A-/A+分别对应红/黑/白/绿。

称重传感器及HX711 24位ADC的重量参数检测_第4张图片

        但是也有可能用到这种50KG人体称重传感器,一个上面有3根线,4个为一组,一般都是成组匹配购买并使用。

称重传感器及HX711 24位ADC的重量参数检测_第5张图片

该传感器内部是一组半桥应变片,使用方法可以有以下三种:

1、使用一只传感器配合外界电阻组成全桥测量,量程为一个传感器的量程: 50kg。对外界电阻要求较高。

2、使用二只传感器组成全桥测量,量程为两只传感器的量程之和:50kg×2=100kg。

3、使用四只传感器组成全桥测量,量程为四只传感器的量程之和:50kg×4=200kg。

称重传感器及HX711 24位ADC的重量参数检测_第6张图片

 

三、HX711驱动代码(适用于STC15F2K60S2)

1.头文件

#ifndef __HX711_H__
#define __HX711_H__

#include 
#include 

#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif

//IO设置
sbit HX711_DOUT=P2^6; 
sbit HX711_SCK=P2^7; 

//extern long Water;//每次称重时的桶+水的总重量
//extern long Water1;    //刚装水时的桶+水的总重量
//extern long Water_bucket;    //桶的重量
//extern uchar Water_percentage;      //剩余水量的百分比

//函数或者变量声明
void Delay__hx711_us(void);
unsigned long HX711_Read(void);

#endif

2.主函数

#include "HX711.h"

//****************************************************

//延时函数1us

//****************************************************

void Delay__hx711_us(void)

{

        unsigned char i;

        _nop_();

        _nop_();

        _nop_();

        i = 5;

        while (--i);

}



//****************************************************

//读取HX711

//****************************************************

unsigned long HX711_Read(void)       //增益128

{

        unsigned long count;

        unsigned char i;

  HX711_DOUT=1;

        Delay__hx711_us();

  HX711_SCK=0;

  count=0;

  while(HX711_DOUT);

  for(i=0;i<24;i++)

        {

          HX711_SCK=1;

          count=count<<1;

                HX711_SCK=0;

          if(HX711_DOUT)

                       count++;

        }

        HX711_SCK=1;

  count=count^0x800000;//第25个脉冲下降沿来时,转换数据

        Delay__hx711_us();

        HX711_SCK=0; 

        return(count);

}

 

你可能感兴趣的:(智能饮水机项目)