基于STM32的可遥控智能小车控制系统设计
2020-07-04曹冲振梁世友王凤芹明超李赫
曹冲振 梁世友 王凤芹 明超 李赫
摘要:在高科技快速发展的新时代,移动机器人广泛应用于工业、农业、医疗、服务等行业,智能小车是其研究领域的一个重要分支。本设计以STM32F103RCT6微控制器作为智能小车控制系统的核心处理器,功能设计模块化,包括电源模块、驱动模块、避障模块、无线通信模块、速度检测模块、定位模块等,实现小车的自主运动、避障、定位、通信以及在复杂环境下的人工遥控等功能。
关键词: 智能小车; STM32; 无线通信; 遥控
【Abstract】 In the new era of rapid development of high technology, mobile robots are widely used in industries such as industry, agriculture, medical care, and services. Smart cars are an important branch of the research field. This design uses STM32F103RCT6 microcontroller as the core processor of the intelligent car control system. Its functional design is modular, including such modules as power module, drive module, obstacle avoidance module, wireless communication module, speed detection module, positioning module, etc., which could realize obstacle avoidance, positioning, communication, and manual remote control in complex environments.
【Key words】 intelligent car; STM32; wireless communication; remote control
0 引 言
随着科学技术的飞速发展,智能化早已成为人们关注的焦点,智能车在现代社会的各个领域已得到广泛应用。 智能小车是人工智能、自动控制、计算机等学科的交叉融合的产物,并在无人驾驶汽车和智能扫地机器人中起着重要作用。
控制系统是智能小车的关键部分,可以根据预定的轨迹在复杂的环境中行驶,实现小车的速度和位置控制,完成指定的任务,并在智能小车系统中占有举足轻重的位置。在实际应用和文献调研中,发现智能小车在运动过程中会出现避障不灵敏现象,在复杂环境下则容易出现运动紊乱、通讯延迟,以及控制系统的集成度不高的问题。因此,本文设计了一种以STM32微控制器为核心的四轮智能小车,其工作频率可达72 MHz,可以实现复杂的计算,丰富的增强型I/O端口增强了系统的扩展能力[1];通过扩展的GPS模块,可以对小车进行实时定位,并通过无线通信模块将信息传输给上位机,以进行实时监控,当小车进入复杂环境无法工作时,可转换为人工操作模式,从而达到预期的要求。
1 系统总体设计方案
该系统的总体设计框图如图1所示。
由图1可知,该系统由STM32控制器模块、电源模块、无线通信模块、避障模块、定位模块、驱动模块、速度检测模块和上位机部分组成。小车采用后轮差速驱动转向方式,电机选用永磁直流电机。电源模块采用LM7805和LM1117芯片将+12 V电压轉换为+5 V和+3.3 V,以为车载系统供电。无线通信模块选择PTR2000作为核心芯片,实现小车与上位机之间的通信。避障模块采用红外避障传感器。使用GPS定位方法对小车进行实时定位。RPR-220光电编码器用于车速检测。选择L298N作为电机驱动芯片,采用增量式PID控制算法控制单片机输出的PWM脉冲,用来控制车速,再由测速模块检测车速,反馈给单片机,形成一个闭环控制系统。
2 系统硬件电路设计
2.1 主控制器电路设计
本控制系统选用的STM32F103RCT6单片机的最小系统图,如图2所示。时钟电路的引脚为OSCIN和OSCOUT,外部8 MHz时钟使系统更稳定。NRST为复位引脚。PB6,PB7,PB8,PB9是PWM信号输出引脚。PA2、PA3与无线通信模块的DO、DI引脚分别相连,作为串行通信的通道,PA4、PA5与无线通信模块的CS、TXEN引脚相连。PA7、PA8、PB0、PB1引脚与4个红外避障传感器相连。PB10、PB11与GPS定位模块相连。
2.2 电源模块电路设计
电源模块主要为控制系统提供工作电压。主控制器电源电压为+3.3 V,而电机驱动芯片L298N需要+5 V,电机驱动电压为+12 V,因此,选择+12 V作为系统的主电源,而+5 V和+3.3 V电压可以经电压转换芯片转换得到。本文将10个1.2 V4 500 mAh锂电池串联用作系统的电源,由此可得+12 V的电源电压。从+12 V转换到+5 V,选用转换芯片LM7805,其电压转换电路如图3所示。
通过图3给出的电源电路,主控制器工作电压+3.3 V经电压转换芯片LM1117转换得到+5 V电压,并且在LM1117的输入和输出两侧添加了电容,减少了电源扰动的影响,增加了系统的稳定性[2]。其电压转换电路如图4所示。
2.3 驱动模块电路设计
选择L298N作为电机驱动芯片,这是一个具有大电流高电压的全桥驱动芯片,一个L298N可以分别控制2台直流电机,且有控制使能端。该芯片用作电机驱动器,操作简便,稳定性好,可以实现小车速度的精确控制。驱动电路如图5所示。
在图5中,SA和SB引脚经1 Ω电阻接地,作为电流反馈以实现系统的电流闭环控制。左右轮驱动电机的两端分别连接到L298N的Out1~Out4四个输出管脚。二极管IN5819在电路中是不可或缺的,因为电机是感性负载,在停机或换向时,会产生很高的反向感生电动势,如果不加释放就会破坏芯片内部电路[3]。当添加二极管后,此电动势使二极管导通,释放了电能,对电路起到了保护作用。
2.4 避障模块设计
本設计采用红外避障传感器,具有环境适应性好、抗干扰性强、功耗低和识别能力强等优点。该红外避障传感器有3个引脚,分别是VCC、GND、OUT,如图6所示。其中,传感器的输出引脚是OUT引脚。使用时要注意的是电源正负极不能接反,否则会烧坏芯片。
该传感器模块对光有很强的适应性,配有一对红外发射与接收管,发射管发射一定频率的红外线,遇到障碍物(反射面)反射回来被接收管接收,经比较器电路处理后,绿色指示灯将点亮,输出数字信号(低电平信号)[4]。该传感器的检测范围能够通过电位器调整(2~30 cm),具有干扰小、易装配等特点,并在机器人避障、流水线计数、黑白线循迹等众多领域具有很好的应用前景,其内部电路图如图7所示。
2.5 无线通信模块设计
无线通信模块的作用是实现小车与上位机之间的通信。在本设计中,选用射频模块PTR2000作为无线通信端口,该端口与STM32控制器的USART收发器端口连接,上位机通过MAX232电平转换芯片与PTR2000连接,从而完成了智能小车与上位机之间的无线通信。该射频模块具有接收和发射数据的功能,具有接收灵敏度高、工作速率快、稳定性高等特点。其接口电路如图8所示。
其中,PWR端口通过电阻与电源连接,直接设定为正常工作状态,DO、DI分别与主控制器USART2的PA2和PA3引脚相连,作为串行通信的通道;CS、TXEN分别与PA4、PA5引脚相连。PTR2000是一个集成收发器芯片,可通过+3.3 V供电,与主控器无缝连接。
3 系统软件设计
本系统编程采用模块化编程思想。首先,编写每个模块应用程序,然后在主程序中调用各模块的程序。模块化编写的程序不仅便于系统调试,而且有利于在项目中进行移植,并缩短了项目开发周期。
3.1 主程序设计
上电后,进行系统初始化,包括系统时钟、中断分组、串口、系统延时函数、定时器和相应的函数进行初始化。智能小车设置有自动、遥控两种模式,默认的模式为自动模式。系统初始化完成后,进入命令接收等待状态,又当接收到模式切换命令时,小车切换到相应的模式启动相应程序,使小车执行相应控制指令。系统程序流程图如图9所示。
3.2 驱动模块程序设计
该模块通过控制PWM脉冲来调节电机运转速率。方法为运用算法让主控器输出调节车速的PWM信号,继而把这个经过处理的信号传递给L298N,使其控制电机完成启动/停止、调速、正转和反转等功能。将电机两端的输入信号设置为一侧为高电平,一侧为低电平,使电动机能够正常运行。具体运转情况见表1。
3.3 无线通信程序设计
在本设计中,无线模块PTR2000连接到单片机的USART2,首先配置接收数据输入(RX)和发送数据输出(TX)的引脚;串口数据传输频率为1 Hz,通过定时器定时1 s进行数据发送,当定时器时间达到1 s时,执行定时器溢出中断程序并执行数据传输。通过串口接收中断完成串行端口数据接收。当串口USART2接收数据时,串口USART2接收中断。接收到数据后,程序退出串口USART2接收中断,并清除定时器溢出中断标志。串口接收的数据保存在变量中[5]。
3.4 定位模块程序设计
GPS模块上电约1 min后,定位完成,此时,定位信息将通过串口输出。只要将串口输出引脚与单片机相应的串口引脚连接,就可以通过单片机读取GPS模块的定位信息。GPS模块连接STM32单片机的USART3串行端口,当串口接收到GPS模块信息时,程序进入USART3串口接收中断,接收到串口数据后,程序自动退出串口接收中断,接收到的GPS数据存储在变量中,方便使用。
4 结束语
本文设计的可遥控智能小车是以STM32单片机为控制核心,实现小车的自主运动、避障、定位、通信以及在复杂环境下的人工遥控等功能,给出了具体的电路设计。智能小车通过无线通信模块与上位机连接,上位机可以实时观测小车的运动情况,在复杂环境下小车可能出现停滞、运动紊乱的情况,可改为人工遥控的模式,对智能小车发出控制指令,控制系统的设计功能基本实现。
参考文献
[1] 周官喜. 基于STM32低功耗云台控制系统设计[D]. 青岛:青岛理工大学,2012.
[2]施小宇. 基于STM32的智能快递系统研究与设计[J]. 电子技术与软件工程,2014(1):132.
[3]夏启. 混凝土水化热监控系统的开发与实现[D]. 天津:天津科技大学,2017.
[4]王攀攀. 部分未知环境中移动机器人动态避障研究[D]. 哈尔滨:哈尔滨工业大学,2012.
[5] 范政,何继靖,朱永业,等. 基于STM32的无线智能小车控制系统设计[J]. 轻工科技,2018,34(6):83.