本帖最后由 王昱顺 于 2024-9-26 10:28 编辑
为了让电机转动的更稳定,一般会选择使用编码器进行速度闭环。但是编码器其实也有所适应的输出数据类型。磁编码器 首先,使用编码器可以采集到的一般有三种类型的数据——位置、速度、加速度。 这三种类型里面,不考虑累计误差的问题,从前往后转换会使得数据噪声被放大,也就是更加的不稳定,比如使用位置传感器求速度。而从前往后转换会让数据变得更加平稳,不过也会加剧累计误差。比如使用加速度传感器进行积分得到的速度,往往是带有很大漂移的。 而市面上常见的编码器类型一般都是磁编码器,或者如果要求不高还有用电阻当位置传感器的,比如说一些舵机。磁编码器呢,又大致分为两种信号类型。脉冲形式和数字信号形式。 脉冲形式的分辨率叫XX线,意思是转一圈会输出多少个脉冲,比如说1024线就可以输出1024个脉冲,通常分辨率较低,都是128,512线这样子。数字形式的分辨率就比较高了,一般是按照位数来的,比如12位的磁编码器就是2^12=4096。 正是因为上面两种接口的区别,所以延伸出来了这两种信号的特点——脉冲形式适合作为速度和位置采样,速度采样稳定性较高,准确度较高。而数字形式仅仅适合位置采样,并且一般是作为绝对位置采样出现。 为什么数字形式不适合作为速度采样呢?因为数字形式的编码器数据是靠通讯的来的。通讯就会出现迟滞,就会出现角度变化了,过了好一会才读走。所以如果进行位置变换速度的操作,就会引入很多脉动噪声,导致读出来的速度没办法使用。 不过从抗干扰和精度角度来讲,数字类型的编码器又非常适合作为位置方式的应用。因为数字形式可以进行CRC校验和多次采样的数字比较,一旦有异常值可以及时发现。 使用脉冲手段则并不能分辨出来干扰脉冲和实际脉冲。但是,脉冲可以根据边沿进行准确的时间采样,也就是数据本身带有准确的时间信息,所以十分适合作为速度采样。也算是各有优劣了。 但是,要是就想使用数字形式来读取速度呢?又应该用什么方式提高精度? 提高编码器分辨率和提高时间的分辨率都十分重要,因为要保证这个公式的上下两部分有效分辨率对等。 因为转动的时候并非完全平稳的一条速度曲线,为了避免采样速度过快使得ds为太小的数值进而导致数值的不稳定。通过实际工作中发现,优先保证ds的数值比较合适,因为保证dt的话,采样率较高可能会造成较大的数据波动,体现起来就是数据毛刺。 举个例子就是ds=5,dt=50us,此时计算v=0.1*3662(编码器系数)=366.2rpm 那么ds稍微变化一些,ds=4,dt=50us,v=292.96rpm,可以看到跨度非常大,变化高达73,这显然是令人不能接受的。 那么根据这个优先保证ds的思想,可以设置一个简单的由P控制的参数。 将角度变化量和0.25圈进行对比,通过累加完成控制dt。 然后通过对dt进行限制最大值(最低采样频率)和最小值(最高采样频率)。通过将dt赋给定时器初值,改变定时器计时时间的方式实现速度采样。
这里给出优化后的实际效果,角度数据是SPI-DMA读取的,速度数据已经是闭环情况。
|