智能循线避障小车设计报告 docx

更新时间:2024-05-27 13:23:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

智能循线避障小车设计报告

设计者:张源 杨文龙 张炜

2009年5月23日

指导教师:王建校 金印彬

智能循线避障小车

智能循线避障小车

摘要:

本文阐述了智能循线避障小车从机械结构设计到电路设计直至程序设计的整个过程, 课题涉及传感器电路设计、直流减速电动机的控制(PWM)以及ARM7芯片的程序设计。循线避障小车可以实现循线和避障双重功能,通过反射式红外光电传感器,可以实现对于地面上颜色反差较大的线条的循行。同时也能够通过光电传感器的作用,避开前进方向上的障碍物。实验结果表明,智能循线避障小车能够实现沿着地面上的黑线循进,判断障碍物设置情形从而实现大角度转弯。

关键字:循线、避障、红外探测、PWM调速

1 前言

1.1 课题描述

循线避障机器人能够沿着地面上的黑线循进,判断并实现大角度转弯。同时可以通过红外传感器探测行进及左右方向上的障碍物,并相应的在绕过障碍物后回到黑线上继续循进。同时,通过对障碍物信息进行编码能够实现绕过较为复杂的障碍物。

为了将循线避障小车做成一个机器人实验平台方便以后使用或改进,课题设计的过程始终坚持模块化的原则——电路尽量做到模块化分组,模块与模块之间通过接插线联系

1.2 课题任务

1)选择合适的机械材料,设计出合理的车身结构;

2) 设计出实现循线和避障功能的电路并分不同模块进行调试; 3)编写程序并分步调试,实现预定功能要求。

1.3 具体要求

1) 设计合理的机械结构,在保证稳定牢固的前提下,尽量做到车身轻巧美观;

2) 通过采用电压比较器,实现7路传感器的正常工作,达到可以控制循线宽度和避

障的距离目的;

3) 使用直流电机控制芯片,采用PWM调速方式实现直流减速电机的正转、反转、

加速和减速功能;

4) 对行进轨迹和障碍物信息进行编码,利用ARM7芯片编程实现小车的循线避障功

能;

5) 采用模块化的原则,分层搭建电路板并通过接插线予以连接。

2 方案设计与论证

由上述设计要求可知,本课程设计核心的问题有两个:车身机械结构设计和系统电路原理设计,下面将从这两方面予以展开。

2.1 机械结构设计

在车身结构设计中,保证其机械强度至关重要,同时应当尽量减少车身自重,以便实现快速控制的目的。与此同时,车身结构美观也是一个重要的设计要素。 ? 方案一:从市场上直接购买成片的玩具小车,在其底板基础上安装电路板和传感器,实

现四轮驱动。 ? 方案二:自制底板,根据需要选择合适的尺寸,采用前轮驱动,加装万向轮,从而实现

循线和避障的功能。

2

智能循线避障小车

实际设计中发现由于电路板大小限制导致方案1实施困难,同时,四轮驱动使得控制环节复杂。综合考虑,最后确定采用方案2。

2.2 电路系统设计

?

?

?

?

设计任务表明,电路系统主要包括三部分:传感器电路、电机驱动电路和芯片控制电路。 控制系统——由微处理器构成,是小车的核心,负责处理传感器传递过来的场地信息,同时作出相应判断,然后向电机控制电路发出控制指令。 执行系统——接受处理器发送过来的指令,驱动车身前进、后退以及其他相应的姿态调整。

场地信息监测——主要是检测地面上的黑线以及障碍物的位置,将获得的信息传递给处理器。主要包括黑线检测和障碍物检测。

电源——为以上各个系统提供安全的工作电压。 以下是循线避障小车系统的结构简图:

图1 循线避障小车系统的结构简图

2.2.1 电路系统设计方案选择 2.2.1.1传感器选择

传感器可以分成两部分:黑线检测传感器和障碍物检测传感器。考虑到电路的实现难易程度,现将基本电路选择表述如下:

首先,对于黑线检测传感器,考虑到红外光会被暗物体吸收的特性,可以采用ST168单束反射式光电传感器,实现发射接收一体化。

电路图:

TCRT5000障碍物A

KECAKEC

图2 st168单束反射式光电传感器

3

智能循线避障小车

功能:通过红外光的发射和接受,实现电路的导通和关断。

原理:由高功率发射管发射红外光,当遇到障碍物后被反射回来,被高灵敏度的光电管接受,传感器电路导通;当未到障碍物时,传感器电路关断。

其次,对于障碍物检测传感器,小组成员在设计起初提出以下两种传感器电路,先分别予以解释。 ? 方案一:发射和接受固定频率的红外光

1)发射电路:

Input:?9v~+15v19K8K876438kHZNE5553210215101

图3 红外光发射电路

功能:发射38KHz的红外光

原理: 由于红外发射/接收电路时用来探测前进方向上的障碍物,但是由于外界光线的干扰,所以所发射红外光线经过38KHZ调制(接收电路所采用的芯片HS0038接收38KHZ的信号)。采用555搭建谐振电路,产生38KHZ,占空比为50%的方波

2)红外接收电路:红外接收电路以HS0038芯片为核心。 电路图:

+5v10K3HS0038821

图3 红外光接受电路

功能:探测经障碍物反射回来的38KHZ调制光线

原理:HS0038B是常见的红外接收芯片。当接收到38KHZ的红外光线是,其输出端1输出低电平。电路中,3和1之间的电容(104),是用于隔离高频干扰的

4

10K102智能循线避障小车

?

方案二:采用集成的红外光电对管

采用TCRT5000单束反射式光电传感器,实现发射接收一体化。 电路图:

图4 TCRT5000单束反射式光电传感器

功能:通过红外光的发射和接受,实现电路的导通和关断。

原理:由高功率发射管发射红外光,当遇到障碍物后被反射回来,被高灵敏度的光电管接受,传感器电路导通;当未到障碍物时,传感器电路关断。

通过以上分析,可以发现,方案一优势在于其探测精度较高,但结构较为复杂;方案二,结构简单、电路实现方便。因而,在误差允许范围内,本设计中采用方案二。 2.2.1.2电机及其驱动芯片选择

考虑到本设计中,所涉及的负载较少,可以直接使用小型电机驱动,故可以采用以下两种设置: ? 方案一:采用步进电动机,通过调整所发脉冲个数N,达到控制目的。 ? 方案二:采用直流减速电动机,通过L293D电机驱动芯片,利用PWM控制方式,实

现电机的正转、反转、加速和减速。 功能:L293D电机驱动芯片可以提供较大的电流,单个芯片同时带动两个电机。 原理:通过L293D调节PWM波的占空比,达到控制电机转速目的。 比较以上两种方案,可以发现采用步进电动机可以达到较高的精度,但较之常规直流减速电机,前者费用较高。同时,考虑到本设计中车速较慢,一般直流电机可以达到遇到要求,故最终采用方案二。

2.2.1.3 处理器选择

在处理器的选择上,我们开始考虑使用单片机,后来在查阅了很多资料后,我们发现用ARM7可以更好的实现控制,也把它作为我们最终的选择,下面来比较一下这两种方案: ? 方案一:单片机AT89C51,这个我们在试验中多次用到,所以对它的原理和使用较为熟

悉,所以我们最初考虑使用它,但在调试工程中发现,采用单片机控制的精度不高,容易出现误判。 ? 方案二:ARM7,与AT89C51相比较,它在控制上有较高的精度。

考虑以上原因,最终确定采用方案二。

2.2.1.4 电源选择

考虑到电源同时给要给系统和电机供电,且要在实验室方便的实现,我们提出了以下两

种方案: ? 方案一:采用稳压电源,电压调节会有较大的空间,但是需要加7805稳压芯片,以构

成一个稳压电源电路,实现起来较为复杂。 ? 方案二:采用USB接口,实现起来很方便,且我们所用的处理器ARM7在5V左右比

较安全,所提供的电压也是比较稳定的。

比较以上两种方案,我们最终选择了方案二,这样更加简洁方便,而且功能同样可以很好的实现。

2.2.2 电路系统总体设计方案

5

智能循线避障小车

同构2.2.1中各种方案的比较可以发现,如果传感器和电机电路均采用对应的方案二,则可以达到预定目标。在设计过程中,我们对以上方案均搭建电路予以实现,结果表明后者方案较为适合。因而,综合以上描述可得以下结构框图:

电机驱动系统 黑线检测电路 红外接收电路 红外发射电路

图5 循线避障小车系统的结构框图

其各自对应的电路框架在前述部分中已给出,此处不再赘述。

电电源源3. 工作原理与功能实现 3.1 工作原理 3.1.1循线原理

循线的过程其实就是不断判断循线传感输出电压值并做出相应判断的过程。根据场地信息的不同,可以将循线分为两个部分:

1)循线行进:黑线较为平缓,没有太大的转弯(转弯角度不超过270度)。这种情况,不需要依靠左右两端的转弯辅助探头,只要当左侧偏转探头探测的黑线时,右侧轮子加快速度,从而使小车前进方向向左偏转;同理,当右探头偏转探头探测到黑线时,则相应的左轮加快速度,右轮减慢速度,使机器人前进方向向右偏转。所以说,小车所谓的循线前进,其实是一次次摇晃前进的宏观表现。

ARM7

图6 循线行进原理图

2)循线转弯:当出现较大的转弯(需要一次转弯超过270度)。这种情况是通过左右两端

6

智能循线避障小车

的转弯辅助探头分析出来的,其实是过程如下图所示:

图7 循线转弯原理图

同一侧的盘转探头和转弯探头同时探测到黑线,小车判断为转弯状状况。小车先低速(通过PWM控制,以50%的速率前进一小段距离)与转弯方向异侧的轮子前进,同侧的轮子以与一侧轮子相同的速率倒退,这样,小车便会绕着两个轮子中心连线的中点原地转弯。 内侧(转弯方向一侧)偏转探头探测到黑线后停止转弯,恢复到循线前进状态。

3.2.2 避障原理

为简化避障控制系统,这里选用直流减速电动机且实施开环控制,但是,这样不免带来控制不精确的问题,尤其是在绕过障碍物的过程中,采用开环控制,通过计算时间来实现避过障碍物的方法会遇到很多意想不到的问题(例如,电源电降低后,转过一定角度的时间会相应增加)。

这里为了简化,只给出简易的三种避障方式:前方障碍、左方障碍和右方障碍。下面分别对其加以阐释。

1)前方障碍: 当在小车前行的方向上存在障碍物时,车身前方的红外传感器探测到障碍物。考虑到小车采用前轮驱动控制,如果此时后退,由于后面万向轮的转动方向此时可能会出现不确定的情形,导致控制失败。因而,设计中采用“暂停“的方法——当小车探测到障碍时,电机停止运转;当障碍物撤离时,电机恢复原有状态。具体示意图,如图10所示:

障碍物

图8 前方障碍原理图

2)左方障碍: 当在小车前行的方向的左边存在障碍物时,车身左方的红外传感器探测到障碍物。考虑到小车控制的精度问题,这里只采用简单的左转弯控制,即右侧车轮加快速度,左侧的车轮反向加速,从而使小车前进方向迅速向左偏转。具体示意图,如图11所示:

7

智能循线避障小车

障碍物

图9 左方障碍原理图

3)右方障碍: 当在小车前行的方向的右边存在障碍物时,车身右方的红外传感器探测到障碍物。考虑到小车控制的精度问题,这里只采用简单的右转弯控制,即左侧车轮加快速度,右侧的车轮反向加速,从而使小车前进方向迅速向右偏转。具体示意图,如图12所示:

障碍物

图10 右方障碍原理图

3.1.3 PWM调速原理

在PWM驱动控制的调整系统中,通过改变输出电平的占空比D,可以达到调整直流电机电枢上的平均电压大小,从而控制电动机的转速。当小车运行的时候,遇到偏转或者转向的问题,PWM控制可以实现对电动机的转速控制,从而能够平稳改变转向。

本设计中的PWM实现,采用中断和查询相结合的方式实现。即通过定时器中断,产生“PWM时间单位”,采用查询通用寄存器的方式,改变一个脉冲周期内低电平和高电平PWM时间单位的个数,从而实现占空比D的改变。如下图,每个矩形即为一个“PWM时间单位”,蓝色的矩形为高电平,是电压实际作用的时间。虽然这样不能够实现直流电动机的无级调速,但是如果中断周期(“PWM时间单位”)足够小,调速的范围还是可以接受的。本设计中采用4路独立PWM波单独作为电机控制芯片的输入信号,从而实现直流减速电机的速度控制。如下图所示,图中给出了设计中的一路PWM波形信号。

Vout/vVCC2Dt/sT图11 PWM输出电平变化图形

8

智能循线避障小车

3.2 功能实现 3.2.1 机械结构实现

为实现对小车运动的简易控制,车身底盘采用“T”形结构,即前面为两个并列直流电动机,后面为以万向轮座位支撑轮。小车的前进、后退及转向都由前轮完成。同时采用分层结构,上层安放电路板,下层安放处理芯片,两着之间采用联接带相连,方便安装盒拆卸。 其对应车身底盘示意图如下所示:

驱动轮底座D 循线探测器C万向轮BA30rad/s直流减速电机

?

图12 小车车身底盘机械结构图

电动机:考虑到本设计中电机的控制尚未采用电机控制盒(即闭环控制系统),采用输出转速为30rad/s的直流减速电机,通过慢速前行实现控制目标。 车轮:前轮(驱动轮)和后轮(万向轮)皆从市场上购买。

参数:前轮直径D?4.2cm; 内侧间距l?10.4cm; 后轮直径D?2.5cm 车身底座:由于小车主要是在平地上移动且移动速度较低,在保证底板耐用的同时又便于加工,可以采用木板作为底板。此时所有的机械结构皆安装于底板之上,经过多次尝试,最终选择3mm厚的三合板。

参数:底板高度h?3cm; 厚度a?0.3cm; 分层支架:采用柱形螺母支架,方便安装和拆卸。 参数:支架高度H?4.6cm 7路传感器位置参数:

侧面传感器距地高度:H=12.6cm; 前面传感器距地高度:H=12.8;

长?宽=22?11.2cm

?

?

?

?

底部传感器距地高度:0.4cm; 侧面传感器感应距离:8.9cm.

3.2.2 系统电路实现

综合以上各部分功能原理分析可得以下系统电路,主要分为三部分:传感器电路、电机驱动电路和主控器芯片连接电路,下面将分别从这三方面加以分析。

3.2.2.1 电路模块设计

在一块电路板上将电路模块分为5块。周围一圈是输入线和地线,这样的排布既方便电路连接又方便检测。

9

智能循线避障小车

++-- 图13 电路板上的模块分布

3.2.2.2 系统电路设计

综合第二部分中关于系统电路方案的设计思路,可得以下系统总电路图,如下所示:

VCCVCC150?Front10K?5.1K?LED红色LED绿色LM39310K?150?LM31128+3-5.1K?150?10K?8124TCRT50007I.21LM39343Rc10K?Rc4和1I.18104ST1685ST168Rc10K?-7LM393+485.1K?I.17B传感器VCCVCC150?10K?C传感器Left5.1K?LED红色LM31128+3-5.1K?10K?150?150?10K?8124TCRT50007I.22I.20LM39343Rc10K?Rc4和1104ST1685Rc10K?ST168-7LM393+485.1K?I.19A传感器VCC10k?D传感器Right150?10K?5.1K?LED红色1PWM116VCC1PWM3231514LM31128+3-TCRT50007I.1630rad/sM45L293D1330rad/sM10K?4和11211Rc104PWM2VCC2678109PWM4L293D电机驱动芯片电路 图14 系统总电路图

10

5.1K?183.2.2.2.1 黑线传感器电路

4+-LM3932310K?150?RcST168智能循线避障小车

黑线检测电路以ST168光电对管和LM393(双路电压比较器)为核心,鉴于第二部分

中对ST168的具体电路已给出描述,此处不再赘述。 ? 电路图:

VCC图15 ARM7芯片部分电路图

注:图15中,主芯片采用LPC2138,JP_DATA1为信号输入端口,JP_PWM为信号输出端口。其中与各路传感器对应的端口在图中均已标出。 由此可见,小车系统电路中存在7路传感器输入信号和4路PWM信号输出,通过LPC2138达到控制目的。

下面将分别从黑线传感器电路、避障传感器电路和电机驱动电路三部分分别予以阐述。

图16 黑线检测电路图

注:此处为了表述明确,将LM393比较器分为两部分绘制,两路比较器正负端口均已标出。 ? 功能:用于判断是否探测到黑线。 ? 原理:采用ST168反射式红外探测,由于光电对管距离地面较近,所以所发射的红外

光未经过调制。采用LM393比较器,作为模拟电路和数字电路的接口。当光电对管ST168中的光敏三级管未接收到红外光线时,三级管不导通,比较器负向输入端的电压值(接近VCC)高于正相输入端电压(通过10K可变电阻调节),所以比较器输出端电压为高电平;当光电对管ST168中的光敏三级管接收到红外光线时,三级管导通,比较器负向输入端的电压值(接近0V)低于正相输入端电压,所以比较器输出端电压为低电平。因为输出的电压值为VCC或者0V,所以可以直接将检测得到的信号传递给ARM7处理芯片。显然可以通过调节可变电阻Rc的大小,实现探测距离的变化。 ? 电路实测参数:

11

150?10K?ST168Rc4

510K?-87LM393+45.1K?

智能循线避障小车

表1:黑线检测电路实测参数 (VCC=4.927V)

传感器 Rc比较电压 A B C D 2.0917V 2.0238V 2.0068V 2.0131V 比较器输出低电压 101.17mV 254.75mV 104.98mV 103.06mV 比较器输出高电压 4.896V 4.891V 4.890V 4.895V 3.2.2.2.2 避障传感器电路 避障检测电路以TCRT5000光电对管和LM311(单路电压比较器)为核心,同上理由此处对TCRT5000的具体电路不再赘述。 ? 电路图:

VCC150?10K?5.1K?LED红色LM31128+3-TCRT5000710K?4和1Rc104 图17 避障检测电路图

? ?

?

功能:用于判断是否探测到障碍物。

原理:采用TCRT5000反射式红外探测,由于光电对管距离地面较近,所以所发射的红外光未经过调制。采用LM311比较器,作为模拟电路和数字电路的接口。当光电对管TCRT5000中的光敏三级管未接收到红外光线时,三级管不导通,比较器正相输入端的电压值(接近VCC)高于负相输入端电压(通过10K可变电阻调节),所以比较器输出端电压为高电平,红色LED指示灯熄灭;当光电对管TCRT5000中的光敏三级管接收到红外光线时,三级管导通,比较器正相输入端的电压值(接近0V)低于负相输入端电压,所以比较器输出端电压为低电平,红色LED指示灯点亮。因为输出的电压值为VCC或者0V,所以同样可以直接将检测得到的信号传递给ARM7处理芯片。显然可以通过调节可变电阻Rc的大小,实现探测距离的变化。 电路实测参数:

12

智能循线避障小车

表2:避障检测电路实测参数 (VCC=4.927V)

传感器 Rc比较电压 前方 左方 右方

3.6080V 3.5910V 3.5840V 比较器输出低电压 144.86mV 139.55mV 141.50mV 比较器输出高电压 4.865V 4.859V 4.862V 3.2.2.2.2 电机驱动电路

? 直流减速电机驱动电路以德州仪器生产的L293D直流电机驱动芯片为核心。 ? 电路图:

10KPWM130rad/sM1231615VCC1PWM3141345630rad/sML293D1211109

PWM278PWM4VCC2图18 直流减速电机控制电路图

图19 L293D电机控制芯片图

13

智能循线避障小车

? 功能:实现单片机对直流电动机的正反转、惰性制动和强制转动的直接控制。

? 原理:L293D芯片用来直接驱动直流电机,能够根据输入的电平值,驱动电机正转、

反转、强制制动或者随动停止。(详见元器件简介)

? 电路输入与输出表:采用以上电路,能够实现主控芯片对于电机的简单控制,其真值表

如下:

表3 驱动电路输入与输出 EN1 H H H H L 1A L H L H X

图20 L293D电机控制芯片封装图

由上述分析可知,通过控制改变L293D输入信号的高低变化,可以得到对应的输出电平变化,从而驱动直流减速电机的正转、反转和停止。

与此同时,由3.1.3 中关于PWM调速的分析,可知调整输入信号中占空比大小,可以实现相应输出电平的高低变化,从而实现加速和减速的目的。

2A H L L H L 电机转动情况 正转 反转 快速停止 快速停止 快速停止 EN2 H H H H L 3 A L H L H X 4 A H L L H L 电机转动情况 正转 反转 快速停止 快速停止 快速停止 4. 流程图设计

考虑到实际设计中,小车的传感器系统十分简单,虽然可以给设计带来方便,但调试中发现用7路传感器来探测小车运行轨迹是不充分的,有时会带来误判。因而程序设计中,为了简化起见,分别给出了循线流程图和避障流程图,先分别介绍如下。

4.1 循线的流程图

下图为小车循线的流程图,其中“Left”为向左小角度转弯、“Right”为向右小角度转弯、“Turn Left”为向左大角度转弯、“Turn Right”为向右大角度转弯。

14

智能循线避障小车

StartGoAheadYND5?1?D3?1?ND6?1?YD4?1?YYTurnLeftNYRightTurnRightNLeftEnd

图21 循线的流程图

4.1 避障的流程图

下图为小车避障的流程图,为了简化起见,仅给出三种独立的避障情形——前方障碍、左侧障碍和右侧障碍。其中“Turn Left”为向左大角度转弯、“Turn Right”为向右大角度转弯,“Stop”为停止不动。

StartGoAheadD1?0?ND0?0?YND2?0?YStopYYTurnRightTurnLeftEnd

图22 避障的流程图

5. 主要原件清单

名称 TCRT5000红外对管 LM311运算放大器 15

个数 3 3

智能循线避障小车

LM393运算放大器 ST168光电对管 ARM7芯片 L293D 150Ω电阻 5.1KΩ电阻 1KΩ电阻 LED灯 104μF电容 10KΩ可变电阻 玩具小车 万向轮 5. 制作过程简介 5.1 制作简介

2 4 1 1 若干 若干 若干 3 若干 3 1 1 我们用了1块电路板,通过将上面的各个模块进行分块设计,以达到系统的最简化和最优化设计。

首先,要在面包板上把各个电路调通。在调试循线电路时遇到了很大的问题。出现的问题主要有发射管功率不够、接收管不工作、比较器不工作。我们通过测量各个点的电位判断出错的环节。然后通过改变各个元件的参数,最后调通电路。

在电路调试过程中,我们会遇到很多元器件原理不清楚的情况。如果原理不清楚,我们就无法初步判断我们所用的电路图是否正确,所接的管脚是否正确。因此,我们需要查询各个集成电路的原理,分析其工作状态,然后对电路进行验证。当遇到电路调不通的时候,需要重新分析电路的工作状态,然后适当的调整元件参数。

其中有一个问题。我们最初的电路用的是LM311,但是不工作,所以我们打算换LM393。但是这两个集成电路的区别我们不清楚,在使用中就出现了管脚使用错误的情况。LM393集成电路要比LM311高级,LM393内含两个独立的比较器,可以同时给两个电路使用,因此,LM393的管脚设置与LM311是完全不同的。而我们是按照LM311的管脚设置来调试电路的。

在所有电路都调通的情况下,我们开始对实验板进行排线,对各个模块的位置和内部布线进行设计,尽量利用空间,减少电路板的数量。

然后,组装各个电路,进行机械部分的设计。

5.2 调试中遇到的问题

1. 开始避障原理采用的是一个555发射电路,通过发射38K赫兹的方波,然后由

HS0038接收器接收并输入给单片机。但是在前期调试中,发现接收电路中HS0038的管脚图错误,因此我通过查找HS0038的说明书重新修正了接收电路。不过最后还是没有调试成功,所有的电路都是导通,但是发射管没有信号,换了发射管后还是没有反应。最后,我通过循迹电路的比较器原理,采用灵敏度高的TCRT5000的发射管重新设计搭建了一个电路,这次成功了。后面一次成功的主要原因是发射管和接受管是成对配置,保证管子的对口。 2. 由于小车的实际是一个复杂的工程,在现阶段的调试和制作中,尚难实现小车完全

自主循线,这主要存在于两方面:首先,车身的长度设计是否合理;其次,传感器接受的信息是否充分完备,可能需要增加额外的传感器,提高控制的精确性;最后,调试过程中采用白纸,可能会导致车轮打滑,从而引起传感器误判。

16

智能循线避障小车

6. 改进与提高

鉴于现阶段理论限制,传感器的设置尚不完善。下面将从三方面简要介绍可行的改进措施。

1) 加装测距码盘。由于两个直流电动机即便在相同的工作电压和工作环境下,也很难

达到同步转动,通过增加码盘,测量电动机运行的距离,根据距离误差大小实施反馈调节,可以达到更好的控制效果。

2) 改进电机控制结构。本次设计中,只采用了开环的PWM控制技术。下一步设计中

可以通过DSP芯片处理,构造合适的闭环控制结构,到达优化的控制目标。 3) 增加传感器数目、合理设置安放位置。综合考虑小车的运行,应当增加传感器数目,

以达到更准确的判断周围情况,能够有效防止误判的出现。

7. 总结

1.

在本次课程设计中我们收获很多,遇到挫折不少,感想也很多。

前期的准备还是不充分,导致中间遇到很多问题,做了很多重复的工作,同时也浪费了大量的时间。设计起初,没有认真仔细的分析提交的各个功能原理和电路原理,导致在后来的实际试验中,由于原理的不可实现或是电路图的错误更换了部分电路。

自己的独立研究能力有了很大的提高。在实际的调试过程中遇到很多意想不到的问题,有时候是器件本身损坏,有时候是电路搭错,有时候是电路图中参数设置错误。因此,自己花很多时间在实验室调试测试。特别是当电路图错误时,我必须自己去查相应的器件说明书,检测电路图。 在机械结构的设计中,我在结构外观设计上花了很多时间,我们一直在思考如何将各个模块组装搭建在一起。最后我们跑遍草场坡和轻工市场,买了一个简易的玩具车,他只有一个车架、一个外壳和四个轮子,同时我们又买了一个万向轮实现后轴转向。然后现有的车型基础上用螺丝、捆绑、焊接、卡槽等方式固定我们的各个模块,既综合利用了产品,也实现了外观的美化和简化。

由于很多原因导致浪费很严重,最后试验结束后,我们还有很多器件都没用。

2.

3.

4. 5.

8. 程序调式方法

#include \#include \

UART LCD(0,2400);//实现利用LCD板调试各路传感器 IO io;

int ABS(int value) { if(value<0) return -value; return value; }

int main() { LCD.PRINT(3); LCD.LCD_PRINT(\主控芯片初始化 io.OPEN(1,16);

17

智能循线避障小车

io.NDIR(1,16); io.OPEN(1,17); io.NDIR(1,17); io.OPEN(1,18); io.NDIR(1,18); io.OPEN(1,19); io.NDIR(1,19); io.OPEN(1,20); io.NDIR(1,20); io.OPEN(1,21); io.NDIR(1,21); io.OPEN(1,22); io.NDIR(1,22); io.OPEN(0,12); io.DIR(0,12); io.OPEN(0,13); io.DIR(0,13); io.OPEN(0,7); io.DIR(0,7); io.OPEN(0,21); io.DIR(0,21); io.SET(0,13); io.SET(0,12); io.SET(0,7);

io.SET(0,21);//设置端口信息 while(1) { LCD.PRINT(5); LCD.PRINT(0x10); //D0 探测右侧避障传感器是否探测到障碍物 if(io.OUT(1,16)!=0) LCD.LCD_PRINT(\未探测到障碍物则为0 else LCD.LCD_PRINT(\探测到障碍物则为1 //D1 探测前侧避障传感器是否探测到障碍物 if(io.OUT(1,17)!=0) LCD.LCD_PRINT(\未探测到障碍物则为0 else LCD.LCD_PRINT(\探测到障碍物则为1 //D2 探测左侧避障传感器是否探测到障碍物

18

智能循线避障小车

if(io.OUT(1,18)!=0)

LCD.LCD_PRINT(\未探测到障碍物则为0 else LCD.LCD_PRINT(\探测到障碍物则为1 //D3 探测A循线传感器是否探测到黑线 if(io.OUT(1,19)!=0) LCD.LCD_PRINT(\未探测到黑线则为0 else LCD.LCD_PRINT(\探测到黑线则为1 //D4 探测C循线传感器是否探测到黑线 if(io.OUT(1,20)!=0) LCD.LCD_PRINT(\未探测到黑线则为0 else LCD.LCD_PRINT(\探测到黑线则为1 //D5 探测B循线传感器是否探测到黑线 if(io.OUT(1,21)!=0) { LCD.LCD_PRINT(\未探测到黑线则为0 io.SET(0,13); io.SET(0,12); } else { LCD.LCD_PRINT(\探测到黑线则为1 io.CLR(0,13); io.CLR(0,12); } //D6 探测D循线传感器是否探测到黑线 if(io.OUT(1,22)!=0) LCD.LCD_PRINT(\未探测到黑线则为0 else LCD.LCD_PRINT(\探测到黑线则为1 } }

19

本文来源:https://www.bwwdw.com/article/xrg7.html

Top