增加程序部分(暂存)
This commit is contained in:
BIN
bldc_driver_v3_page-0001.jpg
Normal file
BIN
bldc_driver_v3_page-0001.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 MiB |
@@ -38,6 +38,14 @@
|
|||||||
|
|
||||||
无刷驱动主要有两版,初版是最初为了驱动底部风扇所采用的小型化设计,尺寸大致为 20 * 30mm,选用 DFN-8 3x3 封装的 NMOS 搭建三相半桥。后续用于推进和侧向电机驱动是,发现由于加减速频繁导致发热较大,而该封装的散热性能要差于 5x6 的封装,导致其由于温升内阻上升较快,发热较多,有一定使用风险。
|
无刷驱动主要有两版,初版是最初为了驱动底部风扇所采用的小型化设计,尺寸大致为 20 * 30mm,选用 DFN-8 3x3 封装的 NMOS 搭建三相半桥。后续用于推进和侧向电机驱动是,发现由于加减速频繁导致发热较大,而该封装的散热性能要差于 5x6 的封装,导致其由于温升内阻上升较快,发热较多,有一定使用风险。
|
||||||
|
|
||||||
|
第三版无刷驱动在硬件设计上考虑了对于[逐飞开源项目](https://gitee.com/seekfree/CH32V203_BLDC_Project)和[基于 CH32V203 的 AM32 移植工程](https://github.com/TianpeiLee/CH32V203_ESC)的兼容性。经过对比发现两者仅在信号输入引脚存在差异,分别使用了 PA0 和 PA15,在代码上只需修改重映射设置即可。
|
||||||
|
|
||||||
|
无刷驱动的供电方面,由于供电电压确定仅支持 3s 以下电池,且预驱驱动电源部分直接从电池输入引入,所以仅需为主控供电。综合体积和成本考虑,采用了 7805 + 6206 的稳压器方案,约能提供 0.5W 的功率,满足主控供电需求。
|
||||||
|
|
||||||
|
在主控和其外围电路方面。主控选择了 C8U6 型号,其 QFN-48 的封装更小,并且对于同系列里的其他封装来说,仍保留了单独的外部晶振引脚(而不是和其他引脚合封)。在无刷 v2 版本的设计中,仍采用主控内部晶振作为时钟源,调试中可见漂移程度较大(明显现象是脉宽捕获不准确)。所以 v3 版本中添加了 16MHz 的外部晶振,并在 AM32 的移植版本中配置使用。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 结构设计
|
## 结构设计
|
||||||
|
|
||||||
结构设计上由于是自制车模,所以做过较多的验证版本,最后选择“逐飞版本”算是对于稳定性考量较多。
|
结构设计上由于是自制车模,所以做过较多的验证版本,最后选择“逐飞版本”算是对于稳定性考量较多。
|
||||||
@@ -64,4 +72,24 @@
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 程序设计
|
## 程序设计
|
||||||
|
|
||||||
|
### 运动控制主控程序设计
|
||||||
|
|
||||||
|
### 图像处理主控程序设计
|
||||||
|
|
||||||
|
图像处理主控主要的任务包括:读取图像、提取图像特征、获得控制参数、数据组包下发、以及一些交互界面的处理。
|
||||||
|
|
||||||
|
图像处理手段上,采用了[上海交通大学 AuTop 战队](https://github.com/SJTU-AuTop/RT1064-Code)的开源代码作为基础,裁剪了一些弃用的元素处理和功能,并添加了一些例如曲率计算、障碍判断、出界停车等功能。由于图像处理主控没有其他任务、flash 和 ram 资源比较充沛,所以采集图像大小为 140*90,并且可以再另外存储两个逆透视和畸变矫正变换表(横纵向各一个)。在元素辨识和角度计算上总体思路上未对 AuTop 代码做过多修改,因此不再多表。
|
||||||
|
|
||||||
|
### 运动控制主控程序设计
|
||||||
|
|
||||||
|
运动控制主控主要是任务是接收图像处理主控下发的图像特征信息(如赛道角度、弯直道、曲率等),然后根据这些信息控制侧面、推进和气垫电机完成船体的运动控制。此外还需要能够对控制参数进行储存、显示和修改。
|
||||||
|
|
||||||
|
对于侧面电机的控制,由于侧面电机主要作用是在转弯过程中提供一部分向心力,而赛道元素直接曲率比较平滑、很少存在类似阶跃的情况。所以实际上对响应速度并无较高要求,而是希望侧面电机能够平滑且持续的提供向心力。因此侧面电机将赛道曲率的倒数作为输入,在直线赛道上时曲率半径无穷大,则输入量接近于 0 ,反之亦然,但是可能需要对输入值做一定的重映射,已获得更好的输入曲线(如使用反正切函数进行归一化,使得电机在曲率增加较快的时候也能较快加速到足够提供向心力的程度)。
|
||||||
|
|
||||||
|
对于推进电机的控制要稍微复杂,由于推进电机需要同时完成转向和速度控制,而转向反馈量的内环采用陀螺仪的角速度值,这样导致前进速度和转向差速之间的耦合关系较弱,只能将转向和速度作为并级输入。实际上如果能在船体两侧放置两个测速轮,在确定角度和速度时,可以求解出两个测速轮需求的速度值,而后侧风扇仅需跟踪对应的速度即可,将角度值作为外环是输入,不过由于规则限制,只能作罢。而对于并级控制器的设计,主要需要考虑到两个控制器的输出权重问题。我们知道电机的调速范围是有限的,如果速度环输出较大,则两个电机速度值将都很接近上界,而如果同时需要转向时,直接叠加可能会导致速度较快的电机控制量超出限幅值而被截断,最终将导致差速不足,无法转向。对于以较快速度行进的车模来说显然是不利的。所以我们很简单的设定了一套「转向优先」的策略,即当速度环和转向环叠加出现超限时,首先需要保证满足转向环的差速输出,对超限的电机保持上限输出,另一侧则直接从上限减去需求的差速值,这样另一侧会比原有叠加的输出低,保证了转向的优先。当然这一处理仍然不够完善,对后侧两风扇进行分析,其提供的推力可以根据力的平移性质移动到船体质心,同时附加一个力偶,最后两风扇的叠加效果可视作一个向前的推进力和一个力矩。但是对于船体的运动而言,所收到的滑动摩擦力是与运动方向相反的,而推进力却指向船体几何正前方,当船体两力不共线时,会产生一个侧向的分力,这就导致船体运动时会出现一些奇怪的姿态,有时内切有时外切,取决于船体跟踪的状态。当然,这只是对于气垫船的运动进行了一些简单的分析,先入为主的认为船体为刚体且作为单点接触分析,实际情况要复杂很多。
|
||||||
|
|
||||||
|
某种意义上来说,采用全向四风扇,能够进行力的矢量控制的构型似乎更合理,但是该结构似乎存在多解问题,仅在初期进行过简单验证。
|
||||||
|
|
||||||
|

|
||||||
Reference in New Issue
Block a user