|
HX711是一款專為高精度稱重傳感器而設(shè)計(jì)的24位A/D轉(zhuǎn)換器芯片。與同類型其它芯片相比,該芯片是專門為稱重傳感器設(shè)計(jì)的,稱重傳感器只需要一個(gè)HX711芯片即可完成稱重信號(hào)的處理及AD轉(zhuǎn)換;對(duì)于單片機(jī)來(lái)說(shuō),獲取此刻的重量值,只需一個(gè)簡(jiǎn)單函數(shù)讀取此時(shí)AD值,并通過(guò)一個(gè)線性方程的轉(zhuǎn)換后即可獲取此時(shí)物體的精確重量。
對(duì)于單片機(jī)來(lái)說(shuō),只需要通過(guò)兩個(gè)普通的IO口與HX711的PD_SCK、DOUT引腳項(xiàng)鏈,并根據(jù)以上時(shí)序進(jìn)行編程,即可完成對(duì)HX711芯片的控制,控制程序如下。
//讀取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個(gè)脈沖下降沿來(lái)時(shí),轉(zhuǎn)換數(shù)據(jù)
Delay__hx711_us();
HX711_SCK=0;
return(count);
}
//(2)AD值與實(shí)際重量轉(zhuǎn)換公式
//轉(zhuǎn)換公式也是很簡(jiǎn)單,只需經(jīng)過(guò)一個(gè)1次線性方程進(jìn)行轉(zhuǎn)換即可,
void Get_Weight()
{
Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //獲取凈重
//GapValue為線性方程的系數(shù)
Weight_Shiwu = (unsigned int)((float)(Weight_Shiwu*10)/GapValue)-qupi; //計(jì)算實(shí)物的實(shí)際重量
}
|
|