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