【Day22】:旋转编码器—Encoder

Encoder

Encoder也就是编码器,可用於将马达的旋转资讯转换为方波的形式输出,他的构造与原理都非常简单,内部是一圈上面有黑色条纹,然後会有光束照射在那一圈上面,底下有光感测器,只要马达旋转到光刚好照射到黑色条纹上,就会输高电位,若照射到透明的区域,光感测器就会感测到光束,就会输出低电位。因此马达旋转的时候就会形成高低电位来回变换的方波。我们只要知道一个方波的周期就可以推算马达的转速了。
https://ithelp.ithome.com.tw/upload/images/20210909/20141525f1kXAtcrBL.jpg
接下来就产生一个问题,不论马达正转或反转,他都会输出相同的波形。
这个问题的解决其实也很简单,我们在那一圈上分成内外两圈黑色条纹,而内外两圈并不是平行的(上面的encoder就是这种形式的),而是有一点交错(相位差90度),然後变成输出两个波。这样正反转的时候,这两个波的先後顺序会不相同。实际的输出波形可以看下图。
https://ithelp.ithome.com.tw/upload/images/20210909/20141525KBbS7zp4sJ.jpg

STM32 Encoder mode

听到这边,可能你还是不太清楚实际上要怎麽处理这两个具有90度相位差的波形,不用担心,STM32已经帮你计算好了。只要把两只脚位接到Encoder的两个输出上,并在STM32开启encoder mode,你在用一个变数去读值,只要你马达正转,这个值就会增加,反之则减少,如此你就可以透过单位时间变数的变化量来推得马达的角速度。明天我们就来实际使用看看这个方便的功能吧~


<<:  【Day19】:PWM输出-模拟类比讯号

>>:  【Day21】:客制化的PWM输出

Day.22 「让我们在更深入函式~」 —— JavaScript call & apply & arguments

之前我们有说过,再调用函式的时候,浏览器会传递隐藏的参数给我们函式 一个是「this」,除了 th...

面对拒绝

前言 昨天探讨了面对变化的态度与重要性,今天再次从自己出发,透过细微的观察来化解问题,进而让团队合作...

[Day2] 开放银行

什麽是开放银行 开放银行(Open Banking)核心目标为为透过Open API的方式将存在於银...

Day 11 已故用户的隐私设计

隐私如浮云,多半用户即刻享受当下服务的快感解决需求,至於隐私就都化为浮云飘过视而无见,如同Day 2...

[Report] 怎麽让筛选条件可以复选

1.add report 2.add dataset 3.edit param be mulit 2...