基于STC89C52和nRF24L01的智能小车设计

嵌入式设计应用

128人已加入

描述

  智能小车,是一个集环境感知、规划决策、自动行驶等功能于一体的综合系统。它可以适应不同环境,不受温度、湿度等条件的影响,完成危险地段、人类无法介入等特殊情况下的任务,因此在军事、航空、探险等领域有着极其重要的应用。但随着应用的深入,在很多场合下需要多个小车之间可以实时通信,协作开展工作。基于上述考虑,本文基于STC89C52和nRF24L01开发设计了一款具备无线通信功能的智能小车。该小车不仅具备循线、避障等功能,而且在一定距离范围内可以实时无线通信,协作开展相关工作。

  1系统设计

  1.1系统整体方案设计

  基于STC89C52和nRF24L01的智能小车设计涉及到传感器的应用、无线数据传输等,系统总体方案如图1所示。

STC

  整个系统由单片机最小控制系统、电源模块、电机及驱动、无线通信模块、模式选择模块、循迹模块以及避障模块等。智能小车上电后,可由模式选择模块来确定小车的工作模式(作为主机或从机、循迹或避障等);循迹、避障模块是根据相应传感器所检测数据来执行相应动作。为了使多个小车能够同时协调工作,需要获取对方的精确定位,这里可建立坐标系并根据运行情况实时更新坐标,并通过设计通信模块及相应通信方式来实现小车之间的通信。

  1.2特征信号选择

  要实现自动行驶,智能小车的传感系统必须通过各类传感器,获取小车的状态特征、道路环境特征两类特征信号。

  1.2.1小车特征参数

  小车在共同工作时需要明确对方位置及行驶模式,从而可以获得信息采集点坐标。特征状态包括如下参数:

  行驶模式,由拨码开关确定的行驶模式。

  小车坐标,小车当前位置相对于上电地点的坐标。

  程序标志位,标志数据是否接收完数据。

  方向,小车当前状态与x轴方向的夹角。设上电时车身前方为x轴方向,逆时针旋转90°为y轴方向。单位脉冲转角,微控制器输出单位脉冲小车所转角度,数据需测量得到。

  单位脉冲位移,微控制器输出单位脉冲小车改变位移,数据需测量得到。脉冲数,小车运动时微控制器所输出脉冲数。

  1.2.2环境特征参数

  实际工作时,两车需获知对方所处状态,故无线传输数据中应包括环境特征参数。环境状态包括以下参数:

  状态位,小车在运行过程中检测到标志线后状态标志。

  道路状态,由激光传感器读取的道路状态。

  障碍物状态,由光电传感器读取的障碍物状态。绝对位移,两车之间的相对位置。

  1.2.3参数定义及计算

  对程序中各个参数的定义见表1。

STC

  小车方向的计算公式如式(1)所示:

  angle=angle±n*Δangle(1)

  坐标的计算公式如式(2),式(3)所示:

  x=x+cosα*n*Δs(2)

  y=y+sinα*n*Δs(3)

  绝对位移的计算公式如式(4)所示:L0=(x 1-x2)2+(y1-y2)2(4)

  2系统硬件实现

  2.1单片机最小控制系统

  单片机最小控制系统原理图如图2所示,本系统采用STC89C52单片机作为控制核心,微控制器通过I/O口与各个模块相连。

  STC89C5是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程FLASH存储器。具有以下标准功能:8KB FLASH,512BRAM,32bI/O口线,看门狗定时器,内置4KB E2PROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。此次设计传感器共需要控制器I/O口20个(传感器6个,电机4个,无线模块6个,拨码开关4个),对输出处理速度要求并不高,STC89C52芯片的I/O口,中断及定时器完全可以满足其功能要求。

  2.2电机驱动

  由于单片机输出电流无法直接驱动电机,本系统采用基于TB6560芯片的步进电机驱动用以驱动步进电机。

  TB6560是东芝公司推出的低功耗、高集成两相混合式步进电机驱动芯片。其主要特点有:内部集成双全桥MOSFET驱动;最高耐压40V,单相输出最大电流3.5A(峰值);具有整步、1/2,1/8,1/16细分方式;内置温度保护芯片;具有过流保护;采用HZIP25封装。

  基于TB6560的驱动电路中步进电机控制信号有3个(CLK,CW,ENABLE),分别由微控制器的P0.0,P0.1端控制电机的方向(转向时输出电平类型相反,前进时输出电平类型相同),P0.2,P0.3控制电机的转速,本电路中使能端始终接+5V。

  2.3通信模块

  本系统的无线通信模块采用nRF24L01无线模块。nRF24L01是一款内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术的新型单片射频收发器件。工作于2.4~2.5GHz ISM频段,其中输出功率和通信频道可通过程序进行配置。nRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。

  由模式选择模块确定小车的主、从机模式后,主机检测到相应标志线后发送数据,从机接收到数据后应答并反馈回自身信息,并执行相应程序。

  nRF24L01无线模块原理图如图3所示,CE引脚功能为使能发射或接收,由P1.0控制;CSN,SCK,MOSI,MISO为SPI引脚端,微处理器可通过P1.1,P1.2,P1.3,P1.4来配置nRF24L01;IRQ为中断标志位,由P1.5控制。

STC

STC

  2.4循迹模块

  循迹模块采用3个激光传感器,型号为HLSD-2010B,分别置于小车左、右、前方,通过P2.5,P2.6,P2.7控制。

  HLSD-2010B激光传感器的工作电压为5V,工作电流最大为30mA,信号输出方式为直接电平输出。

  激光传感器真值表见表2,控制器对于不同的测量值会执行不同的动作。

  2.5避障模块

  避障模块采用4个光电传感器,型号为E18-D80NK分别置于车体前方位置。

STC

  光电传感器E18的技术参数工作电压5V,消耗电流DC小于25mA,响应时间小于2ms,指向角小于等于15°,有效距离为3~80cm可调,工作环境温度为-25~55℃。

  根据不同环境可将智能小车避障运动分为四种情况,如图4所示。

  STC

  (1)只有1,2号红外传感器检测到障碍物,此时小车向右运动,若3,4号传感器检测到则向左运动方向运动。

  (2)当前方发现障碍物,1,4号均未检测的障碍物时,令小车向右运动。

  (3)当4个红外传感器都测到障碍物时,小车先倒退,然后向右运动。

  (4)若1,4检测到障碍物而1,3没有检测到障碍物,小车并不改变方向仍按直线行走。

  2.6电源模块

  本系统采用2节容量为2 250mA·h,额定电压为3.6V的锂电池供电。由于系统中单片机、循迹模块及避障模块的工作电压为5V,无线模块工作电压为3.3V,设计过程中采用两个由LM2596芯片构成的DC-DC稳压模块。

  原理图如图5所示,对于微控制器稳压模块,输入为7.2V,输出为5.0V;对于nRF24L01稳压模块,输入为5.0V,输出为3.3V。

  STC

  3系统软件开发

  本系统程序设计采取模块化的编程思想对各个模块进行程序编写。在Keil4软件所提供的平台进行开发。

  主程序流程图及中断子程序流程图如图6,图7所示。

 STC

  设A车为主机,B车为从机。A车正常运行一段时间后发送自身特征参数与环境特征参数数据给B车,随后进入接收模式等待应答信号,从机接收到信息后返回应答信号。单次通信成功后A车转入接收模式,等待B车发送自身特征参数与环境特征参数,互相接收完成对方数据为一次完整通信成功。A、B在通信成功后又返回原行驶模式,并处理所接收对方数据后执行相应程序。

 STC

  无线传输数据包格式为:x轴坐标-y轴坐标-状态位-道路状态-障碍物状态。

  4结语

  本文基于51单片机和nRF24L01无线模块设计的智能小车,其硬件部分采用模块化的设计思路不仅为软件的调试提供便利,同时有利于其他功能模块的添加。该智能小车不仅包含避障、循迹等功能单元模块,而且包含了无线通信模块,实现了多车之间的实时通信,为多车协作开展高复杂度和高难度工作提供了可能性。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分