智能车实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能车实验报告
一.设计目标:
小车能自己识别道路,自主导航跑过指定道路。

二.总体方案设计:
自动循迹智能汽车系统结构框图
单片机控制器
主板电源结构框图
2.1道路识别
根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。

2.2原理流程图
2.3信号滤波过程
由于系统中存在噪声或干扰,进行算法滤波抑制和防止干扰是一项重要措施。

可以选择“加权递推平均滤波法”。

2.4赛道检测方式
赛道路径几何特点:
由直线和圆弧组成。

2.5赛道路径检测内容:确定路径中心位置。

确定路径方向。

确定路径曲率。

需要在赛道垂直方向上
3-5点便可确定道路参数。

2.6赛道路径检测方法
最简单的方法:查表法
根据检测到的电压值,算出左右差值,每一个范围内的值,对应一个舵机转角。

缺点:速度快时,动态响应性不太好
PD控制方法:根据检测到的电压值,算出左右差值∆U1,并记录上次检测的左右差值∆U0,
PWM∆
-
VAL

=
P
+

D
U
1
)2
1
(*
U
_U
*
特点:P和D的参数调整合适会使转向比较平稳。

需要队员根据自己车的参数调整
舵机及电机驱动
利用占空比的变化,改变舵机的位置。

方波脉冲信号的周期
为20ms,当方波脉冲宽度改变时,舵机转轴的角度发生变化,角度变化与脉冲宽度的变化成正比
电路连接好后,用一个逻辑输出的信号来控制马达。

高电平(逻辑1)让继电器导通,马达转动;低电平(逻辑0)让继电器断开,马达停止。

在电路相同的情况下,把马达的“极性”反过来接,可以控制马
达的反转,断开继电器就能控制停止。

想要同时控制正反向的话,就需要更多的电路——最简单的就是H桥电路。

H桥电路的“H”的意思是它实际电路在电路图上是一个字母H的样式。

马达速度。

如果在其中一种状态下,频繁的切换开关状态,马达的转速就不再是匀速,而是变化的了,相应的扭矩也会改变。

通常反应出来的是马达速度的变化。

电机驱动板
2.7电机速度控制
一、低速恒速控制
二、根据赛道状态进行变速控制
分段控制
将赛道分为直道,小半径弯道,大半径弯道,丢失路线。

不同的赛道对应不同的速度。

这些速度可以根据赛道的具体情况通过按键在比赛准备时设定。

PID控制
测速反馈构成的闭环控制
三.硬件电路设计
核心板
母版
四.软件设计
编程方法概述
控制系统软件组成]:
系统软件:各种操作系统、编译软件等通用软件
应用软件:用户设计的处理特定任务的专用软件
程序设计的基本方法
明确任务:MCU在控制系统中的作用、采用的控制算法、输入/输出
信号的类型和频率、系统干扰类型、软件和硬件的功能划分等。

编程方法:模块化与结构化程序设计。

1.模块化程序设计
模块化程序设计,其思想就是把整个程序分解为若干个具有
单入口单出口结构的子任务或功能模块,每个模块执行单一的功能,各个模块分别设计、调试成功之后再装配在一起,成为一个完整的程序。

(1)自底向上模块化设计。

首先对最低层模块进行设计、编码、测试和调试。

这些模块正常工作后,就可以用它来开发高层的模块。

这种方法是汇编语言设计常用的方法。

(2)自顶向下模块化设计。

首先对最高层模块进行编码、测试和调试。

为了测试这些最高层模块,可以用“结点”来代替还未编码的较低层模块,但这些“结点”的输入和输出应满足程序说明部分的要求,但功能少得多。

该方法一般适合用高级语言来设计程序。

2.结构化程序设计
结构化程序设计的基本思想是:任何程序都可用三种基本结构
表示,即顺序结构、选择结构和循环结构。

由这三种基本结构经过反复嵌套构成的程序称为结构化程序。

三种结构形式
对应用程序的基本要求
实时性:指在被控制对象允许的时间范围内对系统进行采样、计算、处理、控制。

采用汇编语言设计的应用程序的实时性最好。

针对性:根据系统的具体需要设计应用程序。

灵活通用性:应用程序应具有一定的可移植性,可采用模块结构,将通用功能程序设计成与具体任务无关的子程序。

可靠性:应用程序应采用自检、软件陷阱、WATCHDOG等软件措施防止程序死机或失控。

应用程序的分类
过程监视程序:为监视和控制生产过程提供的人机界面(HMI),如各种键盘输入和CRT、LED、LCD显示输出等。

数据处理程序:A/D、D/A、数字滤波、线性化处理、工程转换等。

控制算法程序:实现特定的控制要求,如PID、FUZZY等。

输出控制程序:将控制算法的结果转换成对执行机构的输出,如步
进电机的启停和加、减速,直流电机的速度调节等。

故障自诊断程序:检测控制系统各部分的工作状态,如RAM、ROM的
校验和检验,A/D和D/A的自检、显示装置自检等。

3.数字滤波程序设计
数字滤波是一种程序滤波,通过程序运算对采样信号进行平滑处理,消除或减少噪声的影响。

与模拟滤波器比较,数字滤波具有以下优点:
(1)不需要增加硬件设备,且多通道可用一个滤波程序。

(2)无阻抗匹配问题,可靠性高。

(3)可以对极低频率(0.01Hz)的干扰信号进行滤波。

(4)滤波器的参数调整方便灵活。

1.限幅滤波
限幅滤波是根据经验,确定连续两次采样信号的最大偏差。

如果超过此偏差,则采样信号为干扰信号,放弃不用;否则采样信号有效。

设Y(K)、Y(K-1)、Y分别为本次采样、上次采样和最大偏差。

当|Y(K)-Y(K-1)| Y时,Y(K)有效,保留为本次采样信号;
当|Y(K)-Y(K-1)| > Y时,Y(K)无效,以Y(K-1)为本次采样信号。

当信号幅度变化比较缓慢时,限幅滤波对于冲击性脉冲干扰的滤波效果较好。

2.中值滤波
中值滤波是在采样时刻到来时,连续进行n 次采样,并对这n 个采样值进行排序,取中间位置的采样值为本次采样信号值。

中值滤波对于滤除变化缓慢信号中的脉冲干扰效果较好。

采样值的排序可采用插入排序、冒泡排序、选择排序等通用的排序方法。

3. 算术平均值滤波
设在采样时刻k 到来时,连续进行N 次采样。

设Y(k)为需要的第k 次采样的信号值,令Y(k)与各采样值的误差平方和最小。

即: ∑∑∑====-==N
i N
i N i i x N k Y i x k Y i e S 112
121)
()(]))()((min[])(min[ 上式就是算术平均值滤波算法的公式,x(i)为第i 次采样值,Y(k)为滤波算法的输出值(平均值)。

为了提高运算速度,也可用本次采样值与前N -1次采样值进行算术平均值滤波(移动平均值滤波)。

适用于对周期性干扰信号的滤波。

N 的取值决定平滑程度。

4.一阶惯性滤波
RC 滤波电路是模拟量输入通道中常用的低通滤波方法,可以滤除信号中的高频干扰。

但对于频率很低的干扰,R 、C 参数的选择非常困难。

一阶惯性滤波是一种以数字形式实现的低通滤波算法,其滤波公式可以通过对RC 滤波电路的传递函数进行离
散处理得到:
RC 滤波电路的传递函数为:RC T s T s X s Y s G f f =+==,11)()()(
离散化处理后可得:
f -T/T e -1 )()()()(=+--=αααk x k y k y 11 其中,Tf 为滤波时间常数,T 为采样周期,y(k)、y(k -1)分别为第
k 、k -1次滤波输出,x(k)是第k 次采样值。

4.线性化处理程序设计
传感器的输入/输出特性通常有一定的非线性特征,微机直接计算处理比较困难。

线性化处理就是要提供简化、实用的计算处理方法。

1. 计算法
当传感器的输入/输出特性有明确的数学表达式时,可将该表达式转化成简单的线性运算的多次循环迭代。

例:热电偶的输出热电势E 与被测温度T 的关系为: T = a4E4 + a3E3 + a2E2 + a1E + a0 (a )
上式可简化成 T ={[(a4E + a3)E + a2]E + a1}E + a0 (b )
这样可将一个高次多项式简化成线性运算(Ax+B)的4次迭代。

2. 查表法
当传感器的输入/输出特性非常复杂,或没有明确的数学表达式
时,可以事先计算好每个输入对应的输出数据,并将这些数据做成表格存入微机。

给定一个输入,通过查表就可得到其输出。

(1)顺序查表法:
顺序查找: 是一种最简单的查找方法,对数据表的结构无任何要求,是针对无序排列表格的一种方法。

查找过程:从数据表头开始,依次取出每个记录的关键字,再与待查记录的关键字比较。

如果两者相符,那就表明查到了记录。

如果整个表查找完毕仍未找到所需记录,则查找结束。

(2)计算查表法:
当输入值之间存在线性关系时,可将输出值按对应的输入值从小到大排列。

当要查找某个输入值对应的输出值时,通过计算可以得到其输出值的存放地址。

例.设输入为0、1、2……9;对应输出值为Y(0),Y(1)……Y(9),依次存放在#TAB开始的RAM单元中,则输入值I对应的输出的存放地址为:LOC(I)= #TAB + I
(3)对分查表法:
对分查找的具体过程(设有一个按关键字从小到大顺序排列的数据表,待查的关键字为Di):先选取数据表中间的一个数据与Di比较,如果相等,则查到;如果关键字Di大于中间数据,那就再取数据表的后半部分中间的数据,与关键字比较;如果关键字Di小于中间数据,那就再取数据表前半部分中间的数据与关键字比较;……。

这样重复进行,直至找到为止。

如果没有,则
查找失败。

3. 折线法
当传感器的输入/输出特性用一条曲线表示时,可以根据曲线的形状将其分成若干段直线。

即用分段线性的折线逼近整条曲线。

折线可用拐点序列(Vi1,Vo1),…,(Vik,Vok)确定。

当给定一个输入Vi 时,首先确定其所在的区间Vim<Vi<Vim+1,然后用下面的公式计算的出对应的输出Vo 。

om i im 1im om 1om o V )V (V )V (V )V (V V im +-⋅--=++
i1i2i3i4i5V V V V V
2.3 标度变换程序设计
1.线性参数标度变换
这种标度变换的前提是被测参数值与A /D 转换结果之间为
线性关系,是最常用的变换方法。

其变换公式如下
(a)
)(00
max 0
0max Y N N N X Y Y Y +---=
Y -被测参数的测量值; Ymax -被测参数量
程的最大值;
Y0-被测参数量程的最小值; Nmax -Ymax 对应的A /D 转换后的数字量;
N0-Y0对应的A /D 转换后的数字量;X -测量值对应的A /D 转换后的数字量。

当: N0=0 Y0 = 0 时,简化为:
m ax
m ax
N X Y Y =
2. 非线性参数标度变换 (一)公式变换法
测量流量时差压流量计的输出数字信号与实际流量为平方关系
,标度变换公式为:
()
(a)
00
max 0
0max Q N N N X Q Q Q +---=
3.1 PID 控制器的组成
在工业控制中,比例+积分+微分的控制规律是一种常用的方
法,可适用于多种被控对象。

PID 调节器是一种线性调节器,它的实质是将设定值r (t )与输出值c (t )进行比较构成控制偏差
e (t )=r (t )-c (t )
将其按比例、积分、微分运算后,并通过线性组合构成控制量,如图所示,所以简称为P (比例)、I (积分)、D (微分)调节器。

1. 比例(P )控制器
x K p
被控对象
测量元件
+-e
f
u
y
控制规律:u(t) = Kp e(t)+u0 u(t)—控制量(控制器输出)
K i /S
被控对象
K p r (t)
e (t)
c (t)
K d S
u (t)
+-+
+
+模拟PID 调节器控制
e(t)—系统偏差(控制器输入)
Kp—比例系数
响应:比例调节器对于偏差阶跃变
化的时间响应如图所示。

比例调节器对于偏差e是即时反应的,偏差一旦产生,调节器立即产生控制作用使被控量朝着偏差减小的方向变化,控制作用的强弱取决于比例系数Kp的大小。

特点:
简单,快速。

系统输出存在静差。

加大Kp,虽然可减小静差,但会使
系统动态性能变差,产生振荡。

1
K p
阶跃响应
2. 比例+积分(PI )控制器
为了消除比例控制的静差,可在比例控制的基础上加上积分控制,构成比例+积分控制器。

控制规律:
))(1
)(()(u
dt t e T t e K t u t
i
p ++
⋅=⎰
其中Ti 为积分时间。

Ti 越小,积分作用越强。

特点:
积分控制对e 累加,使u 逐渐增加,可以消除静差。

减小Ti 可使积分速度加快,积分作用加强,但会增大系统的超调量,延长系统的过渡过程时间。

积分控制不单独使用。

1
K p
i
阶跃响应
3. 比例+积分+微分(
PID )控制器
积分控制的加入,虽然可消除静差,但是以降低系统的响应速度为代价。

为此可加入微分控制,在偏差出现变化时,产生较强的控制作用,使偏差尽快减小。

控制规律:
0))
()(1
)(()(u dt t de T dt t e T t e K t u d t
i
p +++
⋅=⎰
其中,Td 为微分时间。

Td越大,微分作用越强。

特点:
微分控制在e出现变化时,产生较强的控制输出,使e尽快减小。

微分作用可加快系统响应速度,减小超调量,克服振荡,改善系统的动态性能。

微分控制对静差无作用,不单独使用。

PID调节器与PI调节器的区别:
PI调节器虽然可以消除静差,但却降低了响应速度。

PID调节器加快了系统的响应速度,减小调整时间,从而改善了系统的动态性能。

1
K p
阶跃响应
4.比例、积分、微分控制作用的比较
比例控制能迅速反应偏差,从而减小偏差,但比例控制不能消除静差。

加大Kp虽然可减小静差,但会使系统动态性能变差,产生振荡,引起系统不稳定。

积分控制可累积偏差,产生控制输出以消除静差。

积分作用太强会使系统超调量加大,使系统产生振荡。

微分作用在e出现变化时,产生较强的控制输出,使e尽快减小。

微分作用可加快系统响应速度,减小超调量,克服振荡,改善系统的动态性能。

微分环节对静差无作用,不单独使用。

合理设置比例系数Kp、积分时间Ti和微分时间Td,可使PID控制效果达到最佳。

3.2PID控制器的数字实现
因为MCU是通过软件实现其控制算法,必须对模拟调节器
进行离散化处理,这样它只能根据采样时刻的偏差值计算控制量。

因此,不能对积分和微分项直接准确计算,只能用数值计算的方法逼近。

用离散的差分方程来代替连续的微分方程,用累加和来代替连续的积分方程。

根据输出量u(k)的形式可分为位置式PID控制算法和增量式PID控制算法。

连续时间的离散化的数学表达:
当采样时间很短时,可用一阶差分代替一阶微分,用累
加和代替积分。

采样时间为
,0,1,2, t nT n T ==为采样周期
则:0
()()
()()((1))n
t
i e t T e iT de t e nT e n T dt
T ==--=
∑⎰
1. 位置式PID 算法
000
100
1
()
()(()()) (a)
()((1))
()(()())(0) (b)() t
p d i
n
p d i i n
n n n p n i d i i
de t u t K e t e t dt T u T dt T
e nT e n T u nT K e nT e iT T u T T e e T
u K e e T u T T =-==⋅+
++--=⋅+
++-=⋅+
++⎰∑∑则: (c)
上式主要用于无累积作用的执行机构(如阀门),输出结果可直接确定执行机构的位置。

物理模型
离散化的PID 位置式控制算法的编程表达式:
对于上页执行结果公式,令
i
p i T T K K =
T
T K K d p d =
则离散化的PID 位置式控制算法的编程表达式为
00
()()()[()(1)] (1)
k
p i d i u k K e k K e i K e k e k u ==++--+∑由式可以看出,每次输出与过去的状态有关,要想计算u (k ), 不仅涉及到e (k -1),且须将历次相加。

上式计算复杂,浪费内存。

考虑到第k -1次采样时有
1
00(1)(1)()[(1)(2)] (2)
k p i d i u k K e k K e i K e k e k u -=-=-++---+∑
两式相减,得
()(1)[()(1)]() [()2(1)(2)] (3)()(1)()()(2)(1)(2) (4)PID ()P i d P i d p d d u k u k K e k e k K e k K e k e k e k u k u k K K K e k K K e k K e k u k --=--++
--+-=-+++-+-+-位置式递推公式为:
012(1)()(1)(2) (5)
u k e k e k e k ααα=-+--+-
软件算法流程图
0P i d K K K α=++其中:12p d K K α=+2d
K α=
3.PID算法程序设计中应考虑的问题
(1)输出限幅
对常规的PID运算,在设定值突变时,计算结果可能大于执行机构的极限。

当位置算式的计算结果uk大于执行机构的极限,或增量算式的计算结果△uk大于执行机构可调节的容量△u时,必须限幅,只能输出umax或△umax,否则会损坏设备或降低控制品质。

例如在控制阀门的开度时,在达到最大开度值时,不能再开大阀门。

另外,计算机的输出幅度大幅度变化,不利于安全操作和系统稳定。

因此应对前后两次计算的增量根据安全操作规定和运算经验加以限制。

(2)防止执行器频繁动作
在控制精度要求不高,控制过程要求尽量平稳的场合,例如化工
厂中容器的液面控制,为了避免控制动作过于频繁,消除由此引起的振荡,可以人为设置一个不灵敏区e0,|ek|<e0时,控制器输出为uk -1。

只有当|ek|>e0时,才按PID 算式计算控制量。

即:
⎩⎨⎧><=-0k 0k 1e |e |
e |e | k k k u u u
(3)积分整量化误差的解决办法
在增量式算法中,用Ki*en 计算积分,当采样周期T 较小、而积分时间Ti 又较大时,积分项的值可能小于计算机最低有效位而被忽略,从而产生积分整量化误差。

长期积累,会使系统产生较大静差。

在增量式算法中,对积分项进行修正: 0 () ()i n i n n i i i n i K e K e K e K e δδ=>⎧⎪⎨<⎪⎩∑时时
3.4 PID 的参数整定
临界比例度法
(1)选择一个足够短的采样周期T ,一般可取采样周期为被控对象纯滞后时间的十分之一以下。

(2)去掉积分和微分作用,用选定的采样周期使系统工作。

从小到大改变比例系数,直到系统出现等幅振荡。

记录此时的比例系数为Kr ,振荡周期为Tr 。

(3)选择控制度。

所谓控制度就是以模拟PID为基准,将数字PID 的控制效果与模拟PID的控制效果相比较。

控制度越小表示数字PID的控制效果越接近模拟PID的控制效果。

(4)根据选定的控制度以及Kr和Tr,查表7-1,求得T、Kp、Ti、Td的值。

整体流程图:
实际主体程序
电磁传感器传回来的数据经过AD转换之类的会转变成具体的数值存在data1和data2中,data3作为它们之间的差值在调参数的时候方便观测。

使data显示在显示屏上,第二列数据是位置信息,第三列数据是要被显示的信息。

电机和舵机都是用不同占空比的PWM波来进行控制
其他程序
初始化程序(部分)
运放模块(仿真)
五.检测和调试过程
硬件部分
焊接完成后,首先进行的调试是用数字万用表测量各个
电路是否焊接正常,是否有虚焊漏焊等现象的出现,以及各个电容是否是正常的未被击穿状态、电阻的阻值是否与设计的原理图上的一致。

接通电源,用数字万用表测量当有+5V 的各引脚是否有+5v的电压,测量电路中是否出现了不该有的短路现象。

接入光电传感器模块,使各个光电检测器的光电对管靠近白纸,观察对应的发光二极管是否发光,不发光表示正常。

然后再使各个光电对管靠近黑线,观察对应的发光二级管是否发光,发光表示正常。

软件部分:
我们先测试了小车的前进,停止,左转和右转。

组装信号采集模块后,实现小车的自动循迹功能。

六.关键问题讨论及结论
其他问题:
调舵机的占空比要查资料,发现没有相关资料。

于是在学校内寻找同类型的多级进行试验短路几个舵机之后才找到合适的占空比。

其次传感器的高度,是否水平,离车的远近都会影响到传回的数据。

小车的核心板不可放在支架上。

当软件和硬件单独调试都成功以后,就进入整体调试阶段,把小车的各部分都组装好,然后用键盘显示板来显示寻迹效果,找一张白色纸片,在寻迹班前来回晃动,没经过一次传感器,数码管显示的值就加一,由于此次小车较简单,所以只考虑,寻迹板是否可以检测到高低电平即可,当左边的二
极管熄灭时,就说明遇到黑线,此时如果左边电机停止转动,右边电机继续转动,则说明左边调试成功,右边一样,换方向即可,如果左右都调试成功,就可宣布小车整体调试成功。

七.设计总结与体会
本设计主要用到了单片机的通用Io口的读写,定时器,中断等基本功能,通过实际操作进一步掌握了51单片机的使用。

同时,通过单片机外围电路的设计,更深入学习了51单片机在嵌入式系统中的应用。

通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。

本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。

在报告完成之际,我首先向关心帮助我的老师同学表示衷心的感谢并致以崇高的敬意!在学校的学习生活即将结束,回顾一个月的学习经历,面对现在的收获,我感到无限欣慰。

为此,我向热心帮助过我的所有老师和同学表示由衷的感谢!
在撰写报告的过程中,我遇到了许许多多这样那样的问题,有的是专业上的问题。

感谢老师的亲切关怀和悉心指导,使我的报告可以又快又好的完成,感谢组内队友营造的浓郁学术氛围,以及学习、生活上的无私帮助!。

相关文档
最新文档