標題: 分享一個MAX6675的程序,有修正版的,并指出原因 [打印本頁]

作者: ne5532    時間: 2020-11-24 20:07
標題: 分享一個MAX6675的程序,有修正版的,并指出原因
前幾天因一個工程需要做了一個溫度采集,因還有好多庫存的MAX6675,所以用它,因原來用51單片機做的,現(xiàn)開始學(xué)32,所以用32做的,偷懶從網(wǎng)上找了個程序,如下所示:
//////////////////////////////
//u16 max6675_readRawValue(void)
//{
//  u16 tmp=0;
//  u16 i;
//  MAX6675_CS_L;//cs低
//  /*按位讀取電平*/
//  for(i=0;i<16;i++)
//          {  
//                          /*創(chuàng)建一個沿,按沿讀取PB7的端口電平*/
//                        MAX6675_CK_H;
//                        delay_us(10);
//                        if(MAX6675_SO)tmp|=0x0001;
//                    //printf("tmp%d---:%d\n",i,tmp);/*這是為了檢查錯誤時按位打印每個數(shù)*/
//                        tmp<<=1;//按位左移
//                    MAX6675_CK_L;
//                        delay_us(10);
//                  }
//              MAX6675_CS_H;//cs高                  
//   if (tmp&0x0004)
// {
//    M2 = 1; //未檢測到熱電偶
//        // printf("未檢測到熱電偶\n");//測試用
//  }
//  else
// {        
//    M2=0;
//        tmp<<=1;//去掉D15位
//        tmp>>=4;//去掉D0、1、2位
//  }
//        return tmp;
//}
//
//u16 max6675_readTemperature(void)
//{
//        u16 d,a;
//        float i,S;
//        S=2.142857;//實驗數(shù),用溫水和熱水 環(huán)境測得的一個實際差量
////        delay_ms(200);
//        d=max6675_readRawValue();
//        i=d*1023.75/4095/S;
//        a=i;
//    return a;
//}


這個程序總體來講,沒有多大的問題,用起來也可以用,但實際上是有問題的。
1,正常程序中不需要除所謂的系數(shù):如上所示產(chǎn)的S=2.142857,
2,斷線檢測不正常,可能好多朋友在做這個的時候,基本上沒有用到過斷線檢測。

經(jīng)過仔細分析,采用試的方法,發(fā)現(xiàn)了一個問題,就是時序圖里的數(shù)據(jù)傳輸問題,第一個數(shù)據(jù)實際上不需要CK-H,
就可以直接讀出來,如果加上一個CK-H的話,就導(dǎo)致了整個數(shù)據(jù)往左多移了1個位,所以上面的程序中取采用tmp>>=4;//去掉D0、1、2位
D0-2總共3個位,卻要移4個位的原因,  同時還有,//        tmp<<=1;//去掉D15位   這句話實際上把D14的值去掉了,實際值只有11位數(shù)據(jù)了,因為
一般人用于低溫,根本不會發(fā)現(xiàn), 我在試開路檢測時,輸出的數(shù)據(jù)不是最大值,而是個中間值就可以說明這個問題。
最重要的問題是,D2值一直沒有變化,我做開路沒有反應(yīng),原來是D2的位置變到了D3的位置,接下來就可以修改了。
1, if (tmp&0x0004) 變?yōu)?if (tmp&0x0008)
2,//        tmp<<=1;//去掉D15位 這句取消
3,S=2.142857;//實驗數(shù),用溫水和熱水 環(huán)境測得的一個實際差量   這句也取消。
4,i=d*1023.75/4095/S;  改為i=d*1023.75/4095;
經(jīng)過測試,實際的溫度值與標準溫度計相差0.5度,斷線檢測有反應(yīng),達到設(shè)計要求。
增加PID,實際控溫可達到正負0.3度波動。



作者: 鐘志偉    時間: 2020-11-25 00:21
這芯片除了價格啥都好!
作者: ne5532    時間: 2020-11-26 09:14
準備搞個OP07的試玩下,過段時間有空就做個玩一下,就有一點不好,要用+-電源.這個是個額外的支出.




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