请教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);
} 同求方法;在线等等 ; 是不是没有人用过HX711?帖子都沉底了,把它顶起来 顶起 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);
} LZ可以参考这段代码; 回复【4楼】qq502835899 化蝶
-----------------------------------------------------------------------
我没有看明白这一段代码,是读出来的值,再传到电脑上的吗? 不是,value是读取后的值,这部分是转换;write_data(buffer)显示在液晶上的; return (int)(Count);
AD=Vi*64*0X1000000/Vref,这里面0x1000000是什么哈??Vre是参考电压5v吗??? uestcdongjun 发表于 2012-4-21 22:11
**** 作者被禁止或删除 内容自动屏蔽 ****
2的24次方,其实严格来说应该用2的24次方后再减1的值进行计算 收藏{:lol:} 为啥我用的hx711 输入阻抗很低呢?接到STM32输出的DAC 直接就被拉低了
页:
[1]