走迷宫的小车.docx
《走迷宫的小车.docx》由会员分享,可在线阅读,更多相关《走迷宫的小车.docx(23页珍藏版)》请在冰豆网上搜索。
走迷宫的小车
电子设计大赛
走迷宫的小车
摘要:
本系统采用ST公司ARM7芯片STR710FZT6为核心进行设计,合理利用了该芯片上丰富的资源,实现小车智能蔽障、寻迹,信息无线传输等功能,从而在远端PC上对获取的信息进行实时显示。
本系统针对现实中出现的对于未知区域实时探测的需求,适当进行了简化,利用迷宫进行模拟。
其中,有一台智能小车,和一个PC端。
小车在迷宫行进的过程中,会自动蔽障、选择路线,并通过无线模块将行进的信息实时传送给远端PC机,从而在PC端显示出小车在迷宫中行进的路线。
为了达到在迷宫中行走的目的,我们要设计蔽障和迷宫算法,为了使小车的信息能够实时传输到远端PC机,就需要设计一套较为实用和可靠的无线通信协议。
目录
1 引言...4
2 功能概述及方案设计...6
2.1功能概述...6
2.2具体方案设计...7
2.2.1系统总体方案设计...7
2.2.2小车控制模块设计...7
2.2.2.1 小车车体的设计...7
2.2.2.2 小车控制器模块...8
2.2.2.3 电源模块...8
2.2.2.4 稳压模块...8
2.2.2.5 电机驱动模块...8
2.2.2.6 小车控制模块设计...8
2.2.2.7 车速检测模块设计...8
2.2.3 超声波模块设计...9
2.2.4 无线通信模块设计...10
2.2.4.1 硬件选型...11
2.2.4.2 通信协议介绍...15
2.2.4.3 利用ARM芯片上的资源...18
3 系统硬件设计...19
3.1硬件设计概述...19
3.2电机驱动模块设计...19
3.3测速模块设计...19
3.4超声波模块设计...20
3.5无线通信模块...21
3.6电源模块硬件设计...22
4 系统软件设计...24
4.1下位机控制模块...24
4.1.1模块描述...24
4.1.2系统资源使用情况...25
4.1.3主控模块设计...25
4.1.4小车控制模块...26
4.1.5超声波模块...26
4.1.6无线通信模块...26
4.2 PC机处理模块...26
5 现在所完成的工作...27
6 结束语...27
1 引言
当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。
同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成考古发掘,海底揭密,宇宙探索等危险作业,以保证人身安全。
《国家中长期科学和技术发展规划纲要》一文指出:
智能服务机器人是在非结构环境下为人类提供必要服务的多种高技术集成的智能化装备。
以服务机器人和危险作业机器人应用需求为重点,研究设计方法、制造工艺、智能控制和应用系统集成等共性基础技术。
重点研究低成本的自组织网络,个性化的智能机器人和人机交互系统、高柔性免受攻击的数据网络和先进的信息安全系统。
2006━2020年,既是国家中长期技术发展计划实现阶段,也是我们最具有活力和最激情洋溢的时段。
于是,我们五个人认识到自己的位置,都对智能机器人的研发和制作有着强烈的好奇心,有着共同爱好和理想,想用自己的青春和智慧挥写这段焕发青春活力的乐谱。
凭借参加本次大赛的机会,我们能够对嵌入式系统的开发有进一步的学习和理解。
ST公司的ARM7芯片STR710FZT6具有丰富的资源,内嵌256+16KB的FLASH和64KB的SRAM。
APB桥它有2个分立的桥:
APB1是针对快速外设,例如I2C、UART、USB、CAN、SPI、HDLC;APB2是针对慢速外设,例如EIC、XTI、GPIOs、ADC12、Timer、RTC、Watchdog。
特色:
APB桥控制着外设时钟开启和控制所有外设的复位。
EIC的特色:
多个中断通道的硬件操作,中断优先级、自动向量化;32个可屏蔽中断,映射在ARM的中断查询引脚IRQ;每一个IRQ中断都有16个可编程优先级别;支持硬件中断嵌套(15级);2个可屏蔽中断,映射到ARM的快速中断查询引脚FIQ,既无优先级也不会自动向量化,等等。
我们的系统主要分为控制小车模块、超声波模块、无线通信模块。
前两模块主要是用到控制IO口和定时器,后一模块主要用到SPI总线和串口。
所以我们的系统没有外扩存储器,也没有USB等,对这块ARM的利用率不高,但我们看重的是这块芯片的性价比以及强大的可扩展性,因此选择这块ARM芯片是满足我们要求的。
2 功能概述及方案设计
2.1功能概述
我们设计的“走迷宫的小车”这一套系统主要是让小车自主的从迷宫的入口走到出口,并把行走的轨迹传输给电脑,绘制出走出迷宫的路线。
在这一过程中,小车通过前、左、右三个超声波模块实现对周围障碍物的实时测距来实现避障功能;在小车的行走过程中,也会实时地把小车的移动距离、速度等信息通过无线传输反馈给电脑;在转弯的时候就会把转弯的角度、移动距离等信息反馈给电脑,让电脑根据所接受到的信息绘制小车的行走路线。
另外,无线传输这一模块还具有自动组网的功能,在多台小车之间也可以通信,这样,多台小车同时探测这一迷宫能大大的提高效率。
若一下图为迷宫,则完成效果图如下:
2.2具体方案设计
2.2.1系统总体方案设计
我们将系统分为小车控制模块、超声波模块、无线通信这三个大模块。
其中小车控制模块包括小车以及轮胎上的红外对管模块;无线通信又包括小车这一端和与电脑相连的一端。
图1.系统框图
2.2.2小车控制模块设计
2.2.2.1 小车车体的设计
我们是购买玩具电动车。
购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。
玩具电动车具有如下特点:
首先,玩具电动车电机都是现成的,在上面架一块板子就可以放下电路板,各种传感器的安装也较方便。
其次,所购买的电动车是由两电机控制的,一个负责左边两轮子,另一个负责右边两轮子。
这样可以进行原地90-180度转弯。
2.2.2.2 小车控制器模块
控制器模块采用的是ST公司的一片ARM芯STR710FZT6,该芯片大大满足我们的需要,片上资源很多,扩展性很好。
2.2.2.3 电源模块
采用12V蓄电池为直流电机供电,将12V电压降压、稳压到5V,为外围芯片供电,再降压稳压到3.3V给ARM芯片供电。
蓄电池具有较强的电流驱动能力以及稳定的电压输出性能,所以我们采用锂电池供电。
2.2.2.4 稳压模块
我们利用lm7805这块芯片将12V的锂电池降压到5V,再利用lm117这块芯片将5V降压到3.3V。
2.2.2.5 电机驱动模块
采用专用芯片L298N作为电机驱动芯片。
L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
2.2.2.6 小车控制模块设计
小车的控制是由专用芯片L298N来完成的,我们用六个IO口来控制小车的运动,其中两个IO口是产生PWM波,控制电机的速度;另外四个IO口又分成两组,分别控制两个电机的正反转,来实现小车的变速前进、转弯等动作。
2.2.2.7 车速检测模块设计
对于小车的车速检测及距离确定的一般原理是这样的:
小车的行驶过程是一个连续的时间过程,它的时间、路程、速度都是连续的。
我们用t表示时间,S表示路程,υ表示瞬时速度,那么它们的数学定义为:
,
,小车的平均速度为:
。
将上面的式子离散化,假设在一个很短的时间t内小车行驶了S的路程,则小车的即时速度
。
直接得到小车的速度的传感器很难实现,但是小车行驶的距离是容易测量的,因为车轮在行驶的过程中一直在旋转。
假设车轮的周长为L,在时间t内转动了N圈,则小车行驶的距离为:
S=N·L。
在实际过程中,我们需要把车轮的转动信息转换成电信号,就是使用速度传感器得到脉冲信号。
如果小车转动一周得到一个信号,则很显然的,距离测量的最大误差就是车轮的周长。
因此,我们有必要在车轮转动一周的过程中得到尽可能多的计数脉冲。
假设在车轮转动一周的过程中均匀地得到m个脉冲信号,那么距离测量的最大误差就变为L/m,如果在时间t内得到的计数脉冲为N个,那么小车行驶的距离为:
。
因此,在小车的速度和距离的检测过程中最需要知道的就是车轮旋转时产生的脉冲个数。
速度传感器有多种,我们采用的是反射式光电传感器。
原理如下:
由发射管TX发射的红外线经被检测物表面反射,反射光被接收管RX接收,接收管将接收的红外线信号转换成电信号。
被检测物表面的光滑程度和表面颜色影响反射光的强弱,反射面越不光滑,颜色越暗,则反射光越弱。
在这里,我们就是要利用它对颜色敏感的特点,当检测物表面为黑色时,反射光很弱,接收端检测到的光线可以忽略,使接收端呈现一种状态,例如开关管截止;当被检测物表面为白色时,反射光强烈,发射端发射的红外线被接收端全部接收,使接收端呈现另一种相反的状态,例如开关管开通。
这两种相反的状态表现在电路中,就是高低电平组成的脉冲信号。
在我们的系统中,我们在每个轮子外表面涂上了黑白相间的条纹,每个反射式光电传感器由一个IO口来得到脉冲信号。
通过前面叙述的原理,我们就可以算出小车的速度和行走的距离。
当然这个速度和距离存在着误差,这个误差在我们的系统中是允许的。
2.2.3 超声波模块设计
超声波模块是用来测距并且避障用的,我们没有选用现有的超声波模块,而是自己根据超声波的原理,利用超声波探头和一些外围电路而搭建起超声波模块。
超声波测距的原理如下:
首先超声波传感器向空气中发射声脉冲,声波遇到被测物体反射回来,若可以测出第一个回波达到的时间与发射脉冲间的时间差t,利用
即可算得传感器与反射点间的距离s,测量距离
若s>>h时,则d≈s。
系统中有三个超声波模块,其中每个都有接收探头与发射探头,这三个模块分别位于小车的前、左、右处,来进行测距以达到避障的效果。
对于放射探头,我们选用的是发射频率为40KHz的一种,该类型现在应用较普遍,电路也比较简单,只需给发射端40KHz的脉冲,发射探头即不断的往外发送超声波。
对于接收探头,因为接收的超声波信号很微弱而且考虑到干扰的因素,接收端有放大电路与滤波电路。
当接收到超声波时,IO口即为高电平。
若此IO支持外部中断,则可在MCU中引发中断。
在我们的系统中,三个超声波模块接收端都有外部中断功能的IO口来确定是否检测到超声波。
因此通过计算测的距离障碍物的距离然后就可以判断是否转弯。
2.2.4 无线通信模块设计
无线通信模块的作用非常重要,它为小车的行走指明了方向,也拓展了小车的其他功能。
当小车行走时,每隔一定时间将数据譬如速度、行走距离、转弯角度等信息传送给PC机,当下次小车行走到原地时,小车该如何走呢?
假如还是照以前的路线走这样小车的行走则成为了死循环,而这时如果PC机通过以前记录的信息发送一条指令给小车,则小车就可以选择另外一条路进行探测了。
我们的无线模块是仿Zigbee的,但又不同于它。
有了此无线通信模块,我们的小车系统就可以不是一辆小车而是多辆小车共同探测迷宫了。
原理如下:
2.2.4.1 硬件选型
硬件方面我们的射频芯片采用Chipcon公司的CC1100芯片,用于数据的无线收发,工作频率为433MHz,它有64字节RX和TX数据FIFO;SPI用于MCU与射频芯片CC1100之间的通信;直流电源及电源保护电路是必不可少的部分;RS232串口及电平转换提供主芯片与PC机的接口;阻抗匹配网络和天线用于433MHz信号的放大和收发。
CC1100的主要特性:
电压范围-0.3V-3.6V、频率波段:
300-348MHz、400-464MHz和800-928MHz、高灵敏度(1.2kbps下-110dBm,1%数据包误差率)、可编程控制的数据传输率,较低的电流消耗(RX中15.6mA,2.4kbps,433MHz)、单独的64字节RX和TX数据FIFO、高效的SPI接口、对同步词汇侦测的芯片支持,地址检查,自动CRC处理、OOK和ASK整型支持、2-FSK,GFSK和MSK支持、支持传输前自动清理信道访问(CCA),即载波侦听系统、支持每个数据包连接质量指示。
内部结构如下图:
匹配电路介绍:
阻抗匹配的意义在于,使信号源传送到负载的功率最大。
这就要求信号源阻抗必须等于负载的共轭阻抗,即:
Rs+jXs=RL-jXL
匹配效果如图35
图35匹配电路效果图
常用的阻抗匹配电路有:
1.L型匹配;
2.π型匹配;
3.T型匹配;
4.多L型匹配。
L型匹配电路是阻抗匹配电路的基础。
L型匹配电路图如图36
图36典型L型匹配电路
其中匹配电路参数值计算如下:
图37L型匹配电路计算
若RS>RL:
因为有:
=>
同理有,当RS若B>0,则表示元件为电容:
。
若B<0,则表示元件为电感:
。
若X>0,则表示元件为电感:
。
若X<0,则表示元件为电容:
。
CC1100芯片的输出阻抗为Zin=116-j*41,天线阻抗为50欧。
本射频电路的匹配电路中使用了四级L型匹配电路。
各元器件功能及参数值描述如表格31
表格31匹配电路元件参数
元件名称
433MHz值,封装及材质
功能
C51
100nF±10%,0603,X7R
数字部分的片内电压调节器的100nF退耦电容
C81
33P/X7R,0603
晶体负载电容
C101
39P/NPO,0603
晶体负载电容
C121/C131
3.9P/NPO,0603
RF平衡转换器/匹配电容
C122
6.8P/NPO,0603
RF滤波/匹配电容
C123
5.6P/NPO,0603
RF滤波/匹配电容
C124
220P/NPO,0603
RF平衡转换器DC模块电容
C125
1nF/NPO,0603
RFLC滤波DC模块电容(只在在天线中有DC通路时需要)
L121/L131/L123
27nH
RF平衡转换器/匹配电感(便宜的多层类型)
L122
22nH
RFLC滤波/匹配电感(便宜的多层类型)
R171
56kΩ±1%,0603
内部偏电流参考的56千欧电阻
XTAL
26.000MHz
晶振,武汉佳泰公司
2.2.4.2 通信协议介绍
本系统采用“星型”组网方式,与PC机相连的通信/控制模块(即主控板+射频板)称为主节点,与小车相连的通信/控制模块称为子节点。
PC机控制主节点以完成组网及与各子节点的数据传输。
主节点可与所有子节点相互通信,子节点只能同主节点进行通信、子节点之间不能相互通信。
主节点与子节点的工作示意图如下:
图32工作示意图
工作大致流程描述:
1.主节点/子节点启动过程:
1)主节点无线模块上电后,立即向PC机发送“上电完成报告”;
2)PC机向主节点回复“上电回复报告”,指定节点类型为主节点。
3)子节点上电后,直接将自身指定为子节点;
2.主节点与各子节点间组网过程:
1)指定结束以后主节点开始启动组网过程,等待PC机向其发送“组网结束命令”;
2)主节点收到“组网结束命令”后,发送停止组网命令给各子节点(注意:
协议中将系统设计为一主带多子,现在只实现一主带一子),子节点无线模块收到主节点无线模块停止组网的控制命令后,进入数据通信状态,即可以开始发送数据。
主节点无线模块停止组网完成后,向PC机发送“网络空闲报告”,指
示PC机网络空闲,可以进行数据通信。
3.PC机与各子节点间数据通信过程:
1)PC机通过串口将数据或控制命令交给主节点;
2)主节点无线模块将数据或控制命令通过无线方式传给子节点无线模块;
4.各子节点与PC机间数据通信过程:
1)子节点将自身运动信息或异常情况整理成数据报文;
2)子节点无线模块将数据通过无线方式传给主节点无线模块;
3)主节点通过串口将数据转交给PC机;
5.在3、4数据通信过程中,PC机可向主节点无线模块发送检测、重启、复位等控制命令,主节点无线模块收到这些命令后,分别对各子节点进行相应处理。
层设计示意图如下:
各层帧格式示意图如下:
1.物理层帧格式
物理层在上层数据前端加入FrameLength,在后端加入CRC两部分。
由芯片硬件提供CRC校验功能。
2.MAC层帧格式
MAC层在上层数据前端加入DstAddress,SrcAddress,FrameType,SequenceNO四部分。
MAC层产生ACK帧,DATA部分长度为0,用于完成该层保证可靠传输的任务。
3.应用层帧格式
应用层数据为各种串口传送的数据和各种控制命令。
应用层实现以下功能
1.串口数据的解析和组装
2.组网和网络状态的维护
应用层报文格式如下:
2.2.4.3 利用ARM芯片上的资源
CC1100是通过SPI总线与ARM通信的,ARM上提供了这一资源。
另外,无线通信模块需要大量的定时器,定时器的数量与通信质量密切相关,但是我由于资源的有限,而且我们对精度的要求不是很高,所以我们采用了一个定时器来模拟出多个定时器的方法,这样无线通信丢包率很小。
3 系统硬件设计
3.1硬件设计概述
本系统硬件不是很复杂,大多都是外围电路,没有较复杂的集成芯片。
硬件方面也分为以下几个模块:
电机驱动模块、测速与距离的确定模块、超声波模块、无线通信模块以及电源模块。
3.2电机驱动模块设计
电机的驱动是由集成芯片L298来实现的,由六个IO口经四个与门再由L298输出四路信号来控制两电机。
电路图如下:
其中IO口P1.2与P1.7是定时器1和3的输出端,用来产生PWM波;P2.2、P2.3、P2.4、P2.5是普通IO口,用来控制电机运动的方向。
3.3测速模块设计
测速模块主要是由st168和轮胎的黑白间条组成。
st168的外形及内部结构如下图:
这块电路图如下:
我们的系统共有四个这样的模块,每个轮子上一个。
只需一个IO口来记录来冲数目。
这四个IO口分别是P2.14、P2.15、P2.0、P2.1。
3.4超声波模块设计
超声波模块分为发射端与接受端,电路是参考网上提供的电路,接收最大距离是满足我们的系统的,效果还可以,若进一步修改此电路,则效果会更理想。
发射端电路如下:
接收端电路如下:
接受端的IO口是具有外部中断功能的,当接收到信号,MCU就会触发中断,这时记录时间间隔然后就可以计算出距离障碍物的距离了。
我们在小车的前、左、右都安装了发射与接收探头,让小车全方位避障。
另外,可能由于障碍物特殊的形状,可能会造成混叠的现象,即一发射端发射的超声波被另外一个接受端接受,造成测距失败。
这一问题还有待按照实际情况来解决,比如让发射与接收探头成一定的角度等方法。
3.5无线通信模块
无线通信模块主要由射频芯片CC1100构成,而我们采用的是它的典型电路,电路图如下:
它与ARM的通信是通过SPI总线来实现的,它的接口主要有SI、SCLK、SO、GDO0、GDO2、CSn。
其中SI、SCLK、SO即为利用SPI总线通信的几个接口,另外GDO0的作用是当接受到报文的时候由低置为高,GDO2的作用是当开始发送一个报文时由低置为高,这两个接口给MCU提示报文的接受与发送是否完成。
CSn用来作片选。
3.6电源模块硬件设计
电源模块主要是经过两次降压,分别供给ARM芯片的外围芯片和ARM芯片,这两块电路如下:
4 系统软件设计
4.1下位机控制模块
4.1.1模块描述
下位机控制模块是本系统的一个重要组成部分,它包括系统配置模块,主控模块,无线通信模块,小车控制模块以及超声波模块。
各模块功能如下:
系统配置模块提供整个系统(主要为ARM芯片)的初始化及中断配置功能;主控模块封装了main函数,提供下位机程序运行的大环境;无线通信通信模块提供下位机与PC机以及通信模块的通信途径;无线通信模块通过控制通信模块以提供本系统所需的无线连接功能;小车控制模块控制小车的运动,并检测其速度及行走距离。
我们的软件部分总体框图如下:
程序结构图如下:
4.1.2系统资源使用情况
☑ RAM的使用
⏹ 定义部分参数变量,程序运行时的必要堆栈空间
☑ 单片机内部Flash的使用
⏹ 存放程序。
☑ 中断源的使用
⏹ 定时器0中断用于通信协议的构造
⏹ 定时器1中断产生一路PWM脉冲
⏹ 定时器2中断产生40KHz的脉冲以及轮询四个红外对管
⏹ 定时器3中断产生一路PWM脉冲
⏹ 外部中断 接收超声波,然后测距
☑ SPI总线
⏹ 与射频模块CC1100通信
☑ 串口
⏹ 与电脑通信(扩展)
4.1.3主控模块设计
该模块提供了系统的主循环控制功能,包含系统的main主循环和中断处理部分。
系统在一个主循环中不断运行,查询各个标志位,以实现各种功能,同时,中断处理中也会执行某些紧急操作,并置位某些标志位以指示系统进行某些操作。
4.1.4小车控制模块
小车的控制模块主要分为直线运动与转弯运动。
小车在直线运动时每个一定时间间隔就发送报文给PC机。
当小车发现距离障碍物的距离达到一数值时,它将转弯,而转弯的方向具体由障碍物来决定。
定时器2不断的轮询st168从小车轮胎上的黑白间条上得到的信号,不断地调整两边轮胎速度的一致,因为小车的沿一条直线运动是很困难的,在运动时可能发生偏转,我们利用这种方法较少这种偏差。
4.1.5超声波模块
超声波模块主要是用来测距用的,当检测到距离障碍物很近时,就给主程序一个信号,提示要转弯了,而转弯的角度则通过不断的测距来实现,当距离稳定后则不再偏转。
4.1.6无线通信模块
无线通信模块主要是提供程序一些发送报文或接受报文的接口。
4.2 PC机处理模块
PC机程序不断通过串口接受PC端射频模块传输过来的数据,其中包括小车运动的速度、距离和转弯时转过的角度,利用这些数据模拟出小车大概的行走路线,并且在程序界面上表现出来。
5 现在所完成的工作
我们所完成的工作是对硬件的设计并作了些验证性试验,对于无线通信模块我们是用PIC单片机来实现通信的,效果不错,通信距离能达到50m(在无障碍的时候),所以在我们的小车系统里,为节约成本,连接在PC端的射频模块我们就采用与PIC单片机相连,然后通过串口与PC机通信;对于超声波模块,我们搭起了电路,但是效果不是很好,还有待改进;对于小车控制模块,我们能够正常的控制小车的运动和转