基于STM32单片机的智能小车控制系统
发布时间:2020-12-25 01:29
<正>本设计基于STM32F系列单片微型控制器,设计的核心模块选用STM32F103rct6型号单片微型控制器,其具备强大的数据运算和控制能力。主要使用TCRT5000红外反射模块、HC-SR04超声波测距模块、L298N电机驱动模块等,实现智能小车的黑白线循迹功能与超声波测距并避障报警的功能。该设计使智能小车具有一定程度的环境感知能力、障碍物探测能力和自动黑白线循迹行驶能力。
【文章来源】:电子世界. 2020年19期
【文章页数】:2 页
【部分图文】:
小车成品图
硬件系统的设计方案包含五大模块:STM32单片微控制器、检测黑白线循迹模块、障碍物探测测距模块、蜂鸣报警模块、行驶驱动控制模块。本次设计包含两大功能板块:自动循迹模块与探测障碍物并报警模块。自动循迹功能的设计以红外反射传感器为主要器件,配合电机驱动模块驱动电机运转,以达到智能小车循迹行驶的目的;避障报警功能依托超声波测距模块和蜂鸣器设计完成,在小车运行过程中,超声波测距模块以一定的时间间隔不断发出超声波,并接受超声波的回波,当测距模块通过计算检测到智能小车离障碍物的距离小于预先设计好的距离,就会使小车自动停止并通过蜂鸣器蜂鸣报警。当小车在行驶时,位于其前端两侧的俩个红外反射模块会不停检测黑白线轨迹,当小车靠近黑线时,红外反射模块会向单片机返回电信号,此电信号表示小车即将越过黑线脱离行驶轨道,这时,单片机向电机驱动模块发送控制命令,减缓即将越过黑线一侧电机的转速,利用差速转动原理使小车回归到轨道内行驶。在小车的车体前端安装有一个超声波测距模块,当小车在运行过程中,超声波模块以一个极为短暂的时间间隔不断地向前发射超声波。利用声波的反射,当声波在传播过程中碰上障碍物,会产生一个回波,超声波模块会接收到这个回波,并将会返回一个电信号给单片微控制器。此时电信号代表小车前方出现障碍物,单片机会向电机驱动模块发送控制指令使电机停止转动,这时小车处于停止状态,接着单片机向蜂鸣器发送电信号使其蜂鸣报警,提示智能小车遭遇障碍物。待障碍物被清理之后,小车继续循迹前进。小车的整个控制过程不断循环重复,即可达到循迹行驶功能和避障报警功能(见图1)。1.2 软件系统
程序设计包括三个功能模块:驱动控制模块、障碍物测距模块、报警模块。将三个程序功能模块写做三个单独的.C文件,每个文件不相互依赖,这样有助于提高程序的易读性和抽象性。驱动控制模块的函数全部写在control.c文件中。程序中先对与L298N连接的引脚PA1、PA2、PA3、PA5、PA7初始化。写好电机控制函数接口。在control.h文件中使用宏将其实现细节屏蔽,使得电机控制函数接口更加抽象。障碍物测距模块的函数全部写在time.c文件中。程序中需要对定时器TIM2的通道1配置为输入捕获模式,并设置相应的端口PA0,接着设置分频、捕获模式、中断功能等。待定时器TIM2设置完成后,需要设置外部中断函数。当小车在运行过程中遭遇障碍物时,通过单片机的中断功能发送信号,程序的设计更合理,对单片机资源的消耗也最小。中断函数中需要计算超声波的运行时间。报警模块的函数写在led.c文件中。该文件中包含两个函数:使蜂鸣器蜂鸣的函数buzzer,和使led红灯闪烁的函数。待包含各个部分功能函数的文件完成后,只需要在主函数main.c中调用即可。各个软件功能模块设计完成后,将其分别封装成不同的函数,保存在不同的文件中。在主要函数文件中将其引入,通过在main.c中将各个功能模块调用,根据不同的情况调用不同的函数,即可完成预先设计的全部功能,流程如图2所示。1.3 实物制作及调试
本文编号:2936686
【文章来源】:电子世界. 2020年19期
【文章页数】:2 页
【部分图文】:
小车成品图
硬件系统的设计方案包含五大模块:STM32单片微控制器、检测黑白线循迹模块、障碍物探测测距模块、蜂鸣报警模块、行驶驱动控制模块。本次设计包含两大功能板块:自动循迹模块与探测障碍物并报警模块。自动循迹功能的设计以红外反射传感器为主要器件,配合电机驱动模块驱动电机运转,以达到智能小车循迹行驶的目的;避障报警功能依托超声波测距模块和蜂鸣器设计完成,在小车运行过程中,超声波测距模块以一定的时间间隔不断发出超声波,并接受超声波的回波,当测距模块通过计算检测到智能小车离障碍物的距离小于预先设计好的距离,就会使小车自动停止并通过蜂鸣器蜂鸣报警。当小车在行驶时,位于其前端两侧的俩个红外反射模块会不停检测黑白线轨迹,当小车靠近黑线时,红外反射模块会向单片机返回电信号,此电信号表示小车即将越过黑线脱离行驶轨道,这时,单片机向电机驱动模块发送控制命令,减缓即将越过黑线一侧电机的转速,利用差速转动原理使小车回归到轨道内行驶。在小车的车体前端安装有一个超声波测距模块,当小车在运行过程中,超声波模块以一个极为短暂的时间间隔不断地向前发射超声波。利用声波的反射,当声波在传播过程中碰上障碍物,会产生一个回波,超声波模块会接收到这个回波,并将会返回一个电信号给单片微控制器。此时电信号代表小车前方出现障碍物,单片机会向电机驱动模块发送控制指令使电机停止转动,这时小车处于停止状态,接着单片机向蜂鸣器发送电信号使其蜂鸣报警,提示智能小车遭遇障碍物。待障碍物被清理之后,小车继续循迹前进。小车的整个控制过程不断循环重复,即可达到循迹行驶功能和避障报警功能(见图1)。1.2 软件系统
程序设计包括三个功能模块:驱动控制模块、障碍物测距模块、报警模块。将三个程序功能模块写做三个单独的.C文件,每个文件不相互依赖,这样有助于提高程序的易读性和抽象性。驱动控制模块的函数全部写在control.c文件中。程序中先对与L298N连接的引脚PA1、PA2、PA3、PA5、PA7初始化。写好电机控制函数接口。在control.h文件中使用宏将其实现细节屏蔽,使得电机控制函数接口更加抽象。障碍物测距模块的函数全部写在time.c文件中。程序中需要对定时器TIM2的通道1配置为输入捕获模式,并设置相应的端口PA0,接着设置分频、捕获模式、中断功能等。待定时器TIM2设置完成后,需要设置外部中断函数。当小车在运行过程中遭遇障碍物时,通过单片机的中断功能发送信号,程序的设计更合理,对单片机资源的消耗也最小。中断函数中需要计算超声波的运行时间。报警模块的函数写在led.c文件中。该文件中包含两个函数:使蜂鸣器蜂鸣的函数buzzer,和使led红灯闪烁的函数。待包含各个部分功能函数的文件完成后,只需要在主函数main.c中调用即可。各个软件功能模块设计完成后,将其分别封装成不同的函数,保存在不同的文件中。在主要函数文件中将其引入,通过在main.c中将各个功能模块调用,根据不同的情况调用不同的函数,即可完成预先设计的全部功能,流程如图2所示。1.3 实物制作及调试
本文编号:2936686
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2936686.html