芁
膈
芇机器人技术实训
袅
莁
螅
蚄
蒁
羀学院(系): 计算机学院
蒇专业: 计算机控制技术
蒃姓名: 邹威
薁指导老师:赵鹏举
蒁完成时间: 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电源 |
单片机 | 传递单片机命令 | |
系统 |
膇 图二
蒅整个系统的电源由一块12V、800mAH的锂离子电池提供,这块
电池一方面为电机驱动器提供电源,用于驱动L298,另一方面接入
到7805转5V的电压模块里面。
袃超声波模块为了方便和单片机进行数据通信,采用TTL电平,所以
超声波模块需要5V电源。单片机也是标准的TTL电平,所以也是5V
电源供电。在电机驱动板的信号控制端,我们加了光耦隔离驱动,所
以在信号控制端也必须有5V供电,用于让光耦工作起来。
蚅在L2电机驱动模块的信号输入端,一定要讲信号地线引出来,
像我们这个系统采用一个电源供电还好,所有的电平都在一个参考电
压下,如果信号电路和驱动电路采用的不是一个电源供电,而信号地
线又没有接出来,那么就会导致,你输入的高低电平不会被驱动模块
识别,因为两个电路没有共同的参考电压,那么就不知道多少伏是低
电平多少伏是高电平了。
芃
羃2、电机驱动模块
羇(1)模块简介
莇 这个电机驱动模块的核心部分就是有一块L298N电机驱动芯片。L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机
脚VS 接电源电压,VS 电压范围VIH 为+2.5~46V。输出电流可达2.5
A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便
接入电流采样电阻,
形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动
一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。
EnA,EnB接控制使能端,控制电机的停转。
肃为了防止电机突然转向和骤停产生的冲击电流对单片机和L298本身的伤害,我们在电路板的输入和输出端分别加了光耦隔离和续流二极管。
莈(2)电路图的工作原理
袅
肅 | |
膃A、电路中的元件:
蝿图中的P1是用于连接杜邦线的插针,D1-D4为发光二极管,U1为光电隔离器,U2为L298电机驱动芯片,S1为散热片,C1-C2为去耦电容,C3-C4为滤波电容,D5-D12为续流二极管,J1-J3为插座。
薇B、电路的工作原理:
袄由L298的芯片资料可以得知,这个芯片只有在ENA和ENB都为
高电平时,对方向控制端控制才会有电流输出。当方向控制端收到高
电平时有效。
节在这个前提下进行分析如下:
膀如果IN1 输入的是低电平,那么2-1-2-3对应的那条线路就会通
那么L298N处的IN1就会呈现高电平,那么这时电机就会正转。其他
的输入端IN2、IN3、IN4也是同样的道理。
羅图中有两处电容,而且是一大一小。一处电容是为用于12V电
源,一处是用于5V电源。大电容主要是起蓄能的作用,当电机在高
速旋转或者突然转向的时候,会产生大量的高次谐波,会阻碍电流的
流动,这时候会出现电机转速急剧下降的情况。所以要加一个大的电
容,当电机运转正常时,电源对电容充电,当电机转速下降时,电容
放电,作为电机的铺助电源。这样不断的充电、放电不间断进行,电
机就会连续的转动了。那个小电容主要是滤除电源本身的高次谐波和
电机转动产生的高次谐波。
薃D5-D12为续流二极管,所有的感性负载都会连接上续流二极管,
为的是保护驱动电路。
莂(3)模块的控制
薁
螇 图四
蚆从L298的芯片手册可以知道,当ENA、ENB片选端为高电平的
时候,L298才可以工作,
蒂当IN1=0,IN2=1时,正转;
螈当IN1=0,IN2=1 时,反转;
葿当IN1=1,IN2=1时,刹车;
莅当IN1=0,IN2=0时,停止;
蒂
腿3、超声波模块
袆(1)、模块简介
测功能,测距精度可达3mm;模块包括超声波发射器、接收器与控制
电路。
薂基本工作原理:
(1)
(2)薀才有IO口TRIG 触发测距,至少10uS高电平信号;
(3)
(4)薈模块自动发送8个40Khz 的方波,自动检测是否有信号返回;(5)
(6)羂有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试的距离=(高电平时间*声速(340m/s)/2。
蚂(2)、电气参数:
羀
肆 图五
羅(3)、模块的控制:
螂 超声模块时序图:
肇
螈 图六
螄由模块的时序图可以知道,要驱动这个模块,只需要给一个10u
自动检测回波。一旦检测有回波信号,就立刻输出回响信号。回响信
以上的高电平信号,该模块内部将自动发送8个40K 是方波信号,并
袂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_();
肃
莈}
袅/***********************
肅*函数名称: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, | ||
left(); | //那么就左转 | |
蒁 | delay_nms(100); |
|
莆 袄 蚃 蚈 肈 蚃 螃 聿 蒆 蚆 | } else { go(); | |
} |
| |
else | ||
袃 } |
|
蒀}
膇五、结果分析与调试(附图)
蒅(1)、L298N调试
袃在L298N的调试过程用,焊接好以后,可以先采取硬件测试的方
式,找一块电源板,在上面取出12V和5V 的电压,把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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务