杨斐文,张 达,杨小聪,崔 昊
(1.北京矿冶研究总院,北京100160;2.金属矿山智能开采技术北京市重点实验室,北京 100160)
基于Cortex-M4和FreeRTOS的矿用三维激光扫描测量系统设计
杨斐文1,2,张 达1,2,杨小聪1,崔 昊1,2
(1.北京矿冶研究总院,北京100160;2.金属矿山智能开采技术北京市重点实验室,北京 100160)
为了满足矿用三维激光扫描系统的需求,设计了基于Cortex-M4内核和嵌入式实时操作系统FreeRTOS的运动控制和数据采集系统。采用Cortex-M4为内核的STM32F407ZGT微控制器和APM电机控制器等进行相关的硬件电路设计,通过移植FreeRTOS内核实现对运动控制、激光传感器数据采集、摄像头视频传输等任务的调度和对其他硬件资源的管理,简化了硬件设计的复杂度,优化了软件编程,提高了系统的实时性和可靠性,降低了成本。
矿用三维激光扫描测量系统;FreeRTOS;Cortex-M4
矿用三维激光扫描系统具有测量精度高、距离远、观测效率高、非接触等优点,已经成为矿山井下空区变形安全监测、采场爆破前与爆破后形态探测的重要手段[1]。由于本系统涉及伺服电机的运动控制、激光测距传感器的数据采集、倾角传感器的数据采集、摄像头的视频图像传输、设备与终端之间的通信等多重任务,必须保证各任务的实时性,同时简化硬件电路的设计方案,降低软件开发的难度,保证系统的可靠性和稳定性。综合以上多种因素,最终选用内核是Cortex-M4的处理器,同时移植源码公开的免费的嵌入式实时操作系统FreeRTOS[2]。
矿用三维激光扫描系统通过电机控制器控制一台横向动力电机和一台纵向动力电机,带动激光测距模块在空间中旋转,激光测距模块返回被测点的距离值,并通过2台电机的编码器获取的角度值,确定出被测点在空间中的位置。电机旋转的时候,激光测距模块测量不同方位的点的距离值,形成三维空间的点云数据,进而形成被测物体的三维模型。2只倾角传感器可以确定矿用三维激光扫描系统的初始位置;摄像头用来辅助测量人员安装设备,避免激光头磕碰到被测物体;以太网实现本系统与手持终端之间的数据通信。该系统的整体方案见图1。
图1 矿用三维激光扫描系统整体方案
本系统选择高性能、低成本的采用Cortex-M4内核的STM32F407芯片,主频168 MHz,带有2个CAN接口和1个摄像头接口,能够支持以太网,带4路高速串口,内嵌1MB的Flash,硬件资源非常丰富[3]。同时,采用小型化的APM集成运动控制器,通过CAN通信的方式,实现对2台电机的控制,降低运动控制的复杂度。
本系统采用的STM32F407ZGT芯片,内嵌2个支持CAN2.0B协议的CAN控制器,只需在每个CAN口外接1个CAN收发器,即可实现与电机控制器APM的CAN通信。同时,由于本系统的各个CAN设备之间的通信距离非常短,不需要做CAN隔离,直接将NXP公司的CAN收发器TJA1050接在STM32F407ZGT的CAN控制器上即可。
本系统选用的激光测距模块的输出信号是标准232信号,但STM32F407ZGT的高速串口是TTL信号,需用1片SP3232E将2种不同电平信号进行转换。
本系统选用的摄像头是OV7670模块,它有八根数据线,其接口见图2。它可以直接与STM32F407ZGT的摄像头接口DCMI连接[4]。
图2 OV7670摄像头接口
本系统采用的倾角传感器模块输出的是标准485信号,只需要使用一片SN65HVD06D高速收发器,即可实现倾角传感器和STM32F407ZGT的高速串口之间的电平转换。同时,2只倾角传感器并接入485总线,共同使用1个SN65HVD06D高速收发器。
主控制器STM32F407ZGT内嵌以太网控制器,只需在外部接一片低功耗、高性能的DP83848C芯片作为10M/100M以太网PHY芯片,采用RMII接口与处理器STM32F407连接即可实现以太网的通信[4]。
FreeRTOS作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理,而且在商业应用上不需要授权费,它的主要功能包括以下几点:①优先级调度、相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核;②任务可选择是否共享堆栈,并且没有任务数限制;③ 消息队列,二值信号量,计数信号量,递归互斥体;④时间管理;⑤内存管理[5]。
FreeRTOS 的 实 现 主 要 由 list.c、queue.c、croutine.c和tasks.c4 个文件组成[6]。list.c是一个链表的实现,主要供给内核调度器使用;queue.c是一个队列的实现,支持中断环境和信号量控制;croutine.c和task.c是两种任务的组织实现。对于croutine,各任务共享同一个堆栈,使RAM 的需求进一步缩小,但也正因如此,他的使用受到相对严格的限制。而task则是传统的实现,各任务使用各自的堆栈,支持完全的抢占式调度。
由于FreeRTOS支持ST公司的Cortex-M4芯片平台,所以STM32F407ZGT移植FreeRTOS时,可以基于ST官方函数库,再做少许修改即可。本系统采用官网下载的FreeRTOS7.6版本,主要修改以下3个文件:①portmacro.h,根据使用的编译器Real View MDK 对数据类型进行定义[7];②FreeRTOSConfig.h,设置与架构相关的定义,如处理器频率、心跳次数、递归互斥功能、计数器型信号量功能、改变任务优先级、协程公用堆栈等;③list.c,增加包含 Cortex-M4内核文件的头文件core_cmInstr.h。
图3是本系统主程序流程图,主要用来在FreeRTOS的任务调度器启用之完成初始化工作,主要包括以下几点:①芯片各硬件端口的的初始化,包括GPIO、2个CAN控制器、DCMI摄像头接口、485端口、以太网控制器、高速 UART等;②在FreeRTOS中创建程序所用到的队列;③在FreeRTOS中创建程序所用到的各个任务;④在FreeRTOS中启动任务调度器。
根据FreeRTOS的任务的设计原则,在设计任务函数时需要将重要性高、实时性要求高的任务设为高优先级,执行时间长的任务设置为优先级低[8]。同时,任务之间的通信必须通过队列来实现,且同一时刻只能有1个任务访问硬件资源。
本系统的软件采用C语言编写,模块化设计方法使每一个任务都独立开来,方便后期的程序开发、调试、维护。本系统设计的主要任务包括:①CAN1电机控制任务,实现对大电机的运动控制、编码器数据采集;②CAN2电机控制任务,实现对小电机的运动控制、编码器数据采集;③UART4控制任务,实现对激光测距传感器的数据采集;④DCMI控制任务,实现对摄像头的控制;⑤485控制任务,实现对2路倾角传感器的数据采集;⑥以太网通信任务,实现对摄像头采集的视频数据的传输。
图3 主函数程序流程图
本文设计的基于Cortex-M4内核和嵌入式实时操作系统FreeRTOS的矿用三维激光扫描系统的扫描头已完成样机的设计。它通过8芯线缆与外置电源箱相连,电源箱内置WiFi模块,用户通过手持PDA给设备发送命令,使其开始扫描,扫描完成后通过上位机对采集的点云数据进行处理。通过测试过程中不断修改完善程序,目前该系统已基本实现全部功能。
本文详细介绍了采用Cortex-M4为内核的STM32F407ZGT控制器,搭配FreeRTOS嵌入式实时操作系统的矿用三维激光扫描系统的设计与实现。利用STM32F407ZGT丰富的硬件资源和ST公司完善的函数库,简化了系统的硬件设计,且便于提高系统的性能和外设的扩展。同时,在STM32F407ZGT平台上移植了嵌入式实时操作系统FreeRTOS,使系统运行更加稳定,实时性更强。
矿用三维激光扫描测量系统可应用于采空区充填辅助设计、采矿量计量、采矿超挖欠挖分析、辅助应急救援、采空区顶板及巷道安全分析、矿柱回采辅助设计等,在矿山行业具有广泛应用前景[9]。
[1]杨斐文,陆得盛,张达,等.基于矿用三维激光扫描系统的CAN总线传输协议研究[J].有色金属:矿山部分,2013,65(5):4-6.
[2]BARRY R.Using the FreeRTOS real time kernel[M/OL].[2011-01-08]http://www.FreeRTOS.org/Documenttation.
[3]STM32F4芯片手册[R/OL].http://www.st.com.
[4]神州王STM32F407FZGT用户手册[R/OL].http://www.armjishu.com
[5]宋华鲁,闫银发,张世福,等.基于STM32和FreeRTOS的嵌入式太阳能干燥实时监测和控制系统设计[J].现代电子技术,2013,36(23):105-106.
[6]吕成兴,刘军礼,刘波,等.基于Contex-M3和FreeRTOS的数据采集系统设计[J].中国水运,2011,11(12):86-87.
[7]孙伟,陈杨,张明伟,等.基于ARM CM3和RTOS的矿用电磁调速电机控制器软件设计[J].煤矿机械,2014,35(9):236-237.
[8]谢鹏程.基于STM32和FreeRTOS的独立式运动控制器设计与研究[D].广州:华南理工大学,2012.
[9]余乐文,张达,余斌,等.矿用三维激光扫描测量系统的研制[J].金属矿山,2012(10):106-107.
Design of the 3D laser scanning and measuring system for mining based on Cortex-M4 and FreeRTOS
YANG Fei-wen1,2,ZHANG Da1,2,YANG Xiao-cong1,CUI Hao1,2
(1.Beijing General Research Institute of Mining and Metallurgy,Beijing 100160,China;2.Beijing Metal mine mining Key Laboratory of Intelligent Technology,Beijing 100160,China)
We designed a system of motion controlling and data acquisition based on Cortex-M4 kernel and embedded FreeRTOS,in order to meet the needs of 3D Laser Scanning System for Mining.The related hardware circuits were designed by using STM32F407ZGT micro-controller which consist of Cortex-M4 core and APM motor controllers.It achieved management of hardware resources and schedule of some tasks through transplant FreeRTOS,such as motion control,data acquisition of a laser sensor,video transmission of a camera,etc.This system simplified the complexity of hardware design,optimized software performance,improved reliability of the system and reduced costs.
3D laser scanning and measuring system for mining;FreeRTOS;Cortex-M4
杨斐文(1983-),男,工程师,硕士,检测技术与自动化装置专业,主要从事矿山领域智能化仪器的硬件、软件的研发工作。
TD17
A
1004-4051(2014)S2-0316-03
2014-07-20
国家高技术研究发展计划(863计划)项目“地下金属矿智能采矿爆破技术与装备”资助(编号:2011AA060405);国际合作项目“金属矿深井开采安全智能化监控技术合作研究”资助(编号:2011DFA71990)。