基于89s51单片机的循迹小车设计报告大学毕设论文.doc

上传人:可**** 文档编号:91263311 上传时间:2023-05-24 格式:DOC 页数:12 大小:270.50KB
返回 下载 相关 举报
基于89s51单片机的循迹小车设计报告大学毕设论文.doc_第1页
第1页 / 共12页
基于89s51单片机的循迹小车设计报告大学毕设论文.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《基于89s51单片机的循迹小车设计报告大学毕设论文.doc》由会员分享,可在线阅读,更多相关《基于89s51单片机的循迹小车设计报告大学毕设论文.doc(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于89s51单片机的循迹小车设计报告1基于89s51单片机的循迹小车设计报告摘 要本文介绍了基于at89s52单片机的智能小车的设计与实现。小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器;采用红外对管获取赛道的信息;通过数字PID控制策略和PWM控制技术来对小车的方向和速度进行控制。本文介绍了小车硬件和软件系统的设计过程。关键字:at89s52单片机; 光电管; PID;第 I 页 共 I页目 录摘 要2第一章 引言21.1 设计目的21.2 设计方案介绍21.3 技术报告内容安排2第二章 技术方案概要说明3

2、第三章 硬件电路的设计43.1 单片机最小系统43.2 传感器电路43.3 电源电路设计53.4 舵机及电机驱动电路设计5第四章 软件系统的实现64.1主程序设计64.2 程序思路6第五章 结论7附录:源程序主代码8第 10 页 共 10 页第一章 引言1.1 设计目的通过设计进一步掌握单片机的应用,特别是在嵌入式系统中的应用。进一步学习单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。1.2 设计方案介绍该智能车采用红外对管方案进行道路检测,单片机根据采集到的红外对管的不同状态判断小车当前状态,通过控制发出控制命令,控制舵机和电机的工作状态以实现对小车姿态的

3、控制。1.3 技术报告内容安排本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术方案的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。第二章 技术方案概要说明本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块、舵机控制模块。在整个系统中,由电源管理模块实现对其他各模块的电源管理。其中,对单片机、光电管、舵机提供5V电压,对电机提供6V电压。路径识别电路由8对光电发送与接收管组成。由于

4、路面存在黑色引导线,落在黑线区域内的光电接收管接收到反射的光线的强度与白色的路面不同,进而在光电接收管两端产生不同的电压值,由此判断路线的走向。传感器模块将当前采集到的一组电压值传递给单片机,进而根据一定得算法对舵机进行控制,使小车自动寻线行走。 单片机模块是智能车的核心部分,主要完成对外围各个模块的管理,实现对外围模块的信号发送,以及对传感器模块的信号采集,并根据软件算法对所采集的信号进行处理,发送信号给执行模块进行任务执行,还对各种突发事件进行监控和处理,保证整个系统的正常运作。 舵机控制模块则根据检测情况经单片机处理后发出相应的PWM波对舵机进行转向的控制。电机驱动模块采用桥驱动,通过P

5、WM 波对电机进行控制,以实现对小车速度的调节。第三章 硬件电路的设计3.1 单片机最小系统小车采用atmel公司的at89s52单片机作为控制芯片,图3-1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。2、电源电路:给单片机提供5V电源。3、复位电路:在电压达到正常值时给单片机一个复位信号。图3-1 单片机最小系统原理图3.2 传感器电路光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电

6、平输出到单片机。3-2赛道检测原理图:3.3 电源电路设计模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,51单片机使用5V电源,电机及舵机使用6V电源。考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为6.5-6.8V,所以单片机及传感器模块采用7805稳压后的5V电源供电,舵机及电机直接由电池供电。3.4 舵机及电机驱动电路设计舵机的驱动电路比较简单,电源直接由电池组提供,其输入信号为单片机输出的pwm波。本系统使用的电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式

7、驱动器,其功率元件由四支N沟道功率MOSFET管组成,由此电路,通过设置51输出的PWM波的占空比可以达到控制电机转速的效果。3-3 H桥驱动电路第四章 软件系统的实现4.1主程序设计单片机系统需要接收路径识别电路的信号,采用某种路径搜索算法进行寻线判断,进而控制舵机和直流驱动电机的工作。小车系统的软件使用C语言实现。主体控制框架:模型车采用的控制方法是根据传感器采集到的路况信息,通过计算得到具体的方向偏移量和速度,控制小车的行走状态。路况信息数据处理偏转方向车 速4.2 程序思路智能车利用了一字形排布的个传感器来探测道路,并将每个传感器采集到的信息转换成了数字电平。因此个传感器的数据正好构成

8、一个字节,由单片机口读入。由于读入的数据并不方便直接参与控制计算,因此先将该数据集分成类,分别对应于小车不同的位置信息,由0-15表示,其中表示引导线位于小车最左侧,7表示引导线位于小车中部,14表示引导线位于小车最右侧,15表示未检测到引导线或其他错误情况。将上面的转换后的数据作为控制计算的反馈输入,与相减即得到小车偏差信息,然后通过增量型pid算法计算出舵机的控制信息。将小车偏差信息的微分作为速度pid的输入,依然通过增量型pid算法得到电机的控制信息。至此小车完成一次控制周期。由于at89s51单片机没有PWM模块,因此需要通过通用I/O口进行模拟来输出舵机和电机所需的PWM波。可以分别

9、使用一个定时器来作为一路PWM波的计时器。先将I/O口置位,设定高电平时间及定时器的初值,当定时器产生中断时,再将I/O口清零,并设定低电平时间,由此循环即可产生PWM波。其中,高电平时间有控制计算得出,低电平时间有PWM周期减去高电平时间得到。第五章 结论本设计主要用到了单片机的通用IO口的读写,定时器,中断等基本功能,通过实际操作进一步掌握了51单片机的使用。同时,通过单片机外围电路的设计,更深入学习了51单片机在嵌入式系统中的应用。通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。本系统能够基本满足设计要求,能够较快较平

10、稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。附录:源程序主代码#include #include #include #define uchar unsigned char #define uint unsigned int#define MIDDLE 1390/舵机中心位置#define LEFT 1600 #define RIGHT 1000#define T 20000#define HIGH 7300 /电机基准速度sbit rudder=P10; /定义舵机PWM波输出端口为P1.0口sbit pulse=P11; /定义后轮P

11、WM波输出端口为P1.1口char flag1=0,flag2=0;/定义全局变量(flag1用于控制舵机/PWM标志位,flag2用于控制电机PWM)uint b=0,a=0;/b用来装载电机所需的高电平时间,a用于保存电机所需高电平时间void main()uchar receive,ek4=7,7,7,7;uint pidr=0;uint pidlr=0;uint ppid=0;IE=0x8a; TMOD=0x11;TH0=0x00;TL0=0x00;TR0=1;TH1=0x00;TL1=0x00;TR1=1;while(1) receive=P2; /采集光电传感器的值/*-switc

12、h-*/switch(receive) /根据采集到的值进行判断case 0x7f:ek3=0;break; /0111 1111 最左边(或右边)1个光电传感器检测到黑线case 0x3f:ek3=1;break; /0011 1111 最左边(或右边)2个光电传感器检测到黑线case 0xbf:ek3=2;break; /1011 1111 依次类推case 0x9f:ek3=3;break; /1001 1111case 0xdf:ek3=4;break; /1101 1111case 0xcf:ek3=5;break; /1100 1111case 0xef:ek3=6;break;

13、/1110 1111case 0xe7:ek3=7;break; /1110 0111case 0xf7:ek3=8;break; /1111 0111case 0xf3:ek3=9;break; /1111 0011case 0xfb:ek3=10;break; /1111 1011case 0xf9:ek3=11;break; /1111 1001case 0xfd:ek3=12;break; /1111 1101case 0xfc:ek3=13;break; /1111 1100case 0xfe:ek3=14;break; /1111 1110default: ek3=15;break

14、; /1111 1111 没有检测到黑线(是需要保持上一次测量值的)/*-switch-*/if(ek3= =15) pidr = pidlr;else pidr=0.2*pidlr+0.8*(23*(ek3-7)+2*(ek3+ek2+ek1+ek0-28)+7*(ek3-ek2);if(ek2!=ek3)ppid=-160*(cabs(ek3-7)+220*(cabs(ek1-7)-cabs(ek3-7); a=HIGH+ppid; /a是电机高电平时间b=pidr+MIDDLE; /b就是舵机PWM波高电平时间 if(bLEFT) b=LEFT; if(bRIGHT) b=RIGHT;

15、char i; for(i=0;i3;i+) eki=eki+1; pidlr=pidr;void zhongduan_t0(void) interrupt 1 /产生舵机PWM波中断子程序(T0中断)if(flag1=0) TH0=(uchar)(65536-b)/256); TL0=(uchar)(65536-b)%256);flag1=1;rudder=1;elseTH0=(uchar)(38869+b)/256); TL0=(uchar)(38869+b)%256);flag1=0;rudder=0; void zhongduan_t1(void) interrupt 3 if(flag2=0) TH1=(uchar)(65536-HIGH)/256); TL1=(uchar)(65536-HIGH)%256); flag2=1; pulse=0; else TH1=(65536-T+HIGH)/256; TL1=(65536-T+HIGH)%256; flag2=0; pulse=1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com