音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

利用MAXQ7667確定超聲傳感器的諧振頻率和阻尼特性

出處:MLH203242 發(fā)布于:2010-11-27 11:00:39

     引言

  本文介紹了如何利用MAXQ7667智能SoC (片上系統(tǒng))確定超聲傳感器的諧振頻率和阻尼特性。這些功能有助于診斷傳感器模塊,優(yōu)化系統(tǒng)性能,并且可以在生產(chǎn)過(guò)程中用于校準(zhǔn)。本應(yīng)用筆記并非針對(duì)所有系統(tǒng)泛泛地討論“如何實(shí)現(xiàn)”,而是針對(duì)特定的傳感器模型討論設(shè)計(jì)細(xì)節(jié)以及特定條件下的性能。利用這些信息,用戶(hù)可以大大簡(jiǎn)化系統(tǒng)測(cè)試。另外,這些測(cè)試假定超聲波反射目標(biāo)與傳感器的距離大于1英尺。

  測(cè)試裝置

  本文中的所有測(cè)試數(shù)據(jù)取自MAXQ7667 EV (評(píng)估)板,這些數(shù)據(jù)通過(guò)評(píng)估板的RS-232串口傳送到PC,然后利用Excel表產(chǎn)生曲線圖。傳感器采用隨評(píng)估板提供的40kHz 400EP250。傳感器水平安裝在電路板上,可以方便地在傳感器上加裝其它材料以改變傳感器的性能。這里采用了三種傳感器條件應(yīng)用于各種測(cè)試:清潔干燥的傳感器(正常工作條件)、在傳感器表面注水、傳感器表面附有油漬。

  圖1至圖3顯示了這些不同條件下傳感器的參數(shù),可以看到有較大的差異。傳感器表面注水會(huì)降低傳感器的諧振頻率、減小阻尼;油漬的影響則相反,會(huì)提高諧振頻率、并顯著增大阻尼。

  阻尼測(cè)試

  阻尼測(cè)試用于測(cè)量傳感器的諧振時(shí)間,測(cè)試非常簡(jiǎn)單,首先產(chǎn)生一個(gè)短脈沖激勵(lì)傳感器,然后監(jiān)測(cè)傳感器輸出,觀察信號(hào)的衰減速度。圖1至圖3給出了三種不同頻率下回波接收通道的阻尼。從三組曲線可以很容易看出油漬會(huì)導(dǎo)致強(qiáng)阻尼。另外,如果觀察阻尼的細(xì)微變化,這些曲線還顯示了接收頻率的重要作用。

  由于該測(cè)試非常簡(jiǎn)單,可以在多個(gè)頻率下進(jìn)行測(cè)試。在多個(gè)頻率下進(jìn)行測(cè)試時(shí),保持相對(duì)恒定的激勵(lì)脈沖寬度。利用一個(gè)持續(xù)時(shí)間固定的激勵(lì)窄脈沖,可以消除傳感器能量變化或者在諧振頻率處激勵(lì)傳感器造成的差異。

  圖1、圖2和圖3中,以25?s的間隔采集LPF (低通濾波器)輸出,傳感器激勵(lì)脈沖寬度近似為6?s。注意,如果只使用一個(gè)頻率并且PLL已處于所要求的頻率,該測(cè)試可以在低于3ms的間隔下進(jìn)行。在兩次測(cè)量之間有充分的時(shí)間觀測(cè)峰值,并檢測(cè)信號(hào)衰減到給定峰值百分比的時(shí)間。如果使用多個(gè)頻率,可能需要額外的測(cè)量時(shí)間,同時(shí)也需要更多時(shí)間使PLL穩(wěn)定到一個(gè)新的頻率。

 利用40kHz中心頻率濾波器時(shí)的阻尼測(cè)量

圖1. 利用40kHz中心頻率濾波器時(shí)的阻尼測(cè)量

利用35kHz中心頻率濾波器時(shí)的阻尼測(cè)量

圖2. 利用35kHz中心頻率濾波器時(shí)的阻尼測(cè)量

利用45kHz中心頻率濾波器時(shí)的阻尼測(cè)量

圖3. 利用45kHz中心頻率濾波器時(shí)的阻尼測(cè)量

  掃頻

  掃頻可以確認(rèn)傳感器的諧振頻率。圖4清楚地顯示了不同外加材料(三種不同測(cè)試條件)對(duì)傳感器諧振頻率的影響。從圖4數(shù)據(jù)可以看出:接收器中心頻率以400Hz的間隔從30kHz變化到50kHz,共計(jì)51個(gè)頻率。對(duì)于51個(gè)頻率的每個(gè)頻率,從激勵(lì)到讀取LPF輸出的時(shí)間間隔相同。診斷時(shí)需要特別注意:從激勵(lì)到讀取LPF數(shù)據(jù)的時(shí)間間隔必須正確。這個(gè)時(shí)間間隔必須足夠長(zhǎng),使回波接收通道脫離飽和;但還要足夠短,保證傳感器仍然能夠產(chǎn)生比較強(qiáng)的信號(hào)。似乎單一的固定時(shí)間間隔很難滿足所有條件。例如,從圖2可以明顯看出,如果傳感器有油漬,信號(hào)在正常的傳感器脫離飽和之前就被完全衰減掉??紤]到這種狀況,必須動(dòng)態(tài)調(diào)整從激勵(lì)到測(cè)量LPF輸出的時(shí)間間隔。幸運(yùn)的是阻尼測(cè)試(見(jiàn)下文)可以很容易地確定一個(gè)較好的時(shí)間間隔。

  為了收集圖4數(shù)據(jù)(即LPF輸出數(shù)據(jù)),阻尼測(cè)試首先在三種不同頻率下進(jìn)行,保存從激勵(lì)到信號(hào)衰減到峰值一半的時(shí)間。三次測(cè)試的長(zhǎng)時(shí)間間隔將用作掃頻測(cè)試的時(shí)間間隔。這個(gè)過(guò)程確定了能夠保證任何傳感器條件下都可以產(chǎn)生較好的輸出信號(hào)的時(shí)間間隔。

三種傳感器測(cè)試條件下的掃頻測(cè)試

圖4. 三種傳感器測(cè)試條件下的掃頻測(cè)試

  總之,為了確定從激勵(lì)到測(cè)量的時(shí)間間隔,掃頻測(cè)試之前至少進(jìn)行阻尼測(cè)試。掃頻測(cè)試需要比阻尼測(cè)試更長(zhǎng)的時(shí)間。頻率步進(jìn)變化多個(gè)頻點(diǎn),每個(gè)頻率必須在激勵(lì)傳感器以及進(jìn)行相應(yīng)的測(cè)量之前建立。這種情況下,整個(gè)測(cè)試大約需要650ms。如果PLL頻率建立時(shí)間較短,或者是減少測(cè)量頻點(diǎn)、降低阻尼測(cè)試次數(shù),可以縮短測(cè)試時(shí)間。而這些改變會(huì)導(dǎo)致傳感器測(cè)量參數(shù)的降低,但能夠滿足絕大多數(shù)應(yīng)用的要求。

  圖4數(shù)據(jù)顯示了傳感器相當(dāng)寬的諧振頻帶,與傳感器本身的性能相比,這個(gè)諧振帶寬與MAXQ7667的帶通濾波器帶寬的關(guān)系更密切。即便如此,這個(gè)測(cè)試仍然對(duì)確定傳感器的中心頻率非常有用。

  簡(jiǎn)化測(cè)試條件

  本應(yīng)用筆記提供的圖表為設(shè)計(jì)人員提供了一個(gè)簡(jiǎn)便的參考,但很難進(jìn)行自動(dòng)診斷。為了簡(jiǎn)化測(cè)試過(guò)程,可以將數(shù)據(jù)減少到幾個(gè)數(shù)值,然后將這些數(shù)值和表格中的參考值進(jìn)行對(duì)比。這些參考值可以按溫度排序。而溫度很容易通過(guò)SAR ADC和熱敏電阻得到。

  以下程序代碼(附錄A)用于捕獲圖4中的數(shù)據(jù),該程序還提供了三方面的數(shù)據(jù),可用于定義傳感器的條件。這些數(shù)據(jù)是:

  阻尼測(cè)試中,諧振頻率處的LPF峰值數(shù)據(jù)。

  阻尼時(shí)間,或者是從激勵(lì)到信號(hào)衰減至峰值一半的時(shí)間。

  中心頻率或諧振頻率,該數(shù)值表示為PLL的建立時(shí)間,是下限PLL建立時(shí)間(信號(hào)為峰值的70%)和上限PLL建立時(shí)間(信號(hào)為峰值的70%)的平均值,其中70%是任意決定的。

  表1分別顯示了三種傳感器條件下的數(shù)據(jù)。通過(guò)這些數(shù)據(jù),診斷程序很容易區(qū)分傳感器所處的條件。

表1. 各種傳感器工作條件下的數(shù)據(jù)總結(jié)


  可以用于IAR?編譯器2.12A的完整軟件,如果將評(píng)估板的RS-232串口連接到PC的COM1,運(yùn)行PC程序Transducer_Calibrate_115k2.exe,將會(huì)顯示隨頻率變化的諧振曲線和評(píng)估的諧振頻率(圖5)。

 

輸出曲線圖示例

圖5. 輸出曲線圖示例

  附錄A. 軟件例程

  MAXQ7667傳感器校準(zhǔn)文件

     

// This routine measures the transducer damping at the specified frequency (PLLfreq).
 // The system timer is used to measure when the LPF output (LPFD) has dropped to 1/2 the peak value.
 // This is the settling time that will be used later when doing the frequency sweep.

  unsigned damping_half_time (unsigned PLLfreq, unsigned pulse_width)
  {
          unsigned short i;
          unsigned short peak = 0;
          unsigned short half_peak = 0;
          unsigned short temp = 0;

    	  SCNT_bit.STIME = 0;           // Make sure system timer is off.
          STIM = 0;                     // Clear the system timer.
          SCNT_bit.STDIV = 4;           // Set system timer prescale pider to 16 (1µs per cycle).

          PLLF_bit.PLLF = PLLfreq;      // Set the PLL frequency.
          BPH = pulse_width;            // Pulse width = BPH/(receive frequency * 400) when BDIV = 0xC.
          usWaitTimer2(10000);          // Let the PLL settle for 10ms.
          SCNT_bit.STIME = 1;           // Start the system timer.

          BPH_bit .BSTT = 1;            // Send a burst.
          usWaitTimer2(50);             // Wait for LPF to partially settle.
          RunTimer0_us(20);             // Start timer # 1 with a reload time of every 20µs.

          for (i = 0; i < 200; i++)
          {
              temp = LPFD;                                        // Read the output of the lowpass filter.
              if (temp > 0x2000 && temp > peak) {peak = temp;}    // Save the peak value if it is greater than 2000.
              if (temp < peak/2 && half_peak == 0)    // If LPFD is less than half the peak value and the half peak time
              {                                                   	// has not been set, then
                half_peak = STIM;                                 // save the time it took to reach half the peak value.
                i = 101;                                          // Half peak found so exit the loop.
              }
              while (T2CNB0_bit.TF2 == 0) {}                      // Wait for timer # 0.
              T2CNB0_bit.TF2 = 0;                                 // Clear flag.
          }
          T2CNA0_bit.TR2 = 0;                                     // Stop timer # 0.

          return half_peak;
   }

void main()
{
	unsigned short i = 0;
	unsigned short peak = 0;
	unsigned short first70 = 0;
	unsigned short second70 = 0;
	unsigned short center_pllf;

	unsigned short wait2measure;
	unsigned short halfpeak;


    init();


    // ***********************************************************************************************************
    // ***********************************************************************************************************
    // Configuration settings

      echo_receive_gain(0);           // Set receiver to minimum gain (allowed values 0-31)

      Burst_Clock_Divider = 400;      // for calculating the burst-frequency in PC-Application.
      burst_setup(BURST_CLK_PLL, BURST_PULSE_1, BURST_DIV_400, 0, PLL_CLOCK_16MHZ, 0);

      step_size=10;                   // Sets the step-size (steps go from 0 to 511).

    // END configuration settings.
    // ***********************************************************************************************************
    // ***********************************************************************************************************

    while(1)
    {
          // Use the "damping_half_time" routine to measure the time in µs that it takes for the
          // ringing to drop to half of the peak value.  Do this at more than one frequency so that
          // one of the frequencies will be within range of the transducer.
          wait2measure = damping_half_time(128, 88);   //Measure damping time at 35kHz.
          halfpeak = damping_half_time(256, 101);     //Measure damping time at 40kHz.
          if (wait2measure < halfpeak) {wait2measure = halfpeak;} // Save the longest time.
          halfpeak = damping_half_time(384, 113);     //Measure damping time at 45kHz.
          if (wait2measure < halfpeak) {wait2measure = halfpeak;} // Save the longest time.

          // Repeatedly pulse the transducer with a constant width pulse while sweeping the receiver
          // frequency.  Use the half-time value from the damping test (wait2measure) for the interval
          // between pulse transmission and reading LPFD (lowpass filter data).
          PLLF_bit.PLLF = 0;         // Start the sweep at 30kHz.
          BPH = 77;                  // Pulse ~6.3µs.  This value is easy to maintain over frequency.
          peak = 0;
          number_of_steps = 0;
          do    // Sweep from 30kHz to 50kHz with step_size * 39.062500kHz.
          {
              usWaitTimer2(5000);              // Wait 5ms for the frequency to settle.
              STIM = 0;                        // Reset the system timer.  It controls the Pulse to LPF read time.
              BPH_bit .BSTT = 1;               // Send burst.
              while(STIM < wait2measure) {}    // Wait the specified amount of time for the ringing to dampen.
              lpfdata[number_of_steps]= LPFD;  // Store the LPF reading.

              if(lpfdata[number_of_steps]> peak) {peak = lpfdata[number_of_steps];}   //Save the peak value.

              number_of_steps++;
              PLLF_bit.PLLF = number_of_steps * step_size;          // Increase the frequency.
              BPH = 77 + number_of_steps;                           // Increase the duty cycle to maintain pulse width.

          } while (PLLF < 512-step_size);

          // Find the center frequency based on the average of the two frequencies that have a
          // LPFD reading that is 70% of the peak reading.
          for (i = 0; i < number_of_steps; i++)
          {
                if (lpfdata[i] > peak*0.7)
                {
                    first70 = i;
                    i = number_of_steps;
                }
          }

          for (i = number_of_steps; i >0; i--)
          {
                if (lpfdata[i] > peak*0.7)
                {
                    second70 = i;
                    i= 1;
                }
          }

          i = (first70 + second70)/2;   // i = the loop value at the center frequency.
          center_pllf = i*step_size;         // Set PLLF_bit.PLLF to this value for the resonant frequency.

          //Remeasure damping using the center frequency.
          damp_time = damping_half_time(center_pllf, 75);

         // At this point there are three valuable pieces of information about the transducer.
         // Peak = the peak value from the frequency sweep.
         // center_pllf = the PLLF setting at the resonant frequency.
         // damp_time = time for the resonance to decay to 1/2 the peak value.

          center_burst_frequency =   16000000/Burst_Clock_Divider*(center_pllf+768)/1024;

      SendData();

  } // While(1)
} // End Main

  
關(guān)鍵詞:利用MAXQ7667確定超聲傳感器的諧振頻率和阻尼特性

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買(mǎi)家服務(wù):
賣(mài)家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!