基于51单片机的智能物体追踪和遥控车的实现 - - - 雷帅 - 图文(4)

2019-02-28 22:18

智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)

下箭头 左箭头 后退 左转 0x1a 0x0a 右三角 Pause键 物体追踪 0x02 剎停 0x54 9、PID算法

1.标准的直接计算法公式:

Pout(t)=Kp*e(t)+Ki*Σe(t)+Kd*(e(t)-e(t-1));

2. 基本偏差e(t),表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值。这是面向比例项用的变动数据。

3. 累计偏差Σ(e)= e(t)+e(t-1)+e(t-2)+?e(1),这是我们每一次测量到的偏差值的总和,这是代数和,考虑到他的正负符号的运算的,这是面向积分项用的一个变动数据。

4. 基本偏差的相对偏差e(t)-e(t-1),用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。

5. 三个基本参数:Kp,Ki,Kd.为比例常数、积分常数和微分常数 6.积分的处理

本程序所用的积分没有把之前时刻所有的误差都考虑在内,而是用了一个10维的数组err[10],每次测量距离得到当前误差之后就会更新一次数组(在下面的程序中有具体体现),将最新的误差数据置入err[0],然后利用循环语句把数组求和,最后乘以积分常数得到积分部分的输出。 7.微分的处理

16

智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)

本程序中的微分所具有的特色是把在第二点中提到的err[10]数组中前5个和后5个分别求和,之后再做减运算,最后乘以微分常数得到微分部分输出。

六、系统框图

七、调试过程

从上周三下午在图书馆讨论室熟悉编程环境开始,一直到这周二上午解决最后一个小问题,完成最终的调试,全程历时7天,工作时间大概在4天左右。

17

智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)

周一上午在智能小车实验室找到了一个废弃的小车底座带发动机,下午在淘宝上购置元器件,周三元器件上午到货,下午大家一起熟悉编程环境Keil uvision3和烧录工具Stc_Isp,周四大家一起研读单片机STC12C5A60S2的技术文档,然后分配任务,王威负责-电机驱动&PWM模块,裴夏青&陈如峰-超声波测距模块,我负责红外解码模块,周四晚上各自模块调试完毕。周五晚上王威完成超声波模式的整合,试车成功。周六上午大家一起调PID算法,由简单的P控制改成PID控制,消除了余差,减小了超调量,增快了反应速度。超声波模式调试完工,工作进度45%。

周日上午找到另外一辆带有电机的车底座,居然还带舵机!于是我们换上了新的车底座,将原来的简单控制小车直线前进后退改为前后左右共9种模式,有了超声波模式编程的经验,红外遥控模式的编程变得相当顺利,大家一起群策群力,王威主写程序、调试,程序写完编译完毕后却在试车时遇到了巨大的困难,车总是在电机转然后再让舵机转是停车、单片机死机,将前面的简单程序烧录后却又没有问题,几经分析之后依然一筹莫展。在用万用表依次测量各部件电压之后,锁定原因--单片机输入电压不够,借来的旧电池严重不给力啊。最后我们决定串联四节干电池给大电池,并且给单片机用7805稳压(直接接电池电压)供电,问题得到基本解决。晚上红外遥控模式正式调试完毕。而后裴夏青提议将两种模式定义成两个函数,在主程序中调用即可,这样主程序变得非常简洁清晰,大家一致通过。由于超声波检测跟踪以及红外遥控模式的程序是分开写的,头文件中许多定

18

智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)

义地址重复,需要大量的删改,十分繁琐,晚上王威完成了两种模式的整合,工作进度90%。

周一早晨王威带着编译无误的程序过来烧录到单片机里,小车却出现诸多问题:只能进入红外遥控模式,不能进入超声波测距跟踪模式,当然两个模式也不能自由切换了;在红外模式下退出模式后不能重新选择,陷入死机状态,按暂停键和退出键效果相同,陷入死机状态。上午暂停键调试完毕,工作进度95%。下午王威缺席,夏青分析程序后觉得可能是每次判断按键码标志位Irok没有清零,我和夏青尝试性的在所有判断按键码后将Irok清零,结果成功进入超声波模式并能实现超声波/红外模式的自由切换,基本完工,仅剩下一个小问题--超声波模式下舵机乱摆,暂且放下。工作进度99.9%。

周二早晨我早早到了实验室,被放假一天的峰哥也来了,闲着没事于是我俩分析并且调试其程序起来,我在超声波测距每次判断距离误差后将舵机转向控制口In3、In4口清零,烧录之后试车发现在超声波模式下舵机不再乱摆,最后一个问题得以解决,大功告成!工作进度100%!!!

在调试的过程当中在一些小错误中学到了不少零碎的知识,如:复用引脚第二功能优先、LED自保持、IO口不如不初始化直接工作在双向模式、在各个模块连接的时候一定要共地,在开发环境下中断服务子程序的写法、超声波由于IO端口问题问题不能数码管显示距离(P2口换到P1口)、舵机在超声波模式剧烈震动(在每次判断误差时让IN3/IN4归零)、在PID运算中加入微分之后,震荡更加厉害

19

智能物体追踪/遥控车的设计报告(团队制作-雷帅、王威、裴夏青、陈如峰)

(数组求差值求反了)、单片机头文件的写法等。一些小问题的解决比如头文件缺少、复杂,PWM赋值函数适应PID,当然有时也犯诸如线忘了插、键值写错的很低级的错误,但是经过一步步排查总能找出来。调试过程中耗时长、并且当时百思不得其解的问题有: 1单片机在工作的过程当中总是死机?必须重启才能工作,而且死机更加频繁

在超声波模块调试过程中我们发现了这个问题,我们首先从程序中查找错误,用了之前已经调试通过的简单程序,工作一段时间后还是会死机,我们把注意力转移到硬件上,在反复排查后,我们把问题锁定在了单片机电压上,经过测试,我们发现电机工作一段时间后,由电机驱动输送给单片机的电压降到了3.5V以下,单片机复位,停止工作。我们的解决方法是用了三节干电池串联主电池。问题暂时得到解决。当我们加上红外遥控,两个电机一起工作的时候,同样的问题再次出现,我们决定串联四节干电池,并且给单片机用7805稳压(直接接电池电压),问题得到基本解决。因为7805要求电压在5v以上,所以在系统长时间工作的情况下单片机还是会复位。 2、系统不能进行功能切换,而且在一个模式下工作极不稳定 在开始进行两个模块的程序整合的时候,总是不能相互切换,而且在红外模式下工作很不稳定,按关机键一次就可以彻底关机,经过排查,我们发现红外取值有效的标志位IROK=1之后,判断并执行完一步之后,没有清零,导致程序中一直读取IM【2】中的数据(乱码),而且关机键之后在IROK=1的情况下,数组中的0x03可以直接

20


基于51单片机的智能物体追踪和遥控车的实现 - - - 雷帅 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:体育中心钢结构施工组织设计 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: