基于51单片机的智能避障小车开发

合集下载

基于51单片机设计智能避障小车

基于51单片机设计智能避障小车

单片机设计智能避障小车摘要利用红外对管检测黑线与障碍物,并以STC89C51单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。

其中小车驱动由L298N 驱动电路完成,速度由单片机输出的PWM波控制。

本文首先介绍了智能车的发展前景,接着介绍了该课题设计构想,各模块电路的选择及其电路工作原理,最后对该课题的设计过程进行了总结与展望并附带各个模块的电路原理图,和本设计实物图,及完整的C语言程序。

关键词:智能小车;51单片机;L298N;红外避障;寻迹行驶abstractUsing infrared detection black and obstacles to the line and STC89C51 microcontroller as the control chip to control the speed of the electric car and steering, so as to realize the function of automatic tracking and obstacle avoidance. Which the car driven by the L298N driver circuit is completed, the speed of the microcontroller output PWM wave control. This article first introduces the development of the intelligent car prospect, then introduces the design idea, the subject selection of each module circuit and working principle of the circuit, the design process of the subject is summarized and prospect with each module circuit principle diagram, and the real figure design, and complete C language program.Key words: smart car; 51 MCU; L298N; infrared obstacle avoidance; track driving一、绪论1.1智能小车的意义和作用自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。

基于51单片机的自动避障感光小车

基于51单片机的自动避障感光小车

目录1 引言 (1)2 方案设计与论证 (1)2.1 主控系统 (1)2.2 电机驱动模块 (2)2.3 电源模块 (3)2.4 避障模块 (3)2.5 感光模块 (3)2.6 自动停车模块 (4)3 硬件设计 (4)3.1 总体设计 (4)3.2 驱动电路 (5)3.3 超声波避障模块 (5)3.4 光敏电阻感光模块 (5)3.5 停车模块 (6)4 软件设计 (6)4.1主程序流程图 (6)4.2 避障功能设计 (7)4.3感光功能设计 (11)5 系统的仿真与调试 (14)5.1概述 (14)5.2避障功能的仿真 (16)5.3感光模块的仿真 (17)6 总结 (19)参考文献 (20)致谢 (22)附录A 源程序清单 (23)附录B 电路硬件仿真图 (27)1 引言在科学探险和现实救助中经常会遇到一些人类无法到达的危险地域的探测,这时就需要机器人为我们获取一些数据及情报。

这就需要机器人可以自动定位探测目标向探测目标自动行进并能通过传感器了解周围环境以及自身状态。

在复杂的地形中,机器人的自动避障与自动导航是必须要求的,所以自动避障技术以及自动导航就由此发展起来了。

我的智能小车就是基于这一技术设计出来的。

智能小车是一个集环境感知、规划决策、自动行驶等功能于一体的综合系统, 它集中地运用了计算机、传感、信息、通信、导航、人工智能及自动控制等技术,是典型的高新技术综合体[1]。

智能小车算是简单的机器人,它们经常被用在那些人类无法适应的工作环境中,因此它们在人类生活中得到了广泛的应用。

在很多工作领域中它们可以超越人类工作的质量与效率。

生活中有很多这样的例子如焊接、医疗、喷漆、探测等。

在相对恶劣的工作环境中,机器人不会受到任何影响,并能继续保持良好的工作效率,而人类则不行,时间久了不但会疲惫而且对身体有害。

我此次的设计主要实现自动避障及自动导航功能。

此次设计对于未来智能系统、自动化等方面的发展都有非常重要的作用,所以本设计与实际具有紧密联系,具有重要的现实意义。

基于51单片机的避障小车设计

基于51单片机的避障小车设计

单片机原理及系统课程设计专业:班级:姓名:学号:指导教师:基于单片机的避障小车设计1 引言本课程设计以AT89C51单片机为核心,完成了一辆利用超声波传感器来实现避障功能的小车,使小车对其运动方向受到的阻碍作出躲避动作。

本次设计主要研究小车的避障功能,当距离障碍物大于30cm时,小车前进;当距离障碍物小于20cm时,小车停止,舵机分别旋转到前、左、右三向,从而使超声波模块进行测距,并且小车采取相应的避障措施。

2 整体设计方案及原理2.1 总体设计方案本系统选用AT89C51单片机为主控机。

通过扩展必要的外围接口电路,实现对避障小车的设计,具体设计如下:(1)由于小车要进行测距,为了得到较好的避障效果和较精确的距离信息,经综合分析后,决定采用超声波模块进行非接触型测距。

避障小车与障碍物之间的实际距离通过数码管进行显示。

(2)避障小车采用差速方式控制行进方向,通过四个直流电机控制四轮旋转,并采用L298N双H桥直流电机驱动芯片控制直流电机正反转。

(3)超声波模块分别检测前方、左侧及右侧与障碍物之间的距离,因此需要采用舵机进行旋转完成超声波模块三向测距。

2.2 系统组成框图系统模块图如图1所示。

51单片机驱动模块直流电机超声波、舵机组合测距数码管显示图1 系统模块图3 硬件设计本设计选用AT89C51单片机为主控单元;驱动部分:采用L298N双H桥直流电机驱动模块;测距避障部分:采用US100超声波传感器模块;此外,还采用SG90舵机,实现超声波模块方向的变化。

该系统整体电路原理图如附图1所示。

3.1 电机驱动模块本次课程设计采用L298N双H桥直流电机驱动模块,采用SGS公司原装全新的L298N芯片,内部包含4通道逻辑驱动电路,可以直接驱动两路3-16V直流电机,并提供了5V输出接口(输入最低只要6V),可以给5V单片机电路系统供电(低纹波系数),是智能小车电机驱动的必备利器。

L298N芯片是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

基于51单片机的超声波避障智能车

基于51单片机的超声波避障智能车

置为 0-180 度,呈线性变化,即舵机控制是需要周期七 20ms 的方波信号,改变脉冲占空比, 即可改变转动角度。
3.4 超声波 超声波测距是借助于超声脉冲回波渡越时间法来实现的。 设超声波脉冲由传感器发出到接收 所经历的时间为 t,超声波在空气中的传播速度为 c,则从传感器到目标物体的距离 D 可用 下式求出: D = ct /2 单 片 机 系 统 超声波发射
控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿 轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘 转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板, 进行反馈,然后控制电路板根据所在位置决定电机转动的方向和速度,从而达到 目标停止。其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵 盘转动→位置反馈电位计→控制电路板反馈。 舵机的控制信号周期为 20ms 的脉冲调制信号,其中脉冲宽度从 0.5-2.5ms 相对应得舵盘位
3.2 晶振
每个单片机系统都有晶振,全称叫做晶体振荡器,在单片机力作用非常大,他结合单片机内 部的电路, 产生单片机所需的时钟频率, 单片机的一切指令都是建立在晶振频率的基础上的, 晶振提供的频率越高, 则单片机运行的速度越快、 晶振用一种能把一种电能和机械能相互转 化的晶体共振状态下工作,已提供稳定精确的单品震荡。通常情况下,普通的晶振频率绝对 精度可以达到万分之五十。 晶振的作用为系统提供基本的时钟信号, 通常一个系统共用一个晶振, 以便各个部分被保持 同步。
L298N 电路如图所示
程序:
#include <reg52.h> #include <math.h> #define uchar unsigned char #define uint unsigned int sbit TRIG = P0^0 ; sbit ECHO = P0^1 ; sbit pwm = P0^2; sbit in1 = P1^0; sbit in2 = P1^1; sbit in3 = P1^2; sbit in4 = P1^3;

基于51单片机的模块化智能小车(超声波避障)

基于51单片机的模块化智能小车(超声波避障)

基于51单片机的模块化智能小车(有图有真相)!L298N 电机驱动芯片L电机驱动模块背面STC89C52最小系统背面小车底盘(拆自玩具遥控工程车)!5线4相步进电机(512:1)超声波测距模块装配好51最小系统和电机驱动模块的小车步进电机+超声模块装上了步进电机和超声模块连接好线后的造型+步进电机驱动电路ULN2003大功告成!土豆网上传了视频,但程序没有好好写,导致跑起来很不爽,这是很久以前的一个视频链接:/programs/view/q0naSUSlV-Q/欢迎大家多多交流QQ769942445这是源代码:#include "reg51.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define Moto3 P0/* sbit Moto3_a=P0^0; //5线4相步进电机sbit Moto3_b=P0^1;sbit Moto3_c=P0^2;sbit Moto3_d=P0^3;*/sbit Moto1_l=P2^0; //左电机sbit Moto1_r=P2^1;sbit Moto2_l=P2^2; //右电机sbit Moto2_r=P2^3;sbit TX=P2^4;sbit RX=P2^5;bitflag,flager;ucharhehe,flag_front,flag_left,flag_right;uint time;ulong S;ucharabcd[4]={0x01,0x02,0x04,0x08}; //电机导通相序A-B-C-D uchardcba[4]={0x08,0x04,0x02,0x01}; //电机导通相序D-C-B-Avoid delay1(uchar x){ uchara,b;for(a=0;a<x;a++)for(b=0;b<100;b++);}void Moto3_left(){ uchari,j;for(j=0;j<80;j++){ for(i=0;i<4;i++){ Moto3=abcd[i];delay1(10);}}}void Moto3_right(){ uchari,j;for(j=0;j<80;j++){ for(i=0;i<4;i++){ Moto3=dcba[i];delay1(10);}}}void delay(uchar n) //延时n*1ms{uchara,b,c;for(c=n;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}void left(){ Moto1_l=1;Moto1_r=0;Moto2_l=0;Moto2_r=1;}void right(){ Moto1_l=0;Moto1_r=1;Moto2_l=1;Moto2_r=0;}void go(){ Moto1_l=0;Moto1_r=1;Moto2_l=0;Moto2_r=1;}void back(){ Moto1_l=1;Moto1_r=0;Moto2_l=1;Moto2_r=0;}void stop(){ Moto1_l=1;Moto1_r=1;Moto2_l=1;Moto2_r=1;}void TX_10us() //启动一次模块{ TX=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0;}void count() //计算{ time=TH0*256+TL0;S=(time*1.7)/100; //距离单位:cmTH0=0x00;TL0=0x00;if(S>30||flag==1) //10cm以内有效{ flag=0;}else{ flager=1; //障碍标志}}void test(){ TX_10us();while(!RX); //当RX为零时等待TR0=1; //开启计数while(RX); //当RX为1计数并等待TR0=0; //关闭计数count();}void delayer(uint n){ uinta,b,c;for(c=n;c>0;c--)for(b=100;b>0;b--)for(a=500;a>0;a--);}voidinit(){ TMOD=0x01;TH0=0x00;TL0=0x00;ET0=1;EA=1;}main(){ init();while(1)flag_front=flager;flager=0;Moto3_left();test();flag_left=flager;flager=0;aa: Moto3_right();test();flag_front=flager;flager=0;Moto3_right();test();flag_right=flager;flager=0;hehe=flag_front+(flag_left<<1)+(flag_right<<2);switch(hehe){ case 0x01:back();delayer(3);right();delayer(3);break;case 0x02:right();delayer(1);break;case 0x03:right();delayer(2);break;case 0x04:left();delayer(1);break;case 0x05:left();delayer(2);break;case 0x07:back();delayer(3);right();delayer(3);break;default:break;}go();flag_front=0;flag_left=0;flag_right=0;test();flag_right=flager;flager=0;Moto3_left();test();flag_front=flager;flager=0;Moto3_left();test();flag_left=flager;flager=0;hehe=flag_front+(flag_left<<1)+(flag_right<<2);switch(hehe){ case 0x01:back();delayer(3);right();delayer(3);break;case 0x02:right();delayer(1);break;case 0x03:right();delayer(2);break;case 0x04:left();delayer(1);break;case 0x05:left();delayer(2);break;case 0x07:back();delayer(3);right();delayer(3);break;default:break;}go();flag_front=0;flag_left=0;flag_right=0;gotoaa;}}void time0()interrupt 1{ flag=1;}。

基于51单片机的避障小车程序

基于51单片机的避障小车程序

基于51单片机的避障小车程序程序中有我写的注释,看不懂程序的话,可以参考。

#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit IN1=P2^1;//左电机输入端1sbit IN2=P2^2;//左电机输入端2sbit IN3=P2^3;//右电机输入端1sbit IN4=P2^4;//右电机输入端2sbit ENA=P2^0;//右电机使能控制端sbit ENB=P2^5;//左电机使能控制端sbit TX=P1^0;//超声波发送控制端sbit RX=P1^1;//超声波接收控制端uint time=0,ERROR;//用于存放定时器时间值uint PWM1,PWM2,num1=0,num2=0;uint s=0;//用于存放距离的值uchar tt=0;void Delay20us()//@11.0592MHz 延时20us{unsigned char i;_nop_();_nop_();_nop_();i = 52;while (--i);}void forwardg()//前进函数{IN1=1;IN2=0;IN3=1;IN4=0;PWM1=15;PWM2=18;}void stopg()//停止函数{IN1=1;IN2=1;IN3=1;IN4=1;PWM1=0;PWM2=0;}void count()//测距函数{tt=200;if(tt==200)//20ms超声波发送一次{tt=0;TX=1;//超声波发送端Delay20us();//延时20usTX=0;//超声波发送端ERROR=50000;//while(RX==0&&ERROR>0)//判断是否有接收&&等待时常{ERROR--;//等待时长}if(RX==1)//超声波有接收RX=1{TR0=1;//开始计时while(RX&&!TF0);//接收完毕(RX=0)或者超出量程结束语句TR0=0;//停止计时if(TF0==1)//如果溢出(超出量程){TF0=0;//置溢出标志位为0s=999;//直行控制}else{time=TH0*256+TL0;TH0=0;TL0=0;s=(time*1.7)/100;//距离计算公式}}else{s=999;}}}void time0init()//定时器0初始化{TMOD|=0x01;//设置定时器0为工作方式1TH0=0;TL0=0;//定时器赋初值}void time1init()//定时器1初始化{ET1=1;//开定时器中断TR1=1;//开定时器1中断TH1=0xFF;//定时器赋初值TL1=0xA3;TMOD|=0x10;//设置定时器1为工作方式1}void time1() interrupt 3//定时计数器1中断{TH1=0xFF;TL1=0xA3;//赋初值tt++;num1++;num2++;if(num1>=100) //PWM的周期为100*0.1=10ms num1=0;if(num2>=100)num2=0;if(num1<PWM1)ENA=1;//打开右电机使能控制端if(num2<PWM2)ENB=1;if(num1>=PWM1)ENA=0;//关闭右电机使能控制端if(num2>=PWM2)ENB=0;}void main(){time0init();time1init();EA=1;//开总中断while(1){count();//调用距离计算函数if(s>=6)//大于等于6厘米前进{forwardg();}else{stopg();}}}。

基于51单片机的超声波智能避障小车论文

基于51单片机的超声波智能避障小车论文

基于51单片机的超声波智能避障小车所在院系:电气与控制工程学院作者:2015.7.7论文题目:基于51单片机的超声波智能避障小车专业:微电子学1201学生:指导老师:刘晓荣柴钰王健摘要随着国内外智能小车的迅速发展,我们在本次课设中进行了超声波智能避障小车的设计,超声波避障小车主要是运用超声波测距进行数据传输,最后通过单片机控制电机进行避障,这次小车设计的意义在于探索智能小车的设计理念及设计方法,有些生活中的实际问题便是由于人的反应时间过长所引起,而智能车实现了自动应急,为生命保障做最后一道壁垒。

关键词:智能小车,单片机,超声波,测距,避障1绪论二十一世纪是计算机技术、科学技术和汽车工业迅猛发展的时代,在此大环境下,汽车与电子信息产业逐渐的一体化,向电子化、多媒体化和智能化方向发展,智能超声波避障小车则是其中的代表,它的研究及应用无疑成为关注的焦点。

1.1概述本小车使用一台STC89C52单片机作为主控芯片,它通过超声波测距来获取小车距离障碍物的距离,在小车与障碍物的距离小于安全距离(用软件设定)时自动拐弯,以避开障碍物。

在避开障碍物后,小车会沿直线前进。

本系统设计的简易智能小车分为几个模块:单片机控制系统、超声波路面检测系统、前进、转弯控制电机。

1.1.1 基于51单片机的超声波智能避障小车的发展随着社会的不断发展和科学技术水平的不断提高,人类渴望创造出一种取代人力的劳动工具解放劳动力,于是出现了“机器人”这个代名词。

1959年诞生世界上第一台机器人,至今已有50多年的历史,机器人技术在科学领域也取得了质的飞跃,目前已发展成一门机械、电子、计算机、自动控制、信号处理,传感器等多学科为一体的尖端技术。

智能超声波避障小车经历了三代技术创新变革。

第一代超声波避障小车可编程的示教再现型,不需要装载任何传感器,只是采用简单的开关控制,通过编程来设置小车的路径与运动参数,在工作过程中不能根据环境的变化而改变自身的运动轨迹。

基于51单片机的自动避障小车的研究与设计

基于51单片机的自动避障小车的研究与设计

基于51单片机的自动避障小车的研究与设计徐永杰(西南林学院计算机与信息科学系,云南昆明650224)摘要:本文介绍了利用红外反射式传感器实现小车自动避障的设计与实现,能在有障碍物的情况下判断并自动躲避。

自动避障是基于自动避障小车(AAOV—auto-avoid obstacle -vehicle)的机器人系统。

实验中采用反射式红外传感器采集外界信号,红外反射式传感器采集后的信号经A/D转换器转换为数字信号,再由单片机对数字信号进行处理,控制电机,躲避障碍物。

系统控制核心采用AT89C51单片机,电机驱动芯片采用TA7267BP,利用三相电机来控制避障小车的转向,A/D转换器采用串行的TLC0831芯片,反射式传感器采用QRB1114型。

该技术可以应用于儿童智能玩具开发、隧道或管道检测,无人驾驶机动车、无人工厂、仓库、服务机器人等领域。

关键词:自动避障红外传感器单片机电路设计The research and design of AAOV-auto-avoid abstacle car whichbases on 51 single chipsYongjie Xu(Southwest Forestry University Computer And Information ScienceDepartment Kunming ,Yunnan 650224) [SUMMARY]This article introduces the design and execution of automatically avoiding obstacles by usage of the reflected infrared sensor on smsll cars.It makes the small cars judge and evade the obstacles automatically. Avoiding obstacles automatically is based on the AAOV-auto-avoid obstacle-vehicle of robot system.In the experiment,it adopts reflected infrared sensor to collect the external world signals which is transforms into number signals by the A/D conversion machine later then.After that,the single chip will handle these number signals and control current machine to avoid obstacles.The control core in system adops the AT89C2051 single chip;the current machine driving CMOS chip adops TA726TBP list,making use of 3-phasen current machine to control car’s direction;the A/D conversion machine adops series lines TLC0831CMOS chip;the reflecting type sensor adops QRB1114. This technology could serve to the development of children’s intelligent toys ,the examnation of tunnels and pipes, driverless mobile, robot factory, warehouse, service robot and etc.KEYWORD:AAOV-auto-avoid infraned sensor single chip Microcomputer,current design目录目录 (III)前言 (6)1 避障小车设计思路 (7)1.1设计思路 (7)1.2系统组成 (7)2 控制核心——单片机 (8)2.1单片机的发展历史 (8)2.2单片机的特点 (8)2.3单片机的应用领域 (9)2.3.1 单片机在智能仪表中的应用 (9)2.3.2 单片机在机电一体化中的应用 (9)2.4单片机外部晶振 (9)3 AT89C51单片机 (10)3.1主要性能参数 (10)3.2单片机选择 (10)4 传感器 (11)4.1传感器选择 (11)4.2红外反射式光电传感器特性与工作原理 (11)4.3两种反射式型号的传感器参数比较 (12)4.3.1 QRB1114型反射式传感器 (12)4.3.2 ST178型反射式传感器 (13)4.3.3 自制传感器测试数据及实物图片 (14)4.4具体设计与实现 (17)4.5QRB1114反射式红外传感器与A/D转换器连接电路 (17)5 模/数(A/D)转换器 (19)5.1A/D转换的主要性能指标 (19)5.1.1 分辨率 (19)5.1.2 转换时间 (19)5.1.3 量程 (19)5.1.4 精度 (19)5.2A/D转换的外围电路 (19)5.2.1 采样保持电路 (20)5.2.2 多路转换模拟开关 (20)5.2.3 三态门 (20)5.38位A/D转换器----ADC0809芯片 (20)5.3.1 ADC0809的主要特性 (21)5.3.2 ADC0809内部结构 (21)5.3.3 ADC0809引脚功能 (22)5.3.4 ADC0809的工作过程 (23)5.3.5 ADC0809与8051单片机模拟实验 (23)5.3.6 ADC0809与8051模拟实验程序 (24)5.4TLC0831八位串行A/D转换器 (25)5.4.1 TLC0831的特点 (25)5.4.2 TLC0831引脚功能 (25)5.4.3 TLC0831电气特性 (26)5.4.4 功能方框图及功能说明 (26)5.5TLC0831与8051单片机模拟实验 (27)5.5.1 TLC0851与8051模拟实验电路图 (27)5.5.2 TLC0851与8051模拟实验程序 (28)6 单片机驱动直流小电机 (30)6.1电机驱动电路器件 (30)6.2驱动电路的基本功能 (30)6.3H桥式电路原理 (30)6.4驱动芯片比较 (31)6.4.1 电机驱动芯片 L298 (31)6.4.2 电机驱动专用芯片TA7267BP (32)6.5驱动芯片选择 (34)6.6TA7267BP驱动芯片与AT89C51单片机连接电路 (35)7 单片机控制避障小车方向 (36)7.1步进电机控制系统及各部分功能 (36)7.2步进电机 (37)7.3单片机控制步进电机接口电路 (37)8 避障小车的动力——微型电机 (39)8.1三种类型的电机比较 (39)8.2电机选择 (39)9 电路图及电机驱动程序和万向轮驱动程序 (41)9.1电路全图 (41)9.2程序选择 (41)9.3程序流程图 (41)9.4程序清单 (42)10 结论 (44)参考文献 (45)指导教师简介 ........................................... 错误!未定义书签。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

L298N的详细资料驱动直流电机
电机驱动电路;电机转速控制电路(PWM信号)
主要采用L298N,通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转。

驱动原理图
L298电机驱动模块实物图
我正在用L298N驱动我的小车的两个直流减速电机,其实它很好用,
1和15和8引脚直接接地,
4管脚VS接2.5到46的电压,它是用来驱动电机的,
9引脚是用来接4.5到7V的电压的,它是用来驱动L298芯片的,
记住,L298需要从外部接两个电压,一个是给电机的,另一个给L298芯片的
6和11引脚是它的使能端,一个使能端控制一个电机,至于那个控制那个你自己焊接,你可以把它理解为总开关,只有当它们都是高电平的时候两个电机才有可能工作,
5,7,10,12是298的信号输入端和单片机的IO口相连,
2,3,13,14是输出端,
输入5和7控制输出2和3, 输入的10,12控制输出的13,14
L298N型驱动器的原理及应用
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

L298N的恒压恒流桥式2A驱动芯片L298N说明及应用
L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。

可以方便的驱动两个直流电机,或一个两相步进电机。

L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。

L298N 可接受标准TTL逻辑电平信号V SS,V SS可接4.5~7 V电压。

4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。

输出电流可达2.5 A,可驱动电感性负载。

1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。

L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。

5,7,10,12脚接输入控制电平,控制电机的正反转。

EnA,EnB接控制使能端,控制电机的停转。

表1是L298N功能逻辑图。

In3,In4的逻辑图与表1相同。

由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。

同为低电平电机停止,同为高电平电机刹停。

L298N控制器原理如下:图3是控制器原理图,由3个虚线框图组成。

以下是用51单片机发出的PWM信号来利用L298电机控制模块对直流电机进行驱动的源程序
#include<reg52.h> //用T1计时器中断进行对小车转向的空制
sbit h1=P0^0;//红外线探测模块
sbit h2=P0^1;
sbit h3=P0^2;
sbit IP1=P2^0;//电机1
sbit IP2=P2^1;
sbit IP3=P2^2;//电机2
sbit IP4=P2^3;
void delay1ms(void);
void delaynms(int);
void start(void);
void jiasu(int,int,int);//电机加速
void zhuanxiang(char,char,char);//电机转向
//unsigned char flag1=0,flag2=0,count=0;
//unsigned int time=0;
void main(void)
{
h1=1;
h2=1;
h3=1;//各端口开始时都置一
IP1=1;
IP2=1;
IP3=1;
IP4=1;
TMOD=0X1; //设置T0计时器为TMOD1工作方式TH0=0XFC;
TL0=0X66;
EA=1;
ET0=1; //开启中断总开关,T0中断
delay1ms();
while(1)
{
TR0=1;//启动计时器
start();
delaynms(50);
zhuanxiang(h1,h2,h3);
}
}
void zxzd(void) interrupt 1//转向调节中断子程序{
if((h1=0)&&(h2=1)&&(h3=0)) //直走
{
TH0=0XFC;
TL0=0X66;
IP1=0;IP2=1;
IP3=1;IP4=0;
}
if((h1=1)&&(h2=1)&&(h3=0))//右转
{
TH0=0XFC;
TL0=0X66;
IP1=0;IP2=1;
IP3=1;IP4=1;
}
if((h1=0)&&(h2=1)&&(h3=1)) //左转
{
TH0=0XFC;
TL0=0X66;
IP1=1;IP2=1;
IP3=1;IP4=0;
}
if((h1=1)&&(h2=1)&&(h3=1))//终点停车
{
TH0=0XFC;
TL0=0X66;
IP1=1;IP2=1;
IP3=1;IP4=1;
}
}
void start(void)
{
IP1=0,IP2=1,IP3=1,IP4=0;
}
void zhuanxiang(char h1,char h2,char h3)//小车转向函数{
if((h1=0)&&(h2=1)&&(h3=0))
{
if((h1=1)&&(h2=0)&&(h3=0))
{
if((h1=0)&&(h2=0)&&(h3=1))
{
if((h1=1)&&(h2=1)&&(h3=1))
{
TH0=0XFC;
TL0=0X66;
TR0=1;
}
}
}
}
}
void delay1ms(void)//12M晶振
{
int i;
for(i=0;i<120;i++);
}
void delaynms(unsigned int n)
{
int i,j;
for(j=0;j<n;j++)
for(i=0;i<120;i++);
}。

相关文档
最新文档