您的当前位置:首页正文

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

2024-06-26 来源:步旅网


基于 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电压,触发脉冲稳定。为了让操作者实时观测小车定位坐标,将GPS定位模块安装在智能小车上,该模块具有功耗低、体积小、追踪灵敏度和定位覆盖范围广等优点,定位精度高达3m,可以在不接IPX有源天线情况下单独使用。

1.3 无线模块设计该模块工作频率为410~441MHz,模块型号为ASTTL-100,采用高稳定100mW的SX1278型号无线传输模块为主芯片,该芯片支持点对点、一点对多点以及多点对一点的数据传输。

1.4 电源模块设计智能小车需要5VDC对主控板供电,采用11.1V锂电池,两块LM2596电源模块分别输出5V和8.5V电压对系统进行供电。为了满足供电需求,输出电压可调范围为1.5~35VDC,输入电压为3~40VDC。

1.5 电机及驱动模块设计通过STM32单片机输出的PWM脉冲配合直流电机驱动芯片,通过驱动直流电机,来控制小车的前进、后退。直流电机驱动采用性能高、体积小、

效率高的TB6612FNG电机驱动模块。

1.6 小车底板设计底板材料采用寿命长、抗冲击力强、重量轻和可塑性的亚克力板制作,为了防滑,小车轮毂采取直径为65mm的橡皮轮。

二、基于stm32单片机的智能小车软件设计

2.1 主程序设计智能小车设置有手动、避障防摔和巡航等几种模式,通电后进行系统时钟、系统延时函数、串口和定时器等系统初始化,然后默认模式为手动模式,对系统进行测试和手动控制。系统初始化完成后,当手动对小车下达控制命令时,小车执行控制命令;当接收到模式切换命令时,小车切换到相应模式。

2.2 避障防摔子程序设计小车辅助避障和坑道躲避功能以传感器输入信号触发中断形式进行设计,当系统模式设置为避障和防摔模式后,电脑将命令发送至系统,接收命令后,系统调用超声波避障和GPS定位子程序,小车启动直行;当超声波检测到小车前方障碍物距离小于15cm时,小车执行超声波避障程序,并非根据检测到的信息,控制小车躲避。

2.3 跟踪子程序设计系统执行跟踪子程序过程中,当小车左、右侧光电传感器检测到物体时,系统执行跟踪程序,分别向左、右行使;当左、右两侧传感器同时检测到物体时,小车启动超声波传感器检测障碍物距离,并直行,在距离小于15cm时停止运行。

2.4 巡航子程序设计巡航模式中,当小车底板下方左、右侧红外传感器检测到轨道时,小车分别向左传、右方向行驶;当左、右两侧同时检测到轨道时,直到右侧传感器检测到轨道之前,小车一直左传。

2.5 GPS模块定位程序设计无线模块通过定时器将数据发送时间间隔设置为1s,串口数据发送频率为1Hz,当定时器时间到达一秒时,执行定时器进行数据发送,溢出中断程序,并且通过串口接收,串口数据接收中断完成;接收数据完成后,定时器溢出中断,串口接受的数据保存在变量中。

三、智能小车速度控制子程序设计采用PID控制算法,

首先设定一个设定值,然后取得测量值,将测量值与设定值进行比较得出系统偏差。为了控制输出量,运用比例、积分和微分等运算方法,对智能小车速度进行控制,提升智能小车运行稳定性和动态性能。同时,在小车行使过程中,通过测速模块测量出脉冲数,与上一次测量速度进行比较,根据小车轮径和行驶时间计算出小车速度,利用PID控制算法,调整电机转速,控制单片机输出PWM脉冲到电机驱动模块PWM端上。为了使程序调用更灵活,PID控制C语言程序对PID控制器多个参数进行设置。

作者简介:

第一作者:庞豪杰(1998—),男,汉族,浙江嘉兴人,学生,本科,浙江师范大学工学院,机电技术教育专业。

第二作者:伍春毅(2000—),女,汉族,重庆梁平人,学生,本科,浙江师范大学工学院,机械制造及其自动化专业。

因篇幅问题不能全部显示,请点此查看更多更全内容