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

合集下载

基于STM32的智能循迹避障小车

基于STM32的智能循迹避障小车

基于STM32的智能循迹避障小车智能循迹避障小车是一种基于STM32微控制器的智能车辆,它可以根据预设的路径自动行驶并能够避开障碍物。

这种小车具有很高的自主性和智能性,非常适合用于教学、科研和娱乐等领域。

本文将介绍基于STM32的智能循迹避障小车的设计原理、硬件结构、软件开发以及应用场景。

一、设计原理智能循迹避障小车的设计原理主要包括传感器感知、决策控制和执行动作三个部分。

通过传感器感知车辆周围环境的变化,小车可以及时做出决策并执行相应的动作,从而实现自动行驶和避障功能。

在基于STM32的智能小车中,常用的传感器包括红外避障传感器、光电传感器和编码器等。

红外避障传感器可以检测到障碍物的距离和方向,从而帮助小车避开障碍物。

光电传感器可以用于循迹,帮助小车按照预定的路径行驶。

编码器可以用于测量小车的速度和位置,实现精确的定位和控制。

通过这些传感器的数据采集和处理,小车可以实现智能化的行驶和避障功能。

二、硬件结构基于STM32的智能循迹避障小车的硬件结构包括主控制板、传感器模块、执行器模块和电源模块。

主控制板采用STM32微控制器,负责控制整个车辆的运行和决策。

传感器模块包括红外避障传感器、光电传感器和编码器等,用于感知周围环境的变化。

执行器模块包括电机和舵机,用于控制车辆的速度和方向。

电源模块提供电能,为整个车辆的运行提供动力支持。

三、软件开发基于STM32的智能循迹避障小车的软件开发主要包括嵌入式系统的编程和算法的设计。

嵌入式系统的编程主要使用C语言进行开发,通过STM32的开发环境进行编译和调试。

算法的设计主要包括避障算法和循迹算法。

避障算法通过传感器的数据处理,判断障碍物的位置和距离,并做出相应的避开动作。

循迹算法通过光电传感器的数据处理,使小车能够按照预设的路径行驶。

四、应用场景基于STM32的智能循迹避障小车可以广泛应用于教学、科研和娱乐等领域。

在教学领域,可以用于智能机器人课程的教学实验,帮助学生掌握嵌入式系统的开发和智能控制的原理。

《2024年基于STM32智能小车的设计与实现》范文

《2024年基于STM32智能小车的设计与实现》范文

《基于STM32智能小车的设计与实现》篇一一、引言随着科技的不断发展,智能小车在物流、安防、救援等领域的应用越来越广泛。

本文将详细介绍基于STM32的智能小车的设计与实现过程,包括硬件设计、软件设计、系统调试及实际运行效果等方面。

二、硬件设计1. 核心控制器本智能小车采用STM32F4系列微控制器作为核心控制器,其具有高性能、低功耗的特点,满足小车在运动控制、传感器数据处理等方面的需求。

2. 电机驱动智能小车的驱动部分采用电机和电机驱动器。

通过PWM (脉冲宽度调制)控制电机转速,实现对小车的运动控制。

此外,为了保证小车的运动稳定性和动力性,采用差速转向的方式。

3. 传感器模块传感器模块包括红外避障传感器、超声波测距传感器等。

红外避障传感器用于检测小车前方障碍物,实现自动避障功能;超声波测距传感器用于测量小车与前方障碍物的距离,为小车的速度和方向调整提供依据。

三、软件设计1. 操作系统及开发环境本智能小车采用基于STM32的嵌入式操作系统,开发环境为Keil uVision等软件工具。

这些工具能够为开发人员提供丰富的调试、测试等功能。

2. 软件设计流程软件设计包括初始化、数据采集、运动控制等部分。

初始化阶段包括对微控制器及各模块的配置;数据采集部分包括传感器数据的读取和解析;运动控制部分根据传感器数据调整小车的速度和方向,实现智能导航和避障功能。

四、系统调试与实现1. 系统调试系统调试包括硬件调试和软件调试两部分。

硬件调试主要检查电路连接是否正确,各模块是否工作正常;软件调试主要检查程序逻辑是否正确,各功能是否实现。

2. 实际运行效果经过系统调试后,智能小车能够在各种环境下自主导航和避障。

在平地、坡道等不同路况下,小车能够稳定运行,并自动调整速度和方向以适应不同环境。

此外,小车还具有较高的避障能力,能够快速识别并避开障碍物。

五、结论本文详细介绍了基于STM32的智能小车的设计与实现过程。

通过合理的硬件设计和软件设计,实现了智能小车的自主导航和避障功能。

《2024年基于STM32智能小车的设计与实现》范文

《2024年基于STM32智能小车的设计与实现》范文

《基于STM32智能小车的设计与实现》篇一一、引言随着科技的不断发展,智能小车作为一种集成了传感器、控制算法和执行机构的智能移动平台,在物流、安防、救援等领域得到了广泛的应用。

本文将详细介绍基于STM32微控制器的智能小车的设计与实现过程。

二、系统概述本智能小车系统以STM32微控制器为核心,通过集成电机驱动、传感器(如红外传感器、超声波传感器等)、通信模块等,实现小车的自主导航、避障、远程控制等功能。

系统具有体积小、重量轻、成本低、性能稳定等特点。

三、硬件设计1. 微控制器选择本系统选用STM32系列微控制器,该系列微控制器具有高性能、低功耗、丰富的外设接口等特点,能够满足智能小车的控制需求。

2. 电机驱动设计电机驱动采用H桥电路,通过PWM信号控制电机的转速和方向。

同时,为了保护电机和电路,还设计了过流、过压等保护电路。

3. 传感器模块设计传感器模块包括红外传感器、超声波传感器等,用于实现小车的自主导航和避障功能。

传感器通过I2C或SPI接口与微控制器进行通信,实时传输数据。

4. 通信模块设计通信模块采用蓝牙或Wi-Fi等无线通信技术,实现小车的远程控制和数据传输功能。

通信模块与微控制器通过串口进行通信。

四、软件设计1. 开发环境搭建软件设计采用Keil uVision等集成开发环境,进行代码的编写、编译和调试。

同时,为了方便程序的烧写和调试,还使用了STM32的调试器。

2. 程序设计流程程序设计主要包括主程序、电机控制程序、传感器数据处理程序和通信程序等。

主程序负责整个系统的协调和控制,电机控制程序根据传感器数据和遥控指令控制电机的转速和方向,传感器数据处理程序负责处理传感器的数据并输出控制指令,通信程序负责与上位机进行数据传输和指令交互。

五、系统实现与测试1. 系统实现根据硬件设计和软件设计,将各部分模块进行组装和调试,完成智能小车的制作。

在制作过程中,需要注意各部分模块的连接和固定,确保系统的稳定性和可靠性。

基于 stm32 单片机的智能小车控制

基于 stm32 单片机的智能小车控制

基于 stm32 单片机的智能小车控制摘要:进入21世纪以来,智能化已成为时下最热门的课题。

智能小车在日常生活、交通、军事等领域中发挥了独有作用,不仅断提高了人们的生活品质,而且还能够提升人们的服务效率、工作效率,成为了智能化研究的热门课题。

利用超声波传感器和SG90舵机组成超声波云台,以stm32单片机作为控制核心,对智能小车控制进行详细研究。

关键词:stm32单片机;智能小车;控制引言本文所设计的基于STM32F103的无线智能小车控制系统,其中以STM32F103单片机为控制核心,小车辅助避障模块为E18-D80NK光电传感器,使用超声波传感器和SG90舵机组成超声波云台,并将红外发射管、红外接收管和LM339电压比较器进行组合作为智能小车巡航传感器。

该小车在前进时能够检测一定范围内的障碍物距离,实现智能小车巡航、防摔等功能。

并且智能小车上安装GPS定位模块和无线模块,能够控制智能小车能够避开障碍自由行走。

GPS模块用于智能小车定位,无线模块能够使智能小车通过无线通信连接,与PC无线通信连接,将智能小车定位信息及障碍物距离信息显示到PC上,从而通过PC端控制智能小车的行走。

另外,为了驱动智能小车行走,并测量左右轮转速,直流电机驱动分别采用了TB6612FNG电机驱动模块和槽型光耦传感器、测速码盘,在PWM脉宽改变电机转速上,通过PID控制器实现小车调速功能。

一、基于STM32单片机的智能小车的硬件设计1.1主控芯片设计为了满足大多数嵌入式系统控制要求,采用STM32F103单机片,其性能优越且性价比较高。

1.2传感器设计避障系统传感器采用成本低、距盲区小及灵敏度高的HC-SR04超声波测距模块,该模块具有更好的抗干扰能力、可非接触测量0.02~4m的障碍物距离;巡航传感器选用模块价格便宜、体积较小的红外传感器,但该传感器多在没有强光的环境中使用,抗干扰能力较差,可控制小车巡航,防止摔倒;测速模块采用槽型光耦传感器和测速光电码盘组成测速系统,模块采用施密特触发器抖动触发脉冲,只要有非透明物体阻挡模块光电射槽,就可以触发模块输出5VTTL电压,触发脉冲稳定。

《2024年基于STM32的智能小车研究》范文

《2024年基于STM32的智能小车研究》范文

《基于STM32的智能小车研究》篇一一、引言随着科技的不断进步,智能小车已经成为人们日常生活中不可或缺的一部分。

本文旨在探讨基于STM32的智能小车的研究,详细阐述其设计原理、实现方法及实际应用价值。

STM32系列微控制器以其高性能、低功耗的特点,为智能小车的开发提供了强大的硬件支持。

二、智能小车设计概述智能小车是一种集成了传感器、控制器、执行器等设备的自动驾驶小车。

它可以根据环境变化自动规划路径,实现自主导航、避障、信息采集等功能。

基于STM32的智能小车设计主要包括硬件设计和软件设计两个部分。

硬件设计主要包括STM32微控制器、电机驱动模块、传感器模块、电源模块等。

其中,STM32微控制器作为核心部件,负责整个系统的控制与协调。

电机驱动模块用于驱动小车的运动,传感器模块用于感知环境信息,电源模块为整个系统提供稳定的电源。

软件设计主要包括操作系统、算法实现、通信协议等。

操作系统负责管理系统的软硬件资源,算法实现包括路径规划、避障算法、控制算法等,通信协议用于实现小车与上位机之间的数据传输与控制。

三、硬件设计1. STM32微控制器STM32微控制器是智能小车的核心部件,它具有高性能、低功耗、丰富的外设接口等特点。

在智能小车的设计中,我们选用了适合的STM32系列微控制器,如STM32F4系列,以满足小车的性能需求。

2. 电机驱动模块电机驱动模块用于驱动小车的运动。

它包括电机、编码器、驱动电路等部分。

电机采用直流无刷电机或步进电机,具有较高的控制精度和较低的噪音。

编码器用于检测电机的转速和方向,为控制算法提供反馈信息。

驱动电路则负责将微控制器的控制信号转换为电机能够识别的驱动信号。

3. 传感器模块传感器模块用于感知环境信息,包括红外传感器、超声波传感器、摄像头等。

这些传感器可以实时检测小车周围的障碍物、路况等信息,为路径规划和避障算法提供数据支持。

四、软件设计1. 操作系统操作系统负责管理系统的软硬件资源,包括任务调度、内存管理、设备驱动等。

《2024年基于STM32的智能小车研究》范文

《2024年基于STM32的智能小车研究》范文

《基于STM32的智能小车研究》篇一一、引言随着科技的飞速发展,智能小车在各个领域的应用越来越广泛,如物流、安防、救援等。

STM32作为一款高性能的微控制器,其强大的处理能力和丰富的接口资源为智能小车的开发提供了有力支持。

本文将详细介绍基于STM32的智能小车研究,包括系统设计、硬件实现、软件编程以及实验结果等方面。

二、系统设计智能小车的系统设计主要包括硬件和软件两部分。

硬件部分主要包括STM32微控制器、电机驱动模块、传感器模块等;软件部分则包括操作系统、驱动程序、算法等。

在硬件设计方面,我们选择了STM32F4系列微控制器作为主控芯片,其具有高性能、低功耗的特点,能够满足智能小车对处理能力和续航能力的要求。

电机驱动模块采用H桥驱动电路,能够实现对电机的正反转和调速控制。

传感器模块包括红外传感器、超声波传感器等,用于实现智能小车的避障、定位等功能。

在软件设计方面,我们选择了实时操作系统(RTOS)作为核心操作系统,以实现多任务管理和调度。

驱动程序采用C语言编写,算法部分则采用了如PID控制算法、模糊控制算法等先进控制算法,以提高智能小车的性能。

三、硬件实现在硬件实现方面,我们首先进行了电路设计。

根据系统需求,我们设计了电源电路、电机驱动电路、传感器电路等。

在电路设计过程中,我们充分考虑了抗干扰性、功耗等因素,以保证智能小车的稳定性和可靠性。

接下来是硬件制作与组装。

我们采用了SMT工艺制作了PCB板,将STM32微控制器、电机驱动模块、传感器模块等元器件焊接到PCB板上。

然后进行组装,将各个模块按照设计要求进行连接,形成完整的智能小车硬件系统。

四、软件编程在软件编程方面,我们首先进行了操作系统移植和驱动程序编写。

我们将RTOS移植到STM32微控制器上,并编写了相应的驱动程序,以实现对硬件设备的控制和管理。

接下来是算法实现。

我们采用了PID控制算法和模糊控制算法等先进控制算法,通过编程实现这些算法在智能小车上的应用。

基于STM32的智能循迹避障小车

基于STM32的智能循迹避障小车

基于STM32的智能循迹避障小车一、引言随着科技的不断发展,智能化机器人已经成为了人们生活中的重要一部分。

智能小车作为重要的机器人之一,具有很多应用领域。

在智能小车中,智能循迹和避障是两个非常重要的功能。

本文将介绍一款基于STM32的智能循迹避障小车的制作过程和原理。

二、硬件设计1. 控制器在本设计中,我们选择了STM32作为智能小车的控制器。

STM32是意法半导体推出的一款高性能、低功耗的32位RISC处理器,拥有丰富的外设接口和强大的性能,非常适合用来控制智能小车。

2. 传感器智能循迹避障小车需要用到多种传感器来感知周围环境。

我们选择了红外传感器作为循迹传感器,用来检测地面上的黑线。

我们还选择了超声波传感器和红外避障传感器,用来感知前方障碍物的距离。

3. 驱动电路智能小车的驱动电路是控制小车运动的关键。

我们选择了L298N驱动模块,可以通过控制电机的速度和方向来实现小车的前进、后退、转向等功能。

4. 电源模块为了保证整个小车系统的正常工作,我们还需要一个稳定的电源模块,供给控制器、传感器和驱动电路等设备。

1. 系统架构智能循迹避障小车的软件设计采用了基于FreeRTOS的多任务设计。

我们将系统划分为三个主要任务:循迹控制任务、避障控制任务、通信任务。

循迹控制任务通过读取红外传感器的数值,判断小车当前所处位置是否在黑线上,并根据传感器的值控制电机的转向,使小车沿着黑线行驶。

4. 通信任务通信任务负责与外部设备进行通信,比如与遥控器进行通信,接收外部指令控制小车的运动。

四、功能实现1. 循迹功能通过循迹传感器检测地面上的黑线,控制电机的转向,实现小车沿着黑线行驶的功能。

2. 避障功能通过超声波传感器和红外避障传感器检测前方障碍物,控制电机的转向和速度,实现小车避开障碍物的功能。

3. 远程控制功能五、总结本文介绍了一款基于STM32的智能循迹避障小车的制作过程和原理。

通过硬件设计和软件设计,实现了小车的循迹、避障和远程控制功能。

基于STM32的智能物流循迹往返小车设计

基于STM32的智能物流循迹往返小车设计

基于STM32的智能物流循迹往返小车设计作者:申家正来源:《中国科技纵横》2017年第21期摘要:本设计以STM32系列单片机STM32F103RC作为核心处理器,辅以循迹模块,测速模块,超声测距模块,压力传感器模块,通过PID算法构成了完整的智能物流循迹小车,可以实现自动调速循迹功能,停车避障功能,自动往返功能。

经过测试,该系统运行可靠,成本低,抗干扰能力强,节省人力成本,可被用于教学,智能玩具,仓储运输等场合,具有很好的使用价值。

并且本系统保留多个接口,方便后期开发,使系统更加实用。

关键词:STM32;PID;智能小车;物流;循迹中图分类号:TP273 文献标识码:A 文章编号:1671-2064(2017)21-0027-02小车作为现代智能小车热门发展方向之一,是许多新技术的集合,它体现了车辆工程,自动控制,计算机技术和人工智能集为一体的综合技术。

本文提出了一种基于STM32F103芯片为控制核心,以循迹模块,测速模块,超声测距模块,通过PID算法构成了完整的智能物流循迹小车,可以实现自动调速循迹功能,停车避障功能,自动往返功能。

通过模糊PID和芯片自带PWM脉宽调制技术的结合,大大提高了对车辆位置和速度控制的精度。

1 系统硬件电路设计1.1 循迹模块本系统采用YL-70型红外探测传感器模块实现循迹功能,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~60cm,工作电压为3.3V-5V。

循迹模块电路图如图1。

1.2 超声测距模块本系统采用US-100型超声波测距模块,块可实现 2cm~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠,超声测距模块电路图如图2。

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

湖南科技大学信息与电气工程学院《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的串口、并口资源和高速的运算、处理能力,来实现小车自动识别路线按迹行走、躲避障碍物,并且通过LCD显示器实时显示小车运动参数;配置STM32F103通用定时器为PWM输出模式产生PWM波,通过步进调节PWM波占空比参数控制电机的转速。

第一章系统方案论证与分析根据题目中的设计要求,本系统主要由主控单片机模块、电源模块、电机驱动模块、黑线检测模块、测速模块以及液晶显示模块构成。

本系统的方框图如下图所示:1、主控单片机根据题目要求,控制器主要用于控制电机的运动,黑线的检测以及相关信息的显示。

对于控制器的选择主要有以下两种方案:方案一:采用51系列单片机作为控制器。

51系列单片机应用广泛,技术成熟,但是运行速度慢,内部资源较少,且只有2个定时计数器,不满足题目要求。

方案二:采用STM32作为控制器。

基于Cortex- M3内核的STM32F10x系列芯片是新型的32位嵌入式微处理器,其性能优良,移植性好,提高了对直流电机的控制效率,并对控制系统进行模块化设计,有利于智能小车的功能扩展和升级。

综上,我们选用了方案一,采用了STM32,该单片机价格便宜,资源足够。

2、电动机驱动模块方案一:采用达林顿管阵列ULN2003驱动芯片。

ULN2003是7通道高电压、大电流驱动器,并联端口可以加大输出电流,对直流电机具有良好驱动能力。

但其结构决定驱动直流电机只能是单方向的,不能驱动直流电机反转,这与题目要求不符。

方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。

这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。

方案三:采用双H桥驱动芯片L298。

其内部包含4通道逻辑驱动电路,可以方便的驱动两个直流电机,或一个两相步进电机。

L298的逻辑电平与51单片机匹配,可以与其直接相连。

控制芯片的驱动使能端就可以控制驱动电机的速度。

L298对直流电机具有良好的驱动控制能力,故这里选择方案三。

3、路面黑线检测模块选择方案一:采用发光二极管与光敏电阻,利用光敏电阻的阻值变化来控制信号。

由于外界光亮条件不定,一旦光线条件改变很可能造成误判和漏判;虽然采取超高亮发光管可以降低一定的干扰,但这用将增加额外的功率损耗。

方案二:采用红外线控制的反射式红外对管。

红外对管只对红外线具有较高灵敏度,从而避免了外界光线的干扰;跑道黑带能够吸收红外线,而白色跑道能够反射红外线,从而检测到跑道黑带。

方案选择:光敏电阻的易干扰性和红外对管的单一灵敏行决定方案二具有较好控制作用。

4、里程计算与计时模块选择方案一:采用霍尔传感器。

该器件内部由三篇霍尔金属板组成,当磁铁正对金属板时,由于霍尔效应,金属板发生横向导通,发出低电平信号。

因此可以在车轮上安装微型磁铁,而将霍尔传感器安装在固定轴上,通过对脉冲的计数进行车速测量。

方案二:采用检测黑线的方法,每经过一条黑线就增加相应的里程数,并通过定时器计时。

方案选择:相比而言,方案二不需要另外的传感器,计算方便,定时器也很精确,故选择方案二。

图2.1 电机控制系统框图由系统框图可看出,小车整个控制系统设计主要包括电机驱动、液晶显示、键盘扩展电路、触角传感电路、红外收发检测电路等模块。

整个系统的硬件电路设计原理图见附录,下面分别介绍各部分模块的设计。

一、主要电路设计1、STM32F103及外围电路设计本设计采用STM32F103为主控芯片,则STM32F103芯片的最小系统设计如图1.2、1.3所示。

图1.2 STM32F103芯片最小系统图图1.3 STM32F103芯片最小系统图续如图1.2、1.3,此部分电路包括系统时钟电路、实时时钟电路、JTAG调试接口电路,复位电路和启动模式选择电路。

下面对部分电路设计做简要说明。

1.时钟电路系统时钟电路选用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 启动模式在系统复位后,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芯片引脚接线图。

图2.4 KA7805引脚接线图2.本设计采用LM1117-3.3芯片将5V转换为3.3V,具体电路设计如图2.5 所示。

图2.5 LM1117-3.3引脚接线图3、电机驱动电路设计STM32F103芯片外部扩展的电机驱动电路采用L298芯片控制,其基本电路图如图2.6。

图3.6 电机驱动电路基本电路原理图如图2.6所示,小车运动状态通过电机A和B的不同方向转动来实现,电机有正转、反转和停止三种状态,每个电机由一对I/O口进行控制。

表2-2是I/O端口状态与电机制动对照表。

表2-2 I/O端口状态与电机制动对照表电机A IN1 IN2 电机B IN3 IN4停止0 0 停止0 0正转 1 0 正转 1 0反转0 1 反转0 1- 1 1 - 1 1L298芯片采用5V(VSS)与12V(VS)直压供电,EN A和EN B分别用STM32F103主控芯片的TIM3_CH3和PB1/ADC_IN9/TIM3_CH4控制,产生PWM1和PWM2两路PWM波输出,IN1-IN4分别用PE3-PE6实现I/O输出控制电机转动方向。

在L298与电机之间加入二极管,以保护电路。

4、液晶显示电路设计液晶显示电路采用2.4寸TFT显示5、红外探测电路设计采用反射式光电开关来识别轨迹上的黑线标记信号,如图3 所示。

这种光电开关的红外发射管和接收管位于同一侧,光敏三极管只能接收反射回的红外光。

当车身下面是黑线时,由于黑线吸收部分光,光敏三极管接收到的红外光不能使光敏三极管导通,光电开关输出高电平,经非门输出低电平。

反之,当车身下面是白色的地面时,红外发射管发射的光经其反射后,被接收管接受,光电开关输出低电平,经非门整形后输出高电平。

将非门的输出接至CPU的INT1输入端.车在前进和后退过程中,小车每过一道黑线,便产生一次中断申请,从而调用相应的子程序,随着小车的不断行驶,相应的程序依次被调用执行,使小车在跑道上按设计要求时快、时慢、时前进、时后退.第三章小车控制系统软件设计采用单片机STM32为主控制器.采用C 语言进行软件编程实现各种算法和逻辑控制1 红外光电检测到的开关信号作为中断源, 送入STM32中断源EXTI_Line0; STM32 再对中断请求做出响应, 并在GPIOB0和GPIOB1口输出控制驱动电路的脉冲和转速; 通过GPIOC0、GPIOC1、GPIOC4、GPIOC5驱动电路控制直流电机的转向; 显示模块以2.4寸tft为核心, 对记录的结果进行显示.1、前进(带矫正)子程序void qianjin(){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);}else if (!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);}else if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) && !GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)) // 12亮(低电平)13不亮(高电平){GPIO_ResetBits(GPIOC, GPIO_Pin_0);GPIO_ResetBits(GPIOC, GPIO_Pin_1);GPIO_SetBits(GPIOC, GPIO_Pin_4);GPIO_ResetBits(GPIOC, GPIO_Pin_5);}if(flag==6){// GPIO_SetBits(GPIOA , GPIO_Pin_4);break;}}}2、后退(带矫正)子程序void houtui(){while(1){//检测到黑,发光12外13内if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) && GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)) // 12亮(高电平)13不亮(低电平){GPIO_ResetBits(GPIOC, GPIO_Pin_1);GPIO_ResetBits(GPIOC, GPIO_Pin_0);GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_ResetBits(GPIOC, GPIO_Pin_4);}else if (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) && !GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)) //都亮{GPIO_SetBits(GPIOC, GPIO_Pin_1);GPIO_ResetBits(GPIOC, GPIO_Pin_0);GPIO_ResetBits(GPIOC, GPIO_Pin_5);GPIO_ResetBits(GPIOC, GPIO_Pin_4);}else if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) && !GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)) // 12亮(低电平)13不亮(高电平){GPIO_SetBits(GPIOC, GPIO_Pin_1);GPIO_ResetBits(GPIOC, GPIO_Pin_0);GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_ResetBits(GPIOC, GPIO_Pin_4);}if(flag==12){GPIO_SetBits(GPIOA , GPIO_Pin_4);break;}}}3、横线检测并调速程序void EXTI0_IRQHandler(void){if ( EXTI_GetITStatus(EXTI_Line0) != RESET ) { EXTI_ClearITPendingBit(EXTI_Line0);flag++;if(flag==2||flag==4) //||flag==3||flag==4{pulse = 3000;TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}if(flag==3) //||flag==3{pulse = 2850;TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}if(flag==5){pulse = 2650;TIM_SetCompare3(TIM3,pulse);}if(flag==9){pulse = 2900;//2350TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}if(flag==8||flag==10) //flag==7||{pulse = 3000; //2600TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}if(flag==11||flag==7){pulse = 2850; //2600TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}if(flag==12){pulse = 0; //2600TIM_SetCompare3(TIM3,pulse);TIM_SetCompare4(TIM3,pulse);}}}4、显示子程序void ILI9325_PutString(u16 x, u16 y, u8 *s, u16 fColor, u16 bColor){u8 row=0;while(*s){if( *s < 0x80){ILI9325_PutChar(x+(row<<3),y,*s,fColor,bColor);s++;row++;}else{ILI9325_PutGB16x16(x+(row<<3),y,(u8*)s,fColor,bColor);s+=2;row+=2;}}}第四章结论本文根据设计内容和要求,制定了设计方案,并逐步完成了硬件和软件部分的设计。

相关文档
最新文档