360度 EC11 旋转编码器模块 数字脉冲电位器
文章目錄
- 一、產(chǎn)品簡(jiǎn)介
- 二、原理分析
- 三、程序設(shè)計(jì)
- 四、程序源碼
一、產(chǎn)品簡(jiǎn)介
EC11旋轉(zhuǎn)編碼器廣泛用于車載DVD,車載導(dǎo)航,汽車影音上常被人稱為車載編碼器。編碼器主要用于頻率調(diào)節(jié),高度調(diào)節(jié),溫度調(diào)節(jié)及音量調(diào)節(jié)的參數(shù)控制。注意編碼器避免儲(chǔ)藏于高溫潮濕及腐蝕的場(chǎng)所,拆包裝后未使用完的剩余產(chǎn)品請(qǐng)?jiān)诜莱狈蓝镜沫h(huán)境下保存。
產(chǎn)品特點(diǎn):
- 額定電壓:DC 5V
- 各相導(dǎo)線AB相:0.5mA(Max 5mA,Min 0.5mA)
- 公共導(dǎo)線C: 1 mA(Max 10mA,Min 0.5mA)
- 使用溫度范圍: -30℃~+80°c
輸出信號(hào):
電氣性能:
接口說明:
二、原理分析
旋轉(zhuǎn)編碼器是一種機(jī)電裝置,可將軸的角運(yùn)動(dòng),轉(zhuǎn)換為A/B兩相相位偏差90°的脈沖信號(hào),其中C是A/B信號(hào)的參考地
-
根據(jù)A/B信號(hào)的相位關(guān)系可以獲取正反轉(zhuǎn)方向。
-
通過脈沖的計(jì)數(shù)可以獲取旋轉(zhuǎn)的步進(jìn)數(shù)量。
-
根據(jù)脈沖在單位時(shí)間內(nèi)的計(jì)數(shù)可以獲取角速度。
工作原理: 旋轉(zhuǎn)軸帶動(dòng)兩組同軸柵格轉(zhuǎn)盤,柵格轉(zhuǎn)盤間存在一定的角度偏差,旋轉(zhuǎn)的柵格會(huì)對(duì)發(fā)光二極管發(fā)出的光信號(hào)進(jìn)行間斷遮擋,從而使光敏二極管產(chǎn)生高低電平變化。因?yàn)閮山M柵格轉(zhuǎn)盤存在一定的角度偏差,所以會(huì)產(chǎn)生兩組相位90°偏差的A/B相信號(hào)。
A、B兩相都輸出方波時(shí):
- 順時(shí)針方向旋轉(zhuǎn),A相超前B 相90度;
- 逆時(shí)針方向旋轉(zhuǎn),B相超前A 相90度;
三、程序設(shè)計(jì)
本篇設(shè)計(jì)為向右旋轉(zhuǎn)編碼器每產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器+1,向左旋轉(zhuǎn)每產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器-1,并通過oled將計(jì)數(shù)值顯示在屏幕上。
1. 引腳初始化
VCC和GND不必多說,首先對(duì)A,B相進(jìn)行引腳初始化,這里我將A、B相分別接上PB0和PB1
2. 開啟外部中斷
將PB0和PB1設(shè)計(jì)為中斷源,且為下降沿觸發(fā)
3. 中斷配置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_Init(&NVIC_InitStructure);4. 中斷函數(shù)
int16_t Encoder_Get(void) {int16_t Temp;Temp = Encoder_Count;Encoder_Count = 0;return Temp; }void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) == SET){/*如果出現(xiàn)數(shù)據(jù)亂跳的現(xiàn)象,可解除以下注釋,再次判斷引腳電平,以避免抖動(dòng)*/ // if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0) // {if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0){Encoder_Count --;} // }EXTI_ClearITPendingBit(EXTI_Line0);} }void EXTI1_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line1) == SET){/*如果出現(xiàn)數(shù)據(jù)亂跳的現(xiàn)象,可解除以下注釋,再次判斷引腳電平,以避免抖動(dòng)*/ // if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0) // {if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0){Encoder_Count ++;} // }EXTI_ClearITPendingBit(EXTI_Line1);} }5. main函數(shù)
int16_t Num;int main(void) {OLED_Init();Encoder_Init();OLED_ShowString(1, 1, "Num:");while (1){Num += Encoder_Get();OLED_ShowSignedNum(1, 5, Num, 5);} }四、程序源碼
有需要者 請(qǐng)留言評(píng)論區(qū)或私信
總結(jié)
以上是生活随笔為你收集整理的360度 EC11 旋转编码器模块 数字脉冲电位器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android应用开发-MP3音乐播放器
- 下一篇: nsis出错_nsis error解决方