Encoder
Encoder也就是编码器,可用于将马达的旋转资讯转换为方波的形式输出,他的构造与原理都非常简单,内部是一圈上面有黑色条纹,然后会有光束照射在那一圈上面,底下有光感测器,只要马达旋转到光刚好照射到黑色条纹上,就会输高电位,若照射到透明的区域,光感测器就会感测到光束,就会输出低电位。因此马达旋转的时候就会形成高低电位来回变换的方波。我们只要知道一个方波的周期就可以推算马达的转速了。
接下来就产生一个问题,不论马达正转或反转,他都会输出相同的波形。
这个问题的解决其实也很简单,我们在那一圈上分成内外两圈黑色条纹,而内外两圈并不是平行的(上面的encoder就是这种形式的),而是有一点交错(相位差90度),然后变成输出两个波。这样正反转的时候,这两个波的先后顺序会不相同。实际的输出波形可以看下图。
STM32 Encoder mode
听到这边,可能你还是不太清楚实际上要怎么处理这两个具有90度相位差的波形,不用担心,STM32已经帮你计算好了。只要把两只脚位接到Encoder的两个输出上,并在STM32开启encoder mode,你在用一个变数去读值,只要你马达正转,这个值就会增加,反之则减少,如此你就可以透过单位时间变数的变化量来推得马达的角速度。明天我们就来实际使用看看这个方便的功能吧~