【STM32F4系列】【HAL库】旋转编码器(EC11)
目錄
概述
電氣連接
波形分析
思路?
HAL初始化
代碼
?成品
概述
EC11是一種增量型AB相旋轉編碼器
旋轉編碼器是一種可以無限旋轉的旋鈕,常被作為各種需要大量數據范圍的情況(如收音機選臺,音量選擇等)
增量型是與絕對性做的區分,意味著輸出的信號與當前的位置沒有關系,與旋轉的方向和角度有關
AB相指的是一種輸出模式(也可以認為是一種協議)
有兩個線輸出根據相位判斷方向,根據高低電平數量判斷走過度數
電氣連接
原理圖
?
EC11常見額定電壓是5V,實測3.3V也可以驅動,但不建議使用3.3V(會出現雜波)?
阻容是為了進行上拉輸出和硬件濾波
A,B為旋轉信息的輸出(兩相)
C為接地
SW為內部的開關,可以當作輕觸按鍵使用(注意加軟件濾波)
波形分析
數據手冊的截圖
實測順時針轉動一格
?
實測逆時針轉動一格?
解釋:
每轉動一格(拿到實物自己實驗下很容易理解什么叫一格),AB相會出現一個持續10-150ms的低電平,默認為高電平狀態
順時針轉動時A相的低電平會比B相提前
逆時針轉動時A相的低電平會比B相延后
思路?
很明顯可以看出,只需要在A(或B)相的一個邊沿(上升下降均可),檢測另一相的電平高低即可
因此需要的外設有:
注意:
HAL初始化
外部中斷和NVIC
GPIO
代碼
為了便于后期的調用,這邊做了一個回調函數,可以在觸發順時針或者逆時針的旋轉的時候自動調用這個函數
頭文件
//外部中斷 #define EC11_A_GPIO_Group GPIOA #define EC11_A_GPIO_PIN GPIO_PIN_0// GPIO輸入 #define EC11_B_GPIO_Group GPIOA #define EC11_B_GPIO_PIN GPIO_PIN_1 void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void));C文件
void EC11_Decode(void (*Clockwise)(void), void (*Anticlockwise)(void)) {//Delay_ms(1);if (HAL_GPIO_ReadPin(EC11_B_GPIO_Group, EC11_B_GPIO_PIN) == GPIO_PIN_SET){Anticlockwise();}else{Clockwise();} }?成品
GitHubhttps://github.com/HZ1213825/HAL_STM32F4_EC11/settings百度網盤https://pan.baidu.com/s/1TTc5ARIb-szfsha9MoE_lA?pwd=cwi9%C2%A0
總結
以上是生活随笔為你收集整理的【STM32F4系列】【HAL库】旋转编码器(EC11)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四则运算java_小学生四则运算JAVA
- 下一篇: 水库雨水情测报和大坝安全监测设施 小型水