您好,欢迎来到居食网。
搜索
您的当前位置:首页基于s51单片机的循迹小车设计报告

基于s51单片机的循迹小车设计报告

来源:居食网




基于s51单片机的循迹小车设计报告



摘要

本文介绍了基于ats52单片机的智能小车的设计与实现。小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以ATS52单片机为系统控制处理器;采用红外对管获取赛道的信息;通过数字PID控制策略和PWM控制技术来对小车的方向和速度进行控制。木文介绍了小车硬件和软件系统的设计过程。



关键字:ats52单片机;光电管;PID



摘要...................................................................2第一章引言.............................................................21」设计ri...........................................................21.2设计方案介绍.......................................................21.3技术报告内容安排...................................................2第二章技术方案概要说明.................................................3第三章硬件电路的设计...................................................43.1单片机最小系统....................................................43.2传感器电路.........................................................43.3电源电路设计.......................................................53.4舵机及电机驱动电路设计.............................................5第四章软件系统的实现...................................................64」主程序设计.........................................................2程序思路...........................................................6第五章结论附录:源程序主代码



第一章引言

1.1设计目的

通过设计进一步掌握51单片机的应用,特别是在嵌入式系统屮的应用。进一步学习51单片机在系统屮的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

1.2设计方案介绍

该智能车采用红外对管方案进行道路检测,单片机根据采集到的红外对管的不同状态判断小车半前状态,通过Pi d控制发出控制命令,控制舵机和电机的工作状态以实现对小车姿态的控制。

1.3技术报告内容安排

本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术方案的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硕件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计屮主要用到的控制理论、算法说明及代码设计介绍等。



第二章技术方案概要说明

本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块、舵机控制模块。

在整个系统屮,由电源管理模块实现对其他各模块的电源管理。其屮,对单片机、光电管、舵机提供5V电压,对电机提供6V电压。

路径识别电路由8对光电发送与接收管纽成。由于路面存在黑色引导线,落在黑线区域内的光电接收管接收到反射的光线的强度与白色的路面不同,进而在光电接收管两端产生不同的电压值,由此判断路线的走向。传感器模块将当前采集到的一组电压值传递给单片机,进而根据一定得算法对舵机进行控制,使小车自动寻线行走。

单片机模块是智能车的核心部分,主要完成对外围各个模块的管理,实现对外囤模块的信号发送,以及对传感器模块的信号采集,并根据软件算法对所采集的信号进行处理,发送信号给执行模块进行任务执行,还对各种突发事件进行监控和处理,保证整个系统的正常运作。

舵机控制模块则根据检测情况经单片机处理后发出和应的PWM波对舵机进行转向的控制。

电机驱动模块采用H桥驱动,通过PWM波对电机进行控制,以实现对小车速度的调节。



第三章硬件电路的设计

3.1单片机最小系统

小车采用atmel公司的ats52单片机作为控制芯片,图3-1是其最小系统电路。主要包括:吋钟电路、电源电路、复位电路。其屮各个部分的功能如下:

1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。2、电源电路:给单片机提供5V电源。

3、复位电路:在电压达到止常值吋给单片机一个复位信号。

VCC

19

XTAU

vcc

10K

IK

PO O ADO

PO1 ADI

J?

P0.2AD2

XTAL2

P03 AD3

P04ATM

PO5AD5

P06AD6 P0

RST

7AD7

P1OT2

EA\TP

Pl 112EX

PSD?

P12

P1.3

ALE

Pl 4

Pl.5

P30RxD

P16

Pl .7

P31/TxD

P3.2D?TO

P3.3NT1

P34/T0

P20A8 P21

20

P35/T1 P36

A9

P2.2A10

P23A11

P37/RD

P24A12

P25A13 P2

6A14

P2.7A15

GND

ATS52
3?1单片机最小系统原理图

3.2传感器电路

光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,判断黑白线。原理图由红外对管和电床比较器两部分组成,红外对管输出的模拟电



压通过电压比较器转换成数字电平输出到单片机。



xcc

R?2 330

vcc

vcc

GM)

U?

56K

8 2K

Optoisol^tor 1

56K

GED

GND

3-2赛道检测原理图:

3.3电源电路设计

模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计屮,51单片机使用5V电源,电机及舵机使用6V电源。考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为6.5-6.8V,所以单片机及传感器模块采用7805稳压后的5V电源供电,舵机及电机直接由电池供电。

3.4舵机及电机驱动电路设计

舵机的驱动电路比较简单,电源直接由电池组提供,其输入信号为单片机输出的pwm波。

本系统使用的电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,由此电路,通过设置51输出的PWM波的占空比可以达到控制电机转速的效果。

GND

GND

3-3H桥驱动电路



第四章软件系统的实现

4.1主程序设计

单片机系统需要接收路径识别电路的信号,采用某种路径搜索算法进行寻线判断,进而控制舵机和直流驱动电机的工作。小车系统的软件使用c语言实现。主体控制框架:
模型车采用的控制方法是根据传感器采集到的路况信息,通过计算得到具体的方向偏移量和速度,控制小车的行走状态。

4.2程序思路

智能车利用了一字形排布的8个传感器来探测道路,并将每个传感器采集到的信息转换成了数字电平。因此8个传感器的数据正好构成一个字节,由单片机P2 口读入。

由于读入的数据并不方便直接参与控制计算,因此先将该数据集分成16类,分别对应于小车不同的位置信息,由0?15表示,其屮0表示引导线位于小车最左侧,7表示引导线位于小车中部,14表示引导线位于小车最右侧,15表示未检测到引导线或其他错误情况。

将上而的转换后的数据作为控制计算的反馈输入,与7相减即得到小车偏差信息,然后通过增量型pid算法计算岀舵机的控制信息。

将小车偏差信息的微分作为速度pid的输入,依然通过增量型pid算法得到电机的控制信息。至此小车完成-次控制周期。

由于ats51单片机没有PWM模块,因此需要通过通用I/O口进行模拟來输出舵机和电机所需的PWM波。

可以分别使用一个定时器来作为一路PWM波的计时器。先将I/O口置位,设定高电平吋间及定吋器的初值,当定吋器产生屮断吋,再将I/O口清零,并设定低电平吋间,由此循环即可产生PWM波。其屮,高电平吋间有控制计算得出,低电平时间有PWM周期减去高电平时间得到。



第五章结论

本设计主要用到了单片机的通用IO口的读写,定吋器,屮断等基本功能,通过实际操作进一步掌握了 51单片机的使用。同吋,通过单片机外II电路的设计,更深入学习了 51单片机在嵌入式系统屮的应用。通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际屮來。

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

改进。



附录:源程序主代码

#include<reg52.h>
#include<intrins.h>
#include<math.h>

#defineuchar unsigned char #define uint unsigned int

#defineMIDDLE 1390 〃舵机屮心位置#defineLEFT 1600
#defineRIGHT 1000 #defineT
20000

#define HIGH 7300

sbit rudder=Pl A0; sbit pulse=PIAl;

char flagl=0,flag2=0;

〃电机基准速度

〃定义舵机PWM波输出端口为P1.0 口 〃定义后轮

PWM波输出端口为P1」口

〃定义全局变量flagl用于控制舵机 //PWM

标志位,fl“g2用于控制电机PWM

uint b=0,a=0;

b用来装载电机所需的高电平时间,a用 于保存电机所需高电平吋间

voidmain()
{
ucharreceive,ek[4]={ 7,7,7,7}; uint pidr=0;
uintpidlr=O;
uintppid=0;

IE=0x8a;
TMOD=Ox11;
TH0=0x00;
TL0=0x00;
TR0=1;
TH1=0x00;
TL1=0x00;
TR1= 1;

while(l)



{ receive=P2;

〃采集光电传感器的值

/* ........................switch-------------------*/

switch(receive)
{

〃根据釆集到的值进行判断

case Ox7f:ek[3]=O;break; 电传感

//0111

1111

最左边(或右边)1个光

器检测到黑线

case Ox3f:ek1 ;break; 电传

//00II

1111

最左边(或右边)2个光

感器检测到黑线

case Oxbf:ek [3]=2;break; case

//1011

1111

依次类推

Ox9f:ek[3]=3;break; case Oxdf: ek [

//1001

1111

没有检测到黑线(是需

//1101

1111

3 ] =4 ;break; case

//II00 1111

Oxcf:ek[3]=5;break; case

//I110 1111

Oxef:ek[3]=6;break; case

//I1100111

0xe7:ek[31=7;break; case

//II11 0111

Oxf7:ek[3]=8;break; case

//1111 0011

Oxf3:ek[3]=9;break; case

//1111

1011

Oxfb:ek[3]= 10;break; case

//1111

1001

Oxf9:ek[31=l l;break; case

//1111

1101

Oxfd:ek[3]=12;break; case

//I111

1100

Oxfc:ek[3]= 13;break; case

//1111

1110

0xfe:ek[3]=14;break; default: ek[3]=

//1I1I 1111

15;break;

要保持上一次测量值的)

}
/*-----------------switch --------------------*/
if(ek[3]==15) {pidr = pidlr; }

else

{pidr=0.2*pidlr+0.8*(23*(ek[3]-7)+2*(ek[3]+ek[2]+ek[ l]+ek[0]-28)+7*(e k[3]-ek[2])); if(ek[2]!=ek[31)
ppid=-160*(cabs(ek [3]-7))+220*(cabs(ek[ l]-7)-cabs(ek [3]-7));
}
a=HIGH+ppid; //a是电机高电平时间

b=pidr+MIDDLE; //b就是舵机PWM波高电平吋间

if(b>LEFT)
b=LEFT;
if(b<RIGHT)
b=RIGHT;

{char i;







Copyright © 2019- jusc.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务