gnsyhym 发表于 2011-12-23 14:32:10

请教HX711读出数据后的返回计算方法

大家好,我现在使用HX711的IC遇到一个问题,读出来的数据,返回去运算不对,不知道是不是我的方法不对,用串口读出来的数据如下,
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_706839PG09Y4.JPG
(原文件名:1.JPG)

从高到低三个字节表示读出来的24位AD值,INA+,INA-输入的电压测的是21MV,采用64倍增益放大,我的计算方法时这样的:
AD=Vi*64*0X1000000/Vref,其中Vref=4.28V,Vi=0.021V那么算的AD=0X506387,和我读出来的0XD4339F相差很大,是不是我的计算方法哪里不对呢?
原理图发下:
http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_706840FPHI1V.jpg
(原文件名:2.jpg)

VCC=5V,Vref=AVDD的电压=4.28V

还有就是我用串口读出的AD值也是不稳定的,跳来跳去的,需要怎么样处理呢,我的源程序如下:
unsigned long ReadCount(void)
{
        unsigned long Count;
        unsigned char i;
        clr_bit(p_pd_sck_port,p_pd_sck);
        Count=0;
        while(get_bit(p_dout_pin,p_dout));
        for (i=0;i<24;i++)
        {
                set_bit(p_pd_sck_port,p_pd_sck);
                Count=Count<<1;
                clr_bit(p_pd_sck_port,p_pd_sck);
                if(get_bit(p_dout_pin,p_dout))
                        Count++;
        }
        set_bit(p_pd_sck_port,p_pd_sck);
        Count=Count^0x800000;
        clr_bit(p_pd_sck_port,p_pd_sck);
        delay(1);
        set_bit(p_pd_sck_port,p_pd_sck);
        delay(1);
        clr_bit(p_pd_sck_port,p_pd_sck);
        delay(1);
        set_bit(p_pd_sck_port,p_pd_sck);
        delay(1);
        clr_bit(p_pd_sck_port,p_pd_sck);//27个脉冲,选择通道A,64增益
        return(Count);
}

qq502835899 发表于 2011-12-25 17:03:46

同求方法;在线等等 ;

gnsyhym 发表于 2011-12-26 10:45:40

是不是没有人用过HX711?帖子都沉底了,把它顶起来

qq502835899 发表于 2011-12-26 14:12:18

顶起

qq502835899 发表于 2011-12-27 11:22:01

uint x,y=0;
        uchar buffer,i;

        x=8024;
        y=(x-((value/1000000%10)*1000+(value/100000%10)*100+(value/10000%10)*10+(value/1000%10)));
        if(y<0)
                                ES=0;
                                flag=0;
                                SBUF=0xaa;
                                while(!TI);   //等待数据发送结束
                                TI=0;
                                ES=1;       
        y=y*3;
        buffer=y/1000+'0';
        buffer=y/100%10+'0';
        buffer=y/10%10+'0';
        buffer=y%10+'0';
        buffer=buffer=0;
        write_com(0x80);
        for(i=0;i<6;i++)
        {
                write_data(buffer);
        }

qq502835899 发表于 2011-12-27 11:23:11

LZ可以参考这段代码;

gnsyhym 发表于 2011-12-27 15:19:01

回复【4楼】qq502835899 化蝶
-----------------------------------------------------------------------

我没有看明白这一段代码,是读出来的值,再传到电脑上的吗?

qq502835899 发表于 2011-12-27 18:05:13

不是,value是读取后的值,这部分是转换;write_data(buffer)显示在液晶上的;

唯诚hhw2 发表于 2012-4-10 10:53:18

return (int)(Count);

uestcdongjun 发表于 2012-4-21 22:11:41

AD=Vi*64*0X1000000/Vref,这里面0x1000000是什么哈??Vre是参考电压5v吗???

dzrs0620 发表于 2015-4-3 09:28:54

uestcdongjun 发表于 2012-4-21 22:11
**** 作者被禁止或删除 内容自动屏蔽 ****

2的24次方,其实严格来说应该用2的24次方后再减1的值进行计算

yaxiaoyu 发表于 2015-12-7 15:24:09

收藏{:lol:}

guchangwei1991 发表于 2016-1-9 23:41:33

为啥我用的hx711 输入阻抗很低呢?接到STM32输出的DAC 直接就被拉低了
页: [1]
查看完整版本: 请教HX711读出数据后的返回计算方法