iT邦幫忙

2021 iThome 鐵人賽

0
Arm Platforms

STM32 基礎入門教學系列 第 22

【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,你在用一個變數去讀值,只要你馬達正轉,這個值就會增加,反之則減少,如此你就可以透過單位時間變數的變化量來推得馬達的角速度。明天我們就來實際使用看看這個方便的功能吧~


上一篇
【Day21】:客製化的PWM輸出
下一篇
【Day23】:TIM的強大功能—Encoder mode
系列文
STM32 基礎入門教學30

尚未有邦友留言

立即登入留言