基于STC单片机的电子罗盘-超声波测障系统设计
2013-08-10周鹏
周鹏
(华侨大学 信息学院,福建 厦门 361021)
超声波具有束射性好,方向性和抗干扰性强的特点使其被广泛应用于移动机器人的自动导航[1-2]。但仅用超声波测障无法精确确定移动机器人的位置,因为它不能全面获知障碍物的方位(角度和方向),所以必须附加具有测试方位的传感器。
针对上述问题,提出一种基于STC89C52单片机的电子罗盘-超声波测障方案,实验表明,系统在定位精度和可靠性达到设计要求。
1 系统架构及工作原理
系统主要由STC89C52单片机,超声波电路(超声波发射电路和接收电路),电子罗盘电路,LCD1602液晶显示电路和电源组成(如图1所示)。
图1 系统框图Fig.1 Structure diagram of MCU
系统中,超声波电路用于测试与障碍物的距离。其工作原理[3]是根据系统发射超声波和接收到反射波的时间差,结合修正后的波速计算出与障碍物距离。测距公式如下:
其中,S为与障碍物距离,单位m。
v为带温度补偿的超声波传播速度,单位m/s。
t为超声波发射与接收到反射波时的时间差,单位s。
331.5 为0℃时超声波在空气中的传播速度,单位m/s。
Δ为实测温度,由测温度电路测得,单位℃。
电子罗盘电路用于测试与障碍物的方位(角度和方向)。其工作原理[4]是利用磁阻传感器测试与地磁场的偏移关系从而获取方位信息。
STC89C52单片机是系统的核心,用于处理上述数据并将其显示在LCD1602液晶显示器上。
2 系统硬件设计
系统选用STC89C52单片机,它具有抗干扰性能强、速度快、功耗低和指令代码完全兼容8051单片机等特点。其主要参数为[5]:时钟频率最高可达80 MHz;内置8K字节的Flash-ROM,512字节的RAM和2 K字节的E2PROM;3个16位定时器/计数器,一个6向量2级中断结构。
STC单片机系统由STC89C52单片机,时钟电路,复位电路组成(如图2所示)。
时钟电路采用内部时钟方式,为单片机系统提供时钟信号。
复位电路采用上电自动复位和按键复位的方式,只要保证加到RST引脚的高电平持续时间大于2个机器周期就能使单片机正常复位。
2.1 LCD1602显示电路设计
系统选择LCD1602(HD44780)液晶显示器实时显示障碍物的方位,距离,时间等信息。LCD1602是工业字符型液晶显示器,它能够同时显示32个字符(16列2行),具有低功耗、显示内容丰富等特点。LCD1602与单片机接口电路如图3所示。
图2 STC单片机系统Fig.2 Structure diagram of STC MCU
图3 LCD1602与单片机接口电路Fig.3 Interface diagram of LCD1602 and MCU
2.2 超声波电路设计
超声波电路由超声波发射电路和超声波接收电路组成,选用压电式超声波传感器 (型号TCT40-16T/R,中心频率40.0±1.0 kHz)。
超声波发射电路(如图4所示)由555定时器,CD4069,TCT40-16T发射器等组成,它是利用发射器的逆压电效应,将高频电振动转换成机械振动,产生超声波发射出去的电路。电路中,当单片机控制引脚P1.4为低电平时,555定时器产生中心频率40 kHz的高频信号,由引脚3输出至CD4069,CD4069将其整形后驱动发射器发射超声波。
超声波接收电路(如图5所示)由TCT40-16R接收器和红外线检波芯片CX20106A等组成,它是利用接收器的压电效应,将接收的超声振动转换成电信号,实现微弱反射回波的放大,滤波,检波,整形输出的电路[6]。电路中,反射波由引脚1输入,此信号被处理后由引脚7输出低电平,此负跳变通过P1.5引入单片机,单片机以查询的方式获取该信号的变化(反射波)。
图4 超声波发射电路Fig.4 Circuit of ultrasonic emision
图5 超声波接收电路Fig.5 Circuit of ultrasonic receiver
2.3 电子罗盘电路设计
电子罗盘电路由电源电路,HMC5883L集成模块(主要电路如图6所示)组成。HMC5883L内置磁阻传感器,12位ADC,放大器,I2C 数字接口,测量精度达到 1°~2°[7]。
图6 电子罗盘与单片机接口电路Fig.6 Interface diagram of electronic compass and MCU
2.4 电源电路设计
系统由电压芯片7805和662K分别为单片机和HMC5883L提供+5 V和+3.3 V的工作电压,电源电路如图7和图8所示。
图7 +5V电源电路Fig.7 Power supply circuit of 5 volt
图8 +3.3V电源电路Fig.8 Power supply circuit of 3.3 volt
3 系统软件设计
系统软件采用结构化设计,即主函数调用子函数,子函数再调用各功能子函数。主函数由初始化函数(初始化定时/计数器,LCD1602液晶显示器,电子罗盘模块等)和调用子函数(测距,测方位,时间和日期显示等函数)组成。子函数包括测方位函数(电子罗盘模块实现),测距函数(超声波模块实现)和信息显示函数(显示方位,距离,时间和日期)。功能子函数用于驱动底层硬件。系统流程如图9所示。
图9 系统流程图Fig.9 Flow-process diagram of system
3.1 主函数
1)初始化函数
①void TimerInit(void)//T0/T1 同为定时器,工作方式 1,T0定时50 ms产生一次中断;T1用于计数超声波测距时间
②void InitLcd1602(void)//初始化 LCD1602 液晶显示器
③void InitHMC5883(void)//初始化 HMC5883L 电子罗盘模块
④void SetClock (unsigned char, unsigned char, unsigned char)//设定时间
⑤void SetDate (unsigned char, unsigned char, unsigned char)//设定日期
2)调用子函数
①void TrigUltra(void)//启动超声波测距
②void ShowDistanceUltra(void)//显示与障碍物的距离
③void StartHmc5883(void)//启动方位测试并显示结果
④void RunDigitalClock(void)//显示时间
⑤void RunDate(void)//显示日期
3.2 主要功能子函数
1)LCD1602液晶显示函数
① void TestLcdIdle(void)//忙检测
②void WriteCommand(unsigned char)//写入命令
③void WriteData(unsigned char)//写入数据
④void InitLcd1602(void)//清屏、设置光标等初始化
⑤)void SetPos_1602 (unsigned char,bit)//设定显示内容的起始位置
⑥void PrintC_1602(unsigned char)//字符显示
⑦void PrintS_1602(unsigned char*)//字符串显示
2)超声波测距函数
①void DistanceUltraProcess(void)//根据定时器计数值计算距离
②void ShowDistanceUltra (long)//显示测距结果
②void ShowBlindSpotUltra (void)//显示盲点(超过测距范围)
3)电子罗盘测方位函数
①void StartHmc5883(void)//起始信号
②void StopHmc5883 (void)//终止信号
③void SendAckHmc5883(bit)//发送应答信号
④bit RecvAckHmc5883 (void)//接收应答信号
⑤void SendByteHmc5883 (unsigned char)//发送单字节数据
⑥unsigned char RecvByteHmc5883 (void)//接收单字节数据
⑦void WriteByteHmc5883(unsigned char, unsigned char)//写入单字节数据
⑧void ReadByteHmc5883(unsigned char, unsigned char)//读取单字节数据
⑨void ReadAngleHmc5883 (void)//读出测试角度数据
4 实 验
系统实际运行结果如图10~13所示。
图10 测试结果一Fig.10 The result of the first experiment
图11 测试结果二Fig.11 The result of the second experiment
图12 测试结果三Fig.12 The result of the third experiment
图13 测试结果四Fig.13 The result of the fourth experiment
图中, 第 1 行:”XX:XX:XX” 为时/分/秒;”XX/XX/XX”为年/月/日;
第2行:”EXXX.X。是以顺时针为旋转方向与东的夹角(系统以东为参考起点,角度为0时指向东),单位为度;”DXXX.XCM”为与障碍物的间距,单位为厘米。
5 结 论
经过实测,系统能精确测试障碍物的方位和间距,并数字显示。实验表明,系统测障功能达到设计要求,整个电路简单实用,为后续深入研究移动机器人自动导航奠定基础。
[1]童峰,许天增.一种移动机器人超声波导航系统[J].机器人,2002,24(1):55-57.TONG Feng,XU Tian-zeng.A ultrasonic navigation system for mobile robot[J].Robot,2002,24(1):55-57.
[2]苏强,林旭梅.一种基于单片机的超声波传感器的研究与设计[J].微型机与应用,2010,29(15):92-99.SU Qiang,LIN Xu-mei.Research and design on ultrasonic sensorsbased on single chip[J].Microcomputer& Its Applications,2010,29(15):92-99.
[3]郭清.基于STC89C52的超声波测距防撞系统设计[J].仪表技术与传感器,2011(6):74-77.GUO Qing.Ultrasonic ranging and anti-collision system based on STC89C52[J].Instrument Technique and Sensor,2011(6):74-77.
[4]郭检楠.基于磁阻芯片和MSP430单片机的电子罗盘设计[J].信息与电子工程,2010,8(1):12-14.GUO Jian-nan.Design of digital compass with magneto resistive chip and the MCU of MSP430[J].Information and Elecronic Engineering,2010,8(1):12-14.
[5]王节旺.一种基于STC89C52RC单片机的计时系统的设计方案[J].微型机与应用,2011,30(6):28-30.WANG Jie-wang.Design and implement of timing system based on STC89C52C MCU[J].Microcomputer& Its Applications,2011,30(6):28-30.
[6]张丹,贺西平.基于单片机的超声波测距系统的设计[J].纺织高校基础科学学报,2008,21(1):117-120.ZHANG Dan,HE Xi-ping.Design of ultrasonic distance testing system based on microprocessor[J].Basic Sciences Journal of Textile Universities,2008,21(1):117-120.
[7]胡宁博,李剑,赵榉云.基于HMC5883的电子罗盘设计[J].传感器世界,2011(6):35-38.HU Ning-bo,LI Jian,ZHAO Ju-yun.Digital electronic compass based on HMC5883[J].Senor World,2011(6):35-38.