单片机应用智能小车设计.docx
《单片机应用智能小车设计.docx》由会员分享,可在线阅读,更多相关《单片机应用智能小车设计.docx(62页珍藏版)》请在冰豆网上搜索。
单片机应用智能小车设计
智
能
小
车
设
计
所谓智能系统,应该是在没有人为因素干预下,能够完全的或者部分的对外部刺激因素做出适当响应的系统。
通常这种系统无论复杂还是简单,其硬件结构都可以分为传感、控制以及执行三个部分,好比人的各种感官、大脑以及四肢。
下面就从这三个方面进行智能小车的设计,该小车具备自动循迹能力(非人为控制下按照指定路线行走),并且随着不同传感器的加入,能够完成更多的功能,比如壁障、走迷宫、寻光、通过电脑及手机等上位机控制等等。
一、控制部分:
图1单片机最小系统原理图
图2控制信号输入部分原理图
图3控制部分电源输入开关
图4显示接口
图5DS18B20/1838一体化接口及ISP接口
该智能小车整个控制部分电路原理如以上5个图所示,可分为主控芯片最小系统、控制信号输入、电源以及各类接口四个部分。
1.主控芯片最小系统:
在本设计中所使用的主控芯片为51系列单片机,为保证其正常工作所必需的外围电路包括晶振电路、复位电路以及P0口上拉电阻。
当然以上三个部分只能保证单片机正常运转,但若只是这样基本没有什么实际意义,根据不同的任务要求,需要让单片机在适当的引脚上连接相应的设备。
这里结合智能小车所需的功能以及未来方便扩展的需要,除了设置4个3头插针连接红外光电开关、舵机(距离探测时会用到)以及给其他传感器供电外,还将单片机P0、P1、P2、P3口用排针引出,其中P1使用双排针,一排与8个LED灯相连,可在日后测试时方便观察信号变化。
具体连接如图1所示。
2.控制信号输入部分:
51系列单片机接收外部信号无非通过两个渠道,一个是其4个并行的I/O口,另一个就是其自带的串口,相较之下,串行口的拓展能力更强一些。
如图2所示,在本设计中,利用单片机的I/O口设置了4个按键进行人机交互,同时在其串口上连接了一块USB/串口转换芯片PL2303。
PL2303:
是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可提供一个RS232全双工异步串行通信装置与USB功能接口便利联接的解决方案。
该器件内置USB功能控制器、USB收发器、振荡器和带有全部调制解调器控制信号的UART,只需外接几只电容就可实现USB信号与RS232信号的转换,能够方便嵌入到各种设备,该器件作为USB/RS232双向转换器,一方面从主机接收USB数据并将其转换为RS232信息流格式发送给外设;另一方面从RS232外设接收数据转换为USB数据格式传送回主机。
这些工作全部由器件自动完成,开发者无需考虑固件设计。
PL2303的高兼容驱动可在大多操作系统上模拟成传统COM端口,并允许基于COM端口应用可方便地转换成USB接口应用,通讯波特率高达6Mb/s。
该器件具有以下特征:
完全兼容USB1.1协议;可调节的3~5V输出电压,满足3V、3.3V和5V不同应用需求;支持完整的RS232接口,可编程设置的波特率:
75b/s~6Mb/s,并为外部串行接口提供电源;512字节可调的双向数据缓存;支持默认的ROM和外部EEPROM存储设备配置信息,具有I2C总线接口,支持从外部MODEM信号远程唤醒;支持Windows98,Windows2000,WindowsXP等操作系统;28引脚的SOIC封装。
PL2303引脚功能列表:
引脚
名字
类型
引脚描述
1
TXD
输出
数据输出到串口;
2
DTR_N
输出
数据终端准备好,低电平有效;
3
RST_N
输出
发送请求,低电平有效;
4
VDD_325
电源
RS232的电源,为串行端口信号的电源引脚;当串口为3.3V,这应该是3.3;
当串行端口是2.5V,这应该是2.5V;
5
RXD
输入
串口数据输入;
6
RI_N
输入/输出
串行端口(环指示器);
7
GND
电源
接地;
8
NC
无连接
9
DSR_N
输入/输出
串行端口(数据集就绪)
10
DCD_N
输入/输出
串行端口(数据载波检测)
11
CTS_N
输入/输出
串行端口(清除发送)
12
SHTD_N
输出
控制RS232收发器关机
13
EE_CLK
输入/输出
串行EEPROM时钟
14
EE_DATA
输入/输出
串行EEPROM数据
15
DP
输入/输出
USB端口D+信号
16
DM
输入/输出
USB端口D-信号
17
VO_33
常规3.3V电源输出
18
GND
接地
19
NC
无连接
20
VDD_5
电源
USB端口的5V电压电源
21
GND
接地
22
GP0
输入/输出
通用I/O引脚0
23
GP1
输入/输出
通用I/O引脚1
24
NC
无连接
25
GND_A
模拟地锁相环
26
PLL_TEST
输入
PLL锁相环测试模式控制
27
OSC1
输入
晶体振荡器输入
28
OSC2
输入/输出
晶体振荡器输出
SSOP28封装
以上是PL2303芯片的基本介绍,通俗的讲就是该芯片通过驱动可以在PC机上虚拟出一个COM口,使USB接口模拟串口的功能,一般使用情况下主要关心1、5、15、16四个引脚,具体连接参看图2。
3.电源部分:
电源部分设计为双供电方式,从图3中可以看到,当切换开关上方闭合时,控制板通过电源接头供电,当切换开关下方闭合时,控制板通过USB接口供电。
4.各类接口部分:
这里所提供的接口分别为1602、12864LCD标准接口、DS18B20/1838一体化接口、ISP接口以及图2中所示的由PL2303芯片扩展的USB接口,保证了基本的输出扩展及传感器信号源扩展。
由于已将单片机的I/O口引出,不必担心接口是否够用的问题,日后根据需要通过杜邦线可以随时扩展新的接口。
二、执行部分:
这里所说的执行部分指的是智能小车上能够表现出其对外部条件作出的反应的部分,这种反应可以是运动,也可以是声或者光。
图6LED数码管显示
1.LED数码管显示:
图6所示为4位共阳极LED数码管显示电路,该部分可用于实时显示有关智能小车当前运行状态,比如速度、前方障碍物距离等等。
如果根据实际需要进行相应的扩展,则可以用于显示更多类型的信息,比如加入A\D转换器可以显示当前电池的电压情况,加入温度传感器可以显示当前的工作温度等等。
图7蜂鸣器
2.蜂鸣器
图7所示为简单的蜂鸣器电路,该蜂鸣器可用于对智能小车运行时的一些特定状况进行声音提示,如距离某物太近、转向、脱离轨道、电量过低等等,不同的状况可以使用不同的声音组合进行区分。
3.运动部分:
该智能小车的运动执行部分由减速直流电机、轮胎以及相应的驱动电路组成,具体如图8、9所示。
该部分负责实时的执行小车所需的各种运动(左右转、前进、后退等),若将轮胎部分换成履带或者其它专用轮胎,则可以执行翻越等更为复杂的运动。
下面就该部分原理做较为详尽的介绍。
图8直流减速电机及轮胎
图9双L298N驱动电路
直流减速电机:
直流减速电机相较于普通直流电机的最大区别就是加入了减速齿轮组,通过调整齿轮比可以在转速与扭矩之间进行权衡,降低转速则可以获得较大扭矩,带动更重的设备,反之扭矩则减少。
本设计中整个小车质量相对于普通5V直流电机来说比较重,若选用较大功率的电机,则耗电量与驱动电路的负载将会增加,况且并不需要太高的速度,所以选用减速电机,在同样的功率下通过降低转速获得足够的扭矩。
轮胎:
最常见的轮胎如图8中所示的圆形轮胎,也是本设计中所使用的轮胎,其对于一般硬质平地来说非常适用,除此之外还有履带,适用于较软并且凹凸不平路面以及专门用于攀爬楼梯等特殊障碍物的异形轮胎等。
驱动电路:
小车直流电机工作电流一般是200-400mA有些更大,该设计中是四个轮子,那么总的电流在800-1600mA左右,这些电机轮子都是要接受单片机指令执行相应的动作,而单片机I/O口一般只能提供5mA到10mA的电流,直接驱动不了电机,所以需要一个驱动模块,该驱动模块的作用就是根据单片机的指令提供足够的电流。
对于工作电压12V以下,功耗25W以内的设备可以选用专业的L298N,L293D驱动芯片。
这里我们选用L298N驱动芯片,该芯片可以同时驱动两个电机,所以采用双L298N方案。
L298N:
图10L298N内部结构图
L298N是ST公司的L298系列的一款常见的15功能引脚Multiwatt15或PoweSO20封装的产品,如图11所示,内部包含4通道逻辑驱动电路,即内含两个H桥的高电压大电流双全桥式驱动器,如图10所示,可以方便的驱动两个直流电机,或一个四相步进电机。
L298N可接受标准TTL逻辑电平信号,输入电压范围为+2.5~46V,输出电压最高可达50V,可以直接通过电源来调节输出电压,输出电流可达2.5A,可驱动电感性负载,可接入电流采样电阻形成电流传感信号,可以直接用单片机的IO口提供信号,而且应用电路简单,使用比较方便。
L298N引脚功能表:
引脚
(MW15)
引脚
(PSO20)
名称
功能
1;15
2;19
SenseA;SenseB
在该引脚与地之间连接一个用于电流采样的电阻,形成电流传感信号来控制负载电流。
2;3
4;5
Out1;Out2
A桥的输出,并且这两端之间的负载电流受到1号管脚的监测。
4
6
VS
供电电压输入端口,该端口的输入电压与桥的输出电压一致,范围为+2.5~+46V,使用时必须在其与地之间接上一个100nF的无感电容。
5;7
7;9
Input1;Input2
A桥TTL逻辑电平输入端,与对应A桥输出一致(逻辑高则输出,低则停止输出)。
6;11
8;14
EnableA;EnableB
逻辑电平使能端,为高则对应桥按照逻辑电平正常输出,为低时则停止。
8
1;10;11;20
GND
接地
9
12
VSS
逻辑参考电平输入端,使用时必须在其与地之间接上一个100nF的无感电容。
10;12
13;15
Input3;Input4
B桥TTL逻辑电平输入端,与对应A桥输出一致(逻辑高则输出,低则停止输出)。
13;14
16;17
Out3;Out4
B桥的输出,并且这两端之间的负载电流受到15号管脚的监测。
3;18
N.C.
悬空
图11L298N芯片封装
在该驱动电路中,除了L298N驱动芯片外还包括LM2596S降压稳压芯片以及ULN2003L集成达林顿管,具体连接如图9所示。
其作用分别为:
LM2596S降压稳压芯片:
该芯片可以稳定输出5V(可调)电压,用于给控制板以及传感器等较小功率设备提供一个稳定的电压,保证其的正常工作。
ULN2003L集成达林顿管:
将其所有管脚用排针引出,为了日后方便扩展更大功率器件。
在图9中的16只二极管起到稳压保护作用,当输出电压过高或过低时,可以将其稳定在合理的范围之内。
若在4个OUT之间加入发光二极管,则可以直观的看出当前驱动器的输出状态,即电机的工作状态,如图12所示
图12驱动状态指示电路
下面给出一路电机的控制逻辑表,其他三路电机逻辑类同。
从表中可以更为直观的看出L298N驱动芯片几个关键引脚的功能,IN1和IN2之间高低电平切换可控制电机正反转,EN端高低变换可控制L298N输出端是否按照输入信号执行。
用两个L298N连接前后左右4个电机,参照表中的逻辑给不同的IN输入逻辑电平,就可使小车完成前进、后退、左转、右转等动作,比如一块L298N芯片的OUT1、OUT2、OUT3、OUT4分别连接左侧前后电机的正极、负极、正极、负极,另一块L298N芯片的OUT1、OUT2、OUT3、OUT4分别连接右侧前后电机的正极、负极、正极、负极,此时两块L298N的IN端输入逻辑电平1010、1010则所有电机正转,小城前进;输入1010、0101则小车左侧前进,右侧后退实现右转等。
当然此逻辑会随着实际的连接而改变,但原理相同。
这里可以看到L298N中的EN端负责控制OUT端是否执行IN端的输入,使其在0、1之间按一定周期切换则可以实现小车的PWM控制,若想使小车全速运行,则需将EN端与逻辑高电位始终相连。
电机控制逻辑表:
IN1
IN2
ENA
电机
0
0
0
不转
0
1
0
不转
1
0
0
不转
1
1
0
不转
0
0
1
不转
1
0
1
正转
0
1
1
反转
1
1
1
不转
三、传感器部分:
若要使小车智能化,就必须使其能够对外界环境的变化自行做出适当地反映,在这个过程中最为关键的因素就是如何感知外界的环境,完成这一任务的就是传感器。
不同的传感器可以感知不同的环境因素,传感器越丰富,小车可获取到的因素种类就越多,这里将介绍几个常用的传感器。
1.四路红外线探测系统:
如图13所示该系统是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探测系统。
使用红外线发射和接收管等分立元器件组成探头,并使用LM339电压比较器(加入迟滞电路),防止临界输出抖动做为核心器件构成中控电路。
此系统具有的多种探测功能能极大的满足各种自动化、智能化的小型系统的应用。
图13四路红外线探测系统
应用范围:
1.智能化轮式车和智能化履带车循迹、避障、防跌落;
2.智能化小型机械人和智能化小型机械手物料检测、色相检测灰度检测。
特性:
1.易于安装,使用简便;
2.四路分别独立工作,工作时不受数量限制中控板与探头分开;
3.安装位置不受限制模块高度≤4厘米;
4.安全工作电压范围在4伏特至6伏特之间4路全开工作电流30毫安至40毫安之间;
5.带校正调节功能,R17、R18、R19、R20对应比较电压调节输出端为集电极开路,板载4.7千欧上拉电阻。
端口:
+5、GND:
电源接线端IN(1—4);
OUT:
探头与中控板连接端;
OUT1、OUT2、OUT3、OUT4:
对应输出端;
LED3、LED4、LED6、LED7:
对应输出指示;
原理:
图14所示为四路红外线探测系统中的一路原理图,其他三路与其一致,图中左半部份为发射,右半部份为接收,R17负责调整基准电压,加入迟滞电路,防止临界输出抖动。
测试方法:
如图15所示,左侧为传感器测试电路,右侧为传感器安装位置。
1.测试探头:
移开探头前面的所有物体,且探头不要指向阳光的方向。
将探头板接上电源后用万用表测最输出端电压。
此时的电压应当在1伏特左右。
用白纸挡在探头前。
用万用表测输出端电压应当接近电源电压。
2.测试中探板:
将测试好的探头按板上所标示的接入输入端子,移开探头前面的所有物体,且探头不要指向阳光的方向,将中探板接上电源后用万用表测输出端子,此时输出端输出的电压应当接近电源电压,用白纸挡在探头前,万用表测输出端电压应当接近0伏特,调整所在通道的电位器可以改变探测的距离。
图14一路红外线探测系统原理图
调试灵敏度:
1.调节其四路寻迹的的电位器(调节其灵敏度以适合其环境)具体调试方法如下:
先用手握住小车离地,左右晃动,从左到右第一对红外对管离开黑线时,中控板指示D3灯应会亮。
当红外对管进入黑线时,中控板指示D3红灯应会灭,调节中控板R17使其工作在上述状态。
同理,调节其它三对探头,使其正常工作。
2.对应顺序:
第二对红外对应灵敏度对应指示灯为中控板D4,调节灵敏度电位器R18;
第三对红外对应灵敏度对应指示灯为中控板D5,调节灵敏度电位器R19;
第四对红外对应灵敏度对应指示灯为中控板D6,调节灵敏度电位器R20。
图15探头测试
2.US-100超声波测距模块:
US-100超声波测距模块可实现0~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正(温度会影响超声波的测距精度),同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。
外观如图16所示,左图为正面,右图为背面,模块的尺寸为45mm*20mm*1.6mm。
板上有两个半径为1mm的机械孔。
图16US-100超声波测距模块
主要技术参数:
工作电压:
DC2.4V~5.5V;
静态电流:
2mA;
工作温度:
-20~+70度;
输出方式:
电平或UART(跳线帽选择);
感应角度:
小于15度;
探测距离:
2cm-450cm;
探测精度:
0.3cm+1%;
UART模式下串口配置:
波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验,无流控制。
接口说明
本模块共有两个接口,即模式选择跳线(背面与电路板面垂直的两个引脚)和5Pin接口(正面图中向下的5个引脚)。
模式选择跳线接口:
间距为2.54mm,当插上跳线帽时为UART(串口)模式,拔掉时为电平触发模式。
5Pin接口:
正面图中从左到右依次编号1、2、3、4、5,功能如下表所示:
1号Pin
接VCC电源(供电范围2.4V~5.5V)
2号Pin
当为UART模式时,接外部电路UART的TX端;当为电平触发模式时,接外部电路的Trig端。
3号Pin
当为UART模式时,接外部电路UART的RX端;
当为电平触发模式时,接外部电路的Echo端。
4号Pin
接外部电路的地。
5号Pin
接外部电路的地。
电平触发测距工作原理:
在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。
图17表明:
只需要在Trig/TX管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。
当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。
在此模式下,模块将距离值转化为340m/s时的时间值的2倍,通过Echo端输出一高电平,可根据此高电平的持续时间来计算距离值。
即距离值为:
(高电平时间*340m/s)/2。
注:
因为距离值已经经过温度校正,此时无需再根据环境温度对超声波声速进行校正,即不管温度多少,声速选择340m/s即可。
图17US-100电平触发测距时序图
串口触发测距工作原理:
图18US-100串口出发测距时序
在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式。
串口触发测距的时序如图18所示:
在此模式下只需要在Trig/TX管脚输入0X55(波特率9600),系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。
当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。
输出的距离值共两个字节,第一个字节是距离的高8位(HDate),第二个字节为距离的低8位(LData),单位为毫米。
即距离值为(HData*256+LData)mm。
串口触发测温工作原理:
图19US-100串口测温时序
在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式。
串口触发测温的时序如图19所示:
在此模式下只需要在Trig/TX管脚输入0X50(波特率9600),系统便启动温度传感器对当前温度进行测量,然后将温度值通过Echo/RX管脚输出。
测量完成温度后,本模块会返回一个字节的温度值(TData),实际的温度值为TData-45。
例如通过TX发送完0X50后,在RX端收到0X45,则此时的温度值为(0X45的10进制值)-45=24度。
超声波测距模块主要用于实现智能小车及机器人壁障这一功能,其型号有很多,但从原理上和使用方法上来讲大同小异,这我们的设计中采用US-100这个型号的超声波测距模块,主要是因为该模块本身具备温度校正功能,在编写程序时较为方便。
为了充分发挥超声波模块的作用,可给其配上一台舵机,使其能够实现多个方向的距离感应。
舵机:
在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。
舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。
舵机是一种俗称,其实是一种伺服马达。
图20舵机
1)工作原理:
控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。
它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。
最后,电压差的正负输出到电机驱动芯片决定电机的正反转。
当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
2)舵机的控制:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。
以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
3)用单片机作为舵机的控制单元:
用单片机可以使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。
单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。
单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:
首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。
当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。
这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。
图21单片机控制舵机基本流程
具体的设计过程:
例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。
用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运