摘 要:为了提高移动机器人的定位能力,提出了一种测障系统。硬件电路以STC12C5A60S2单片机为主控核心,外围电路主要由超声波测距、电子罗盘测方位、数字测温和液晶显示电路组成。测距由超声波渡越时间法实现,利用所测温度实时修正参数,提高了测距精度。方位由电子罗盘采集并以数字量输出,简化了电路。系统软件是一个微内核、多任务的实时系统,将μC/OS-II嵌入单片机,多参数采集程序运行之上,弥补了前后台系统处理多参数实时性差的不足。实际运行表明,系统具有测试精度高、实时好和扩展性好等优点。
关键词:测障系统; μC/OS-II;多任务;单片机
测障系统由测距和测方位等功能组成,它是一个多参数、多功能采集系统,而基于过程处理的前后台系统已很难在实时性和可靠性上满足要求。随着技术的进步,一些8位及以上微控制器已能嵌入实时操作系统(RTOS),应用程序运行之上,两者相互协作,组成一个多任务、多功能、可裁剪的测控系统,有效地克服了传统设计方案的不足。
μC/OS-II是嵌入式实时操作系统,它具有的微内核、多任务、实时性和稳定可靠等特点使其特别适用于构建基于微处理器或单片机(这类处理器对存储空间要求极其苛刻)的测控系统,其被成功应用于航天工程、生命科学、消费类电子产品等领域就是很好的例证[1]。
STC12C5A60S2单片机是具有8051内核的增强型单片机,无需外扩数据存储器和程序存储器就能很好地运行裁剪的μC/OS-II系统。本文将?滋C/OS-II移植进STC12C5A60S2单片机,设计了基于单片机的多参数、多功能测障系统。
1 系统方案和主要电路
系统硬件主要由STC12C5A60S2单片机、超声波电路、数字温度传感器DS18B20、时钟芯片DS1302、液晶显示器LCD12864(ST7920)组成,硬件框图如图1所示。
STC12C5A60S2单片机运行μC/OS-II和应用程序,是测控系统的核心。单片机内置60 KB Flash程序存储器、集成1 280 B数据存储器和1 KB数据Flash存储器[1]。 这些硬件配置使其能构成基于μC/OS-II的多参数、多功能的实时测控系统。超声波电路实现测距;电子罗盘电路实现测方位;数字温度传感器测试温度,用于测距参数的修正;时钟芯片输出时间;液晶显示器实时显示距离、方位、温度等参数。
1.1 超声波电路
超声波电路是利用超声脉冲回波渡越时间法来实现测距,根据系统发射超声波与接收反射波的时间差,结合修正后的波速计算出与障碍物的距离[2]。测距公式如下:
S=vt/2 (1)
v=331.5+0.6Δ (2)
其中,S为与障碍物的距离,单位为m;v为带温度补偿的超声波传播速度,单位为m/s;t为超声波发射与接收到反射波时的时间差,单位为s;331.5是0℃时超声波在空气中的传播速度, 单位为m/s;Δ为实测温度,由测温电路测得,单位为℃。
超声波电路由超声波发射电路和超声波接收电路组成,选用压电式超声波传感器(型号TCT40-16T/R,中心频率40.0±1.0 kHz)。
超声波发射电路由555定时器、CD4069、TCT40-16T发射器等组成,如图2所示。它是利用发射器的逆压电效应,将高频电振动转换成机械振动,产生超声波发射出去的电路。电路中,当单片机控制引脚P1.1为低电平时,555定时器产生中心频率40 kHz的高频信号,由引脚3输出至CD4069,CD4069将其整形后驱动发射器发射超声波。
超声波接收电路由TCT40-16R接收器和红外线检波芯片CX20106A等组成,如图3所示。它是利用接收器的压电效应,将接收的超声振动转换成电信号,实现微弱反射回波的放大、滤波、检波、整形输出的电路[3]。电路中,反射波由引脚1输入,此信号被处理后由引脚7输出低电平,此负跳变通过P1.2引入单片机,单片机以查询的方式获取该信号的变化(反射波)。
1.2 电子罗盘电路
电子罗盘电路用于测试与障碍物的方位(角度和方向)。其工作原理是利用磁阻传感器测试与地磁场的偏移关系从而获取方位信息[4]。
电子罗盘电路由电源电路和HMC5883L集成模块组成。HMC5883L内置磁阻传感器、12位ADC、放大器、I2C数字接口、测量精度达到1°~2°[5]。电子罗盘电路与单片机接口如图4所示。
1.3 数字测温/时钟电路
数字测温电路由数字温度传感器DS18B20组成。它具有以下特点[6]: (1)测温范围为-55℃~+125℃, 最高12 bit分辨率,精度可达±0.5℃;(2)可通过编程的方式实现9 bit~12 bit的数字温度直读; (3)可设置超限温度报警,并有搜索命令识别报警条件;(4)单总线接口,仅需一条输入/输出线(DQ)就能与单片机(P1.0)通信。DS18B20数字测温电路如图5所示。
时钟电路由时钟芯片DS1302组成。它是一种高性能、低功耗、采用三线接口的实时时钟电路,可以对时间和日期进行计时[7]。DS1302时钟电路如图6所示。
2 系统软件
系统软件是运行于?滋C/OS-II之上的程序,它将RTOS与应用程序有机融合在一起。RTOS负责任务管理与调度、任务间同步和通信等功能;应用程序实现具体功能,如测距、测方位和参数显示等。
2.1 μC/OS_II移植
μC/OS-II必须裁剪才能在STC12C5A60S2单片机中正常运行,主要涉及4个文件[1]: 处理器相关文件(OS_CPU_C.C、OS_CPU.H)、 配置文件(OS_CFG.H)、 汇编文件(OS_CPU_A.ASM)、启动文件(STARTUP.A5)。
2.2 应用程序组成
程序流程框图如图7所示。主文件由系统和应用程序初始化功能函数、任务1和任务2的功能函数、时钟中断函数UserTickTimer()等组成。
2.2.1 系统和应用程序初始化主要功能函数
(1) OSInit()
初始化操作系统。
(2) InitHardware()/InitLcdBase()/ Init DS1302 ()/Init
Hmc5883()
初始化定时器T0/T1:方式1,T0定时50 ms中断一次,T1为超声波计数,初值为0。
初始化液晶显示器LCD12864、数字时钟芯片DS1302和电子罗盘芯片HMC5883。
(3) OSTaskCreate()
OSTaskCreate(Task1,(void*)0,&Task1Stk[0],1);
OSTaskCreate(Task2,(void*)0,&Task2Stk[0],2);
创建Task1和Task2两个任务,级别为1和2,并分配堆栈。
(4) myMbox=OSMboxCreate((void*)1);
创建消息邮箱并赋初值,作为1 s到的时间标识。
(5) OSStart()
启动多任务。
2.2.2 任务1和任务2的功能函数
(1) 任务1的功能函数
① Hmc5883Process()/DisplayGoniometer()
测方位并用数字/指针显示,每1 s刷新一次。
② OSTimeDly(20)
任务1被挂起20个时钟节拍,让出CPU资源。
(2) 任务2的功能函数
① OSMboxPend(myMbox,0,&err)
当接收到系统每隔1 s发过来的消息时,执行以下函数,否则等待。
② Get1302Data()/Display1302DigitalClock()
读取DS1302的值并显示时间。
③ Ds18b20DataToString()/DisplayDs18b20Tempe()
读取DS18b20温度值并转换为相应格式,显示温度值。
④ UltraShowDistance()
显示基于超声回波渡越时间波测试的距离值。
⑤ OSTimeDly(5)
任务2被挂起5个时钟节拍,让出CPU资源。
3 实验
基于单片机的测障系统实际运行结果如图8所示。
图8(a)~(d)中,第1行为交替显示时间和日期信息,日期格式为年/月/日;数字时钟格式为小时:分钟:秒。初始时间和日期可通过程序设定。
第2行:“E:XXX.X°” 为方位信息,即与以东为参考点的夹角(角度为0时指向东),单位为度(°)。指针的指向与角度一致。
第3行:“XXX.XCM”为实测的与障碍物的距离,单位为cm,测试范围<600 cm。
第4行:“±XX.XX℃”为实测温度,单位为摄氏度(℃)。
系统硬件以增强型单片机为测控核心,外围电路采用模块化设计,整个电路稳定、可靠。系统软件设计为基于嵌入式实时操作系统的多任务系统。实际运行表明,系统测试精度高,功能多,实时性好,可扩展性好,为深入研究机器人定位系统奠定了基础。
参考文献
[1] 陈桂友. 增强型8051单片机实用开发技术[M].北京:北京航空航天大学出版社,2010.
[2] 张根宝,李秀平,庞苏娟. 基于ARM Cortex-M3 便携式智能超声波液位计[J].仪表技术与传感器,2012(1):20-31.
[3] 杨发权,陈胜权. 基于M50462和CX20106A芯片的双工红外线通信系统[J].佛山科学技术学院学报(自然科学版),2008,26(5):21-24.
[4] 郭检楠.基于磁阻芯片和MSP430单片机的电子罗盘设计[J].信息与电子工程,2010,8(1):12-14.
[5] 胡宁博,李剑,赵榉云.基于HMC5883的电子罗盘设计[J].传感器世界,2011(6):35-38.
[6] 孙明利,鲍健,张烁. 单总线技术及DS18B20的温度测量实现[J].大气与环境光学学报,2010,5(4):322-326.
[7] 黄明强. DS1302在单片机系统中的应用.保定师范专科学校学报[J].2004,17(2):30-33.