自动循迹小车

本文详细介绍了基于STM32F103VET6单片机的自动循迹小车设计,涉及硬件电路设计,包括电源模块、循迹模块、电机驱动模块和方向控制模块,以及软件设计,重点讲解了PID控制算法的应用。通过实际项目,展示了单片机技术在小车控制中的应用及其关键问题的解决策略。
摘要由CSDN通过智能技术生成

一个课设报告,让我水一篇博客,我发现我不但能水课设,我也能水博客,让我日常发个疯,大学生,哪有不疯的,哈哈哈哈哈哈

摘        要

摘要:该小车的核心是stm32F103VET6单片机,由电源模块、循迹模块、车速控制模块和方向控制模块组成。电源模块包括7.2V电池和降压模块,用于给电机驱动模块、舵机和单片机供电。电机驱动模块采用BTS7960大功率驱动芯片组成的H桥驱动模块,与stm32核心板配合使用,实现直流电机的运行和PWM软件调速,通过改变占空比来控制电机转速。循迹模块由七路灰度巡线模块组成,结合stm32核心板和舵机,实现巡线和转向功能。

关键词:MCU、PID、循迹、电机、舵机

目录

一、设计目标... 4

二、总体方案设计.. 4

(一)、方案总述.. 4

(二)、硬件电路设计.. 5

1、电源模块... 5

2、循迹模块及方向控制模块... 7

3、速度控制模块(电机驱动模块与电机)... 9

(三)、软件设计.. 11

1、程序控制主干流程图... 11

2、PID控制算法... 11

3、方向控制... 14

(四)、检测和调试过程... 16

1.测试方案... 16

2. 测试条件与仪器... 17

3.PID算法的调试过程... 17

4.测试结果及分析.. 18

(五)、关键问题讨论及结论... 19

1.关键问题-PID算法控制转向问题... 19

2.关键问题-电机转速问题.. 19

(六)、设计总结与体会... 20

1.设计总结与体会.. 20

2.个人工作... 21

1、让学习者深入理解单片机的基本原理和编程方法。

2、提高学习者的问题解决能力。

3、培养学习者的创新思维和团队协作能力。

4、提升学习者的实际操作能力和技术水平。

二、总体方案设计

(一)、方案总述

该小车的核心是stm32F103VET6单片机,由电源模块、循迹模块、车速控制模块和方向控制模块组成。电源模块包括7.2V电池和降压模块,用于给电机驱动模块、舵机和单片机供电。电机驱动模块采用BTS7960大功率驱动芯片组成的H桥驱动模块,与stm32核心板配合使用,实现直流电机的运行和PWM软件调速,通过改变占空比来控制电机转速。循迹模块由七路灰度巡线模块组成,结合stm32核心板和舵机,实现巡线和转向功能。

图1 系统框图

(二)、硬件电路设计

1、电源模块

      该小车的电源模块由7.2V电源和降压模块组成,用于为不同部件提供适当的电压。其中,电机驱动模块、七路灰度循迹模块、单片机和舵机都需要电源供电。通过使用降压模块,可以将7.2V电源的电压调整到适合各个部件的工作电压范围,确保它们正常运行。

图2 电源结构框图

    1. 电池

为了确保小车系统的可靠供电,电源模块采用可充电的7.2V、2000mAh镍铬电池(如图3所示)。该电池具有高容量和稳定性,能够为单片机、电机、各大模块及传感器提供充足的动力。通过使用这种电池作为能源,可以确保小车在运行过程中具备持久的电力支持。除了电池本身,电源模块还包括降压模块,用于将7.2V的电源电压调整到适合不同部件的工作电压范围。这样可以确保各个部件能够正常工作,并避免因电压不稳定而引起的问题。整体来说,通过选择可充电的7.2V、2000mAh镍铬电池作为小车的电源,以及配备合适的降压模块,电源模块能够为系统的各个部件提供可靠的电力供应,从而保证小车在运行过程中能够稳定运行。

图3 电池

    1. 降压模块

为了实现稳定的电压供应,我们选择采用MP1584作为降压模块。MP1584是一款高性能的降压模块,能够将输入电压降低到所需的输出电压。它具有低电磁干扰和开关损耗,提高了系统的稳定性和可靠性。此外,MP1584还支持多种保护功能,如过压保护、欠压保护和短路保护,确保系统在各种情况下的安全可靠运行。

图4 降压模块原理图

2、循迹模块及方向控制模块

2.1、七路灰度循迹模块

   在自动循迹智能车中,我们采用了7路灰度循迹技术作为车辆导航和定位的核心技术。该系统利用了单片机的强大处理能力和灵活性,通过采集来自各个传感器的数据,并结合预先设定的控制算法,实现对车辆行驶方向和路径的精确控制。首先,我们将7路灰度传感器分布在车辆的前部,以便全面感知路面情况。这些传感器会实时采集当前行驶路径的灰度值,并将其传输给单片机进行处理。

接下来,单片机会根据预设的控制算法对这些数据进行处理。例如,单片机根据当前位置和目标位置之间的差异,计算出最优的行驶路径,并将该路径发送给车辆的控制系统,以实现自动循迹功能。

图5 循迹部分模块原理图

2.2、舵机

   在自动循迹智能小车中,我们使用舵机来控制车辆的转向。舵机是一种能够根据输入信号产生精确角度变化的电动机,非常适合用于控制小型车辆的运动。

我们首先将舵机连接到车辆的方向控制系统中,通常使用PWM(脉宽调制)信号来控制舵机的转动角度。利用PID算法调整PWM信号的占空比,我们可以精确地控制舵机的转动角度,从而实现车辆的转向。

在自动循迹过程中,当车辆需要改变行驶路径时,控制系统会根据预设的规则向舵机发送相应的控制指令。例如,当系统检测到前方有弯道时,会向舵机发送一个使车辆向右转的角度指令。通过舵机的控制,我们的自动循迹智能小车能够实现精确的转向,以适应不同的道路条件和任务需求。这种控制方式不仅简单可靠,而且具有较高的灵活性,可以方便地进行调试和优化。同时,舵机的使用还可以减轻电机控制器的负担,提高整个系统的能效和可靠性。

3、速度控制模块(电机驱动模块与电机)

电机驱动模块采用大功率驱动芯片BTS7960组成的H桥驱动模块,配合stm32核心板实现对直流电机运行和PWM软件调速,BTS7960是一款高性能的H桥驱动芯片,它由两个高侧驱动器和一个低侧驱动器组成。这种设计使得它可以控制直流电机的正反转和速度调节。在自动循迹智能小车中,BTS7960与stm32核心板配合使用,可以实现对电机的精确控制。

首先,stm32核心板与BTS7960进行通信,发送控制信号来控制电机的运行。这些控制信号包括使能信号、方向信号和PWM占空比信号等。通过调整这些信号的占空比,可以实现对电机转速和转向的精确控制。

其次,BTS7960具有内置的保护功能,可以监测电机的温度和电流,并及时采取保护措施。例如,当电机温度过高时,BTS7960会停止输出电流,以保护电机不受损坏。此外,它还具有过流保护和过温保护等功能,确保电机在异常情况下能够安全运行。采用BTS7960作为H桥驱动模块,配合stm32核心板实现对直流电机的精确控制,为自动循迹智能小车的稳定运行提供了可靠的保障。同时,BTS7960的多种保护功能和软启动功能也增加了小车的安全性和可靠性。

(三)、软件设计

1、程序控制主干流程图

图6 程序控制主干流程图

2、PID控制算法

2.1 PID算法介绍

PID控制算法是一种基于比例、积分和微分的控制方法,在自动控制领域应用广泛。它能够根据目标值和反馈值之间的偏差产生控制作用,以减小偏差并提高系统的性能。该算法的原理简单、稳定性好且易于调整,适用于对目标系统和控制对象模型不够了解或无法得到参数的情况,其控制模型如图7所示。

图7 PID控制模型

PID控制算法包含三个部分:比例控制、积分控制和微分控制。比例控制根据控制系统的偏差信号立即产生控制作用,以减小偏差。积分控制主要用于消除静差,提高系统的无差度。微分控制的计算因子是偏差的变化率,可以抑制偏差的变化并在偏差过大之前引入早期修正量,加快系统响应调节速度。

PID控制算法的计算结果是偏差信号的比例、积分和微分三部分的线性叠加。由于该算法是闭环控制系统,需要使用传感器构成反馈回路来获取目标值和反馈值之间的偏差信号。

3、方向控制

3.1转向角估算

图8 转向角示意图

为了保证小车按照既定轨迹形式行驶,需要及时修正车身与轨迹之间的夹角。该夹角的数学关系表达式可以表示为:

θ=tan-1yx

然而,由于小车在运动过程中速度较快,瞬时值计算产生的倾角误差较大。因此,为了确保准确的转向角,我们需要对PID算法中的参数进行修正。这样可以提高转向角度的准确性,使小车能够按照预期轨迹形式行驶。

3.2 舵机控制方向的具体实现

图9 舵机的控制原理

将PWM信号输入到舵机的信号线上,以便舵机可以旋转到指定的位置。一般来说,舵机接收的PWM信号频率为50HZ,即周期为20ms。

其中,PWM信号的占空比决定了马达转动的距离,例如:1.5毫秒的脉冲,电机将转向90度的位置(通常称为中立位置,对于180°舵机来说,就是90°位置)。我们根据七路红外循迹采集到的位置信息,来调节舵机转动的方向,进而调整小车前进的方向。

(四)、检测和调试过程

1.测试方案

1.1 硬件测试

(1)、舵机测试:利用信号源模拟MCU输出幅值为3.3V,频率为50HZ的PWM波,将PWM波形接入舵机的控制线,通过不断调整PWM波的占空比,观察并记录舵机的转向角度。

(2)、电机测试:将电机驱动模块与待测电机连接到一起,利用信号源模拟MCU输出幅值为3.3V,频率为10KHZ的PWM波,将其连入电机驱动模块的控制端,通过不断调整PWM波的占空比,观察并记录电机的转速。

(3)、七路灰度检测模块测试:利用稳定电源为循迹模块供电,将测试探头移至黑白线赛道的白色区域。在调整时,首先尝试逆时针旋转可调电阻,直至信号灯亮起。然后,将探头移动至颜色较深的区域,此时信号灯应熄灭。若在信号灯亮起后,将探头移至黑色区域上方,信号灯仍无法熄灭,说明传感器探测距离过远。此时,需顺时针旋转可调电阻,直至能够清晰分辨两种颜色的灵敏度为止。

1.2 软件测试

(1)、利用MCU输出稳定PWM波形,利用示波器观察输出波形。

1.3 硬软件联调

(1)、利用MCU的GPIO口收集七路灰度循迹反馈的位置信息

(2)、利用MCU输出各种不同占空比的PWM波

(3)、将PWM波接入舵机以及电机驱动,观察舵机的转角和电机的转速

(4)、根据赛道实际情况进一步调节PID的各种参数。

2. 测试条件与仪器

2.1 测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查 无误,硬件电路保证无虚焊。

2.2测试仪器:SDS2352X Plus 示波器,SDG2122X 信号源,SDM3055X-E万用表,SPD3303X 直流稳压电源。

3.PID算法的调试过程

(1)、设置控制器参数,如比例增益(Kp )、积分增益(Ki )和微分增益(Kd )。

(2)、采集传感器数据。

(3)、计算偏差,即期望状态与当前状态之间的差异。

(4)、比例控制,根据比例增益计算比例调整量P=kp*ⅇrror

(5)、积分控制,根据积分增益计算积分调整量I=Ki*∫ⅇrrorⅆt

(6)、微分控制,根据微分增益计算微分调整量D=kd*∂error∂t

(7)、控制输出,将比例、积分和微分调整量相加得到控制输出。

4.测试结果及分析

4.1 不同赛道测试结果

表1:不同赛道测试结果

赛道类型

测试结果

直线赛道

效果良好

半圆形赛道

效果良好

10°弯道

效果良好

20°弯道

效果良好

30°弯道

效果良好

4.2 测试结果分析

针对于直线赛道、半圆形赛等多种不同类型的赛道,均具有较为良好的测试效果。

(五)、关键问题讨论及结论

1.关键问题-PID算法控制转向问题

(1)、问题描述

      小车转向控制需要负反馈,需要不断测量车体与既定轨迹的倾角,构成反馈回路。在能够测量车体与既定轨迹的倾角的情况下,设定目标转向角,使用PID算法进行闭环控制。从而实现智能循迹小车转向。但是根据理论计算与实际情况存在一定的偏差。

(2)、结论

 由于小车在运动过程中速度较快且噪声较大,瞬时值计算产生的倾角误差较大。因此,为了确保准确的转向角,我们需要对PID算法中的参数进行修正。这样可以提高转向角度的准确性,使小车能够按照预期轨迹形式行驶。

2.关键问题-电机转速问题

(1)、问题描述

      电机在长时间工作下,电机的转速会不稳定。

(2)、结论

      由于电池长时间未充电,导致电池亏损,内部能够存储的电量降低,导致电池无法长时间工作。需要更换电池。

(六)、设计总结与体会

1.设计总结与体会

在本次课程设计中,我们以自动循迹智能车为载体,进行了单片机系统设计的实践。通过这个项目,我们不仅加深了对单片机原理的理解,还提高了实际动手能力和团队协作能力。以下是我们在这次设计过程中的总结和体会:

(1)、理论与实践相结合:在设计自动循迹智能车的过程中,我们需要将所学的单片机理论知识应用到实际操作中。这使得我们对单片机的原理和应用有了更加深刻的理解,同时也锻炼了我们的动手能力。

(2)、团队协作:在项目开发过程中,我们需要与团队成员进行密切合作,共同解决问题。这使我们学会了如何与他人沟通、协调,提高了团队协作能力。

(3)、创新思维:在设计自动循迹智能车时,我们需要不断尝试新的方法和技术,以达到预期的效果。这使我们学会了如何运用创新思维解决问题,提高了我们的创新能力。

(4)、项目管理:在项目开发过程中,我们需要对项目进行合理的规划和管理,以确保项目的顺利进行。这使我们学会了如何制定计划、分配任务,提高了我们的项目管理能力。

(5)、调试与优化:在设计自动循迹智能车的过程中,我们需要不断地调试和优化程序,以达到最佳性能。这使我们学会了如何查找问题、解决问题,提高了我们的调试和优化能力。

(6)、安全意识:在设计自动循迹智能车时,我们需要注意电路的安全性,避免触电等安全事故的发生。这使我们养成了良好的安全意识,为我们今后的学习和工作奠定了基础。

总之,通过这次“单片机要用系统设计实践”的课程设计,我们不仅巩固了所学的单片机知识,还提高了自己的实践能力和综合素质。

2.个人工作:

    在这个项目中,我主要负责编写循迹模块和方向控制代码。这个模块的主要功能是让小车能够自动识别并跟踪黑色的线条,从而实现自动循迹的功能。

在编写代码的过程中,我需要编写一个算法来处理七路灰度检测模块的采集到的这些信号。通过对传感器采集到的信号进行处理,使得小车能够更准确地识别出黑线的位置。

在方向控制代码的编写上,我使用了PID控制算法。这种算法可以根据小车当前的方向和目标方向,计算出一个控制量,然后通过设置舵机的转向来实现小车的转向。

在编写代码的过程中,我还遇到了一些问题。例如,如何准确地检测到黑线的位置,以及如何实现精确的方向控制等。但是通过不断地学习和实践,我最终成功地解决了这些问题。

总的来说,这个项目让我深刻地认识到了循迹技术和方向控制技术的重要性。我相信这些技术在未来的智能交通系统中将会发挥重要的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值