目前市場上大概有兩種稱重傳感器。一種是4條線的全橋稱重傳感器,另外一種是3條線的半橋稱重傳感器。
這里說的全橋和半橋,指的是傳感器身上的電阻應(yīng)變片組成的橋。
全橋稱重傳感器的內(nèi)部有4個應(yīng)變片,組成了電阻橋,引出4條線,顏色分別是紅色、黑色、白色、綠色。
半橋稱重傳感器的內(nèi)部有2個電阻應(yīng)變片,引出3條線,實際上組合的是一個半橋。這3條線的顏色分別是紅、黑、白,其中,紅色是電阻應(yīng)變片中間引出的。
HX711模塊是比較常用的一種電子稱測量模塊。HX711芯片內(nèi)部實際上是由“放大器+ADC模數(shù)轉(zhuǎn)換器”組成的一種芯片。其中,A通道的放大倍數(shù)為128或者64,B通道的放大倍數(shù)為32,ADC精度是24位。
全橋稱重傳感器的紅線接E+、黑色接E-、白色接A-、綠色接A+。
半橋稱重傳感器有兩種應(yīng)用,一種是兩個半橋傳感器組成的應(yīng)用,另外一種是四個半橋傳感器組成的應(yīng)用。
兩個半橋傳感器的接法:假設(shè)兩個傳感器為A和B,傳感器的白線接B傳感器的黑線,一起接到E+;A傳感器的黑線接B傳感器的白線,一起接到E-;A傳感器的紅線接到S+;B傳感器的紅線接到S-。
四個半橋傳感器的接法:相鄰黑接黑、相鄰白接白、最后4個紅線分別接到E+、E-、S+、S-。
unsigned long ReadCount(void)
{
unsigned long Count;
unsigned char i;
ADDO=1;
ADSK=0;
Count=0;
while(ADDO);
for(i=0;i<24;i++)
{
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO)Count++;
}
ADSK=1;
Count=Count^0x800000;
ADSK=0;
return(Count);
}
要點1:該函數(shù)的返回值就是采集到的ADC值,這是一個24位的值,所以確保在定義的時候,要把接收ADC值的變量定義為32位的,不可以定義成16位的或者8位的。
要點2:很多人不理解為什么要把采集到的值與0x800000進(jìn)行“異或”運算。這是因為,HX711直接取出來的數(shù)值,是以補碼的形式出現(xiàn)的,并且是有符號的值。
-
以十進(jìn)制表示,最小值為-8388608,最大值為8388607。
-
以十六進(jìn)制補碼表示,最小值是0x800000,最大值是0x7FFFFF。這就是我們得到的還沒有與0x800000進(jìn)行異或運算之前的ADC值。
“異或”運算的作用是把得到的ADC值,由原來的“-8388608~8388607”變成“0~16777215”。這是一個結(jié)論,如果你想知道是怎么實現(xiàn)的,舉幾個例子進(jìn)行一下運算就知道了。
我們最終得到的ADC值,是24位的,如果你想降低精度,比如你只需要16位精度,那么,你可以把最終的值右移8位就可以。
鏈接:https://mrs.pub/elemod/sensor/3578.html
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!