电机驱动开发历程(五)

一个执行的代码,经受的住高速运转(或者大量数据)才是正真能够正常运行的代码。
之前在一家美资车企,写了一个解析can报文的上位机工具,即将上位机的log文件,根据DBC文件的定义,转为实际意义的数据Excel表格。这些日志通常是M级别的log。刚开始做的时候,用了一个普通的excel处理方式,小数据处理起来还行,数据比较多的时候,效率超级低。后来改进了excel处理方式,效率大大提高。
这个的波形实时显示上位机,为了方便观察数据,下位机的数据以10ms的频率周期发送,对于上位机的要求就不仅仅是一般的处理方式来做,得用二班的方式,包括串口数据处理/日志记录等等。啥是二班的方式,就是一个批量处理的思想,举个例子,记录日志,本来是来一个数据,记录一次,转化为来100条数据,记录一次。
今天刚来调试PID参数,速度调高到100左右,电机突然卡死不转,采集了一些数据分析有以下几个可疑点:
(1)前几天修改的串口发送机制仍然会消耗大量时间:
针对这一点,取了log来看,应该不大可能,因为出现卡死不转后,A点的点位数据转到底是3206,而我当初示教的A点点位经过换算后,A点点位是3176,差了30个编码,就是因为这30个编码,MCU觉得仍然需要转动,但是实际上已经到头了,再转也转不动了。如果说串口发送机制需要消耗大量时间,理论上编码器数据采集不到,数据应该减小才对,而我这次数据才变大,所以根本原因应该不是这一点;
(2)由上面分析,数据在慢慢累积变大,说明我的编码器采集函数,可能接收到了一些不应该出现的波形,想到这边,可能编码器上会有一些干扰误差。
我们要求的最快速度是0.4s转90度,90度经过计算式626个编码,换算一下,就是1ms需要检测1.56个编码;而对于编码采集,我放在主程序里面,主程序里面执行一次的时间级别式ns级别的,需要加一个类似防抖动的机制进去,oh,no,需要动到编码器采集代码了。
嗯,这个问题,按照这个思想改善了,目前正在较高速运行,暂未出现问题。
PS:此外,机构这边编码器没有锁紧,导致编码器零点会跑掉,这一点莫,额,,,
(3)PWM值送到一定程度,电机会转起来,但是在这个过程种,如果电机突然停止,那肯定是遇到什么阻碍了,为了防止这样的情况出现,需要对这一现象给予检测保护机制。不然会导致电流过大,烧板子烧电机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值