《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于STM32的風速監(jiān)測系統設計
基于STM32的風速監(jiān)測系統設計
2016年微型機與應用第06期
李長才1,2,肖金球1,2,張少華1,2
(1. 蘇州科技學院 電子與信息工程學院,江蘇 蘇州 215009;2. 蘇州市智能測控工程技術研究中心,江蘇 蘇州 215009)
摘要: 為了準確掌握氣象動態(tài),實時可靠獲得風速信息,設計了基于STM32微控制器的風速監(jiān)測系統。該系統采用三杯式風速傳感器作為傳感設備,STM32芯片作為主控制器,SP3485收發(fā)器和HAC-UM數傳模塊作為通信傳輸模塊。給出了基于STM32風速測量技術、硬件設計的總體框架以及系統軟件實現方法。通過STM32定時器捕獲脈沖頻率,實現了對風速實時準確的監(jiān)測。經測試,該系統具有功耗低、性能穩(wěn)定、測量精度高、功能擴展方便等特點。
Abstract:
Key words :

  李長才1,2,肖金球1,2,張少華1,2

  (1. 蘇州科技學院 電子與信息工程學院,江蘇 蘇州 215009;2. 蘇州市智能測控工程技術研究中心,江蘇 蘇州 215009)

  摘要:為了準確掌握氣象動態(tài),實時可靠獲得風速信息,設計了基于STM32微控制器的風速監(jiān)測系統。該系統采用三杯式風速傳感器作為傳感設備,STM32芯片作為主控制器,SP3485收發(fā)器和HAC-UM數傳模塊作為通信傳輸模塊。給出了基于STM32風速測量技術、硬件設計的總體框架以及系統軟件實現方法。通過STM32定時器捕獲脈沖頻率,實現了對風速實時準確的監(jiān)測。經測試,該系統具有功耗低、性能穩(wěn)定、測量精度高、功能擴展方便等特點。

  關鍵詞:STM32;風速測量;三杯式風速傳感器;輸入捕獲

0引言

  江蘇省住房和城鄉(xiāng)建設廳科技項目(2014JH12);汽車電子功率元件批量自動測試裝置的研制(XKZ201413)風速作為一項關鍵的氣象要素,其數據的檢測分析越來越受到人們的重視。在工業(yè)、農業(yè)、氣象等領域,也需要對風速信息進行實時準確的監(jiān)測。傳統的風速測量[1]大多采用8/16位單片機,其在網絡通信功能、數據查詢與存儲以及實時性等方面有所欠缺。本文采用32位ARM處理器,因其在功耗、可靠性、實時性以及運行速度等方面有明顯的優(yōu)勢,更適合于風速測量。采用三杯式風速傳感器具有啟動風速小、抗風強度好、線性度和測量精度高等優(yōu)點,因而得到廣泛的應用。本文研究的風速測量系統能夠快速準確地進行風速采集,并將測量結果實時傳送至上位機進行數據分析與保存,為氣象監(jiān)測、農業(yè)生產及自然災害預防提供有力的幫助。

1三杯式風速傳感器與測量技術

  1.1三杯式風速傳感器

  風速傳感器的感應元件是由3個處于同一平面、互成120°的半球形空杯組成的。3個風杯被裝在一個可以自由轉動的軸上,軸上裝有磁棒盤,在水平風力的驅動下風杯組旋轉,帶動磁棒盤旋轉,產生若干個旋轉磁場,通過霍爾磁敏元件感應出脈沖信號,信號變換電路為霍爾集成電路[23]。

  本系統采用EC91系列風速傳感器[4],該系列傳感器具有線性精度高、互換性好、測量范圍寬、抗風強度大等特點,啟動風速小于0.5 m/s,測量范圍為0~60 m/s,最大允許誤差±(0.3+0.03V)m/s,分辨率小于0.1 m/s,其風速轉化的計算公式為:

  υ=0.1×f(1)

  其中,υ為風速,f為脈沖頻率。

  1.2脈沖信號測量技術

  STM32定時器輸入捕獲功能不僅能準確測量脈沖信號頻率,而且操作方便。在測量低頻信號時,可以通過配置PSC預分頻器對TIM的時鐘進行分頻,降低計數器的計數頻率,獲得合適的頻率測量范圍。TIMx_CNT的計數范圍為0~65 535,足夠用于測量傳感器產生的脈沖信號頻率。

  風速傳感器輸出脈沖信號,輸入STM32定時器3的通道1,配置TIM3為輸入捕獲模式。如圖1所示,TI1信號輸入硬件濾波電路[5],通過控制其采樣次數,濾除因抖動等原因產生的高頻脈沖信號,利用了STM32內部資源,簡化了外圍電路。設置通道1邊沿檢測為上升沿捕獲,通過觸發(fā)捕獲/比較寄存器,捕獲TIM3_CNT計數器的值到TIM3_CCR1寄存器中,讀取計數值,等待進行下一次捕獲。

  

001.jpg

  若fck_psc經預分頻器(PSC)分頻后的頻率為fck_cnt,如圖2所示,兩次捕獲完成后得到的計數值為N, 則輸入脈沖信號頻率的計算公式為:

  f=fck_cnt/N(2)

  其中,fck_cnt為計數器頻率,N為計數值。 

002.jpg

2硬件設計

  系統硬件結構主要由ARM處理器、EC91風速傳感器及接口、RS485通信接口、HACUM數傳模塊、LCD顯示、鍵盤和電源等組成,如圖3所示。ARM處理器采用STM32F103VC作為核心處理器?!?/p>

003.jpg

  2.1CPU模塊

  CPU模塊是整個系統的控制中心,控制各部分分別完成數據采集、計算、顯示、通信以及存儲等功能。STM32搭載ARM公司的具有先進架構的CortexM3內核[6],具有多達8個定時器,每個定時器有4個用于輸入捕獲或脈沖計數的通道。STM32具有獨立時鐘的滴答定時器,產生系統運行的節(jié)拍,不占用CPU資源。本系統利用STM32的DMA通道實現內存風速數據與USART外設的數據傳輸,速度快,節(jié)省CPU資源;關閉沒有使用的STM32管腳時鐘,把功耗降至最低;利用滴答定時器分配各模塊執(zhí)行順序,提高程序的執(zhí)行效率。

  2.2信號采集模塊

  如圖4所示,D1為3144單極開關型的霍爾傳感器[7],只感應南極磁場,電平翻轉為低電平的條件是南極磁場的強度大于其設定的開啟點。它采用半導體集成技術制造的磁敏電路,其輸入為磁感應強度,輸出是一個數字電壓信號,波形為方波信號。LM393電壓比較器對電壓信號處理后,輸出為穩(wěn)定的TTL電平,可直接輸入STM32第31引腳,進行信號頻率測量?!?/p>

004.jpg

  2.3通信模塊

  系統提供兩種通信方式:一種是短距離無線通信,采用無線傳輸提高應用的靈活性并節(jié)省鋪線成本;另一種是RS485通信方式,最大傳輸距離標準值可達3 000 m,抗噪聲干擾性好,具有多站能力,可方便地建立起通信網絡。

  無線通信采用HACUM數傳模塊,此模塊具有可靠性高、體積小、重量輕的特點,具有多信道、智能數據控制的優(yōu)勢。硬件連接如圖5所示,STM32的68管腳(RXD)和69管腳(TXD)分別與數傳模塊的TXD和RXD連接,利用串口通信,實現無線傳輸功能。 

005.jpg

  RS485通信采用SP3485作為收發(fā)器,最大傳輸速度可達10 Mb/s,支持32個節(jié)點。如圖6所示,RO是接收輸出端,連接STM32的第26管腳;DI 是發(fā)送數據收入端,連接STM32的第25管腳;RE是接收使能端(低電平有效);DE是發(fā)送使能端(高電平有效)。D1~D5是瞬態(tài)電壓抑制二極管,用于浪涌保護、防雷擊,保護SP3485芯片及內部接口電路。

  

006.jpg

007.jpg

  軟件設計包括初始化程序、主程序、定時器輸入捕獲子程序、LCD顯示子程序、RS485通信子程序、HAC-UM數傳模塊無線通信子程序。系統主程序流程如圖7所示。系統軟件采用C語言開發(fā),使程序便于閱讀、修改與維護,編輯環(huán)境為Keil MDK4.10,而且可采用JTAG或者ISP在線下載與調試。

  STM32的初始化程序主要是對系統時鐘大小進行配置,對USART1、USART2的傳輸模式及波特率進行設置,對TIM3工作模式、計數器時鐘頻率進行配置,對DMA通道目標地址與源地址、傳輸方向等進行設置。LCD顯示子程序主要是進行LCD驅動程序的編寫,主程序中調用LCD顯示函數。

008.jpg

  定時器輸入捕獲子程序是軟件設計中的關鍵部分,脈沖頻率的測量、風速的計算與存儲都是在其中斷函數中實現的。程序流程圖如圖8所示,中斷函數如下:

  float speed[256];//全局變量存儲風速數據

  void TIM3_IRQHandler(void)

  {

  static u8 CaptureNumber = 0;//捕獲次數

  static u8 i = 0;

  static u16 IC3Value0 = 0;

  //定義第一次輸入捕獲值局部變量

  static u16 IC3Value1 = 0;

  //定義第二次輸入捕獲值局部變量

  float freq = 0;//脈沖頻率

  u16 counter = 0;//計數值

  if(CaptureNumber == 0)

  {

  CaptureNumber = 1;

  IC3Value0 = TIM_GetCapture1(TIM3);

  //第一次捕獲

  }

  else if(CaptureNumber == 1)//處理第二次捕獲

  {

  if(TIM_GetFlagStatus(TIM3,TIM_FLAG_Update) != SET)//沒有溢出的處理

  {

  IC3Value1 = TIM_GetCapture1(TIM3);//讀取捕獲值

  counter = IC3Value1- IC3Value0;//計算兩次捕獲的計數值

  }

  else

  {

  TIM_ClearFlag(TIM3,TIM_FLAG_Update);//產生了更新事件

  counter=0xFFFF-IC3Value0+TIM_GetCapture1(TIM3)+1;//有溢出的處理

  }

  CaptureNumber = 0;

  if(couter!=0)

  {

  freq= 120000/counter;//計算頻率

  speed[i] = 0.1 * freq;//轉化成風速

  i++;

  if(i ==255)

  i = 0;

  }

  }

  TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);

  //清除TIM3中斷標志位

  }

  圖8捕獲中斷程序流圖RS485通信子程序和無線通信子程序實現數據向上位機傳輸。應用STM32的DMA功能模塊[8-9],通過DMA控制器實現內存中的風速數據直接通過總線傳輸至USART的數據寄存器進行數據發(fā)送。傳輸過程不經過CPU處理,大大提高了軟件系統運行的效率。

  主程序中,通過掃描按鍵來選擇通信方式,通過使能無線通信或RS485通信實現向上位機的數據傳輸。

4結論

  本文針對風速測量系統的應用要求,設計了基于STM32三杯式風速傳感器的風速監(jiān)測系統。系統充分發(fā)揮了STM32芯片的優(yōu)勢,創(chuàng)新性地使用了STM32定時器輸入捕獲功能,檢測輸入脈沖頻率,提高了系統的可靠性。巧妙地利用了STM32的DMA模塊進行數據傳輸,提高了系統運行效率。此外,利用豐富的片上資源,簡化了外圍接口設計,實現了對風速實時準確的測量,擁有很好的應用價值。

  參考文獻

  [1] 程啟明,程伊曼,汪明媚,等. 風力發(fā)電中風速測量技術的發(fā)展[J].自動化儀表, 2010,31(7):14.

  [2] 胡少堅,夏冠群,馮明,等. GaAs霍爾開關集成電路的研制[J]. 功能材料與器件學報, 2003,9(1):4346.

 ?。?] Huang Le, Xu Huilong, Zhang Zhiyong, et al. GrapHene/Si CMOS hybrid Hall integrated circuits[J]. Scientific Reports, 2014,4:5548.

 ?。?] 劉愛華, 滿寶元. 傳感器原理及應用[M]. 北京: 人民郵電出版社, 2006.

 ?。?] 李彥迪,李文瑞,陳碩爍,等.基于FPGA的自適應濾波器的研究與開發(fā)[J].微型機與應用, 2013, 32(14):3234,40.

 ?。?] 藍杰,張浩然.基于STM32的微型步進電機驅動控制器設計[J].微型機與應用,2015,34(1):4346.

 ?。?] 王金艷. 霍爾傳感器轉速檢測系統的設計與研究[D]. 哈爾濱: 黑龍江大學, 2010.

 ?。?] WALTON S, HUTTON A, TOUCH J. Highspeed data paths in hostbased routers [J].Computer, 1998, 31(11): 4651.

 ?。?] 李軍偉,戴紫彬,南龍梅,等.密碼SoC中嵌入式鏈式DMA的研究與設計[J].電子技術應用,2014,40(1):5659.


此內容為AET網站原創(chuàng),未經授權禁止轉載。