日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
關于MSP430上的模擬設計與ADC12/SD16/外部AD的探討
關于MSP430上的模擬設計與ADC12/SD16/外部AD的探討
 更新時間:2008-8-4 5:00:56  點擊數(shù):10
【字體: 字體顏色
軟件濾波的C程序樣例

10種軟件濾波方法的示例程序

假定從8位AD中讀取數(shù)據(jù)(如果是更高位的AD可定義數(shù)據(jù)類型為int),子程序為get_ad();

1、限副濾波
/*  A值可根據(jù)實際情況調整
    value為有效值,new_value為當前采樣值  
    濾波程序返回有效的實際值  */
#define A 10

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   if ( ( new_value - value > A ) || ( value - new_value > A )
      return value;
   return new_value;
         
}

2、中位值濾波法
/*  N值可根據(jù)實際情況調整
    排序采用冒泡法*/
#define N  11

char filter()
{
   char value_buf[N];
   char count,i,j,temp;
   for ( count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf>value_buf[i+1] )
         {
            temp = value_buf;
            value_buf = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   return value_buf[(N-1)/2];
}     

3、算術平均濾波法
/*
*/

#define N 12

char filter()
{
   int  sum = 0;
   for ( count=0;count<N;count++)
   {
      sum + = get_ad();
      delay();
   }
   return (char)(sum/N);
}

4、遞推平均濾波法(又稱滑動平均濾波法)
/*
*/
#define N 12

char value_buf[N];
char i=0;

char filter()
{
   char count;
   int  sum=0;
   value_buf[i++] = get_ad();
   if ( i == N )   i = 0;
   for ( count=0;count<N,count++)
      sum = value_buf[count];
   return (char)(sum/N);
}

5、中位值平均濾波法(又稱防脈沖干擾平均濾波法)
/*
*/
#define N 12

char filter()
{
   char count,i,j;
   char value_buf[N];
   int  sum=0;
   for  (count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf>value_buf[i+1] )
         {
            temp = value_buf;
            value_buf = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   for(count=1;count<N-1;count++)
      sum += value[count];
   return (char)(sum/(N-2));
}

6、限幅平均濾波法
/*
*/  
略 參考子程序1、3

7、一階滯后濾波法
/* 為加快程序處理速度假定基數(shù)為100,a=0~100 */

#define a 50

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   return (100-a)*value + a*new_value;
}

8、加權遞推平均濾波法
/* coe數(shù)組為加權系數(shù)表,存在程序存儲區(qū)。*/

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()
{
   char count;
   char value_buf[N];
   int  sum=0;
   for (count=0,count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (count=0,count<N;count++)
      sum += value_buf[count]*coe[count];
   return (char)(sum/sum_coe);
}

9、消抖濾波法

#define N 12

char filter()
{
   char count=0;
   char new_value;
   new_value = get_ad();
   while (value !=new_value);
   {
      count++;
      if (count>=N)   return new_value;
       delay();
      new_value = get_ad();
   }
   return value;   
}

10、限幅消抖濾波法
/*
*/
略 參考子程序1、9

11、IIR濾波例子

int  BandpassFilter4(int InputAD4)
{
    int  ReturnValue;
    int  ii;
    RESLO=0;
    RESHI=0;
    MACS=*PdelIn;
    OP2=1068; //FilterCoeff4[4];
    MACS=*(PdelIn+1);
    OP2=8;    //FilterCoeff4[3];
    MACS=*(PdelIn+2);
    OP2=-2001;//FilterCoeff4[2];
    MACS=*(PdelIn+3);
    OP2=8;    //FilterCoeff4[1];
    MACS=InputAD4;
    OP2=1068; //FilterCoeff4[0];
    MACS=*PdelOu;
    OP2=-7190;//FilterCoeff4[8];
    MACS=*(PdelOu+1);
    OP2=-1973; //FilterCoeff4[7];
    MACS=*(PdelOu+2);
    OP2=-19578;//FilterCoeff4[6];
    MACS=*(PdelOu+3);
    OP2=-3047; //FilterCoeff4[5];
    *p=RESLO;
    *(p+1)=RESHI;
    mytestmul<<=2;
    ReturnValue=*(p+1);
    for  (ii=0;ii<3;ii++)
    {
     DelayInput[ii]=DelayInput[ii+1];
     DelayOutput[ii]=DelayOutput[ii+1];
     }
     DelayInput[3]=InputAD4;
     DelayOutput[3]=ReturnValue;
     
   //  if (ReturnValue<0)
   //  {
   //  ReturnValue=-ReturnValue;
   //  }
    return ReturnValue;  
}
 

//--------------------------------------------------------------------------------------------------------------------

關于精度校準

在我們做的一些儀表中,不可避免的要用到精度校準.如,

* 熱量表的溫度系數(shù)標定;
* 流量表的正負誤差值標定;
* 各種傳感器的溫度補償系數(shù)標定;
* RF系統(tǒng)中調諧參數(shù)的標定

因為上述的這些參數(shù)都不是固定的,而是根據(jù)PCB以及外部傳感器,設備連接關系等來做進一步的精度調節(jié)的,這樣就有必要在產(chǎn)品成型后做一個參數(shù)標定.

那么這些標定值是如何設置進我們的MSP中(因為F系列的MSP430芯片內部是FLASH的,可重復編程,這樣就不需要像普通51那樣外擴EEPROM了)以及存放的區(qū)域都成為我們此次探討的重點.

1,存放這些標定系數(shù)的區(qū)域

     在MSP430中,我們可以將這些標定系數(shù)存放在INFOMATION FLASH中,這個區(qū)域分128*2總計256字節(jié)的信息存儲空間,而且也是統(tǒng)一編址的.擦寫可以分兩塊小區(qū)域---128字節(jié)一個區(qū)域來操作,而不用整個扇區(qū)的擦除后再寫入.

     另一個辦法就是針對標定數(shù)據(jù)量大的應用:直接在MSP430程序空間中開一塊512字節(jié)的常規(guī)FLASH扇區(qū)用做數(shù)據(jù)標定,這個標定前一定要對整個扇區(qū)的512字節(jié)做擦除操作.

     還有一類非常特殊的應用,就是把標定參數(shù)放在RAM中,這些在下一次上電后就不存在了,這些標定數(shù)據(jù)是由程序根據(jù)某些外部輸入來定義的暫時值.

    上述的三種標定的存儲方式比較常規(guī)

2,如何進行標定

    A  首先想到的是用FET進行每塊產(chǎn)品的代碼重入,呵呵,這個最簡單,但是要每次編譯原代碼,安全系數(shù)受誤操作影響大,還有就是不容易控制代碼擴散.

    B  通過BSL來進行標定,這個相對來說安全點,因為給的目標文件已經(jīng)是HEX碼,原代碼得到安全的保護(不過解密仍然能通過HEX生成ASM)不過比較煩瑣的操作可以分為兩種,一種是直接修改HEX碼里某處數(shù)據(jù),以達到標定目的,當然,這個操作可以通過PC軟件事先計算好,定位好.另一種方式就是將測試程序寫到MCU中,生成一組標定數(shù)據(jù)到INFO FLASH中,然后再次燒進去成熟的程序,這樣通過測試程序和正常程序分離標定的方法在計量儀表中使用比較方便.

   C  通過串口進行標定.這個操作需要MCU程序支持,首先把存放標定數(shù)據(jù)的空間定義好,然后直接從串口接收標定命令/數(shù)據(jù),然后寫入到標定區(qū)域,這樣的做法實際上最靈活最安全,因為所有的代碼都是不可見的,可以有效防止攻擊和代碼擴散.但是,有一個缺點,就是要損耗一個UART作為標定用,也就是說,在那些沒有UART的MSP430中,使用軟件模擬等都增加了這種方式標定的執(zhí)行難度

    D  特殊場合特殊的標定:如果不僅僅要標定,而且還有可能修改程序中已經(jīng)過時的算法,而且這些設備有可能無法取回或者為了節(jié)約差旅成本不人工取回.這樣就要考慮遠程升級-----通過GPRS/CDMA/ISM RF等等

    呵呵,上述是我們ZOLAB關于參數(shù)標定的一些制造經(jīng)驗,可能還有一些更好的辦法,但是由于行業(yè)限制,我們也無法去一一驗證,歡迎各位多提建議

//---------------------------------------------------------------------------------------------------------------------------------------

可靠性分析 有利于 減少產(chǎn)品返修率 以及 提高產(chǎn)品的穩(wěn)定性

常規(guī)的可靠性分析分為

1, 上電老化  

     簡單的說,就是讓你的產(chǎn)品連續(xù)上電48小時,呵呵,這個連續(xù)工作的要求對絕大多數(shù)的電子產(chǎn)品都是不高的要求了,這個最簡單的老化辦法將有效檢驗出大約0.1%~0.3%的不合格率,基本上算PASS了,這些也只有在批量生產(chǎn)的時候才會遇到,當然,實驗室產(chǎn)品是調試出來的,應該另當別論,要求更高點.

2, 上電高低溫老化

     當你的產(chǎn)品需要在南方城市或者北方城市運行時,或者在一個溫差很大的環(huán)境下,都應該充分考慮到溫差對產(chǎn)品穩(wěn)定性的影響.

     很多精密的AD采集系統(tǒng)需要高穩(wěn)定性的AFE(包括運算放大器,AD器件,基準)這些要求16BIT以上的ADC采集需要使用20PPM以下的器件,才能確保足夠的精度.

     此外,受溫度影響比較嚴重的就是MCU的晶體,通常在-40C以下,晶體正常起振的幾率大大降低,除非使用寬溫晶振或者有源晶振,而且在需要高精度的晶體,比如做為激光測距這樣的應用場合,一定需要一個內部帶恒溫槽,高穩(wěn)定性的有源晶振才能正常工作.這樣的例子就可以在飛機激光測距吊倉上得到驗證(高空溫度有時在 -65C以下);另一方面,在機動車或者密閉的倉內,溫度有時高達+65C,諸如此類特殊的場合,都應該充分考慮系統(tǒng)中晶振的穩(wěn)定性

     因此,有條件的公司,廠家可能會購買高低溫老化設備來做產(chǎn)品的這些實驗

3, 上電高濕度老化

      這個需要測試在濕度70%~95%環(huán)境中,上電是否能正常工作,一般多霧的熱帶雨林,海上航行中,濕度是電子產(chǎn)品最大的殺手.一個走線密集但又沒做防潮防腐處理的PCB,很有可能失靈或者短路燒毀.同樣的事件也容易發(fā)生在化工,農(nóng)業(yè)人工環(huán)境下,因此,這類場合使用的電子產(chǎn)品要充分考慮隔絕空氣,防潮(濕度>70%即為潮濕氣候)

4, 上電電磁輻射檢驗 EMC,EMI

      比如像用MSP430做的HOT---心電感應記錄儀,在工作的同時也要考慮最環(huán)境和周圍的人和設備造成盡可能小的影響,此外還有電能表,手持PDA等等,這些就需要到計量部門做專業(yè)的檢測,不僅是產(chǎn)品對外界的干擾.而且還要檢測外界電磁輻射對產(chǎn)品的干擾.呵呵,就是費用比較高

    PCB設計的差別可能造成同一種ADC 集成電路,一個受到類似手機900MHZ頻率電磁輻射時,采集到的信號幅度變化極大.此外,來自電源不純凈的輻射和高次協(xié)波也將導致系統(tǒng)異;蛘邚臀

5, 上電靜電打擊實驗 ESD

    4000V的人體模型和15000V的高壓瞬間打擊,這類電子產(chǎn)品的設計難度更高

6,  如果是做軍品或者便攜工業(yè)設備,300KM國家3級公路汽車運輸實驗

    這么顛簸后,產(chǎn)品上沒松動,脫焊,器件參數(shù)不變化,功能正常,呵呵,就算過關了

7, 如果是做汽車或者高速交通設備的,還要做做抗重力/加速度實驗

    汽車胎壓檢測中的IC,基本上就要抵抗到數(shù)個G的加速度,很難說一些工業(yè)級的IC要"暴",因此在做此類設計時,器件特性一定要把好關

    上面非常淺顯的介紹了幾種常見的可靠性分析辦法,其實要是詳細寫的話,基本上每個措施都可以寫到5000字以上了,哈哈,這些更詳細的資料,各位壇友還是找找專業(yè)的書籍和富有經(jīng)驗的工程師交流更安全



  • 上一篇: 具有多種電平輸出的DC-DC轉換器NJU7660及其應用
  • 下一篇: keil 使用筆記
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1