基于STM32控制的自动往返电动小汽车

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

湖南科技大学信息与电气工程学院《STM32控制自动往返小汽车》设计报告专业:电子信息工程班级:二班姓名:曾有根学号:0904030218指导教师:罗朝辉自动往返电动小汽车本设计民用STM32作为自动往返小汽车的检测和控制核心,辅以传感器、控制电路、显示电路等外围器件,构成了一个车载控制系统。路面黑线检测使用反射式红外传感器,利用PWM技术动态控制电动机的转速。基于这些完备而可靠的硬件设计,使用了一套独特的软件算法,实现了小车在限速和压线过程中的精确控制。电动小汽车能够根据题目要求在直线方向上完成调速、急刹车、停车、倒车返回等各种运动形式;这辆小车还可以自动记录、显示一次往返时间和行驶距离,并用蜂鸣器提示返回起点。另外,我们经过MATLAB仿真后,成功地实现了从最高速降至低速的平稳调速。本系统主要采用模糊控制算法进行速度调节。通过模糊控制和PWM脉宽调制技术的结合,提高了对车位置控制精度,并且实现了恒速控制。关键词:PWM,STM32F103,电机,传感器前言嵌入式技术依靠其体积小、成本低、功能强等特点,适应了智能化发展的最新要求。单片机作为控制系统的微处理器,在数据处理和代码存储等方面都已经无法满足系统的要求,ARM微处理器资源丰富,具有良好的通用性。Cortex-M3是ARM公司最新推出的第一款基于ARMv7体系的处理器内核。它主要针对MCU领域,在存储系统、中断系统、调试接口等方面做了较大的改进,有别于过去的ARM7处理器;Cortex-M3具有高性能、低功耗、极低成本、稳定等诸多优点,非常适合汽车电子、工业控制系统、医疗器械、玩具等领域。基于Cortex-M3内核的STM32系列处理器于2007年由ST公司率先推出,它集先进Cortex-M3内核结构、出众创新的外设、良好的功耗和低成本于一体,极大的满足自动控制系统设计要求。作为先进的32位通用微控制器的领跑者,STM32以其出众的性能、丰富且灵活的外设、很高的性价比以及令人意外的功耗水准,使其自面世以来得到众多设计者的青睐,众多行业领导者纷纷选用STM32作为新一代产品的平台。因此将STM32F103应用于智能小车的控制系统是一种较好的选择。基于此,本文提出了一个比较合理的智能小车系统设计方案。整个小车系统以STM32F103芯片为控制核心,附以外围电路,利用红外探测器、触角传感器采集外界信息和检测障碍物;充分利用STM32F103的串口、并口资源和高速的1运算、处理能力,来实现小车自动识别路线按迹行走、躲避障碍物,并且通过LCD显示器实时显示小车运动参数;配置STM32F103通用定时器为PWM输出模式产生PWM波,通过步进调节PWM波占空比参数控制电机的转速。第一章系统方案论证与分析根据题目中的设计要求,本系统主要由主控单片机模块、电源模块、电机驱动模块、黑线检测模块、测速模块以及液晶显示模块构成。本系统的方框图如下图所示:1、主控单片机根据题目要求,控制器主要用于控制电机的运动,黑线的检测以及相关信息的显示。对于控制器的选择主要有以下两种方案:方案一:采用51系列单片机作为控制器。51系列单片机应用广泛,技术成熟,但是运行速度慢,内部资源较少,且只有2个定时计数器,不满足题目要求。方案二:采用STM32作为控制器。基于Cortex-M3内核的STM32F10x系列芯片是新型的32位嵌入式微处理器,其性能优良,移植性好,提高了对直流STM32L298电机驱动芯片黑线检测模块测速模块电源模块TFT显示2电机的控制效率,并对控制系统进行模块化设计,有利于智能小车的功能扩展和升级。综上,我们选用了方案一,采用了STM32,该单片机价格便宜,资源足够。2、电动机驱动模块方案一:采用达林顿管阵列ULN2003驱动芯片。ULN2003是7通道高电压、大电流驱动器,并联端口可以加大输出电流,对直流电机具有良好驱动能力。但其结构决定驱动直流电机只能是单方向的,不能驱动直流电机反转,这与题目要求不符。方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。方案三:采用双H桥驱动芯片L298。其内部包含4通道逻辑驱动电路,可以方便的驱动两个直流电机,或一个两相步进电机。L298的逻辑电平与51单片机匹配,可以与其直接相连。控制芯片的驱动使能端就可以控制驱动电机的速度。L298对直流电机具有良好的驱动控制能力,故这里选择方案三。3、路面黑线检测模块选择方案一:采用发光二极管与光敏电阻,利用光敏电阻的阻值变化来控制信号。由于外界光亮条件不定,一旦光线条件改变很可能造成误判和漏判;虽然采取超高亮发光管可以降低一定的干扰,但这用将增加额外的功率损耗。方案二:采用红外线控制的反射式红外对管。红外对管只对红外线具有较高灵敏度,从而避免了外界光线的干扰;跑道黑带能够吸收红外线,而白色跑道能够反射红外线,从而检测到跑道黑带。方案选择:光敏电阻的易干扰性和红外对管的单一灵敏行决定方案二具有较好控制作用。34、里程计算与计时模块选择方案一:采用霍尔传感器。该器件内部由三篇霍尔金属板组成,当磁铁正对金属板时,由于霍尔效应,金属板发生横向导通,发出低电平信号。因此可以在车轮上安装微型磁铁,而将霍尔传感器安装在固定轴上,通过对脉冲的计数进行车速测量。方案二:采用检测黑线的方法,每经过一条黑线就增加相应的里程数,并通过定时器计时。方案选择:相比而言,方案二不需要另外的传感器,计算方便,定时器也很精确,故选择方案二。图2.1电机控制系统框图由系统框图可看出,小车整个控制系统设计主要包括电机驱动、液晶显示、键盘扩展电路、触角传感电路、红外收发检测电路等模块。整个系统的硬件电路设计原理图见附录,下面分别介绍各部分模块的设计。一、主要电路设计1、STM32F103及外围电路设计本设计采用STM32F103为主控芯片,则STM32F103芯片的最小系统设计如图1.2、1.3所示。4图1.2STM32F103芯片最小系统图图1.3STM32F103芯片最小系统图续如图1.2、1.3,此部分电路包括系统时钟电路、实时时钟电路、JTAG调试接口电路,复位电路和启动模式选择电路。下面对部分电路设计做简要说明。51.时钟电路系统时钟电路选用8MHZ的HSE晶体作为振荡器晶振。如图2.2所示,由R113、Y100(HSE晶振)、C108及C109构成系统时钟电路。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。实时时钟电路选择LSE时钟模式,如图2.2所示,由Y101(LSE晶振)、C112及C113构成LSE旁路,提供一个32.768kHz频率的外部时钟源。LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。2.启动模式选择电路如图2.3所示,通过BOOT[1:0]引脚可以选择三种不同启动模式。如下表2-1所示。表2-1启动模式启动模式选择引脚启动模式说明BOOT1BOOT0X0主闪存存储器主闪存存储器被选为启动区域01系统存储器系统存储器被选为启动区域11内置SRAM内置SRAM被选为启动区域在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。此时可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。2、电源电路设计由于各电路模块所需电压不同,本设计需多种电源供电。STM32F103主控芯片采用3.3V供电,电机驱动采用5V与12V,红外收发检测电路采用5V与3.3V,液晶显示与触角传感电路均采用3.3V供电。外部电源采用12V的直流电压,因此根据设计要求,本设计进行了电源转换设计。1.采用KA7805芯片实现12V到5V的转换。KA7805的作用是输入大于5V的直流电压,输出5V的直流电压,且管脚较少,易于连接和实现,稳定性高。图2.4为KA7805芯片引脚接线图。6图2.4KA7805引脚接线图2.本设计采用LM1117-3.3芯片将5V转换为3.3V,具体电路设计如图2.5所示。图2.5LM1117-3.3引脚接线图3、电机驱动电路设计STM32F103芯片外部扩展的电机驱动电路采用L298芯片控制,其基本电路图如图2.6。图3.6电机驱动电路基本电路原理图如图2.6所示,小车运动状态通过电机A和B的不同方向转动来实现,电7机有正转、反转和停止三种状态,每个电机由一对I/O口进行控制。表2-2是I/O端口状态与电机制动对照表。表2-2I/O端口状态与电机制动对照表电机AIN1IN2电机BIN3IN4停止00停止00正转10正转10反转01反转01-11-11L298芯片采用5V(VSS)与12V(VS)直压供电,ENA和ENB分别用STM32F103主控芯片的TIM3_CH3和PB1/ADC_IN9/TIM3_CH4控制,产生PWM1和PWM2两路PWM波输出,IN1-IN4分别用PE3-PE6实现I/O输出控制电机转动方向。在L298与电机之间加入二极管,以保护电路。4、液晶显示电路设计液晶显示电路采用2.4寸TFT显示85、红外探测电路设计采用反射式光电开关来识别轨迹上的黑线标记信号,如图3所示。这种光电开关的红外发射管和接收管位于同一侧,光敏三极管只能接收反射回的红外光。当车身下面是黑线时,由于黑线吸收部分光,光敏三极管接收到的红外光不能使光敏三极管导通,光电开关输出高电平,经非门输出低电平。反之,当车身下面是白色的地面时,红外发射管发射的光经其反射后,被接收管接受,光电开关输出低电平,经非门整形后输出高电平。将非门的输出接至CPU的INT1输入端.车在前进和后退过程中,小车每过一道黑线,便产生一次中断申请,从而调用相应的子程序,随着小车的不断行驶,相应的程序依次被调用执行,使小车在跑道上按设计要求时快、时慢、时前进、时后退.第三章小车控制系统软件设计采用单片机STM32为主控制器.采用C语言进行软件编程实现各种算法和逻辑控制1红外光电检测到的开关信号作为中断源,送入STM32中断源EXTI_Line0;STM32再对中断请求做出响应,并在GPIOB0和GPIOB1口输出控制驱动电路的脉冲和转速;通过GPIOC0、GPIOC1、GPIOC4、GPIOC5驱动电路控制直流电机的转向;显示模块以2.4寸tft为核心,对记录的结果进行显示.91、前进(带矫正)子程序voidqianjin(){while(1){//检测到黑,发光12外13内if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)&&GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))//12亮(高电平)13不亮(低电平){GPIO_SetBits(GPIOC,GPIO_Pin_0);GPIO_ResetBits(GPIOC,GPIO_Pin_1);GPIO_SetBits(GPIOC,GPIO_Pin_4);GPIO_ResetBits(GPIOC,GPIO_Pin_5);}elseif(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)&&!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))//都亮{GPIO_SetBits(GPIOC,GPIO_Pin_0);GPIO_ResetBits(GPIOC,GPIO_Pin_1);GPIO_ResetBits(GPIOC,GPIO_Pin_4);GPIO_ResetBits(GPIOC,GPIO_Pin_5);}elseif(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)&&!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))//12亮(低电平)13不亮(高电平){GPIO_ResetBits(GPIOC,GPIO_Pin_0);GPIO_ResetBits

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功