增量型编码器驱动

作用:
测量物体转动角度。

原理:
增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。这里的位移就反应了旋转的角度。

接线:
红色: VCC(5V)
黑色: GND
绿色: A相
白色: B相
黄色: Z相

增量型编码器驱动_第1张图片

如图
ABZ三相输出高低变化的电平。
当编码器正转时,A相上升沿超前于B相上升沿。
当编码器反转时,B相上升沿超前于A相上升沿。
当编码器旋转一周,Z相输出一个高电平脉冲。

当编码器的转轴因为外力而发生转动时,如果是正转那么编码器A相的上升沿会快于B,A相输出的持续高电平个数则定量反应了正方向转动的角度。
编码器里面有1024个黑格子(哈哈,不知道咋说),当转动了一定的角度后里面一定数量的黑格子则会被感应(不专业),被感应的格子数量就是输出的高电平数量。所以:
angle = cnt/1024*360

综上,我们测量角度只需两步:
一 判断是正转还是反转
二 计数持续的高电平个数

实现思路:
我们将AB两相接到普通IO口上,设置两个IO口外部中断,方式为上升沿中断。在A的中断服务函数中判断B是否为低电平,若是 cnt++. 在B的中断服务函数中判断A是否为低电平,若是 cnt — 。初始 cnt=0,此时你就可以通过cnt/1024*360得到当前的角度。

附上用编码器做自由摆平衡系统的代码(https://github.com/yuwentengbo/Free-Pendulum)。

你可能感兴趣的:(STM32)