目录
第一章 引 言
第二章 机械结构的调整与优化
2.1 主板和驱动板板的固定及连接
2.2 模型车机械部分安装及改造
2.2.1 优化车身强度
2.2.2 前轮定位
2.3 传感器的设计安装
2.3.1 ICM-20602 安装
2.3.2 gps 传感器的安装
第三章:硬件电路设计
3.1 主控板模块
3.1.1 5V 稳压电路
3.1.2 3.3V 稳压电路
3.1.3 舵机稳压电路
3.1.4 电源电路与测试电量电路
3.1.5 电源管理表
3.2 无刷电机驱动模块
3.2.1 驱动电路设计
3.2.2 霍尔传感器接口
3.2.3 基于 FOC 控制的电流环模块
3.2.4 过压保护电路设计
第四章:主板程序算法设计
4.1 六轴模块数据处理
4.1.1框图
4.1.2介绍
4.1.3源码
4.2 gps模块数据处理
4.2.1 功能框图
4.2.2 介绍
4.2.3 源码
4.3 程序算法框图
4.1.1 直道
4.1.1 弯道(方案一 ——圆弧)
4.1.1 弯道(方案二 ——椭圆弧)
编辑
第五章:无刷驱动板程序算法设计
第六章 车模主要参数
第七章 总结
参考文献
源码工程开源
第一章 引 言
第二章 机械结构的调整与优化
2.1 主板和驱动板板的固定及连接
2.2 模型车机械部分安装及改造
2.2.1 优化车身强度
由于L车大部分零件及底板都非金属材料,且一般车子的速度都在每秒十几米,这样的速度如果出现碰撞,底板即会断裂,因此在规则范围内,需要对底板做如下加固:
首先,评估车身底板最易断裂部分,我们对前轮转向部分和车底板连接处最窄部分用废弃的pcb板通过热熔胶粘接加固,如下图
然后考虑到需要增大前轮抓地能力,因此需要加上自制简易压风板,保证车子跑的过程中前轮不会跳起,如下图
2.2.2 前轮定位
小车在调试过程中,转向轮定位参数是很重要的因素,如果取得不恰当,那么将造成转向不灵活,效率低以及转向轮侧滑等问题,使得小车性能下降,加速轮胎的磨损。转向轮定位参数包括:主销内倾角、主销后倾角、转向轮外倾角及转向轮前束。这其中最重要的就是转向轮外倾角和转向轮前束[1]。
主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正,内倾角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。主销后倾是指主销装在前轴,上端略向后倾斜的角度。它使车辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢复到原来的中间位置上。由此主销后倾角越大,车速越高,前轮稳定性也愈好。主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时后倾的回正作用大,低速时内倾的回正作用大。车轮外倾角是指从前放看前轴时,轮胎的中心平面不是垂直的,而是上面向外倾斜一个角度。设置转向轮的外倾角是为了平衡和协调因为车重造成的前轮内倾倾向,使轮胎和路面呈垂直接触的最佳状态。转向轮前束是指同一轴两端车轮轮辋内侧轮廓线的水平直径的端点为等腰梯形的顶点,底边为车轮轴线。车轮的水平直径与纵向平面之间的夹角为前束角。正的前束角在车轮中心产生向内的侧向力,而正的外倾角在车轮中心产生向外的侧向力,
因此前束角的作用是与外倾角协调,保持车轮做纯滚动和直线行驶,从而减少轮胎磨损,提高小车的操纵稳定性。
综上所述,我们便能够确定前轮的位置,以此来提高小车行驶中的稳定性以及转弯时也能使两个轮最大限度接触地面。
2.3 传感器的设计安装
2.3.1 ICM-20602 安装
六轴模块是姿态控制的核心模块,而其测得的偏航角是整个算法中最重要的一个量,是越野车姿态的核心,而这个值与多个因素有关,其中模块的震动影响最为明显,因此需要对六轴模块进行减震,即模块与车身通过一减震块与车底板连接,这样即使车身剧烈震动,模块的震动也会有所减缓,当车身震动时,模块因其惯性而削弱自身的震动,因此此处可以对模块进行配重而增大其惯性,以此达到更好的效果。
2.3.2 gps 传感器的安装
Gps模块受电机影响较大,因此需要对其架高,但架高后不可避免在车子行驶过程中支架会发生晃动,在晃动过程gps的运动包含了车子前进速度加上支架晃动的不确定的速度,因此,gps模块的运动状态将可能出现无法确定的状态。车子行驶过程中,由于陀螺仪所测得偏航角会有不可消除的飘移,因此对gps测出的偏航角有较大的依赖。这就使得gps模块不能有晃动,因此,在机械结构上,对gps天线进行牢固的固定是必要的,因此,采用三脚架固定gps天线,天线稳定性大大提高。
第三章:硬件电路设计
采用模块化的设计方式设计了不同的PCB电路,分别设计的主控板、驱动模块。这样设计一方面是为了方便检查硬件电路是否可用,另一方面是便于随时更换已损坏的硬件,提高小车的整体容错率。
3.1 主控板模块
主要是搭载MM32F3277G9P芯片以及芯片的各种外设接口电路和各个硬件电路所需要的电源模块。我们设计的主控板集成的功能如下表:
接口名称 | 功能 |
GPS接口 | 连接GPS模块 |
LCD显示接口 | 连接LCD显示屏 |
陀螺仪接口 | 连接六轴陀螺仪 |
驱动电路接口 | 连接驱动模块 |
芯片接口 | 插入MM32F3277G9P |
蓝牙传输接口 | 连接蓝牙 |
舵机接口 | 连接舵机 |
编码器接口 | 连接编码器 |
电源电路 | 小车各个硬件所需的电源,下面详细介绍 |
3.1.1 5V 稳压电路
采取LM2940作为稳压芯片,电路中电容起到一定滤波作用,防止震荡和稳压性能下降,使其输出为稳定的5V电压,如图4所示。
3.1.2 3.3V 稳压电路
常用转3.3V芯片为AMS1117,本组采用RT9013芯片。如图5所示,C12,C10为一个滤波电容,防止电流过大而烧坏芯片,C13为普通电容,并联在输出端,起到滤波作用,防止震荡和稳压性能下降,使其输出为稳定的3.3V直流电压。同时加入了一个 LED 作为指示灯。
3.1.3 舵机稳压电路
采用AS1015芯片进行稳压,如图6所示,输入输出端电解电容都是为了防止电流过大,对电路起保护作用,电感隔离滤波,也起分压作用,通过调节R3电位器,使输出电压改变,同时发光二极管亮度也会发生变化。D1为肖恩特IN5819稳压二极管,利用其反向击穿,两端电压不变特性,作为稳压器件使用。当输入电压或其他原因造成电路各点电压变动时,舵机输入电压基本不变。
3.1.4 电源电路与测试电量电路
如图7所示,当钮子开关打向3的时候,开关闭合,开始供电。如图8右半部分所示,通过两电阻的分压原理来测量当前电池的电量,并通过 C4 传输到 MM32F3277G9P 芯片上.
3.1.5 电源管理表
PCB板所需电源模块 | 供电电源模块 |
单片机 | 3.3V稳压电路 |
舵机 | 可调稳压(最高7.2V) |
编码器 | 3.3V稳压电路 |
LCD显示屏 | 3.3V稳压电路 |
GPIO扩展电压电路 | 5V稳压电路,3.3V稳压电路 |
超声波 | 5V稳压电路 |
GPS | 3.3V稳压电路 |
蓝牙 | 3.3V稳压电路 |
3.2 无刷电机驱动模块
3.2.1 驱动电路设计
根据芯片手册,对于MOS的选型,这里选用了TPH1R403NL,这款MOS电流高达150A,10V的时候内阻低至1.2毫欧,开启电压低至2.5V左右,性价比较高,因为灵动的电机驱动专用芯片集成功能丰富,所以用它加上MOS就简单的构成了无刷电机驱动硬件方案,驱动芯片部分及MOS的原理图如图所示
MM32SPIN360C,,此单片机具有3个运放及3个比较器,无需外加运放与比较器。无刷电机为有感、内转子、2860KV、电压为12V。整个驱动模块基础目标是实现电机正反转、内部速度闭环、支持刹车、支持电机加速度可调、支持堵转保护。此芯片内置5VLDO,无需外置降压电路,从根本上解决了降压电路干扰造成信号传递误差的问题,本芯片工作电压为 7V ∼ 48V,工作温度范围40◦C ∼ 85◦C 常规型和40◦C ∼ 105◦C 扩展型。多种省电工作模式保证低功耗应用的要求。此芯片控制也很简单,首先芯片的调试方案,我们采用了DAP下载器所适配的电路,而对于驱动方案,控制一个电机需要两路PWM,而此方案仅仅需要1路PWM即可实现控制电机转速,1路高低电平控制正反转,PWM输入电路和调试电路原理图如图
3.2.2 霍尔传感器接口
根据无刷电机换相原理,我们采用了根据霍尔传感器检测的方案来实现换相检测,使用一个高低电平检测电路,电机的三相分别对应MHA、MHB、MHC,检测信号需要用一个上拉电阻来拉高电平,否则会出现检测一直为低电平的情况,当我们用A0、A1、A2检测三相时,若其为高,则对应管脚检测为1,反之为0,这样我们就能得到此时电机对应相位的电平情况,再根据异步换相法编写我们的程序即可实现电机的正反转,霍尔传感器模块如图
3.2.3 基于 FOC 控制的电流环模块
无刷电机在运行过程中产生的电流非常大,我们用学生电源测试的时候,整块驱动板正常工作的电流范围是6-18A,但是在小车起步减速的瞬间,电机几乎是短路的,产生的热量会非常多,稍不注意驱动板就会烧坏,所以我们根据基于FOC控制的思路,设计了一个电流闭环电路,即在MOS的下桥和地之间加入采样电阻,无刷电机的三相我们采集了A相和B相的电流,对应IA和IB,除此之外还采样了三相的总电流ISUM,这样不用采集C相的电流IC,根据ISUM=IA+IB+IC即可算出IC的大小,采集到的ISUM使用差分走线流进芯片内置运算放大器放大(差分走线得目的是尽可能地减小信号在传递过程中的损耗),再流经COMPARE电路,与我们程序提前设定好的一个阈值进行比较,若采样电流大于阈值,说明此时电流已经过大,需要我们进行保护措施,标志就是ERR灯亮起,便于我们观察,当我们发现此时电流过大时,可以采取减小PWM等措施降低电机转速从而减小电流,达到保护驱动板的目的,大大地增加了驱动板安全性和可持续使用性,电流环反馈电路如图3.11.
如图,电流环的初步目的只需用到ISUM,当需要进一步调节FOC控制程序时,我们会用到IA、IB和IC。
3.2.4 过压保护电路设计
虽然MM32SPIN360C芯片已经有内置5VLDO,意味着我们不需要额外的外置降压电路,但这不代表我们能将电源电压直接输入到芯片之中,因为电源电压在电池使用过程中以及充电之后,电压发生的变化非常明显,其中会存在这非常多的干扰信号,同时,加入因操作不当导致电源短路或者驱动模块其他部分短路,MM32SPIN360C作为控制芯片是极其容易损坏的,因此我们设计了一个以ETA7014为核心的过压保护电路,ETA7014有着36V高耐压,35mΩ电阻,输入OVP和0.1us反应时间等优点,保证了MM32SPIN360C不会因为高压而损坏,并且当驱动模块因不当操作短路,ETA能在电源正极流进MM32SPIN360C之前将输入电流断开,保证芯片不会被短路,极大的节省了成本,过压保护电路图3.12所示
第四章:主板程序算法设计
4.1 六轴模块数据处理
4.1.1框图
4.1.2介绍
六轴模块可解算出6个量,通过6个量要求得偏航角,最简单的就是对绕 z 轴的角速度积分获得,此结果漂移严重,抗干扰能力弱,即使消除了0飘,装载到车上后由于振动此角度也会在一分钟内漂移数度。使车子轨迹偏移。此处引用四元数解算姿态矩阵,获取偏航角,所得角经过动态消除0飘后静止是精度可达数分钟漂移一度,装载上车后,此角的漂移对车子轨迹的影响大大降低。
4.1.3源码
略,后续补加
4.2 gps模块数据处理
4.2.1 功能框图
4.2.2 介绍
gps模块作用有2,此处介绍其一(偏航角),gps模块输出偏航角的原理是两次解算所得坐标连线的方向,固此角在速度大时更准确。因此源码中仅在车子速度达到某值后才开启互补滤波。(滤波前的两角必须线性调整为同步变化)。
4.2.3 源码
略,后续补加
4.3 程序算法框图
4.1.1 直道
pid1:此环目的为控制小车在所设定的直线运动,而不会与目标直线相距过大导致偏航;实现方案为计算实时位置与目标直线的距离,将此距离pid计算后作用到舵机。
pid2:此环为偏航角闭环,此环作用是让小车直线运动,pid输入为偏航角,保证了小车在所设定的方向行驶。
由于对串级pid理解不够深入,所以我使用的是并级pid,两环作用到舵机,相互配合,环一可增加 i 积分分量,会有可观的效果。环二让小车朝某一方向运动,参数调节不好会发生小车摆动行驶,要确保两个pid的作用结果是同步的,否则两环打架,小车无法正常行驶。最后两个环的宏观表现为,环一角度闭环,定方向,环二位置闭环,定直线的位置。
上方提到两环打架,为避免此现象,将 “ 所选择的目标直线的方向 ” 与 “ 对偏航角互补的gps方向的目标值 ” 设为同一个。
4.1.1 弯道(方案一 ——圆弧)
在弯道,通过有感无刷电机内置霍尔传感器得到速度,对速度进行积分可得路程(也可直接通过霍尔传感器得到路程,不过这时需要调节驱动程序);由于半径一定,所以路程与车子应该转过的角度为线性关系。很容易得到目标偏航角,再通过上节直道pid2输出至舵机,控制小车转动圆弧。
4.1.1 弯道(方案二 ——椭圆弧)
此处希望小车进行椭圆弧运动,但椭圆弧长与斜率的关系复杂,难以计算且不易实现。这里的两种变化都为类椭圆。
变换1为将圆弧分为三截,中间一截半径大,两边两截半径小;根据gps或路程s切换半径即可实现类似椭圆弧的曲线运动。
变换2为变换1的拓展,在1中将圆弧分成了三截,在2中可理解为将圆弧分成了无数截,这个半径不在人为调节,而是由路程控制。(这里的S为整个弧的长度,此处不易求得,穷举试验即可,一般2-3次即可得到较为准确的估计值S)小车运动一半圆弧,半径由R6变为R4。
第五章:无刷驱动板程序算法设计
第六章 车模主要参数
第七章 总结
参考文献
源码工程开源
待更新