智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 35765|回复: 78
打印 上一主题 下一主题

第一年做电磁车,很遗憾进不了省赛,分享一些的东西。用者自取,不喜勿喷! ——小拉

    [复制链接]

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
跳转到指定楼层
1#
发表于 2017-6-26 15:57:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 林智伟 于 2017-6-26 16:15 编辑

机械调整 主销内倾3度 主销后倾0到1度 前轮外倾1度 前轮前束6mm
3.1 前轮的调整
现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动
回正,并减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的
相对安装位置,叫做车轮定位,其主要定位参数包括:主销后倾、主销内倾、车轮外倾
和前束。对于模型车的前轮四项定位参数均可调。
1主销后倾角是指主销装在前轴,上端略向后倾斜的角度。它使车
辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢
复到原来的中间位置上。因此,主销后倾角越大,车速越高,前轮稳定性也愈好。但是
过大的主销后倾角会使转向沉重,容易造成赛车转弯迟滞。我们希望赛车能够转向灵活,
故把主销后倾角设定为 1~5°。
3-1 主销后倾纠正车轮偏转原理图
2)主销内倾角是主销轴线与地面垂直线在汽车横向断面内的夹角,它也有使车轮自
动回整的作用。主销内倾还会使主销轴线延长线与路面的交点到车轮中心平面的距离减
少,同时转向时路面作用在转向轮上的阻力矩也会减少,使得转向更轻便灵活。所以为
了使得赛车转向更加灵活,我们将主销内倾角控制在 0 度左右。
方法1)垫片(2)偏心凸轮(3)长孔(4)球头旋转(5)支柱旋转(7)楔形垫片(6)调整轴承座(8)偏心螺栓(7)偏心衬套(10)偏置球头
3)如图 3-2,前轮外倾角对赛车的转弯性能有直接影响,它的作用是提高前轮的转
向安全性和转向操纵的轻便性。前轮外倾角俗称“外八字”,如果车轮垂直地面一旦满载
就易产生变形,可能引起车轮上部向内倾侧, 导致车轮联接件损坏。所以事先将前轮外

倾角设在 1°左右。
图 3-2 前轮外倾角示意图图
3-3 前轮约束示意图
4)当车轮有了外倾角时, 在滚动时就类似于圆锥滚动, 从而导致两侧车轮向外滚开。
[size=12.0000pt]
如图 3-3,前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向
[size=12.0000pt]
中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动
[size=12.0000pt]
时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,
[size=12.0000pt]
轮胎内外侧磨损的现象会减少。
[size=12.0000pt]

3.2 舵机的安装与舵机力臂的调整
3.2.1 舵机的安装
舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,可以通过
改变舵机的安装位置,而并非改变舵机本身结构的方法就可以提高舵机的响应速度。分
析舵机控制转向轮转向的原理可以发现,在相同的舵机转向条件下,转向连杆在舵机一
端的连接点离舵机轴心距离越远,转向轮转向变化越快。这相当于增大力臂长度,提高
线速度。故我们将舵机架在车的前端部分的较高位置,这样舵盘较小的转幅就能够满足
前轮较大的转角要求。这样安装的优点是: 1.改变了舵机的力臂,使转向更灵敏; 2.舵机
安装在了正中央,使左右转向基本一致。
3.2.2 舵机力臂的调整
相对于 S12 单片机的处理速度,舵机的响应存在着较大的延时,对舵机的改造着实
需要。在相同的舵机转速条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,
转向轮转向变化越快,本模型车中通过用转向盘代替舵机上的曲柄来增大舵机的上连接
点到舵机中心的距离,增加了输出转动力矩, 使得前轮在转向时更加灵敏。其机械结构
如下图 3.4 所示。

3.4 舵机力臂机械结构
3.3 差速器的调整
差速器的作用是在车模转弯的时候,降低后轮与地面之间的滑动,并保证在轮胎抱
死时不损害电机。
差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯
时阻力小的车轮会打滑,从而影响车模的过弯性能。好的差速机构,在电机不转的情况
下,右轮向前转过的角度与左轮向后转过的角度之间误差很小,不会有迟滞或者过转动
情况发生。

1不管你的CPU的速度如何的快,通信机制如何的优越,系统的精度永远无法超越传感器的精度
2默写应用中ADC可能需要连续的采样( 4K SPS/S),这可能给CPU带来很大的负荷。使用
PDB定时器触发ADC可以减轻CPU的一部分负担。 ADC的DMA功能支持可以实现高性能的快
ADC采样或者是ADC使用PDB做周期触发。在转换完成时ADC可以触发DMA
4 可以对pll时钟进行超频
10PWM通道级联去配置一下 128
11bangbang   赛道记忆
133.3.3 后轮差速机构调节
差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮
胎抱死的情况下不会损害到电机。当车辆在正常的过弯中(假设:无转向不足亦无转向过度),
此时 4 个轮子的转速(轮速)皆不相同,依次为:外侧前轮>外侧后轮>内侧前轮>内侧后轮。
此时所使用车模配备的是后轮差速器。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越
低;而阻力越小的一侧,驱动齿轮的转速越高,以此次使用的后轮差速器为例,在过弯时,因
外侧前轮轮胎所遇的阻力较小,轮速便较高;而内侧前轮轮胎所遇的阻力较大,轮速便较低。
差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力
小的车轮会打滑,从而影响车模的过弯性能。好的差速器,在电机不转的情况下,右轮向前转
过的角度与左后轮转过的角度之间误差很小,不会有迟滞和过转向情况。
差速器的调整可以使用车模套件里的相应工具拧后轮的螺母
file:///C:\Users\林智伟\AppData\Local\Temp\ksohtml\wps9BC8.tmp.jpg
回复

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
来自 41#
 楼主| 发表于 2017-6-28 14:46:36 | 只看该作者
链接:http://pan.baidu.com/s/1kULKa7H 密码:hsuk
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
威望
126
贡献
77
兑换币
82
注册时间
2017-3-30
在线时间
0 小时
毕业学校
阿坝师范学院
推荐
发表于 2019-8-3 21:33:41 | 只看该作者
谢谢,收益很多,马上国赛了,程序这些还有很多漏洞唉,一个人做车真的累,要带女朋友,还要带一个大二的,我也是第一次坐车,省赛,西部赛,国赛都是一个人坚持过来的,谢谢楼主了
回复 支持 1 反对 0

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
推荐
 楼主| 发表于 2017-6-26 17:24:32 | 只看该作者
wx327 发表于 2017-6-26 16:51
楼主好厉害。有没有视频好想膜拜一下

节能组渣车,实验室最快跑过2米4左右吧,不放视频了。
回复 支持 1 反对 0

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
推荐
 楼主| 发表于 2017-6-26 16:12:53 | 只看该作者
111 用山外上位机看电机脉冲波形
112 先开环看看你的测速是否,稳定给一个固定的占空比,看速度脉冲波形
113 采样值一直没有稳定在理想值附近,我只给了p ,增量式PID

单纯增量P是没法达到稳态值的,应该先纯I控制,纯I一定会有超调,先把I调到合适的震荡周期,然后再引入P,这样超调就没有了
114 为了防止频繁调节和意外输出过大,设置调节死区(-LOCA_DEADLINE, LOCA_DEADLINE)。loca_error在死区内,不进行调节,维
持上一状态。
115 一般的智能车弯道策略是入弯道减速并内切,既能防止造成侧滑,又能减少行驶路径,出弯加速,迅速通过直道节省时间。但节能组因为需要通过电轨获取电能,需要让车辆始终沿着电轨前行,虽然在电路中并入数个电容用来存储电能防止芯片初始化,但所储能量无法长时间驱动电机,所以在行驶过程中保证车辆始终能获取电能是最为重要的,一切策略都要在持续取电基础上制定,同时因为比赛中速度与节能同样重要,所以在方案制定的过程中快速完成比赛与减少能耗都是需要考虑的。我们通过实验发现剧烈的加减速相比于匀速行驶会增加能耗,同时加减速过程中可能发生的侧滑都会产生断电的风险,所以在权衡之后我们选择了闭环控速,全程匀速的运行策略,既减少了调试过程中的调节难度,也增加了车辆运行过程中的安全性。
116 能说说D的作用吗?D变化后电机相应的有什么变化。

提高动态特性,一定程度上也能消除稳态误差
117 if(error<30&&error>-30)error=0;
118 入弯速度太慢,出弯速度太快时,就用棒棒控制
119 死区的范围可以看发送到上位机的波形,看震荡的范围
120 骑过自行车的话肯定知道气不足会比较费劲,前几天充气轮胎的方案,对节能组的意义可能远比普通组大
121 大致流程:首先密封轮胎的一侧,然后填充化学药品,然后密封另一侧。放到热水里,1分钟后取出。ok了。

注意事项:不建议使用酒精,我用的是 碳酸铵+无水氯化钙。

别问我为啥,化学学的不好,随意找的。社团快关门了,找时间再详细说。另外可以在轮胎密封好后,放到水里,用手挤压,看是否有气泡出现,如果有,说明密封不好。
122可以模仿机械差速:一侧快多少,另一侧就慢多少(总速度为0,右边正转一圈,左边就会反转一圈)。当总的期望速度不变时,一侧比总的期望快了多少,另一侧的期望就要慢多少,然后PID控制。
123 电机限幅可以根据档位给定。
124 正确的舵机中值时,若跑偏,是前瞻歪了
125 关于静电
让单片机离电源模块稍远一点
把车放赛道上,拍一拍前瞻,看电感值的变化
有可能是车身的静电通过碳素杆传到了传感器附近引起的跳变
车子进了太多灰也可能造成静电干扰
试试把电感的排线换了
锡箔纸贴完底盘,在引一根线出来接个电容再接到地上
敏感的地方贴上黑胶带
今天下午把车子底部(金属螺钉较多)用铝薄给贴了,效果还不错(后来开空调调试结果也还行)
试试把地用杜邦线引出来在赛道上拖着
把编码器外壳接地、在底盘的螺钉上糊上热熔胶。
跑之前用湿抹布擦整个车身
明天把赛道和轮胎用湿布擦一遍再跑
智能车论坛上提到的静电一般是指赛道与轮胎摩擦,积累在赛道与轮胎之间的静电。这静电电场很强,容易使单片机复位。
在底盘下面贴一层锡箔纸有助于防静电
回复 支持 1 反对 0

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
推荐
 楼主| 发表于 2017-6-26 16:08:12 | 只看该作者
15
当智能车在直道行走的时候,可以给最高速度;当智能车在弯道出直道时,
速度相对高速;当智能车直道入弯的时候,速度突然减下来;当智能车在弯道时, 相对低速。
16
2.3.4 采样周期的选择
香农( Shannon) 采样定律 :为不失真地复现信号的变化, 采样频率至少应大于或等于连续
信号最高频率分量的二倍。根据采样定律可以确定采样周期的上限值。实际采样周期的选择还要受
到多方面因素的影响,不同的系统采样周期应根据具体情况来选择。
采样周期的选择,通常按照过程特性与干扰大小适当来选取采样周期:即对于响应快、(如流
量、压力) 波动大、易受干扰的过程,应选取较短的采样周期;反之,当过程响应慢(如温度、 成
份)、滞后大时,可选取较长的采样周期。
采样周期的选取应与 PID参数的整定进行综合考虑,采样周期应远小于过程的扰动信号的周期,
在执行器的响应速度比较慢时,过小的采样周期将失去意义,因此可适当选大一点;在计算机运算
速度允许的条件下,采样周期短, 则控制品质好;当过程的纯滞后时间较长时, 一般选取采样周期
为纯滞后时间的 1/4~1/8。
17人们通过对 PID 控制理论的认识和长期人工操作经验的总结, 可知 PID 参数应依据以下几点来
适应系统的动态过程。
1、 在偏差比较大时,为使尽快消除偏差,提高响应速度,同时为了避免系统响应出现超调,Kp
取大值,Ki取零;在偏差比较小时,为继续减小偏差,并防止超调过大、产生振荡、稳定性变坏,
Kp值要减小,Ki取小值;在偏差很小时,为消除静差,克服超调,使系统尽快稳定,Kp值继续
减小,Ki值不变或稍取大。

 2、当偏差与偏差变化率同号时,被控量是朝偏离既定值方向变化。因此,当被控量接近定值
时,反号的比列作用阻碍积分作用,避免积分超调及随之而来的振荡,有利于控制;而当被控量远未接近各定值并向定值变化时,则由于这两项反向,将会减慢控制过程。在偏差比较大时,偏差变化率与偏差异号时,Kp值取零或负值,以加快控制的动态过程。

 3、偏差变化率的大小表明偏差变化的速率,e -e 越大,Kp取值越小,Ki取值越大,反
之亦然。同时,要结合偏差大小来考虑。 

 
 4、微分作用可改善系统的动态特性,阻止偏差的变化,有助于减小超调量,消除振荡,缩短
调节时间t ,允许加大  Kp,使系统稳态误差减小,提高控制精度,达到满意的控制效果。所以,s
在e 比较大时,Kd取零,实际为 PI 控制;在e 比较小时,Kd取一正值,实行 PID控制。
18PID自整定 Kp Ki 自动调整方程
19 PID参数整定一般步骤
a.确定比例增益P
确定比例增益P 时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。
b.确定积分时间常数Ti
比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。
c.确定积分时间常数Td
积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。
d.系统空载、带载联调,再对PID参数进行微调,直至满足要求
20主程序为一个顺序执行的无限循环的程序。主程序首先对系统硬件和系统各变量进行初始化。先关中断,设置MCU工作频率和各个外设的状态,初始化各端口,控制算法初始化,然后开中断,最后程序进入主循环。
21
弯心前减速,弯心后加速
转弯 坡道减速  直道加速
22 差速调的好,过弯可以不减速
因为要节能,所以尽量不要加减速
23直道的速度直接由弯道决定,再除去轮胎等情况的问题下,弯道能达到多快是决定一切的一个重要因素。以曲率最小的方式度过弯道就是最优的路径,就是说以最缓的轨线压过赛道
24  差速可以是外轮加速 内轮减速
25大神说S3010舵机的最适合频率是50Hz
26前瞻40cm或更长
27关于单电机车模后轮的硬件差速问题,大家都知道,车体的转向一方面靠前轮控制方向,一方面靠后轮的差速。但是这次我们使用的是单电机,不能像双电机一样程序控制差速。所以要用到硬件差速。具体实现就是调后轮的螺丝。听学长们说把电机开着,用手捏着一个轮子(不让它转动),另一个轮子还能转动,这样硬件差速就算调好了
28电机控制用增量+棒棒
29完整的pid系统是和时间有密切相关的。时间反应到程序中我想就是咱们说的采样周期吧。
在控制电机的时候,采样周期一定要尽可能的短。这样才能使响应时间尽可能的短。
编码器的话在有条件的情况下尽可能选择线数大的。我们这次采用的是200线的编码器。后来发现计得的数值比较小。不太利于控制。
30关于调试板,由于比赛不可以考程序,我们只能带着爱车和一块取代电脑地位的调试板去比赛,
           调试板可以用拨码开关:八位可以有256个状态,怎么配合使用是自己的思路了;
回复 支持 1 反对 0

使用道具 举报

1

主题

10

帖子

0

精华

高级会员

Rank: 4

积分
531
威望
240
贡献
147
兑换币
155
注册时间
2016-5-3
在线时间
72 小时
毕业学校
湖北工业大学
推荐
发表于 2017-6-26 16:51:21 | 只看该作者
楼主好厉害。有没有视频好想膜拜一下
回复 支持 1 反对 0

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
推荐
 楼主| 发表于 2017-6-26 16:14:03 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 1 反对 0

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
3#
 楼主| 发表于 2017-6-26 16:10:26 | 只看该作者
31最好还是在前轮加上一个减震的弹簧,垫在前轮的导杆和轮子之间,这样减震很明显,不会有那么明显的“车震”了~
32车甩尾 过弯打滑  无非三种情况,轮胎太硬需要打磨,直道入弯没有减速,差速不当
33补充 差速可以试试内侧不减速 外侧加速  或者 外侧不变 内侧减速
34直立式安装方案是目前采用最多的安装方式,  这种安装方案,安装很简单,在淘宝店都可以买到对应的安装支架,买回来按照安装图直接安装就好了,并且每个商家还会提供配套的圆盘和转向连接片,很方便,这种安装方案是大多新车手首选的安装方案。安装简单,调试也简单。
直立式安装方案里,很多车友会在舵机支架下面再加个铜柱,目的是提高连接片的长度,也就是增长舵机的有效力臂长度,进而提高了舵机的灵敏性和响应速度,实际应用中,这种方法非常有效,尤其是在调车前期,程序不太完备的时候,转弯的灵敏性决定了车的最终成绩。推荐大家可以尝试这种方法,但是如果要采用这种方法,连接片就要自己根据自己所加铜柱的高度,自制一个合适的连接片。直立式的优点是安装简单,力矩长,响应速度快,这也使它重心升高,转弯容易侧翻。
35
放电池的地方需要打磨
36
不判断直道和弯道,或者说所有都看成是弯道。赛道是连续的,判断直道和弯道就是突变了,效果不可能好。不过后期提速在速度策略上可以判断直道和弯道,通常根据ad 
王神的pd不是分段的
省轮子  是指  恰到好处的舵量
动态p可以说是n段p,n一般很大  
调弯道切线的算法。看你们的和北科的视频,明显感觉到是在切内弯
摩擦轮胎
电磁组想跑的快,参数的作用只占1/3左右
Pid调节超调小到满意,振荡小到满意,响应快到满意
直道中心,以车头为圆心旋转40度(左右共80度)的时候,就可以丢线了!!!!!

最近看到论坛很多差比和的,但我实际看曲线,曲线区间只有25cm,因为当车往右水平移动过程中,左端电感到达电磁线正上方时,差比和曲线就已经达到最大值了,
那这个区间不是太过窄了吗?
可以在这个时候锁定差值,和值继续变化。
用导线将电机接地!!!
写锁差值算法时,把丢线处理注释掉!
差比和,某个时候锁差值。
当左右电感差值大于某个值时,锁定这个差值!(看入弯的时候,注意区别大小s)(也就是大弯锁差值,而小弯不锁)(过连续的大弯即大S弯时,要及时解除锁定的差值,否则过第二个弯时会反向打角)
当左右电感差值小于某个值时(一般是弯入直道的地方),解除这个差值!
前瞻过长,等过弯道的时候一定要加锁。。。杆子伸出去了会检测不到电磁信号。
一定程度上可以说连续弯道走得越直,速度就越快,但是这样看起来就更慢了。如果看起来左右转非常迅速的,那种看起来快,但是实际却不一定很快。
C车差速 目测根据偏差给的很多,也可能有根据类似计算曲率给的,也许更多的应该是以偏差为基础,优化给的。
根据角度的 V_left = V * ( 1 + ( B * tan@ ) / ( 2 * L))
V_right = V * ( 1 - ( B * tan@ ) / ( 2 * L))
注:V为设定速度,B为后轮轮距,L为前后轮轮距,@为车身与路线夹角。
偏差 决定左右电机速度
吧友 可以将舵机打到固定角(如0-500)在每个角固定时推车 记下两个轮子的轨迹 测出半径 R之比就是速度之比 可能有问题或缺陷
s3010转动速度是0.16s转60度,要打死,需要0.1s左右,如果速度3米每秒,打死前已经前进了30cm
前瞻长过直角和大弯才能流畅!!!!!
前瞻给50吧!!!
经过实际的尝试,我最后是选择了用软件模拟机械差速(a'b车差速器)的方法,再模拟lsd限滑差速,从而达到了一个比较好的效果。为什么用模拟机械差速的方法呢?模拟差速器是一种被动的差速器,它不会主动的去改变两个轮子的速度,所以也就不需要去建立复杂的模型,它会随着两边轮子实际的负载情况和实际的路程而改变输出(参考机械差速的原理),从而使小车更稳定。当然,若采用被动的差速,那么就不能像电子主动差速那样想着靠差速来增强转向了。ps:可以在这个基础上跟随转向控制量增加一定偏移量的输出,也是可以的。 
首先是模仿机械差速:一侧快多少,另一侧就慢多少(总速度为0,右边正转一圈,左边就会反转一圈)。当总的期望速度不变时,一侧比总的期望快了多少,另一侧的期望就要慢多少,然后PID控制。但是跟机械差速又不同,理论上这样会发散,一定会出现一个轮子最低速,一个最高速,所以还需要增加一些处理,比如增加阻尼和LSD限滑的方法等等,让整体稳定。
37起跑线只会在直道,那么弯道触发就忽略,然后检测到起跑线要有一个延时,最好可以用外部中断触发啦~
38 oled的CS可以接地 看看跑起来还会不会花屏
39电机都是有死区电压的,每个电机的死区电压可能不一样,所以就算你给了相同的占空比,转速也不一定一样。
40两个竖直的电感检测直角,发现直角再根据这两个电感的差值打角(可以考虑)
回复 支持 反对

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
4#
 楼主| 发表于 2017-6-26 16:11:43 | 只看该作者
41如果用到弯道减速  可以让电机反转
42锁差值能防止前瞻过长而引起的串道吗? 串道最好的处理方法就是不处理多余的信息
43前瞻太长,单个电感伸出去,被别的赛道的磁场叠加了,你们怎么不处理,我觉得能解决这个问题,我们会有很 ...

别只看这一个电感,所有电感整体上看,就能发现端倪。
44靠外面的电感受影响得很明显,电压值会增大,得出来的差除和比值会比较小,转弯时看成是直道了

那是你算法问题,我认为无修改的差除和只能用于30以内的前瞻。长前瞻肯定要有自己的算法才好用。这些算法的思路可以基于差除和,差除和是一个好东西~~(他的意思是基于差比和的算法,我想很可能用到锁差值了,或者锁差值再叠加其他算法)
45省轮子的意思是:轮胎尽量不要滑动摩擦。
46DMA 测脉冲,我们发现容易受到干扰,因此也不推荐使用。  K60用的是FTM正交解码 KL26没有正交解码 只能用TPM测脉冲 或者lptmr
47 提高舵机的控制精度 128的话就是两个通道级联成16位来提高控制精度。K60的话是提高初始化中有一个参数的位数。(kl26应该类似于k60)
48 舵机可以试试直接接电源(放心不会烧)
49 测一下舵机在工作的时候的电压
50 差速可以看看下载的资料里面  差速
51 pit控制周期改成5ms
52 用IO输出高电平程序末尾输出低电平 则高电平时间测中断内程序执行时间 来确定中断控制周期(我的理解是程序执行时间不能大于中断控制周期)
53 舵机频率就用50HZ吧 100太软了 打不到位 或者70~80可以试试
54 改变FTM的分频是不是也能提高舵机打脚精度?好像是
55舵机频率一般是指pwm波的频率
56双电机的差速控制采用
位置式的 PD 控制, 速度闭环控制采用了增量式 PID 控制
57 左右两边电感值一旦偏差大于某个值(一般较小偏差)就进行差速控制,偏差越大,差速越大。
58 在执行PID之前给舵机设一个软件死区(很小的死区),防止舵机频繁抖动引起的不稳定。If满足软件死区条件,执行空语句,else,执行PID。(不知道有没有必要,试试效果吧)
if(uk_old<-80|uk_old>80|ad4old>-5&ad4old<5&ad5old>-5&ad5old<5)
//如果前后变化不大的话舵机就不动作
                                                          {
                                                          }
                                                                    else
                                                                     {
                                                                             PID();
                                                                     } */
59 十字交叉线的磁场信号和90度弯的磁场信号极为相似,容易发生车子行驶时直接忽略90度弯的情况。 所以程序要加一个直角弯的判断,可以区分十字,即垂直的两个电感都有值,则为十字,只有其中一个有值,则为直角。
60 节能的另外一种方案是不用舵机,直接用C车电机差速跑。
61调整主销后倾 主销内倾 前轮前束
62 Main函数里面除了初始化程序
就是起跑线检测,而所有的核心操作放在定时中断中 。
63 把ad采集也放到中断中,对比跑的稳定性和总时间。
64
65 在直道不用垂直的两个电感,弯道加垂直电感辅助过弯,小S可能可以不用。(弯道处的垂直电感权重可以调整)
66 拨码开关要能控制舵机电机的PID参数,小车的速度。
67 PIT中断5ms应该可以
68 一个PIT中断应该就够了
69 不足转向特性导致小车在转弯时发生侧滑现
象;过渡转向的特性导致小车在转弯时发生甩尾
现象。
智能车竞赛是追求速度的比赛,适当的过渡
转向特性有助于小车迅速过弯。
70 配置PLL超频在MK60 conf.h里



71每次比赛之前记得把Debug改为Release模式
72 K60和KL26没有通道级联 应该是改FTM或者TPM的分频
73 S3010 频率50Hz 即周期20ms
74考虑到控制周期较长,假设按 2.5m/s 的平均速度计算,则一个控制周期小车大概可以跑过 2.5cm,如果按这种周期用上述 PID 调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。为了解决这个问题,可以在 PID 调速控制中加入 BANG-BANG 控制思想:根据 error1 的大小,如果正大,则正转给全额占空比;如果负大,则自由停车或给一个反转占空比;否则就采用 PID 计算的占空比。
75 舵机转角和双电机差速有映射关系。
我记得应该可以直接用偏差与差速映射!
可是出现特殊情况,比如锁差值和丢线处理时的偏差没办法与差速形成映射,所以还是舵机打角跟差速映射吧。
76
77 前瞻与水平面的角度20度
78
79
80 在模型车中,前轮前束是通过调整伺服电机带动的左右横拉杆实现的。
主销在垂直方向的位置确定后,改变左右横拉杆的长度即可以改变前轮前束
的大小。
所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心
线与纵向中心线的夹角。
一般前束为 012mm。
所谓主销内倾,是将主销(即转向轴线)的上端向内倾斜。
对于模型车,
通过调整前桥的螺杆的长度可以改变主销内倾角的大小,由于过大的内倾角
也会增大转向阻力,增加轮胎磨损,所以在调整时可以近似调整为 0°~3°
回复 支持 反对

使用道具 举报

3

主题

75

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2915
QQ
威望
1467
贡献
1052
兑换币
975
注册时间
2017-1-2
在线时间
198 小时
毕业学校
皇家理工大学
5#
 楼主| 发表于 2017-6-26 16:12:32 | 只看该作者
81 增量式PID在实际代码实现时,处理成
vl_PreU += ( Kp * d_error + Ki * error + Kd*dd_error) (4.2)
将测速模块得到的单位时间脉冲数给 vi_FeedBack, vi_Ref 为设定速度。
error = vi_Ref - vi_FeedBack (4.3)
d_error = error - vi_PreError         (4.4)
dd_error = d_error - _PreDerror         (4.5)

82合理选用一台合适功率的电动机,避免出现大马拉小车的情况出现。若电动机容量选得过大,虽然能保证设备正常运行,但不仅增加了投资,而且它的效率和功率因数也都很低,造成电力的浪费。
83 前瞻

84 自制车模的平面形状做为近似三角形,前面一个万向轮。
85 改改加权递推平均滤波的权重,看看车子灵敏度的改变。
特点是给予新采样值的权系数越大,则灵敏度越高,
但信号平滑度越差。
86 利用采集到的偏差检测信号与车模速度控制
信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行加速度不一
致进而控制车模方向。
87为了防止频繁调节和意外输出过大,设置调节死区(-LOCA_DEADLINE,
LOCA_DEADLINE)。 loca_error在死区内,不进行调节,维持上一状态。设置调
节范围( -LOCA_MAX, LOCA_MAX),假如loca_PreU算出结果越界,那么就赋给
边界值  LOCA_MAX。
88 蓝宙KL26 主频48M 最高可超频到80M
89 机械调整 主销内倾3度 主销后倾0到1度 前轮外倾1度 前轮前束6mm
90 电机PID的偏差是实际速度与编码器测得速度的差值。
91 对电机的速度控制,采取增量式PID+bang-bang的控制思路。
采取拟合的速度给定方法。
根据二次曲线顶点式:
(公式13)
只要知道顶点坐标(h,k)和其中一个点坐标即可知道曲线的解析式。因而我们可以只设定小车行进的最大速度和最小速度就能求得到输出的速度值。
速度控制以编码器反馈回来脉冲数进行控制。考虑到PID数字位置式积分的累积误差大, 占用较多存储单元,而数字PID增量式可以对较少的历史数据递推使用,占用存储单元少,编程简单,运算速度快。为使小车更快地响应加减速,引入了bang-bang控制,当速度较大的时候,PWM输出为0;当速度较小的时候输出全额PWM。
92 在使能总中断后面加个一秒的起跑延时。
93 在中断开始时执行
pit_time_start(PIT0);
结束时执行
uint32 time = pit_time_get(PIT0); //获取 PITn 计时时间
if(time != ~0) //没超时
{
printf("\n 计时时间为: %d us",time*1000/bus_clk_khz);
}
即可计算中断内的时间
94 可以将前轮打死的地方用烙铁焊一下,增大转角。
95  /***********************speed control***************************/      
     //速度给定
     if(abs(ei)<130)         
     {speed_goal=speed_table[abs(ei)]-abs(ei-ei_1)/3;}
     else
     {speed_goal=speed_table[130];}
     
   get_speed();            //获取当前速度
   
   if(start_stop==0)
  {
        
        if(pulse_count>(speed_goal+8))                  
        {
         speed=0;
        }
        else if(pulse_count<(speed_goal-8))
        {
         speed=4000;
        } //bang bang 控制
        else
        {
         speed_measure[2]=speed_measure[1];
         speed_measure[1]=speed_measure[0];
         speed_measure[0]=pulse_count;
   
         speed_ei=speed_goal-speed_measure[0];
         speed_ei1=speed_goal-speed_measure[1];
         speed_ei2=speed_goal-speed_measure[2];
        speed+=speed_P*(speed_ei-speed_ei1)+speed_I*speed_ei+speed_D*(speed_ei-2*speed_ei1+speed_ei2);
        }//增量式pid
      
      if(speed>4000)  {speed=4000;}
      if(speed<0)  {speed=0;}   
     
       if(out_line>15)
       { speed=0;}
   
    PWM23_DutyCycle(speed);
  }
  else
  {LCD_write_canshu(60,4,1);}
  
  if(start_flag==1)

{  start_line++;
     if(start_line>150)
     IRQCR_IRQEN=1;
  }  
  }
/* loop forever */
  /* please make sure that you never leave main */
}
96 0最大啊!
就是只能设置 0、1、2、3 四个优先级。
不需要设置优先级分组,因为KL26 没有优先级分组,全部都是抢占优先级。
直接设置优先级就好了。
97 kl26通过电机PWM输出,根据电机正转反转判断编码器正反转。
98
lptmr_counter_init(LPT0_ALT2, LIN_COUT, 2, LPT_Rising);//初始化脉冲计数器 PTC5输入捕获脚
  set_irq_priority((INT_LPTimer + INC_IRQ), 0);//设置中断优先级 0
  setIRQadrr(INT_LPTimer, LPT_Handler);  //设置中断地址函数
99 速度 PID 算法部分:
speed_error=speed_set-now_speed;
speed_PWM=speed_PWM+         MI
*speed_error+MP*(speed_error-speed_last_error)+MD*(speed_error+speed_pre_error-2*speed_last_       
error);;       

speed_pre_error=speed_last_error;         //记录上上次差值
speed_last_error= speed_error;         //记录上次差值

if (speed_PWM>50000)
speed_PWM=50000;
else if(speed_PWM<10000)
speed_PWM=10000;
if(speed_PWM>=0)
{
FTM_PWM_Duty(FTM1,FTM_CH0,speed_PWM);//右正
FTM_PWM_Duty(FTM1,FTM_CH1,0);//右反
}
else
{
FTM_PWM_Duty(FTM1,FTM_CH0,0);//右正
FTM_PWM_Duty(FTM1,FTM_CH1,-speed_PWM);//右反
}
100可以不改变KP而把偏差缩小,不同弯道差比和乘的系数不同,大弯的系数大,小弯的系数小。
101舵机tpm分频设为20000 电机pwm频率设为10k到20k之间,试试看效果(可能10k比较好)
102  1、清中断标志位才会开启下一次中断计时。2、当中断函数运行完,会进入主程序的运行,然后,等待下一次中断到来后再开始运行中断函数。
103
104 用未滤波的ADC采集的值进行判断直道、小S、大S,及所对应的区间(测最大最小值切记不要用滤波后的值)。加权递推滤波后的AD值有滞后性!最多滞后40ms!差不多10cm!
为了统一,我还是用了归一化后的值
105 分别用左电机速度控制和右电机速度控制
106 分别测出两个编码器的脉冲,使之相同。即程序设定左右电机脉冲相同,并进行PID控制,使两轮速度相同后,再进行舵机PID调试!
107int pid(float ek)
{
                if(gabs(ek)<ee) //ee 为误差的阀值,小于这个数值的时候,不做PID 调整,避免误差较小
                {                                //时频繁调节引起震荡。ee 的值可自己设
                                adjust=0;
                }
108 你是怎样确定车的最大额定速度的

先加一个P,能让车子基本上能比较正常的加减速什么的 ,保持在设定值左右   然后加D  KD的大小据说是KP的1/8   同时适当减小一点kp   慢慢来就行了    由上位机用的话  就方便多了 
109 增量式参数是先调ki,再调kp,再调kd
110电机在PID调速时,空转的时候到达稳定速度的曲线很好,超调量也很小,但是把车子放到跑道上启动之后,车子运行时就会一段加速一段减速,这是怎么回事?
一段加速一段减速那就是在震荡!空载的时候和在赛道上,阻尼比显然是不同的,参数需要重新调
回复 支持 反对

使用道具 举报

4

主题

81

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1601
威望
810
贡献
487
兑换币
512
注册时间
2015-1-14
在线时间
152 小时
毕业学校
集美大学诚毅学院
10#
发表于 2017-6-26 17:28:36 | 只看该作者
楼主你的车功耗如何
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-25 13:12 , Processed in 0.087326 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表