kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于STM32的风速监测系统设计
基于STM32的风速监测系统设计
2016年微型机与应用第06期
李长才1,2,肖金球1,2,张少华1,2
(1. 苏州科技学院 电子与信息工程学院,江苏 苏州 215009;2. 苏州市智能测控工程技术研究中心,江苏 苏州 215009)
摘要:为了准确掌握气象动态,实时可靠获得风速信息,设计了基于STM32微控制器的风速监测系统。该系统采用三杯式风速传感器作为传感设备,STM32芯片作为主控制器,SP3485收发器和HAC-UM数传模块作为通信传输模块。给出了基于STM32风速测量技术、硬件设计的总体框架以及系统软件实现方法。通过STM32定时器捕获脉冲频率,实现了对风速实时准确的监测。经测试,该系统具有功耗低、性能稳定、测量精度高、功能扩展方便等特点。
Abstract:
Key words :

  李长才1,2,肖金球1,2,张少华1,2

  (1. 苏州科技学院 电子与信息工程学院,江苏 苏州 215009;2. 苏州市智能测控工程技术研究中心,江苏 苏州 215009)

 摘要:为了准确掌握气象动态,实时可靠获得风速信息,设计了基于STM32微控制器的风速监测系统。该系统采用三杯式风速传感器作为传感设备,STM32芯片作为主控制器,SP3485收发器和HAC-UM数传模块作为通信传输模块。给出了基于STM32风速测量技术、硬件设计的总体框架以及系统软件实现方法。通过STM32定时器捕获脉冲频率,实现了对风速实时准确的监测。经测试,该系统具有功耗低、性能稳定、测量精度高、功能扩展方便等特点。

 关键词:STM32;风速测量;三杯式风速传感器;输入捕获

0引言

  江苏省住房和城乡建设厅科技项目(2014JH12);汽车电子功率元件批量自动测试装置的研制(XKZ201413)风速作为一项关键的气象要素,其数据的检测分析越来越受到人们的重视。在工业、农业、气象等领域,也需要对风速信息进行实时准确的监测。传统的风速测量[1]大多采用8/16位单片机,其在网络通信功能、数据查询与存储以及实时性等方面有所欠缺。本文采用32位ARM处理器,因其在功耗、可靠性、实时性以及运行速度等方面有明显的优势,更适合于风速测量。采用三杯式风速传感器具有启动风速小、抗风强度好、线性度和测量精度高等优点,因而得到广泛的应用。本文研究的风速测量系统能够快速准确地进行风速采集,并将测量结果实时传送至上位机进行数据分析与保存,为气象监测、农业生产及自然灾害预防提供有力的帮助。

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边沿检测为上升沿捕获,通过触发捕获/比较寄存器,捕获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作为核心处理器。 

003.jpg

  2.1CPU模块

  CPU模块是整个系统的控制中心,控制各部分分别完成数据采集、计算、显示、通信以及存储等功能。STM32搭载ARM公司的具有先进架构的CortexM3内核[6],具有多达8个定时器,每个定时器有4个用于输入捕获或脉冲计数的通道。STM32具有独立时钟的滴答定时器,产生系统运行的节拍,不占用CPU资源。本系统利用STM32的DMA通道实现内存风速数据与USART外设的数据传输,速度快,节省CPU资源;关闭没有使用的STM32管脚时钟,把功耗降至最低;利用滴答定时器分配各模块执行顺序,提高程序的执行效率。

 2.2信号采集模块

  如图4所示,D1为3144单极开关型的霍尔传感器[7],只感应南极磁场,电平翻转为低电平的条件是南极磁场的强度大于其设定的开启点。它采用开云棋牌官网在线客服集成技术制造的磁敏电路,其输入为磁感应强度,输出是一个数字电压信号,波形为方波信号。LM393电压比较器对电压信号处理后,输出为稳定的TTL电平,可直接输入STM32第31引脚,进行信号频率测量。 

004.jpg

  2.3通信模块

  系统提供两种通信方式:一种是短距离无线通信,采用无线传输提高应用的灵活性并节省铺线成本;另一种是RS485通信方式,最大传输距离标准值可达3 000 m,抗噪声干扰性好,具有多站能力,可方便地建立起通信网络。

  无线通信采用HACUM数传模块,此模块具有可靠性高、体积小、重量轻的特点,具有多信道、智能数据控制的优势。硬件连接如图5所示,STM32的68管脚(RXD)和69管脚(TXD)分别与数传模块的TXD和RXD连接,利用串口通信,实现无线传输功能。 

005.jpg

  RS485通信采用SP3485作为收发器,最大传输速度可达10 Mb/s,支持32个节点。如图6所示,RO是接收输出端,连接STM32的第26管脚;DI 是发送数据收入端,连接STM32的第25管脚;RE是接收使能端(低电平有效);DE是发送使能端(高电平有效)。D1~D5是瞬态电压抑制二极管,用于浪涌保护、防雷击,保护SP3485芯片及内部接口电路。

006.jpg

007.jpg

  软件设计包括初始化程序、主程序、定时器输入捕获子程序、LCD显示子程序、RS485通信子程序、HAC-UM数传模块无线通信子程序。系统主程序流程如图7所示。系统软件采用C语言开发,使程序便于阅读、修改与维护,编辑环境为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的数据寄存器进行数据发送。传输过程不经过CPU处理,大大提高了软件系统运行的效率。

  主程序中,通过扫描按键来选择通信方式,通过使能无线通信或RS485通信实现向上位机的数据传输。

4结论

  本文针对风速测量系统的应用要求,设计了基于STM32三杯式风速传感器的风速监测系统。系统充分发挥了STM32芯片的优势,创新性地使用了STM32定时器输入捕获功能,检测输入脉冲频率,提高了系统的可靠性。巧妙地利用了STM32的DMA模块进行数据传输,提高了系统运行效率。此外,利用丰富的片上资源,简化了外围接口设计,实现了对风速实时准确的测量,拥有很好的应用价值。

 参考文献

  [1] 程启明,程伊曼,汪明媚,等. 风力发电中风速测量技术的发展[J].自动化仪表, 2010,31(7):14.

  [2] 胡少坚,夏冠群,冯明,等. GaAs霍尔开关集成电路的研制[J]. 功能材料与器件学报, 2003,9(1):4346.

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

  [4] 刘爱华, 满宝元. 传感器原理及应用[M]. 北京: 人民邮电出版社, 2006.

  [5] 李彦迪,李文瑞,陈硕烁,等.基于FPGA的自适应滤波器的研究与开发[J].微型机与应用, 2013, 32(14):3234,40.

  [6] 蓝杰,张浩然.基于STM32的微型步进电机驱动控制器设计[J].微型机与应用,2015,34(1):4346.

  [7] 王金艳. 霍尔传感器转速检测系统的设计与研究[D]. 哈尔滨: 黑龙江大学, 2010.

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

  [9] 李军伟,戴紫彬,南龙梅,等.密码SoC中嵌入式链式DMA的研究与设计[J].电子技术应用,2014,40(1):5659.


此内容为AET网站原创,未经授权禁止转载。
Baidu
map