已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2015年长通杯电子设计竞赛智能灭火车(A题)所在学院:电气信息工程学院小组成员: 指导教师: 2015年11月13日II摘 要 本次设计以STM32作为主控芯片,利用红处开关管探测障碍物,使得小车能够避开障碍,利用火焰传感器找到火源,从而做出灭火动作。完成了作品基本功能要求。 随着社会与国家的发展,在经济迅速增长的同时,各种危险场所不可避免的火灾频繁出现,给社会安全造成了很多隐患,于是现代火灾及时补救已成为迫在眉睫需要解决的问题,救火早一刻就少一分损失,消防救援人员固然速度已经很快,但也需要一段不小的时间,而且进入救火现场还有生命危险的可能,于是智能灭火小车的理念诞生了。 本设计主要就是针对智能灭火车的单片机控制与制作进行研究。通过对灭火机器人国内外研究现状的分析,进行了智能灭火车包括硬件方案和软件方案的整体方案设计,具体就驱动电机、传感器等进行了分析比较。电源电路提供系统所需的工作电源,L298N电机驱动芯片驱动电机控制小车揣测不同方向的前进后退以及转向,红外传感器模块完成寻迹和避障,火焰传感器检测火焰,灭火风扇进行灭火。本系统硬件配置合理,控制方案优化,实现了智能灭火车在不同的外部坏境下的循迹、避障和灭火的准确控制。本设计制作的灭火机器人具有简易灭火功能,达到了实现现场灭火的目的。关键词:智能小车 红外接近开关 PWM 火焰传感器 红外对管目 录一、系统方案11、循迹模块的论证与选择12、电机驱动模块的论证与选择13、寻找火源模块的论证与选择2二、系统理论分析与计算21、循迹方法种类的的分析22、利用延时控制小车转动角度的计算2三、电路与程序设计31、电路的设计3(1)系统总体框图3(2)电路原理图3(4)电源42、程序的设计4(1)程序功能描述与设计思路4(2)主程序流程图5四、测试方案与测试结果61、测试方案62、测试条件与仪器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转换器反映为0255范围内数值的变化。外界红外光越强,数值越小;反之则越大。综合考虑采用方案二。二、系统理论分析与计算1、循迹方法种类的的分析 我们利用红外传感器来进行循迹,红外传感器上有七个灯,我们选择其中的几个灯进行组合,来达到按特定路线循迹的目的。2、利用延时控制小车转动角度的计算 在小车行进过程中,有时需要转动不同的角度,而这个角度的控制是利用延时来实现的。通过多次测量实验,确定一定的角度,并进行记录,从而实现要求。三、电路与程序设计1、电路的设计(1)系统总体框图寻源模块循迹模块STM32主控芯片灭火模块避障模块图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:实物图16附录2:源程序主函数#includedelay.h#includesys.h#includeusart.h#includetimer.h#includeexti.h#includestm32f10x_exti.h#includevoice.h#includeTracking.h#includeMotor.h#includeFire.h#includePhosen.hfloatH_H=1000;staticintfire_flag=0; intmm=0;ints_s=0; intjudge_fire()intflag=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;returnflag;intmain(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_flag0)Fire_Control();子函数1#include sys.h#include PhoSen.h#include Motor.hvoid PhoSen_IO_Init(void) GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /PB0PB2GPIO_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.hvoid 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) /TIM2if (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.hlong 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(FLAG10000) FLAG=0; void Back_Motor_Turn_Left(int Speed) TIM_SetCompare2(TIM3, Sp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舟山市中医院急诊心电图判读考核
- 宣城市中医院肝脏手术中血流阻断技术考核
- 衢州市中医院血管外科重症监护技能考核
- 烟台市中医院脑转移瘤显微切除技术考核
- 程序员个人年终总结模板
- 吉安市人民医院跨部门如与物理室医生组协作能力评估
- 南通市人民医院植入物管理专项考核
- 培训体系构建与管理流程优化
- 法务经理年终总结报告
- 工业园区污染源监控与管理方案
- 政治理论水平任职资格考试题库
- 新形势下群众工作的理论与实践课件
- 2023年交银国际信托有限公司招聘笔试题库及答案解析
- 高联难度几何题100道-打印整理版
- 冻干车间配液岗位操作规程
- 《工程伦理学》配套教学课件
- 公共管理英语 第一篇 教学内容 (15)课件
- 初中数学北师大八年级上册 一次函数一次函数与三角形面积 -平行线转移法王思利
- IQC来料检验规范
- 工程力学ppt课件(完整版)
- 当代大学德语3课后习题答案
评论
0/150
提交评论