赞
踩
HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片是专门为称重传感器设计的,称重传感器只需要一个HX711芯片即可完成称重信号的处理及AD转换;对于单片机来说,获取此刻的重量值,只需一个简单函数读取此时AD值,并通过一个线性方程的转换后即可获取此时物体的精确重量。
先介绍HX711芯片的硬件电路,如图:
该方案使用内部时钟振荡器(XI=0),10Hz的输出数据速率(RATE=0,可配置为80Hz)。电源(2.7~5.5V)直接取用与MCU芯片相同的供电电源。片内稳压电源电路通过片外PNP管S8550和分压电阻R1、R2向传感器和A/D转换器提供稳定的低噪声模拟电源。
通道A模拟差分输入直接与桥式传感器的差分输出相接(通道B接地不使用)。
由于桥式传感器输出的信号较小,为了充分利用A/D转换器的输入动态范围,该通道的可编程增益较大,为128或64。这些增益所对应的满量程差分输入电压分别±20mV或±40mV。通道B为固定的32增益,所对应的满量程差分输入电压为±80mV。
HX711芯片与单片机的通讯只需要两个引脚,时钟引脚PD_SCK及数据引脚DOUT,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT为高电平时,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK应为低电平。当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲,如图:
其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。第25至27个时钟脉冲用来选择下一次A/D转换的输入通道和增益,时序如图。
对于单片机来说,只需要通过两个普通的IO口与HX711的PD_SCK、DOUT引脚项链,并根据以上时序进行编程,即可完成对HX711芯片的控制,控制程序如下。
(1)AD值读取函数
//读取HX711 //**************************************************** unsigned long HX711_Read(void) //增益128 { unsigned long count; unsigned char i; HX711_DOUT=1; Delay__hx711_us(); Delay__hx711_us(); HX711_SCK=0; count=0; EA = 1; while(HX711_DOUT); EA = 0; 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); }
(2)AD值与实际重量转换公式
转换公式也是很简单,只需经过一个1次线性方程进行转换即可,
void Get_Weight()
{
Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重
//GapValue为线性方程的系数
Weight_Shiwu = (unsigned int)((float)(Weight_Shiwu*10)/GapValue)-qupi; //计算实物的实际重量
}
更多HX711设计资料 请关注公众号,首页回复“HX711”获取资料
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。