標題: TM7711稱重模塊資料以及稱重單片機程序 [打印本頁]

作者: 41nb    時間: 2019-9-4 10:16
標題: TM7711稱重模塊資料以及稱重單片機程序
1.與TM7711連接的單片機需要的外設(shè)資源,兩個普通IO口,一個輸入(推薦浮空輸入),一個輸出。

對于TM7711模塊,其中DT(Dout),用于向外傳輸數(shù)據(jù),也就是數(shù)據(jù)線,方向?qū)ν猓黄渲蠸CK(PD_SCK)是輸入外部時鐘的,也就是時鐘線。

所以,對于單片機,需要一個輸入IO口,讀取Dout的數(shù)據(jù);需要一個輸出IO口,發(fā)送時鐘信號(方波),輸出給TM7711模塊。

2.串口時序

想要正確使用這個串口需要讀時序圖,如圖所示:

對于單片機來說,與Dout連接的輸入IO口,電平從高變成低電平,說明TM7711準備好了,可以發(fā)送數(shù)據(jù)了。

這個時候,與PD_SCK連接的輸出IO口,開始發(fā)送方波(時鐘),每個方波讀取一位數(shù)據(jù),數(shù)據(jù)總共24位。

圖上有三個PD_SCK的時序圖,是用于選擇下一次不同的通道和增益用的,所以這個模塊可以同時采集兩路惠斯通電橋的值。按照實際情況,選擇一種或者兩種的組合。所以單片機最少要發(fā)25個脈沖,前24個用于讀取這次的AD轉(zhuǎn)換數(shù)據(jù),最后一個用于選擇下一次的通道和增益。

注意:其實關(guān)鍵的就是那幾個T1,2,3,4的時間要求,不能低于也不能超時,否則都不能得到正確結(jié)果





(2)讀取采樣值

TM7711模塊的串口輸出數(shù)據(jù)為24位的轉(zhuǎn)換值數(shù)據(jù)。

代碼如下,count為讀取到的值,通過移位,一位一位讀。

首先,將單片機輸出口變成低電平,如果高電平達到一定時間會復(fù)位TM7711模塊的,所以平時一定將輸出口電平置為低;

然后就是等待單片機輸入口的電平變低,為了防止硬件出錯,在這里設(shè)置了超時時間,實際效果大概1s,過了1s直接跳出循環(huán),

避免一直等待,同時超時跳出時的AD值非常大,容易排除它;然后就加了一個誤觸發(fā)消除,用的延時的方法。

然后就進入讀取AD轉(zhuǎn)換值了,先將單片機輸出口電平變高,延時一定時間,然后變低,然后讀入輸入口的電平狀態(tài),寫入count.

最后,循環(huán)24次后,發(fā)最后一個脈沖,說明下一次AD轉(zhuǎn)換為差分輸入10hz,128增益。與0x800000異或是因為為了排除負。

到這里,AD轉(zhuǎn)換后的值就讀取了.

sbit PIN_Set_Sck =P2^6;
sbit PIN_DOUT        =P2^7



void Set_Sck_L()
{
        PIN_Set_Sck=0;
}
void Set_Sck_H()
{
        PIN_Set_Sck=1;
}


void delay_us2(int value)
{
        int i;
        for(i=value;i>0;i--);
}
unsigned long HX711_Read(void)        //增益128
{
        unsigned long count;
        unsigned char i;         
        int ii=0;
          Set_Sck_L();//模塊沒準備好時,單片機在CLK線上輸出低電平
          count=0;
        
    while(1)
                        {
                                if(PIN_DOUT==0)
                                        {
                                                delay_us2(1);        //消抖
                                                if(PIN_DOUT==0)        //檢測數(shù)據(jù)口,電壓有沒有變低,如果變低,才開始收數(shù)據(jù)。
                                                {
                                                        break;
                                                }                        
                                        }
                                       
                                ii++;
                                if(ii>=1000000)        //如果數(shù)據(jù)口沒有變低,計數(shù)1S后,退出循環(huán)。
                                        {
                                                break;
                                        }
                        }
        delay_us2(1);
          for(i=0;i<24;i++)
        {                        
                Set_Sck_H();                //SCK拉高
                delay_us2(5);                //延時1微秒
                  count=count<<1;         //將數(shù)據(jù)左移
                Set_Sck_L();                //SCK拉低
                  if(PIN_DOUT==1)//讀入數(shù)據(jù)
                                        count++;
        }
        Set_Sck_H();
        delay_us2(2);
   count=count^0x800000;//第25個脈沖下降沿來時,轉(zhuǎn)換數(shù)據(jù)
        Set_Sck_L();
        return count;
}


TM7711是一款24位的模數(shù)轉(zhuǎn)換器,最高位是符號位,其余為有效位,數(shù)據(jù)編碼格式為二進制補碼。

輸出數(shù)據(jù)最小值【0x800000】,最大值【0x7FFFFF】。(往往我們讀到的數(shù)據(jù)可能不符合這個范圍,這和我們的硬件連接,還有AIN+和AIN-的電壓差分信號有關(guān),仔細分析數(shù)據(jù)會有更有意思的發(fā)現(xiàn))

AIN+(Input positive A)A端口正極輸入,AIN-(Input negative A)A 端口負極輸入。

本文實測數(shù)據(jù)使用的TM7711的A端口,128增益,即滿額度差分輸入信號幅值為±20mv,為了簡單說明,只觀察前12位數(shù)據(jù)。(首先說明一下,AIN-和AIN+不要接反,隨著重量的增加AIN+端電壓正向增長,AIN-端電壓反向增長)


作者: alunli    時間: 2022-4-3 09:05
      最近對這類稱重模塊、電子秤芯片比較感興趣,我打算用TM7711的同類芯片CS1237來測量熱電偶溫度,芯片已收到。
      CS1237有兩路輸入,計劃一路接K系列熱電偶,另一路用個PN結(jié)測量室溫做冷端補償。借寶地請教各位老師,原設(shè)計輸入端是橋式輸入,改為熱電偶輸入,輸入負端接地,該方式能否正常工作?對測量參數(shù)有無不良影響?
作者: LEI365    時間: 2022-10-7 12:49
alunli 發(fā)表于 2022-4-3 09:05
最近對這類稱重模塊、電子秤芯片比較感興趣,我打算用TM7711的同類芯片CS1237來測量熱電偶溫度,芯片 ...

兄弟,請問你測試的怎么樣了。
作者: 18653435573    時間: 2023-12-29 23:02
LEI365 發(fā)表于 2022-10-7 12:49
兄弟,請問你測試的怎么樣了。

你好 這個tm7711的C語言程序有完整版嗎 我根據(jù)芯片手冊提供的程序編寫最后測試效果不理想希望和您交流一下
作者: 18653435573    時間: 2023-12-29 23:03
LEI365 發(fā)表于 2022-10-7 12:49
兄弟,請問你測試的怎么樣了。

你好 這個tm7711的C語言程序有完整版嗎 我根據(jù)芯片手冊提供的程序編寫最后測試效果不理想希望和您交流一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1