设计与实现:基于PID算法的STM32智能小车循迹爬坡系统

目录

摘要

0 引言

1 需求分析

2 系统结构

3 硬件电路设计

3.1 整体硬件框架

3.2 主控制电路

3.3 电源模块

3.4 红外循迹

3.5 电机驱动

3.6 无线蓝牙控制

4 软件设计

4.1 循迹程序设计

4.2 PID算法调速设计

5 系统搭建与调试

6 结语

参考文献

      摘要随着现代物联网行业的发展,越来越多的智能产品已经出现在人们的生活中。智能型产品在指定的环境中,不用人为控制,就可以按照预先设计的模式,完成指定的动作,可广泛运用于人们的日常生活。本次设计的基于PID算法的智能小车,采用STM32F103作为小车的控制核心,采用红外循迹模块,通过红外的发送与接收判断路线,从而实现循迹的功能。本设计的创新在于:采用PID算法对车轮速度进行调整,使其可在不同摩擦,不同坡度的地形具有更加稳定的速度;同时,该小车还配备蓝牙模块,在有效范围内,可通过手机APP对小车进行遥控,随时调整小车行驶的速度与方向。

   关键词:嵌入式;红外循迹;自动爬坡;STM32;PID算法

0 引言

         智能机器人的应用在世界上越来越广泛,逐步发展到各个领域。移动机器人属于智能机器人的一个重要分支,目前世界各国都越来越重视对移动机器人的研究,在军事侦察、地质勘测等人工作业难度较大,风险较高的领域以及对恶劣环境的监测工作中都有广泛的应用前景【1】。本文设计的基于PID算法的爬坡循迹的智能小车就属于智能移动机器人的范畴,能够通过红外传感器检测路线,通过PID算法调整速度,通过蓝牙控制小车,从而实现稳定速度的爬坡循迹、蓝牙遥控等功能。

1 需求分析

      该智能小车主要参照2020年TI杯大学生电子设计竞赛题目“坡道行驶电动小车”进行设计与实现。要求小车能沿着指定路线在坡道上自动循迹骑线行驶,小车必须独立运行,车外不能使用任何设备(包括电源)。小车(含电池)重量小于1.5kg,外形尺寸在地面投影不大于25cm×25cm。坡道用长、宽约1m的细木工板制作,允许板上有木质本色及自然木纹。木工板表面铺设画有1cm×lcm黑白间隔的纸条(以下简称为标记线)作为路线指示:标记线起始段为直线,平行于木板两边;标记线在坡顶转向90°,转弯半径20cm;标记线平行坡顶距离≥30cm,距坡顶距离≤20cm;标记线总长度为1m。停车标记为宽1cm长 5cm的黑色线条,垂直于坡顶标记线。小车坡度角示意及行驶线路顶视图如图1所示。

                                                     图1 小车坡度角及路线示意图

具体要求:

  1. 小车(含电池)重量小于1.5kg,外形尺寸在地面投影不大于25cm×25cm。
  2. 坡度角θ= 0°,电动小车能够沿标记线自动骑线行驶,在停车点停车;小车上标记点到停车标记中心线的垂直距离误差≤2cm。停车时立即发出声音提示。小车行驶过程中,其地面投影不得脱离标记线。 
  3. 在完成(2)的基础上,电动小车能够设定行驶时间,自动控制小车匀速通过1米长的线路,在停车点停车。行驶时间可在10s~20s间设定。误差绝对值≤1s。行驶过程中不得碾压、脱离标记线。
  4. 坡度角=10°,完成要求(3)的动作。
  5. 可任意指定坡度角θ在11°~30°,完成要求(3)的动作。
  6. 在完成(5)后,尽量增加坡度角θ,完成要求(3)动作。

2 系统结构

        本文参考大学生电子竞赛“坡道行驶电动小车”的要求设计并制作了基于PID算法的爬坡循迹智能小车,该智能小车配备的传感器包括红外传感器、编码器、蓝牙无线传感器。

        由红外传感器检测路线,经由STM32F103单片机处理,通过对电机驱动模块的输出控制各个电机的旋转情况,做到循线行驶。由编码器检测电机的实际转速,并反馈到单片机,运用增量式PID算法运算后,对电机驱动模块输出PWM,实现稳定控速。由蓝牙传感器接收手机端APP发送的数据,并反馈到单片机,对电机驱动模块控制,实现遥控小车。

        该智能小车系统采用STM32F103C8T6单片机作为控制核心,主要包含的控制系统有红外传感器、编码器、直流电机、PWM输出等。由单片机和以上各个系统组成该智能小车系统。在完善硬件系统后,通过设计软件框架协调好每个硬件模块,使其正常工作并实现各自需要实现的功能,以组合成整个智能小车系统的功能。其控制系统框图如图2所示。

                                                          图2 控制系统框图

3 硬件电路设计

3.1 整体硬件框架

      该智能小车的硬件系统主要包括以下部分:12V航模电池、红外循迹模块、HC-05蓝牙模块、TB6612FNG稳压驱动模块、霍尔编码器电机,硬件设计的主要部分连接图如图3所示。

 

                                                                  图3 硬件连接图

3.2 主控制电路

        该智能小车的控制核心模块,选用的是STM32F103单片机,配合编程软件Keil μVision,对供电烧写模块、时钟模块、电源电路、复位电路、红外接收模块、蓝牙模块以及电机驱动模块等进行程序的操控。STM32F103系列芯片具体电路如图4所示。

 

                                                图4 STM32F103芯片电路图

3.3 电源模块

      根据系统需求,需配备5V、12V的直流稳压电源。其中5V用于STM32单片机、红外模块、蓝牙模块以及编码器供电,12V用于TB6612电机驱动模块供电。由于该系统选择的TB6612驱动模块自带5V稳压电路,可输出5V电压,故不需要再选择5V电源或外接5V稳压模块,只需要一个12V电源即可满足整个智能小车系统的供电需求。

        本次的智能小车在电源上选用3S-3500mah大容量12V航模电池,电池尺寸为106*42*20mm,重量约187g。该航模电池放电性能为5C持续放电,在满电状态下,可输出12.6V电压,作为该智能小车的主电源较为合适。

3.4 红外循迹

      该智能小车系统的循迹功能是基于一块五路循迹模块实现的。该红外循迹模块工作电压为5V,共含五对红外发射与接收管,每对红外发射与接收管可检测其下方路面的黑白线情况。其工作原理:单片机产生38KHz信号对红外线发射管进行调制发射,发射出去的红外线遇到障碍物时及时反射回来,红外线接收管对反射回来的信号进行解调,并输出TTL电平【2】。控制智能小车沿着地面的黑色轨道行驶。其工作原理:因黑、白线对光的反射系数不同,当光线照射到地面并反射时,根据接收到的反射光强弱来判定是否是黑线【3】,进而控制智能小车的运动路径。

        根据红外接收管是否接收到反射回来的红外光,该模块对应的LED灯及OUT引脚的输出电平信号不同:检测到红外信号,LED亮,OUT输出高电平;没有检测到红外信号,LED灭,OUT输出低电平,由此即可判断路面的黑白线。

      在该系统上,共使用到其中三对红外发射与接收管,其中VCC接5V,GND接地,三个OUT输出分别接单片机的PB12、PB13、PB14。

3.5 电机驱动

      本设计采用四轮四驱动小车,即四个轮子的电机都有驱动能力。电机的转速由输出的PWM波决定,理论上可实现零速度到最大速度之间任意的转速。智能小车系统选择直流电机,力量大、调速范围广、驱动简单,四个直流电机共同工作更能很好的驱动小车在平面或坡道上行驶。

      该小车转向方案共有两种:同向差速和反向差速。四个轮子中,左前轮和左后轮统一速度,右前轮和右后轮统一速度,即同向的车轮电机一直保持输出相同的PWM波。需要转弯时,可使左轮和右轮保持同一转向或是相反转向,输出不同的PWM波控制左右轮不同的速度,产生差速,即可使小车转向。具体使用同向差速还是反向差速,可视具体需要转向的角度决定:需要转大角度弯,可加大差速(速度有正负),左右轮反向;需要转小弯,可减小差速,左右轮同向。

      该系统的电机驱动电路主要在于两块TB6612电机驱动模块。一块电机驱动模块可驱动两个直流电机,且该TB6612驱动包含电源输出电路和5V稳压电路,即可输出电源输入的电压和5V的稳定电压。该模块在小车系统上右举足轻重的地位,使整个系统只需要一个12V电源即可驱动所有电机及其他传感器模块。该模块主电路如图5所示。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 

                                                                图5 TB6612驱动原理图

        该模块含有指定的直流编码器电机输出口,可直接与编码器电机连接。以电机A为例,1~5对应编码器电机的接口分别为:电机输出2、编码器电源5V、编码器B相、编码器A相、编码器地、电机输出1。电路如图6所示。

 

                                                        图6 TB6612电机连接原理图

        实际电路连接中,编码器的A、B相是输出相,应该连接单片机由单片机捕获,以获得实际转速。在该模块上另含一排输出口,同样包含编码器A、B相的输出。输入部分主要包括PWM输入和两个方向使能输入(IN1、IN2),另含一个STBY口作为以上输入口的使能,为1时使能。输入输出电路如图7所示。

                                                 图7 TB6612输入输出原理图

3.6 无线蓝牙控制

      该小车系统另设计了一套无线遥控方案,可用于某些非必要情况下对小车的状态进行调节和控制。该方案是基于HC-05无线蓝牙模块实现的。

      HC-05蓝牙串口通信模块是新一代基于Bluetooth Specification V4.0 BLE蓝牙协议的数传模块。无线工作频段为2.4GHZ ISM,调制方式是GFSK。模块最大发射功率为4dBm,接收灵敏度-93dBm,空旷环境下可实现80m远距离通信。模块与单片机和手机连接如图8所示。

                                     ​​​​​​​        图8 HC-05与单片机和手机连接图

                 

4 软件设计

4.1 循迹程序设计

        循迹作为该小车实现的一个主要功能,在主程序上占十分重要的位置。循迹过程的程序编写大致如下:首先需要初始化各模块,主要涉及到红外、编码器、电机等使用到的系统资源的配置,然后持续检测红外循迹模块上各个红外接收管输出的OUT引脚的电平,即判断对应地面的黑白线情况。如果中间的红外的OUT引脚输出为低电平,左右OUT引脚为高电平,即中间检测到黑线,左右检测到白线,则调用对应电机的前进函数,驱动小车前进;如果左红外OUT引脚输出为低电平,即左边检测到黑线,则调用左转函数,驱动小车左转;如果右红外OUT引脚输出为低电平,即右边检测到黑线,则调用右转函数,驱动小车右转;如果三个红外OUT全部检测到低电平,则表示到达终点线,调用停止函数,使小车停止。程序流程图如图9所示。

                                                         图9 主程序循迹流程图

4.2 PID算法调速设计

        PID算法调速作为该小车系统设计的一大创新点,可以在不同摩擦,不同坡度的路面上(首先得保证车轮与路面不打滑)按照设定的期望速度行驶。

        该设计的原理是,通过闭环控制系统控制小车的速度,再通过编码器A、B相测量小车行驶过程中的脉冲数,在固定时间内检测到的脉冲数的值经过计算得到电机的实际速度,然后将计算的速度与上一次测量的速度进行比较,采用PID算法控制单片机输出PWM脉冲到电机驱动模块PWM端,以此控制电机转速【4】。该算法的公式为:

         该程序设计的主要过程大致如下:首先初始化编码器、电机等使用到的资源配置,首先按照给定的期望速度,将其用PID算法转换为PWM的占空比,输出到电机,然后使用定时器定时检测对应编码器的A、B相输出,得到编码器的脉冲数,转换为实际速度,再调用PID算法,与上一次的速度比较运算后,输出PWM到对应电机,不断执行上述操作,使得实际速度不断接近并稳定在期望速度,使电机具有稳定且准确的速度。该算法流程图如图10所示。

                                      

                                                                图10 PID算法调速流程图

5 系统搭建与调试

        小车实物图如图11所示。

                                                                                                         图11 小车实物图 

        本次控制系统的设计是基于Keil μVision5编译环境,因为C语言相对于其他汇编软件编程比较简单,所以使用C语言完成程序编写。调试中,在设定不同时间的情况下调整坡度,记录小车实际运行时间和小车循迹情况。

        经过测试,该小车可在0~30o坡度内,在5~10s自设定的时间内以较为稳定的速度完成爬坡循迹任务,时间误差少于0.7s。

6 结语

        本文设计的智能小车以循迹为主要功能,系统中采用的红外传感器具有灵敏度高、体积小的特点,也更易于安装。另有PID算法实时对速度进行调节,可使小车在不同场景下有着更加稳定且准确的速度。该系统中STM32单片机与电机驱动模块相结合,不仅减少了智能小车的制造成本,同时也保证了整个系统的稳定性,也使得编程更容实现。通过对智能小车的循迹系统的设计与研发,大大提高了小车的实用价值,可以应于现代物流、无人驾驶汽车、无人工厂、服务型机器人等诸多领域。

参考文献

[1]洪一明,钱庆丰等.基于STM32的智能小车循迹避障测距的设计[J].安徽理工大学,2022.

[2]卢威.智能小车避障系统的设计与实现[D].南昌:南昌大学,2012.

[3]袁新娜.基于多传感器信息融合技术的智能小车避障系统研究[D].太原:中北大学,2010.

[4]孙建康,王帅等.基于模糊PID控制的智能循迹小车设计[D].天津职业技术师范大学,2021.

物联沃分享整理
物联沃-IOTWORD物联网 » 设计与实现:基于PID算法的STM32智能小车循迹爬坡系统

发表评论