0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 利用STM32f103c8t6和L292N驱动设计避障小车设计方案

利用STM32f103c8t6和L292N驱动设计避障小车设计方案

来源:
2025-07-23
类别:工业控制
eye 1
文章创建人 拍明芯城

基于STM32F103C8T6和L298N的智能避障小车设计方案

智能避障小车作为机器人领域一个经典的入门级项目,融合了嵌入式系统、传感器技术、电机控制以及简单的路径规划算法,是学习和实践微控制器应用的理想平台。本方案将详细阐述如何利用 STM32F103C8T6 微控制器和 L298N 电机驱动模块构建一款功能稳定、避障效果良好的智能小车,并对核心元器件的选择和功能进行深入分析。

image.png


1. 系统概述与工作原理


智能避障小车系统的核心目标是使小车能够在复杂环境中自主检测障碍物并规划路径以避免碰撞。其基本工作流程如下:首先,超声波传感器持续发射声波并接收回波,通过计算声波往返时间来测距,判断前方是否存在障碍物以及障碍物的距离。这些距离信息被送至STM32微控制器进行处理和分析。STM32根据预设的避障算法(例如,当前方障碍物距离小于阈值时,停车、后退、转向等)控制L298N电机驱动模块,进而驱动小车的直流减速电机,改变小车的运动状态(前进、后退、左转、右转、停止)。此外,为了提高小车的运动精度和控制灵活性,可能还会引入电机编码器进行闭环控制,以及蜂鸣器或LED指示灯用于状态反馈。整个系统通过软件程序协调各个硬件模块协同工作,实现智能避障功能。


2. 核心元器件选择与分析


选择合适的元器件是智能小车设计成功的关键。以下将详细介绍本方案中选择的主要元器件及其理由。


2.1 微控制器:STM32F103C8T6


元器件型号: STM32F103C8T6

器件作用: STM32F103C8T6 是整个智能小车的“大脑”,负责接收来自传感器的数据、执行避障算法、控制电机驱动模块以及管理其他外围设备。它处理所有逻辑运算和决策。

为何选择这颗元器件:

  • 性能优越: STM32F103C8T6 是一款基于 ARM Cortex-M3 内核的32位微控制器,主频高达72MHz,拥有更强的运算能力和更快的指令执行速度,相比于传统的8位单片机(如51系列),能够更高效地处理复杂的传感器数据和控制算法,尤其是在实时性要求较高的避障应用中表现出色。

  • 资源丰富: 它集成了64KB的Flash存储器和20KB的SRAM,足以存储较为复杂的程序代码和运行数据。同时,提供了丰富的通用输入/输出(GPIO)端口、多个定时器、ADC(模数转换器)、SPI、I2C、USART等外设接口。这些丰富的资源为连接多种传感器、驱动器以及未来功能扩展提供了充足的支持。例如,多个定时器可以用于生成PWM信号控制电机转速,ADC可用于读取模拟传感器数据,而GPIO则可灵活配置用于各种开关量控制。

  • 开发生态成熟: STM32系列微控制器拥有庞大且活跃的开发者社区,以及丰富的开发工具链(如Keil MDK, STM32CubeIDE)和库函数(HAL库、LL库)。这使得开发过程更加便捷,能够大幅缩短开发周期,方便开发者快速上手和调试。各种示例代码和应用笔记也为初学者提供了宝贵的学习资源。

  • 成本效益高: 尽管性能强大,但STM32F103C8T6的价格相对亲民,特别适合作为学生项目或入门级产品的核心控制器,在保证性能的同时有效控制了总体成本。

  • 封装小巧: LQFP48封装使得芯片尺寸紧凑,方便集成到小型PCB板上,符合智能小车对体积的限制要求。

元器件功能:

  • 数据采集与处理: 通过GPIO口与超声波传感器连接,定时读取超声波测距数据,并进行滤波和处理,获取精确的距离信息。

  • 逻辑运算与决策: 运行预设的避障算法,根据传感器数据判断当前障碍物情况,并做出相应的决策,例如前进、后退、左转、右转、停止等。

  • 电机控制: 生成PWM信号通过定时器输出,调节L298N的使能端和方向控制端,从而精确控制直流减速电机的转速和转向,实现小车的运动控制。

  • 通信接口: 可以利用USART进行串口通信,方便与PC机进行调试或数据监控;也可以通过SPI或I2C接口连接其他高级传感器或模块(如OLED显示屏)。

  • 中断处理: 利用外部中断或定时器中断等机制,实现对外部事件的快速响应,例如超声波传感器的触发和回响信号捕获。


2.2 电机驱动模块:L298N


元器件型号: L298N 双H桥直流电机驱动模块

器件作用: L298N 模块是微控制器与直流电机之间的“桥梁”。由于STM32微控制器的IO口电流较小,无法直接驱动需要较大电流的直流电机,L298N模块承担了电流放大和方向控制的功能,使得微控制器能够有效控制电机的转动。

为何选择这颗元器件:

  • 双H桥结构: L298N 集成了两路H桥驱动电路,可以同时驱动两路直流电机,这对于控制小车的左右两个驱动轮非常方便,能够实现差速转向,提高小车的机动性。

  • 驱动能力强: 每个H桥可以提供高达2A的连续电流,峰值电流可达3A,足以驱动常见的小型直流减速电机,满足智能小车在各种路况下的驱动需求。其宽电压输入范围(4.5V~36V)也使得它与多种电源适配。

  • 控制简单: L298N 的控制接口简单明了。每个H桥有三个控制引脚:两个方向控制引脚(IN1/IN2或IN3/IN4)用于控制电机转向,一个使能引脚(ENA/ENB)用于控制电机是否转动以及通过PWM信号控制转速。这使得STM32可以通过少量的GPIO口和一路PWM输出来实现对一个电机的完全控制。

  • 集成度高,易于使用: L298N模块通常以成品模块形式出售,集成了驱动芯片、电源滤波电容、接线端子以及散热片等,省去了复杂的电路设计和焊接工作,方便快速搭建和测试。用户只需简单连接电源和控制信号线即可使用,大大降低了开发难度。

  • 性价比高: L298N模块是市场上非常成熟且普遍的电机驱动方案,价格经济实惠,符合教育和个人项目的预算限制。

元器件功能:

  • 电机方向控制: 通过STM32向L298N的IN引脚(如IN1和IN2)输入高低电平组合,控制H桥内部的开关管导通顺序,从而改变电机两端电压的极性,实现电机的正转或反转。

  • 电机速度控制: 通过STM32向L298N的使能引脚(如ENA)输入PWM(脉冲宽度调制)信号。调节PWM信号的占空比,即可改变电机两端等效电压,从而精确控制电机的转速,实现小车的速度调节。

  • 电流放大: L298N内部的功率晶体管能够将STM32微弱的控制信号电流放大,提供足够的电流来驱动电机正常工作。


2.3 测距传感器:HC-SR04 超声波模块


元器件型号: HC-SR04 超声波测距模块

器件作用: HC-SR04 是智能小车的“眼睛”,负责感知前方或侧方是否存在障碍物以及障碍物的距离。它是实现避障功能的核心传感器。

为何选择这颗元器件:

  • 测量精度高: HC-SR04 采用超声波测距原理,利用声波在空气中的传播速度恒定(约340m/s)来计算距离。理论精度可达3mm,在短距离(2cm-400cm)测量中具有较高的准确性,足以满足智能小车避障的需求。

  • 抗干扰能力强: 超声波测距不易受光照、颜色等环境因素影响,相比于红外测距在户外或复杂光照条件下具有更好的稳定性。

  • 接口简单: HC-SR04 模块只有VCC、GND、Trig(触发)和Echo(回响)四个引脚,与STM32的连接非常简单。STM32通过一个GPIO口发送一个短促的高电平脉冲到Trig引脚来触发超声波发射,再通过另一个GPIO口捕获Echo引脚的脉冲宽度,即可计算出距离。

  • 成本低廉: HC-SR04 是市面上非常普及且价格低廉的传感器,适合成本敏感的项目。

  • 成熟可靠: 经过长时间的市场验证,HC-SR04 模块性能稳定,故障率低。

元器件功能:

  • 超声波发射: 当Trig引脚接收到至少10us的高电平脉冲时,模块内部会发出8个40KHz的超声波脉冲。

  • 超声波接收与回响: 超声波遇到障碍物后会反射回来,被模块的接收端捕获。此时Echo引脚会输出一个高电平,其持续时间与超声波从发射到接收的总时间成正比。

  • 距离计算: STM32通过定时器捕获Echo引脚高电平的持续时间 t,利用公式 距离=2声速×t 来计算障碍物的距离。需要注意的是,声速会受环境温度影响,但对于一般应用场景,可以取常数340m/s。


2.4 供电模块:降压模块(如AMS1117-3.3V/5V)与锂电池


元器件型号:

  • 电源: 18650锂电池组(通常2节或3节串联,提供7.4V或11.1V电压)

  • 稳压模块: AMS1117-3.3V (用于STM32供电),AMS1117-5V (用于HC-SR04供电,若L298N不提供5V输出) 或专用的降压模块(如MP1584EN等效率更高的DCDC模块)

器件作用: 供电模块为整个智能小车系统提供稳定可靠的电源。锂电池作为移动电源,降压模块则将电池电压转换为各个元器件所需的稳定工作电压。

为何选择这些元器件:

  • 锂电池: 18650锂电池具有能量密度高、体积小、放电电流大等优点,非常适合作为移动设备的电源。多节串联可以提供L298N驱动电机所需的较高电压(如7.4V或11.1V),同时保证足够的续航时间。

  • AMS1117/DCDC降压模块:

    • STM32供电: STM32F103C8T6 通常工作在3.3V电压下,而锂电池组的电压较高,需要通过稳压模块降压。AMS1117-3.3V 是一种常用的线性稳压器,简单可靠,适用于为STM32提供稳定的3.3V电源。

    • HC-SR04供电: HC-SR04 通常工作在5V电压下。如果L298N模块不提供5V输出(部分L298N模块集成了5V稳压),则需要独立的AMS1117-5V或效率更高的DCDC降压模块提供5V电源。

    • 效率考量: 线性稳压器(如AMS1117)在输入电压与输出电压压差较大时会产生较多热量,效率较低。对于要求续航时间较长的应用,可以考虑使用DCDC(降压型DC-DC)转换模块(如基于MP1584EN芯片的模块),其转换效率更高,发热量更小,能够更有效地利用电池电量。

元器件功能:

  • 电压转换与稳定: 将锂电池的较高电压降压并稳压至各个模块所需的特定电压(3.3V、5V、电机驱动电压等),确保各模块在稳定电压下正常工作,避免电压波动对系统造成干扰。

  • 提供持续动力: 为整个小车系统提供不间断的电力供应,支持电机、传感器、微控制器等所有部件的运行。


2.5 驱动电机:TT电机(直流减速电机)


元器件型号: TT电机(通常指带有减速箱的直流电机,常见型号如1:48减速比)

器件作用: TT电机是智能小车的“腿”,负责提供驱动力,使小车能够移动。

为何选择这颗元器件:

  • 集成减速箱: TT电机通常都带有减速箱,这使得电机在较低转速下也能提供较大的扭矩。对于智能小车而言,扭矩比转速更重要,因为它需要克服车身重量和地面摩擦力进行移动。减速箱可以将电机的高速低扭矩输出转换为低速高扭矩输出,非常适合驱动小车。

  • 易于控制: TT电机是直流电机,其转速和转向可以通过改变供电电压和电流方向来控制,非常适合L298N驱动。

  • 成本低廉: TT电机是模型和DIY领域非常常见的电机,价格便宜,易于采购。

  • 尺寸小巧: 体积紧凑,方便安装在小型小车底盘上。

元器件功能:

  • 提供动力: 将电能转化为机械能,通过减速箱输出扭矩,驱动车轮转动。

  • 实现运动: 通过L298N的控制,实现小车的向前、向后、左转、右转和停止等各种运动模式。


2.6 其他辅助元器件


  • 车轮: 与TT电机配套的橡胶车轮,提供抓地力。

  • 万向轮/履带: 用于小车的前方或后方支撑,提供转向或平稳行驶。万向轮可实现360度自由转动,方便转向;履带则提供更大的抓地力,适合复杂地形。

  • 小车底盘: 承载所有元器件的结构,通常由亚克力板或铝合金制成。

  • 杜邦线/连接导线: 用于连接各个模块和元器件。

  • 面包板/PCB板: 用于搭建电路原型或制作最终电路板。

  • 电源开关: 控制小车整体供电。

  • LED指示灯: 用于显示小车工作状态或调试信息。

  • 蜂鸣器(可选): 用于发出声音提示,例如避障警报。

  • 光电编码器(可选): 如果需要更精确的里程测量和闭环速度控制,可以在电机上安装光电编码器。编码器会产生脉冲信号,STM32通过计数这些脉冲来计算电机的转速和转动距离。


3. 系统硬件连接方案



3.1 STM32F103C8T6与L298N连接


  • L298N电源输入: 连接到电池组的输出电压(如7.4V或11.1V)。

  • L298N电机输出: OUT1/OUT2连接左侧电机,OUT3/OUT4连接右侧电机。

  • L298N控制引脚:

    • ENA (左侧电机使能): 连接到STM32的一个PWM输出引脚 (例如 TIMx_CHy)。通过调整PWM占空比控制左侧电机速度。

    • IN1, IN2 (左侧电机方向控制): 连接到STM32的两个GPIO引脚。通过高低电平组合控制左侧电机正反转。

    • ENB (右侧电机使能): 连接到STM32的另一个PWM输出引脚 (例如 TIMx_CHz)。通过调整PWM占空比控制右侧电机速度。

    • IN3, IN4 (右侧电机方向控制): 连接到STM32的另两个GPIO引脚。通过高低电平组合控制右侧电机正反转。

  • L298N GND: 连接到STM32的GND。


3.2 STM32F103C8T6与HC-SR04连接


  • HC-SR04 VCC: 连接到5V电源(由AMS1117-5V或L298N的5V输出提供)。

  • HC-SR04 GND: 连接到STM32的GND。

  • HC-SR04 Trig: 连接到STM32的一个GPIO输出引脚。

  • HC-SR04 Echo: 连接到STM32的一个GPIO输入引脚,且该引脚需要配置为外部中断输入或TIM输入捕获模式,以精确测量高电平持续时间。


3.3 STM32F103C8T6供电


  • 锂电池输出: 连接到AMS1117-3.3V稳压模块的输入端。

  • AMS1117-3.3V输出: 连接到STM32F103C8T6的VCC/VDD引脚。

  • GND: 所有模块的GND连接在一起,形成公共地。


3.4 整体连接示意图


(此处可设想一个框图或简要文字描述,但在文本形式中难以直观绘制,故以文字描述为主)

  • 电池组:提供整个系统的总电源。

  • 降压模块(AMS1117-3.3V/5V或DCDC):将电池电压转换为STM32和HC-SR04所需电压。

  • STM32F103C8T6:作为控制核心,其GPIO口连接HC-SR04的Trig/Echo,PWM输出和GPIO口连接L298N的控制引脚。

  • L298N:接收STM32的控制信号,驱动左右两个TT电机。

  • HC-SR04:发送测距信号给STM32。

  • TT电机与车轮:执行运动。


4. 软件设计方案


软件是智能小车实现避障功能的核心。基于STM32F103C8T6的软件设计通常采用C语言,结合HAL库或LL库进行开发。


4.1 主程序流程


  1. 系统初始化:

    • 配置STM32的时钟系统、GPIO口(输入/输出、中断)、定时器(用于PWM输出和超声波捕获)、串口等。

    • 初始化L298N模块的控制引脚状态,确保电机初始处于停止状态。

    • 初始化HC-SR04超声波模块。

  2. 循环检测与决策:

    • 安全距离: 设定一个安全距离阈值(如20cm)。

    • 前方无障碍: 如果前方距离大于安全距离,小车保持前进。

    • 前方有障碍: 如果前方距离小于安全距离:

    • 小车停止。

    • 小车后退一段距离。

    • 小车进行左右转向检测(可增加一个舵机带动超声波旋转,或通过左右轮差速转向,边转边测左右距离)。

    • 选择距离较远的方向进行转向(例如,左侧距离大于右侧,则左转)。

    • 转向结束后,继续前进。

    • 超声波测距: 周期性地触发HC-SR04进行测距,并捕获回波,计算出当前障碍物距离。

    • 数据处理: 对测得的距离数据进行滤波处理,消除噪声,提高测量精度。

    • 避障算法: 根据测得的距离和预设的阈值,执行避障策略。

    • 电机控制: 根据避障算法的决策,调用L298N的驱动函数,控制电机进行相应的运动(前进、后退、左转、右转、停止),通过PWM调整速度。

  3. 状态反馈(可选):

    • 通过LED指示灯显示当前小车状态(如前进、避障中)。

    • 通过蜂鸣器发出警报声。

    • 通过串口打印调试信息,方便监控和调试。


4.2 关键模块功能实现


  • GPIO配置: 使用HAL_GPIO_Init()函数配置输入输出模式。

  • PWM输出: 使用TIM_PWM_Init()函数配置定时器生成PWM信号,并通过HAL_TIM_PWM_SetCompare()函数动态调整PWM占空比,实现电机调速。

  • 外部中断/TIM输入捕获:

    • 对于HC-SR04的Echo引脚,可配置为外部中断,在上升沿和下降沿触发中断,记录时间戳,计算脉冲宽度。

    • 更精确的方式是使用STM32的TIM输入捕获功能,自动测量脉冲高电平的持续时间,减少CPU开销。

  • 延时函数: 使用HAL_Delay()或TIM延时函数实现精确延时,用于超声波触发脉冲和各种运动时序控制。

  • 电机控制函数: 封装独立的函数,如void Motor_GoForward(int speed), void Motor_GoBackward(int speed), void Motor_TurnLeft(int speed), void Motor_TurnRight(int speed), void Motor_Stop(),这些函数内部调用L298N的控制逻辑(设置INx引脚高低电平,设置ENA/ENB的PWM占空比)。

  • 超声波测距函数: 封装float GetDistance()函数,内部包含触发超声波、等待回波、计算距离的逻辑。


5. 调试与优化



5.1 硬件调试


  • 电源稳定性: 确保电池和降压模块供电稳定,各模块电压在正常范围内。

  • 电机连接: 检查电机接线是否正确,L298N与电机是否对应。

  • 传感器连接: 检查HC-SR04的Trig和Echo引脚是否与STM32正确连接。

  • 驱动测试: 分别测试L298N是否能正常驱动电机正反转和调速。

  • 传感器测试: 独立测试HC-SR04的测距功能是否正常,读数是否稳定。


5.2 软件调试


  • 串口打印: 在程序中加入大量的串口打印信息,输出传感器数据、当前状态、决策结果等,方便实时监控程序运行情况。

  • 分步测试: 先实现电机驱动模块的控制,再加入超声波测距,最后整合避障算法。

  • 参数调整: 避障算法中的安全距离阈值、后退距离、转向角度/时间等参数需要根据实际测试结果进行反复调整,以达到最佳避障效果。

  • 异常处理: 考虑超声波测量失败(如超出量程、环境干扰)时的处理机制,避免小车陷入死循环或做出错误判断。


5.3 避障算法优化


  • 转向策略: 可以优化转向策略,例如在检测到障碍物后,先原地旋转90度检测前方距离,然后选择前方距离最远的方向前进,或者通过小车左右两侧增加超声波传感器,进行更全面的环境感知,选择最佳路径。

  • 路径规划: 对于更高级的应用,可以考虑引入简单的路径规划算法,例如通过记录已避障区域来避免重复进入死胡同。

  • 模糊控制/PID控制: 对于电机速度的精确控制,可以引入PID算法;对于避障决策,可以尝试模糊控制,使小车动作更平滑、智能。


6. 总结与展望


基于STM32F103C8T6和L298N的智能避障小车设计方案,通过精心选择高性能、高性价比的核心元器件,结合清晰的硬件连接和逻辑严谨的软件设计,能够构建一个功能完善、性能稳定的智能避障平台。这个项目不仅能够帮助开发者深入理解嵌入式系统、传感器应用和电机控制等基础知识,还能培养解决实际问题的能力。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告