最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

智能车电子竞赛论文

来源:动视网 责编:小OO 时间:2025-09-28 12:19:40
文档

智能车电子竞赛论文

2015年长通杯电子设计竞赛智能灭火车(A题)所在学院:电气信息工程学院小组成员:指导教师:2015年11月13日摘要本次设计以STM32作为主控芯片,利用红处开关管探测障碍物,使得小车能够避开障碍,利用火焰传感器找到火源,从而做出灭火动作。完成了作品基本功能要求。随着社会与国家的发展,在经济迅速增长的同时,各种危险场所不可避免的火灾频繁出现,给社会安全造成了很多隐患,于是现代火灾及时补救已成为迫在眉睫需要解决的问题,救火早一刻就少一分损失,消防救援人员固然速度已经很快,但也需要一段不小的时间
推荐度:
导读2015年长通杯电子设计竞赛智能灭火车(A题)所在学院:电气信息工程学院小组成员:指导教师:2015年11月13日摘要本次设计以STM32作为主控芯片,利用红处开关管探测障碍物,使得小车能够避开障碍,利用火焰传感器找到火源,从而做出灭火动作。完成了作品基本功能要求。随着社会与国家的发展,在经济迅速增长的同时,各种危险场所不可避免的火灾频繁出现,给社会安全造成了很多隐患,于是现代火灾及时补救已成为迫在眉睫需要解决的问题,救火早一刻就少一分损失,消防救援人员固然速度已经很快,但也需要一段不小的时间
2015年长通杯电子设计竞赛

智能灭火车(A题)

所在学院:电气信息工程学院

小组成员: 

指导教师:     

2015年11月13日

摘    要 

本次设计以STM32作为主控芯片,利用红处开关管探测障碍物,使得小车能够避开障碍,利用火焰传感器找到火源,从而做出灭火动作。完成了作品基本功能要求。  

随着社会与国家的发展,在经济迅速增长的同时,各种危险场所不可避免的火灾频繁出现,给社会安全造成了很多隐患,于是现代火灾及时补救已成为迫在眉睫需要解决的问题,救火早一刻就少一分损失,消防救援人员固然速度已经很快,但也需要一段不小的时间,而且进入救火现场还有生命危险的可能,于是智能灭火小车的理念诞生了。  本设计主要就是针对智能灭火车的单片机控制与制作进行研究。通过对灭火机器人国内外研究现状的分析,进行了智能灭火车包括硬件方案和软件方案的整体方案设计,具体就驱动电机、传感器等进行了分析比较。电源电路提供系统所需的工作电源,L298N电机驱动芯片驱动电机控制小车揣测不同方向的前进后退以及转向,红外传感器模块完成寻迹和避障,火焰传感器检测火焰,灭火风扇进行灭火。本系统硬件配置合理,控制方案优化,实现了智能灭火车在不同的外部坏境下的循迹、避障和灭火的准确控制。本设计制作的灭火机器人具有简易灭火功能,达到了实现现场灭火的目的。

关键词:智能小车   红外接近开关   PWM   火焰传感器   红外对管

目    录

一、系统方案    1

1、循迹模块的论证与选择    1

2、电机驱动模块的论证与选择    1

3、寻找火源模块的论证与选择    2

二、系统理论分析与计算    2

1、循迹方法种类的的分析    2

2、利用延时控制小车转动角度的计算    2

三、电路与程序设计    3

1、电路的设计    3

(1)系统总体框图    3

(2)电路原理图    3

(4)电源    4

2、程序的设计    4

(1)程序功能描述与设计思路    4

(2)主程序流程图    5

四、测试方案与测试结果    6

1、测试方案    6

2、测试条件与仪器    6

五、结论与心得    6

六、参考文献    7

附录1:实物图    8

附录2:源程序    9

智能灭火小车(A题)

一、系统方案

本系统主要由循迹模块、避障模块、寻源模块、电源模块、电机驱动模块组成,下面分别论证这几个模块的选择。

1、循迹模块的论证与选择

方案一:采用发光二极管加光敏电阻。易受到外界光源的干扰,有时甚至检测不到黑线,主要因为可见光的反射效果跟地表的平坦程度,地表材料的反射情况均对检测效果产生直接影响。

方案二:采用CCD传感器,此种方法虽然能对路面信息进行准确完备的反应,但它存在信息处理满,实时性差等缺点,因此若采用CCD传感器,无疑会加重单片机的处理负担,不利于实现更好的控制策略

方案三:用红外对管作为寻迹传感器。红外反射式传感器由1个红外发射管(发射器)和1个光电二极管(接收器)构成。红外发射管发出的红外光在遇到反光性较强的物体(表面为白色或近白色)后被折回,被光电二极管接收到,引起光电二极管光生电流的增大。将这个变化转为电压信号,该电压通过比较器LM339后转换为高电平(单片机的有效电平),检测出白线;若接收不到发射管发出的光线则输出为低电压,该电压通过比较器LM339后转换为低电平(单片机的有效电平),检测出黑线,且红外对管使用方便,

综合以上三种方案,选择方案三。

2、电机驱动模块的论证与选择

方案一:采用分立组件组成的平衡式驱动电路。可以由单片机直接对其进行控制,但由于分立组件占空间较大,考虑到电机的体积问题,还需要继电器,此方案不够理想

方案二:采用L298N电机驱动模块。此模块工作较稳定,且编程简单,体积小,内部集成了两个H桥,可以同时控制两个电机。硬件实现较简单。

综合以上二种方案,选择方案二。

3、寻找火源模块的论证与选择

方案一:采用超声波。能检测到障碍物但不能准确的检测到光源 。

方案二:采用火焰传感器。火焰传感器能够探测到波长在700纳米~1000纳米范围内的红外光,探测角度为60,其中红外光波长在880纳米附近时候的灵敏度达到最大。远红外火焰探头将外界红外光的强弱变化转化为电流的变化,通过A/D转换器反映为0~255范围内数值的变化。外界红外光越强,数值越小;反之则越大。

综合考虑采用方案二。

二、系统理论分析与计算

1、循迹方法种类的的分析    

我们利用红外传感器来进行循迹,红外传感器上有七个灯,我们选择其中的几个灯进行组合,来达到按特定路线循迹的目的。

2、利用延时控制小车转动角度的计算  

在小车行进过程中,有时需要转动不同的角度,而这个角度的控制是利用延时来实现的。通过多次测量实验,确定一定的角度,并进行记录,从而实现要求。

三、电路与程序设计

1、电路的设计

(1)系统总体框图

图1   系统总体框图

(2)电路原理图

  

图2  红外对管电路

                                 图3 红外接近开关电路

                                  图4 火焰传感器电路

(4)电源

电源由变压部分、滤波部分、稳压部分组成。为整个系统提供7.2V电压,确保电路的正常稳定工作。

2、程序的设计

(1)程序功能描述与设计思路

1、程序功能描述

根据题目要求软件部分主要实现循迹、避障、寻源、灭火等功能。

1)循迹:利用红外对管对黑线的反应,进行控制。

2)避障:利用红外接近开关检测障碍物,让小车进行一定的躲避。

3) 寻源:采用火焰传感器寻找火焰。

4)灭火:自制小风扇进行灭火。

2、程序设计思路

根据题目,场地中有很多黑线构成网格,于是我们便想到了利用黑线的条数去控制小车的前进后退,以达到比赛要求,发挥部分我们 利用上避障功能,并且我们自己制作了适合本比赛的风扇,使得灭火效果更好,更符合题目要求。

(2)主程序流程图

四、测试方案与测试结果

1、测试方案

(1)硬件测试:调节红外接近开关、火焰传感器的灵敏度,使其相互配合以达到最好效果。

(2)软件仿真测试:通过仿真反复地对程序进行修改,以达到理想效果。

(3)硬件软件联调

2、测试条件与仪器

测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。

五、结论与心得

通过这次比赛我们明白了,任何好成绩的取得都建立在充分的准备之上,只有准备的充分,在面临困难时才显得没有那么畏惧。要有团队精神,多多听取他人的建议,把自己的真实水平发挥出来。 

我们还知道了,在比赛中,要表现出真实的自己,欣赏自己,让自己表现得更好,也欣赏他人,学习他人的长处。要互相鼓励,互相帮助。

这次比赛,让我们总结出四个字--越挫越勇,我们还懂得了:不要被自我感觉所蒙蔽,自己还有许多要学习的地方,要多多努力,尽量多的抓住机会,从每一件事中找到进步的目标,让自己变得越来越优秀。困难面前,不畏惧,不退缩。勇往直前,为自己鼓掌。

六、参考文献

[1] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2012

附录1:实物图

附录2:源程序

主函数

#include "delay.h"

#include "sys.h"

#include "usart.h"

#include "timer.h"

#include "exti.h"

#include "stm32f10x_exti.h"

#include "voice.h"

#include "Tracking.h"

#include "Motor.h"

#include "Fire.h"

#include "Phosen.h"

float H_H=1000;

static int fire_flag=0; int mm=0;

int s_s=0;  

int judge_fire()

{  

int flag=0;

   if((GPIO_ReadInputDataBit(FIRE_PORT, Fire_Left_1)== 0)||(GPIO_ReadInputDataBit(FIRE_PORT, Fire_Left_2)== 0)||(GPIO_ReadInputDataBit(FIRE_PORT, Fire_Right_1)== 0)||(GPIO_ReadInputDataBit(FIRE_PORT, Fire_Right_2)== 0))

    {

    

    fire_flag=1;

    

    }

    return flag;

}

int main(void)

{

     NVIC_Configuration();   

//    TIM2_Init(500, 7199);

//    WT588D_Init();

TIM3_Pwm_Init(35999, 0);

Tracking_IO_Init();

Motor_IO_Init();

        Fire_IO_Init();

    PhoSen_IO_Init(); 

while(1)

{

        judge_fire();

        

        if(fire_flag==0)

        {

        Dir_Control();

        }

    if(fire_flag>0)

      {

        

          Fire_Control();

          

      }

   }

}

子函数1

#include "sys.h"

#include "PhoSen.h"

#include "Motor.h"

void PhoSen_IO_Init(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;       //¶¨ÒåPB0µ½PB2Ϊ¸¡¿ÕÊäÈë

    GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Pin  = Left_Sensor;// | Mid_Sensor | Right_Sensor;

    

    GPIO_Init(GPIOB, &GPIO_InitStructure);        

}

子函数2

#include "timer.h"

#include "usart.h"

#include "Tracking.h"

#include "Fire.h"

void TIM2_Init(u16 arr,u16 psc)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    

    TIM_TimeBaseStructure.TIM_Period = arr;    TIM_TimeBaseStructure.TIM_Prescaler =psc;    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;      TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); 

    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); 

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    NVIC_Init(&NVIC_InitStructure); 

    TIM_Cmd(TIM2, ENABLE);  //ʹÄÜTIMx                     

}

void TIM2_IRQHandler(void)   //TIM2ÖжÏ

{

    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)          

{

            Black_Line_Count();

            TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );          

}

}

void TIM3_Pwm_Init(u16 arr,u16 psc)

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    TIM_OCInitTypeDef  TIM_OCInitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  |       RCC_APB2Periph_AFIO, ENABLE); 

    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); 

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_4;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure); 

       TIM_TimeBaseStructure.TIM_Period = arr;    TIM_TimeBaseStructure.TIM_Prescaler =psc;    TIM_TimeBaseStructure.TIM_ClockDivision = 0;    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;      TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);    

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    TIM_OC2Init(TIM3, &TIM_OCInitStructure);  

    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  

    TIM_Cmd(TIM3, ENABLE);  

子函数3

#include "sys.h"

#include "Motor.h"

#include "time.h"

long FLAG=0;

void Motor_IO_Init(void)

{

    GPIO_InitTypeDef  GPIO_InitStructure;

    

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Pin  = MOTOR_PIN_IN1 | MOTOR_PIN_IN2 | MOTOR_PIN_IN3 | MOTOR_PIN_IN4;

    GPIO_Init(GPIOB,&GPIO_InitStructure);    

void Motor_Go_Forward(int Speed)

{

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN2);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN1);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN4);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN3);

}

void Motor_Go_Back(int Speed)

{

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN1);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN2);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN3);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN4);

}

void Forward_Motor_Turn_Left(int Speed)

{

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN1);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN2);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN4);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN3);

    FLAG++;

if(FLAG>10000)

    {

    FLAG=0;

    

    }

}

void Back_Motor_Turn_Left(int Speed)

{

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN1);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN2);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN4);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN3);

}

void Forward_Motor_Turn_Right(int Speed)

{

    

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN2);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN1);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN3);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN4);

}

void Back_Motor_Turn_Right(int Speed)

{

    

    TIM_SetCompare2(TIM3, Speed);

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN3);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN4);

    

    GPIO_SetBits(GPIOB, MOTOR_PIN_IN2);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN1);

}

void Motor_Stop(void)

{

    TIM_SetCompare2(TIM3, 35999 );

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN1);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN2);

    

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN3);

    GPIO_ResetBits(GPIOB, MOTOR_PIN_IN4);

}

文档

智能车电子竞赛论文

2015年长通杯电子设计竞赛智能灭火车(A题)所在学院:电气信息工程学院小组成员:指导教师:2015年11月13日摘要本次设计以STM32作为主控芯片,利用红处开关管探测障碍物,使得小车能够避开障碍,利用火焰传感器找到火源,从而做出灭火动作。完成了作品基本功能要求。随着社会与国家的发展,在经济迅速增长的同时,各种危险场所不可避免的火灾频繁出现,给社会安全造成了很多隐患,于是现代火灾及时补救已成为迫在眉睫需要解决的问题,救火早一刻就少一分损失,消防救援人员固然速度已经很快,但也需要一段不小的时间
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top