日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

360度 EC11 旋转编码器模块 数字脉冲电位器

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 360度 EC11 旋转编码器模块 数字脉冲电位器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、產品簡介
  • 二、原理分析
  • 三、程序設計
  • 四、程序源碼


一、產品簡介


EC11旋轉編碼器廣泛用于車載DVD,車載導航,汽車影音上常被人稱為車載編碼器。編碼器主要用于頻率調節,高度調節,溫度調節及音量調節的參數控制。注意編碼器避免儲藏于高溫潮濕及腐蝕的場所,拆包裝后未使用完的剩余產品請在防潮防毒的環境下保存。

產品特點:

  • 額定電壓:DC 5V
  • 各相導線AB相:0.5mA(Max 5mA,Min 0.5mA)
  • 公共導線C: 1 mA(Max 10mA,Min 0.5mA)
  • 使用溫度范圍: -30℃~+80°c

輸出信號:

電氣性能:

接口說明:

二、原理分析

旋轉編碼器是一種機電裝置,可將軸的角運動,轉換為A/B兩相相位偏差90°的脈沖信號,其中C是A/B信號的參考地

  • 根據A/B信號的相位關系可以獲取正反轉方向。

  • 通過脈沖的計數可以獲取旋轉的步進數量。

  • 根據脈沖在單位時間內的計數可以獲取角速度。

工作原理: 旋轉軸帶動兩組同軸柵格轉盤,柵格轉盤間存在一定的角度偏差,旋轉的柵格會對發光二極管發出的光信號進行間斷遮擋,從而使光敏二極管產生高低電平變化。因為兩組柵格轉盤存在一定的角度偏差,所以會產生兩組相位90°偏差的A/B相信號。

A、B兩相都輸出方波時:

  • 順時針方向旋轉,A相超前B 相90度;
  • 逆時針方向旋轉,B相超前A 相90度;

三、程序設計

本篇設計為向右旋轉編碼器每產生一個脈沖,計數器+1,向左旋轉每產生一個脈沖,計數器-1,并通過oled將計數值顯示在屏幕上。

1. 引腳初始化
VCC和GND不必多說,首先對A,B相進行引腳初始化,這里我將A、B相分別接上PB0和PB1

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);

2. 開啟外部中斷
將PB0和PB1設計為中斷源,且為下降沿觸發

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1);EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line1;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);

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. 中斷函數

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){/*如果出現數據亂跳的現象,可解除以下注釋,再次判斷引腳電平,以避免抖動*/ // 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){/*如果出現數據亂跳的現象,可解除以下注釋,再次判斷引腳電平,以避免抖動*/ // if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0) // {if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0){Encoder_Count ++;} // }EXTI_ClearITPendingBit(EXTI_Line1);} }

5. main函數

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);} }

四、程序源碼

有需要者 請留言評論區或私信

總結

以上是生活随笔為你收集整理的360度 EC11 旋转编码器模块 数字脉冲电位器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。