您好,欢迎来到投聚财经。
搜索
您的当前位置:首页超声波智能小车邹威

超声波智能小车邹威

来源:投聚财经




机器人技术实训


学院(系): 计算机学院





专业: 计算机控制技术

姓名: 邹威

指导老师:赵鹏举

完成时间: 2013-11-20

蚀蒆

目录

罿一、实训任务........................................................................................................................3

二、整体设计方案................................................................................................................3

三、硬件部分........................................................................................................................5

1、硬件部分的整体框架图..................................................................................................5




2、电机驱动模块..........................................................................................................6

3、超声波模块..............................................................................................................9

四、软件部分......................................................................................................................13

1)、程序流程图..............................................................................................................13

2)、程序内容..........................................................................................................13

五、结果分析与调试(附图)..........................................................................................22

六、体会与心得..................................................................................................................22





一、实训任务

薃经过一学期的《机器人技术》的学习,我们打算做一个简易的超

声波小车。控制来完成相应的任务。在硬件部分,要求按照电路板焊接完成电机
驱动电路,以及用万用板搭出单片机最小系统。软件部分,要求能够
熟练的使用keil软件进行C编程,然后通过单片机开发板把程序下载
到我们的单片机上面,反复调试,使之能够按照我们的程序完成相应
的动作。





二、整体设计方案

系统整体框架:

单片机系执行器命

传感器信

统(运算令解释执

号采集

处理)

然后被单片机识别,当单片机识别出信号之后,会对信号进行运算处

理,然后会得出判断,再吧判断的结果传给执行器,让执行器去驱动

电机完成我们要实现的动作。

照实训的要求,完成的小车必须要在碰到障碍物的时候,做出相

应的反应。那么机器怎么来实现对客观事物的反应呢?这就需要用到

传感器,传感器是根据一定的物理定律做出来的一种将物理信号转换

成电信号的装置,只有电信号才能够被单片机系统识别。在这次实训


中我们用的传感器是HC-SR04超声波模块。




执行器主要就是对单片机的命令进行解释执行。就像人的手和脚,

根据大脑的命令完成相应的动作一样,执行器可以根据单片机发出的

电平命令,来实现电机的正反转和调速。在我们这个系统中由于用的

是小功率的直流电机,所以我们采用L298电机驱动模块作为本系统

的执行器。

蚆三、硬件部分

1、硬件部分的整体框架图

超声波

提供5V电源

电池电

提供12V电源

电机驱

模块

动模块

5V

传递电信号

压模块

提供5V电源

单片机

传递单片机命令

系统




图二

整个系统的电源由一块12V800mAH的锂离子电池提供,这块

电池一方面为电机驱动器提供电源,用于驱动L298,另一方面接入

78055V的电压模块里面。

超声波模块为了方便和单片机进行数据通信,采用TTL电平,所以

超声波模块需要5V电源。单片机也是标准的TTL电平,所以也是5V

电源供电。在电机驱动板的信号控制端,我们加了光耦隔离驱动,所

以在信号控制端也必须有5V供电,用于让光耦工作起来。



L2电机驱动模块的信号输入端,一定要讲信号地线引出来,

像我们这个系统采用一个电源供电还好,所有的电平都在一个参考电

压下,如果信号电路和驱动电路采用的不是一个电源供电,而信号地

线又没有接出来,那么就会导致,你输入的高低电平不会被驱动模块

识别,因为两个电路没有共同的参考电压,那么就不知道多少伏是低

电平多少伏是高电平了。





2、电机驱动模块

1)模块简介

莇 这个电机驱动模块的核心部分就是有一块L298N电机驱动芯片。L298SGS公司的产品,比较常见的是15Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机

VS 接电源电压,VS 电压范围VIH 为+2546V。输出电流可达25
A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便
接入电流采样电阻,
形成电流传感信号。L298可驱动2个电动机,OUT1OUT2OUT3OUT4之间可分别接电动机,本实验装置我们选用驱动
一台电动机。571012脚接输入控制电平,控制电机的正反转。
EnAEnB接控制使能端,控制电机的停转。

肃为了防止电机突然转向和骤停产生的冲击电流对单片机和L298本身的伤害,我们在电路板的输入和输出端分别加了光耦隔离和续流二极管。



2)电路图的工作原理



A、电路中的元件:

图中的P1是用于连接杜邦线的插针,D1-D4为发光二极管,U1为光电隔离器,U2L298电机驱动芯片,S1为散热片,C1-C2为去耦电容,C3-C4为滤波电容,D5-D12为续流二极管,J1-J3为插座。





B、电路的工作原理:

L298的芯片资料可以得知,这个芯片只有在ENAENB都为

高电平时,对方向控制端控制才会有电流输出。当方向控制端收到高

电平时有效。

在这个前提下进行分析如下:

膀如果IN1 输入的是低电平,那么2-1-2-3对应的那条线路就会通


那么L298N处的IN1就会呈现高电平,那么这时电机就会正转其他

的输入端IN2IN3IN4也是同样的道理。

图中有两处电容,而且是一大一小。一处电容是为用于12V

源,一处是用于5V电源。大电容主要是起蓄能的作用,当电机在高

速旋转或者突然转向的时候,会产生大量的高次谐波,会阻碍电流的

流动,这时候会出现电机转速急剧下降的情况。所以要加一个大的电

容,当电机运转正常时,电源对电容充电,当电机转速下降时,电容


放电,作为电机的铺助电源。这样不断的充电、放电不间断进行,电




机就会连续的转动了。那个小电容主要是滤除电源本身的高次谐波和

电机转动产生的高次谐波。

D5-D12为续流二极管,所有的感性负载都会连接上续流二极管,

为的是保护驱动电路。

3)模块的控制



图四

L298的芯片手册可以知道,当ENA、ENB片选端为高电平的

时候,L298才可以工作,

IN1=0IN2=1时,正转;

IN1=0IN2=1 时,反转;





IN1=1IN2=1时,刹车;

IN1=0IN2=0时,停止;

3、超声波模块

袆(1)、模块简介
测功能,测距精度可达3mm;模块包括超声波发射器、接收器与控制
电路。

基本工作原理:

1
2)薀才有IOTRIG 触发测距,至少10uS高电平信号;
3
4)薈模块自动发送840Khz 的方波,自动检测是否有信号返回;(5



6有信号返回,通过IOECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试的距离=(高电平时间*声速(340m/s/2

2)、电气参数:



图五

3)、模块的控制:

超声模块时序图:





图六

由模块的时序图可以知道,要驱动这个模块,只需要给一个10u

自动检测回波。一旦检测有回波信号,就立刻输出回响信号。回响信
以上的高电平信号,该模块内部将自动发送840K 是方波信号,并


4、单片机最小系统

1)、复位电路





图七

RST 脚为高电平。随着时间的飞逝(电容充电),稳定后VCC的电衿看上电复位的情况:通电瞬间电容可以当短路(别问我为什么)所


RC时间常数决定。这就是上电高电平复位。低电平复位也类似。判

断是什么复位,你要看上电瞬间,RST是什么电平,是高电平就是高

电平复位,是低电平就是低电平复位(电容在充电的一瞬间是看成短

路的,至于这是什么原因,可以去看看电容充电曲线图,在充电一瞬

间电容两端的电压是非常低的,所以可以看成等电势,也就是短路。

大电容旁边那个小电容一般是稳定电源电压滤波用的。




2)、晶振电路

图八

钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它
芅晶振电路的作用是在电路产生震荡电流,发出时钟信号。它是时


3)整个最小系统电路





肄四、软件部分

1)、程序流程图





初始化

采集超

声波数

后退

判断前方障碍是否

大于20cm

延时

50ms

结束

图十

2)、程序内容





#include<reg52.h>

#include<intrins.h>

#defineuint unsigned int

#defineuchar unsigned char

sbitTlrg=P2^0;//触发信号

sbit Echo=P2^1;//回响信号
sbitIN1=P2^2;

sbitIN2=P2^3;

sbitIN3=P2^4;

sbit IN4=P2^5;





/***********************

*函数名称:delay_nms

*函数功能:延时

*函数调用:无

*入口参数:m

************************/

voiddelay_nms(int m)

{

罿 uinti,j;



for(i=m;i>0;i--)





for(j=110;j>0;j--);

}

/***********************

*函数名称:init()

*函数功能:设定定时器,初始化接收口


*入口参数:无

*出口参数:无

************************/

void init()




{

TMOD=0x01;//定时器0,工作用内部TR0控制计数,而处于16

位计数模式

TH0=0;

TL0=0;

Echo=0;


Echo=1;

}

/***********************

*函数名称:Ult_send()

*函数功能:超声波脉冲发射





*函数调用: delay_nms()

*入口参数:无

*出口参数:无

************************/

voidUlt_send()


{

Tlrg=0;

delay_nms(3);

Tlrg=1;

_nop_();



_nop_();





_nop_();

_nop_();

_nop_();

_nop_();

_nop_();


_nop_();
_nop_();
_nop_();
_nop_();



_nop_();





_nop_();

_nop_();

_nop_();

_nop_();

_nop_();


}

/***********************

*函数名称:Ult_receive()

*函数功能:接收超声波,并计算距离

*函数调用:无





*入口参数:无

*出口参数:distance

************************/

uintUlt_receive()

{


while(Echo==0);//等待接收位变高,一变高,就开定时器,且定时

器清零

TH0=0;

TL0=0;



TR0=1;





while(Echo==1); //等待接收位变低,一变低,就开

TR0=0;

a=TH0;

b=TL0;


distance=num*0.172;

returndistance;

}

/**************





*函数名称:go

*函数功能:前进

*函数调用:无

*入口参数:无

*出口参数:无

*************/
voidgo() {

IN1=0;

IN2=1;

IN3=1;





IN4=0;

}

/**************

*函数名称:back

*函数功能:后退

*函数调用:无
*出口参数:无

*************/

voidback()

{





IN1=1;

IN2=0;

IN3=0;

IN4=1;

}

/**************
*函数功能:左转

*函数调用:无

*入口参数:无

*出口参数:无





*************/

voidleft()

{

IN1=0;

IN2=1;

IN3=0;
IN4=1; }

/**************

*函数名称:right

*函数功能:右转





*函数调用:无

*入口参数:无

*出口参数:无

*************/

voidright()

罿{
IN1=1; IN2=0;

IN3=1;

IN4=0;

}





//主函数

voidmain()

{

uintk;

init();

while(1)

{

Ult_send();

k=Ult_receive();

if(k<200)

//判断前方障碍,是否小于20cm






{

delay_nms(50);

back();//如果有障碍,先退后

delay_nms(100); //延时

right();

//再右转

if(k<200) //如果前方障碍,还是小于20cm,
{
delay_nms(50);

left();

//那么就左转



delay_nms(100);





}

else

{

go();

}


else
{
go();
}



}





}

五、结果分析与调试(附图)

1)、L298N调试

L298N的调试过程用,焊接好以后,可以先采取硬件测试的方

式,找一块电源板,在上面取出12V5V 的电压,把12V接到电机


是否点亮,如果量且电机可以转动起来,就表明这个模块已经焊接完

成。

2)、超声波模块调试

在触发端给10us以上的高电平以后,用示波器打回响信号端,看

是否出现40K的方波,如果出现,这表明这个模块已经驱动完成。




3)、最小系统的调试

在最小系统焊接完成以后,最简单的方法就是烧录一个点亮LED的程序进去,然后把一个LED灯接到单片机相应的IO口上,看LED是否点亮,如果LED亮,表明最小系统已经可以工作。

如果不能工作,那么首先检查焊接是否有虚焊、漏焊的情况。

薅如果没有以上情况,就用示波器打晶振电路,看是否有方波,如果
有,表明没有问题,晶振电路已经起振。

芀如果晶振电路工作正常,那么再用示波器检测复位电路,在打开

电源的瞬间,看低电平时间是否持续在10ms以上,如果是,那么表明复位电路也是正常的。如果这时候,最小系统还是不能工作,那就

说明单片机芯片出了故障。

六、体会与心得

薆经过两天的机器人技术实训,使我对机器人的认识发生了根本性



的变化。原来机器人不只是指外型像人类,而是指一类能够按照设置程序自动运行的机器,比如我们这次实训的超声波小车就是一个简单的机器人,还有生活中的自动售货机也可以称作机器人。

在制作超声波的过程中,我们要自己焊接电机驱动板和最小系统板。在焊接的过程中常常出现,电路原理图都是一样的,但是焊接完成以后,有的可以工作有点却不可以工作的情况,后来和同学们商量讨论,再自己用万用表测试发现,是在焊接的过程中,焊点不牢固导致了虚焊,所以才会出现有的同学焊接的电路板无法工作的情况。通过这次实训,我深刻的认识到,如果要从事单片机方面的工作,一定要对电路有很深的理解,并且要具备很好的焊接技术。

芃刚开始的时候,我完全按照时序图去写延时的时间,却发现干不起,
后来我把时间延长原理的30%以后就可以了,这说明我们在写时序的
时候不要完全照搬时序要在原来的基础上面留有一定的裕度。在调节
超声波时序的时候,
要用示波器去打你单片机上面的触发端,看出来的方波是否满足时序,如果满足,再用示波器打回响信号是否是40k
的方波,如果是就表示此模块已经驱动起来了。



Copyright © 2019- tjwe.cn 版权所有

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

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