• 基于51单片机的红外自动避障小车(lunwen+任务书+开题+文献综述+翻译及原文+避障程序)


    目 录
    1 绪论 1
    1.1 课题研究背景及意义 1
    1.2 国内外研究现状 1
    1.2.1国外智能车辆研究现状 2
    1.2.2发展前景 3
    1.3 课题主要研究内容 4
    2 工作原理及总体设计 5
    2.1 工作原理 5
    2.2 总体设计 5
    3 硬件设计 7
    3.1 小车车体设计 7
    3.2 电源模块 7
    3.3 电机驱动模块 8
    3.4 电机模块 9
    3.5 检测模块 9
    3.6 最终方案 9
    4 硬件实现及单元电路设计 11
    4.1 主控制模块 11
    4.2 单片机的复位电路与振荡电路设计 11
    4.3 电源设计 13
    4.4 驱动电路 14
    4.5 E18-D50NK光电开关避障模块 15
    4.6 红外光电开关传感器的安装 17
    4.7 小车车体总体设计 17
    5 软件设计与仿真调试 18
    5.1 主程序流程 18
    5.2 Keil uVision3环境 19
    5.3 单片机程序烧写 22
    5.4 系统的安装与调试 23
    结束语 24
    致 谢 25
    参考文献 26
    附录 28
    附录A 整体电路图 28
    附录B 部分源程序 29
    1.3 课题主要研究内容
    系统采用STC89C52单片机作为核心控制单元,小车车体前方的红外线传感器检测前方障碍物,用于判断是否需要转弯,防止小车碰到障碍物。
    本设计题目为基于单片机的自动避障小车设计,主要研究小车的避障功能,小车遇到障碍物时,当距离障碍物大于25cm,PWM信号自增,驱动电机加速,小车加速前进,当小于15cm时,PWM信号自减,驱动电机减速,小车减速前进,并且小车采取相应的避障措施。这里探测装置必不可少,因为红外在距离检测方面的准确定位。所以采用红外线传感器作为探测装置。运用单片机搭建控制电路,把红外信号接到单片机上,通过单片机对信号的检测和处理,控制外围电路使小车转向,来避开障碍物。通过H桥驱动电路来控制电机的转向和前进。
    2 工作原理及总体设计
    2.1 工作原理
    在这里我们采用STC89C52作为控制电路,把两个红外信号接到单片机上,通过单片机对信号的接收和处理,控制外围电路使小车转向,来避开障碍物。通过H桥驱动电路来控制电机的转向和前进。通过为微控制芯片对数据进行处理,处理速度远远满足小车的运行和避障的需求。也可以通过编写不同的程序,增加模块来增加小车的功能。
    本小车使用STC89C52单片机作为主控芯片,它通过红外线传感器获知前方的障碍物情况,若不存在障碍物,小车直线前进;若左前方发现障碍物,左前放的红外传感器将信号传给单片机,单片机作出处理后控制小车向右转弯以躲开障碍物;若右前方发现障碍物,右前放的红外传感器将信号传给单片机,单片机作出处理后控制小车向左转弯以躲开障碍物;若正前方发现障碍物,则两个红外传感器将信号传给单片机,单片机作出处理后控制小车倒车至合适距离后,通过传感器传来的信号决定转弯方向,以躲开障碍物。
    2.2 总体设计
    通过学习相关技术资料可了解到,红外测模块是系统的关键模块之一,红外检测方案的好坏直接关系到整体性能的优劣,因此确定红外检测方案是总体方案的关键。
    检测使用的红外传感器是专业的红外避障传感器,当有障碍物时,它能够反映出电平高低的变化,而且更加廉价易得,适合简单的避障。系统总体设计方框图如图2-1所示。
    在这里插入图片描述

    图2-1 系统总体设计方框图
    根据系统方案设计,系统包括以下模块:STC89C52主控模块、L298N电机驱动模块、电源模块、红外检测模块等。各模块作用如下:
    STC89C52主控模块,作为整个智能小车的“大脑”,将根据传感器的信号,控制算法做出控制决策,驱动直流电机等完成对智能小车的控制。
    电源模块,为整个系统提供合适而又稳定的电源。
    红外检测模块,检测障碍信号,为单片机提供前方道路信息。
    电机驱动模块,驱动直流电机完成智能车的加减速和转向控制。

    #include 	         //调用单片机头文件
    #define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
    #define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
    
    sbit biz_l = P1^1;		    //左边避障
    sbit biz_r = P1^0;		    //右边避障
    
    /********************LN298电机驱动IO口定义*********************************/
    sbit qu_ll = P2^1;	   //左边电机控制IN1
    sbit qu_zl = P2^0;	   //左边电机控制IN2
    sbit qu_zr = P2^2;	   //右边电机控制IN1
    sbit qu_rr = P2^3;	   //右边电机控制IN2
    
    /*********************1ms 延时函数*****************************/
    void delay_1ms(uint q)
    {
    	uint i,j;
    	for(i=q;i>0;i--)
    		for(j=120;j>0;j--);
    }
    
    /***********************小车前进函数************************/
    void go()
    {
    	qu_ll = 1;  
    	qu_zl = 0; 
    	qu_zr = 0; 
    	qu_rr = 1;    	
    }
    
    /***********************小车后退函数************************/
    void back()
    {
    	qu_ll = 0;  
    	qu_zl = 1; 
    	qu_zr = 1; 
    	qu_rr = 0;    	
    }
    
    /***********************小车左转函数 只有一个轮子动************************/
    void left()
    {
    	qu_ll = 0;  
    	qu_zl = 0; 
    	qu_zr = 0; 
    	qu_rr = 1;    	
    }
    
    /***********************小车左转函数 左边轮子后退 右边轮子前进************************/
    void left_s()
    {
    	qu_ll = 0;  
    	qu_zl = 1; 
    	qu_zr = 0; 
    	qu_rr = 1;    	
    }
    
    /***********************小车停下函数************************/
    void stop()
    {
    	qu_ll = 0;  
    	qu_zl = 0; 
    	qu_zr = 0; 
    	qu_rr = 0;
    }
    
    /***********************小车右转函数 只有一个轮子动************************/
    void right()
    {
    	qu_ll = 1;  
    	qu_zl = 0; 
    	qu_zr = 0; 
    	qu_rr = 0;    	
    }
    
    /***********************小车右转函数 左边轮子前进 右边轮子后退************************/
    void right_s()
    {
    	qu_ll = 1;  
    	qu_zl = 0; 
    	qu_zr = 1; 
    	qu_rr = 0;	
    }
    
    /*********************红外避障头避障*****************************/
    void hongwai_bizhang()
    {
    	if((biz_l == 1) && (biz_r == 1))     //没有障碍物时就前进
    	{
    	  	 go();
    	}
    	else if((biz_l == 0) && (biz_r == 0))//两个传感器都有障碍物时,先后退然后再右转
    	{
    	  	 stop();
    		 delay_1ms(100);
    		 back();
    		 delay_1ms(500);
    		 right_s();
    		 delay_1ms(380);
    	}
    	else if(biz_l == 0)   				 //左边传感器都有障碍物时,先停下然后再右转
    	{
    		stop();
    		delay_1ms(100);
    		right_s();
    		delay_1ms(200);
    	}	
    	else if(biz_r == 0)					//右边传感器都有障碍物时,先停下然后再左转
    	{
    		stop();
    		delay_1ms(100);
    		left_s();
    		delay_1ms(200);	
    	}
    	go();
    }
    
    /***************主函数*****************/
    void main()
    {
    	while(1)
    	{
    		delay_1ms(150);	
    		hongwai_bizhang();	
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    全栈知识体系
    图解 Spring 解决循环依赖,学不会接着砍!
    使用sonar-scanner扫描代码
    unity基础4-常用插件
    Shell程序退出状态码的命令详解
    优化VOI(Virtual Operating System Infrastructure,虚拟操作系统基础架构)架构的性能
    [附源码]计算机毕业设计基于springboot校园帮平台管理系统
    软件设计模式系列之二——抽象工厂模式
    课题学习(一)----静态测量
    PLC面向对象编程系列之如何设计分解状态机(FSM)的状态
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/127801287