基于单片机的传感器实验教学平台设计
2018-07-06罗明璋尹志豪李修权黑创黄力刘杰
罗明璋,尹志豪,李修权,黑创,黄力,刘杰
《单片机原理与接口技术》《C语言程序设计》和《感测技术》课程是电气信息类专业的必修课,课程实践性较强。目前,大多数高校电气信息类专业《C语言程序设计》课程教学目标不明确,与《单片机原理与接口技术》课程脱节较严重[1],导致学生动手能力不强,影响就业。而C语言是单片机嵌入式系统编程开发的基础,单片机是控制采集系统的核心,感测技术是信息采集的源头,为此,笔者设计了一个可以综合完成基于C语言的单片机和传感器课程实验的交叉科目实验教学平台。
1 实验平台设计
1.1 硬件设计
图1 实验教学平台硬件设计框图
本着易维护、易扩展、易改造的原则,基于单片机的传感器实验教学硬件平台由基础核心板(以下简称基础板)和传感器扩展板(以下简称扩展板)组成,其硬件设计框图如图1所示。基础板选用基于Cortex-M3内核的STM32F103RCT6微控制器芯片,该芯片最高时钟频率为72MHz,在内部集成了定时器/计数器、RS232串口、FLASH、SRAM、JLINK等功能,并连接了键盘、LED等外部电路,可以实现如表1所示的实验教学内容。传感器扩展板是为了扩展基础板功能以实现感测技术实验教学内容,它包括基于霍尔编码器或增量光电编码器的直流电机驱动(扩展板1)、红外遥控检测模块(扩展板2)、MPU6050加速度传感器、激光传感器(扩展板3)、机械手驱动(扩展板4)、电涡流传感器(扩展板5)、ESP8266无线通信模块(扩展板6)。
表1 实验项目内容
1.2 软件设计
为了在教学中能够更加直观的观测感测技术实验和综合创新结果,基于LabView设计的上位机软件如图2所示,功能主要包含学生信息登录、网络通信、直流电机控制、机械手控制,加速度、位移数据绘图、保存和数据处理。硬件配置使用STM32CubeMX,以实现快速配置,也可以自主配置。嵌入式编程采用Keil5使用C语言编程。
图2 实验平台上位机软件
2 实验项目设计流程
不同于传统51内核单片机的开发方式,STM32嵌入式开发需要对芯片所封装的函数库及时钟系统掌握后才能完成表1所述的实验项目:
1)明确《单片机原理与接口技术》《感测技术》和《C语言程序设计》的实验目的,在此基础上确定实验所需要的实验平台的硬件配置;
2)对实验项目中使用的传感器原理进行调研、学习,一是对传感器原理进行明确,二是对传感器模块的接口和通信方式的学习;
3)确定与上位机通信方式及通信协议;
4)在Keil5中根据前3步的分析进行程序设计并利用STM32CubeMX对STM32引脚状态进行快速配置,也可以自行调用函数配置;
5)下载程序到基础板中进行验证,若验证结果与实验目的不一致,则利用JLINK对程序实现在线调试,最终实现实验目的。
3 实验项目实例
笔者以基于无线网络的悬臂梁共振阻尼实验的设计案例来说明教学实验项目设计的方法和流程。该实验通过控制悬臂梁的振动,使悬臂梁达到共振,控制涡流调谐质量阻尼器(ECTMD),测量悬臂梁的振动情况,并将得到的数据在上位机进行绘图,验证ECTMD的阻尼效果。
3.1 实验装置
图3 基于无线网络的悬臂梁共振阻尼实验装置
实验装置如图3所示,基础板及扩展板均包含在实验平台箱体内。振动源采用质量不平衡的可调速的直流电机作为振动激励器,位移测量采用加速度传感器直接安装在结构需要测量的部位,测得该点的加速度,然后将加速度信号2次积分后得到振动位移信号[2]。ECTMD由一个小悬臂梁、一个铜板和一个嵌有磁铁的丙烯酸玻璃立方体构成,小悬臂梁一端固定在可控悬臂梁上,另一端附着在立方体亚克力玻璃上,铜板固定在主悬臂梁上,通过控制机械手的开关与闭合从而控制ECTMD的有无。最后通过无线网络将数据打包发送到上位机,在上位机实时显示曲线。
图4 悬臂梁共振阻尼实验系统硬件设计
3.2 硬件设计
实验平台箱体内基础板及扩展板的硬件设计如图4所示,主要由电源模块、位移测量模块、电机转速测量模块、舵机驱动、电机驱动和网络通信模块组成。
电源模块主要由变压器、整流电路、滤波电路及稳压电路组成,变压器将220V、50Hz的交流电转化成所需的电压信号,接通整流电路将交流电变为脉冲形式的直流电压,然后通过滤波电路滤去较大纹波的电压,最后通过稳压电路得到所需的±5V和±12稳定电压[3]。+12V为直流电机驱动器和舵机(机械手)驱动器提供电源,+5V为STM32核心板、MPU6050加速度传感器和增量式光电编码器提供电源。
位移测量模块采用MPU6050加速度传感器对主悬臂梁的位移进行采集,MPU6050内部集成姿态解算器,对信号进行卡尔曼滤波,将各个轴的加速度信号发送到上位机,上位机将加速度信号进行2次积分后得到振动位移信号。
直流电机作为振动源,通过STM32输出不同占空比的PWM波形来调速,驱动模块采用了TB6612FNG直流电机驱动模块。在±12V供电的情况下,将±5V转化到±12V电压以达到驱动电机的目的,并且该模块采用MOSFET-H桥式结构,可以双路输出,热耗性良好。由于实验过程中需要主悬臂梁持续保持共振,要求电机转速稳定,实验中使用到了PID算法。采用了一个增量光电式编码器,该编码器的转化结果几乎不受外界振动影响,并可以将电机转速转化为脉冲数,将该值作为闭环算法中的反馈值对电机速度进行调整。
舵机作为机械手的驱动源控制ECTMD,通过控制STM32输出不同占空比的PWM控制机械手的动作。该模块采用了MG995模拟舵机。由于舵机的旋转角度与占空比之间的关系受舵机供电情况和机械手机械结构的影响。在多次实验后采用LM2596S调压模块将原有+12V电压调节到+7V电压给舵机供电,PWM占空比为5.5%时机械手张开,PWM占空比为8.9%时机械手闭合。
图6 调速中断子程序 图7 串口中断子程序设计框图 设计框图
该实验平台的硬件与上位机采用无线网络通信,该无线通信模块采用ESP8266芯片,这是一个完整且自成体系的WiFi网络解决方案,能够独立运行,可以作为从机搭载与其他主机MCU运行[4],能够将串口数据以TCP/IP协议的方式传输到上位机,以保证数据稳定传输。
3.3 软件设计
基于上述搭建的硬件系统装置采用图5所示的软件主程序框图来进行程序设计。系统上电之后开始系统的初始化,包括系统时钟、各个端口GPIO状态、串口中断、定时器中断、计数器计数模式、PID参数和PWM输出模式的相关配置。由于采用增量式光电编码器,当电机每转一周编码器输出15000个高电平,实验中采用了一个定时器和一个计数器对其实现采样。在初始化中将计数器的值设置为0,其模式设置为上升沿触发模式,即每一次上升沿来到计数器加1,并将定时器设置为10ms中断1次。该配置可以使用STM32CubeMX软件生成,生成的代码可以作为教学过程中的参考。在初始化函数之后,主程序进入循环程序之中,该循环主要判断2个全局变量Flag的状态来决定,是否向在数据包中摘取相应的数据向上位机发送数据包、是否执行从上位处收到的命令以完成相应的动作。
当主程序每10ms进入1次中断时,读取1次计数器中的值并将计数器中的值进行清空。将读取到的计数器值作为PID算法函数的入口参数,得到下一次PWM占空比的指导值,将该值输出到PWM中实现调速的目的,其过程如图6所示。该实验中采用的位置式PID算法,结构比较清晰,参数整定也较为明确[5],且在采样周期为10ms时,速度调控可以达到0.03r/s。
为避免数据丢失,该程序采用将上位机命令和传感器数据分离在不同串口通信的方式。串口1接受MPU6050传感器数据,在中断中判断其加速度的帧头,在主函数中摘取X轴加速度。串口2与上位机通信,在中断中判断是否为有效命令,如命令有效则在主函数中进行相应动作,详细框图如图7所示。
3.4 实验结果
图8 主悬臂梁的阻尼振动曲线
通过配套的上位机软件和实验硬件平台,得到2种阻尼模态下主悬臂梁的振动情况。当不存在ECTMD时即系统自由振动情况下,可以观测到振动衰减的很慢,衰减到零时间很长, 大概需要25s左右,如图8(a)所示。在同等激励情况下,在ECTMD作用下,振动位衰减快,衰减到零时间大概需要5s左右,如图8(b)所示。产生这种现象的原因是ECTMD模态下产生较大的振动阻尼,即当ECTMD模态阻尼振动实验时,解锁了小悬臂梁,其端尾带有一个磁钢,主悬臂梁振动带动磁钢与铜板之间的相对运动,铜板内部的磁通量发生变化从而在金属板内形成电涡流继而产生一个反向的洛伦兹力阻碍悬臂梁运动[6]。
4 实验项目开设方式
笔者所给出的基于单片机的感测技术教学平台,主要通过3种开设方式使用:
1)随课实验,即在《感测技术》课程、《嵌入式单片机开发》课程开设部分实验课时,该部分实验属于基础实验,实验平台可以满足大部分实验要求,特别在《感测技术》课程实验时还可以结合到《单片机原理与接口技术》课程知识,共同应用2个学科知识解决问题,有利于学生对知识的融会和理解。
2)创新实验,在各种技术科学类竞赛中,可以利用该平台进行竞赛培训。这种方式开设在开放实验室中,由于专业知识涉及较多,需要老师进行指导和教学。
3)教学演示实验,对于建筑学科结构共振只有理论的讲解,没有实验,可利用该实验平台在理论课讲解中穿插演示实验的内容,让学生更好的理解振动方面的知识。
5 结语
介绍了整个教学实验平台的硬件构成和软件操作,以基于无线网络的悬臂梁共振阻尼实验为例说明了实验教学的设计流程。该平台使《C语言程序设计》《单片机原理与接口技术》《感测技术》课程内容融会贯通,实现了基于无线网络的远程教学,突破了地域和时域的限制增强了师生之间双向交流互动[7],在高校实验教学中有良好的应用价值。
[参考文献]
[1]陈景波,陈飞,李智超.“C语言”课程中融入“单片机”内容的教学研究[J].中国电力教育,2013(26):71~72.
[2]刘继承,徐庆华,查建新.用加速度传感器测量振动位移的方法[J].现代雷达,2007(5):69~71.
[3]康华光.电子技术模拟部分[M].第6版.北京:高等教育出版社,2014:481~482.
[4]范兴隆.ESP8266在智能家居监控系统中的应用[J].单片机与嵌入式系统应用,2016,16(9):52~56.
[5]王祎晨.增量式PID和位置式PID算法的整定比较与研究[J].工业控制计算机,2018,31(5):123~124.
[6]肖登红,潘强,何田.一种新型电涡流阻尼器及阻尼性能研究[J].噪声与振动控制,2014,34(6):197~201.
[7]杨泽平,赵敏,万锋,等.基于Web的远程实验教学辅助平台[J].实验室研究与探索,2014,33(8):115~118.