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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

编码器测距离使用外部中断计脉冲

發布時間:2024/1/1 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编码器测距离使用外部中断计脉冲 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此設計大多應用在工業制造需要對移動距離精度要求高的場合,原理很簡單,結合編碼器脈沖數和自己設備安裝場合,另外還要結合編碼器安裝的編碼器輪的直徑,最終換算出編碼器單位脈沖的距離。需要注意的是若將編碼器安裝在轉動軸處的同心圓計算問題如下圖:

R1為編碼器輪,R2為軸,R3與R2為同心圓,最終R3的行進距離為X,則?:X=(nR3單位脈沖的距離)/R2.
其中計數脈沖為n
市面上常見的增量式編碼器有ABZ正反6相輸出,在本篇應用中,我們只使用A一項即可。
單片機我們使用STM32F103單片機的外部中斷計數計脈沖,廢話不多直接上代碼:

u16 Pulse_count=0; float Travel_distance=0;void EXTI_GPIO_Configuration(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/* PA0, TIM2_CH1_ETR*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M時鐘速度GPIO_Init(GPIOA, &GPIO_InitStructure); }void EXTIX_Init(void) {EXTI_InitTypeDef EXTI_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;EXTI_GPIO_Configuration();/*初始化IO口為輸入。GPIO_Init();*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/*開啟IO口復用時鐘AFIO*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);/*PA0連接到了外部中斷線0*/EXTI_InitStruct.EXTI_Line=EXTI_Line0;/*中斷線4*/EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;/*中斷,事件*/EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;/*按鍵一端接地故選擇下降沿觸發*/EXTI_Init(&EXTI_InitStruct);/*初始化線上中斷,設置觸發條件*/NVIC_InitStruct.NVIC_IRQChannel=EXTI0_IRQn;/*通道*/NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;NVIC_Init(&NVIC_InitStruct);}void EXTI0_IRQHandler(void)/*中斷服務函數*/ { // delay_ms(10);if(PORT==0){Pulse_count=Pulse_count+1;Travel_distance=Pulse_count*0.01885;}if(Pulse_count >= 15915) //300/0.01885||(300*R2*100000)/(R3*1885){Pulse_count=0;}EXTI_ClearITPendingBit(EXTI_Line0);/*清除中斷標志位*/ }

代碼中使用的是6cm的編碼器輪,1000脈沖數的編碼器(編碼器脈沖數結合實際情況,脈沖數越大,單位脈沖的距離越小,計數誤差也會越小),單位脈沖的距離:0.01885cm。
整體方案沒什么難點,若有疑問下方留言或者加博主QQ請博主喝茶。

總結

以上是生活随笔為你收集整理的编码器测距离使用外部中断计脉冲的全部內容,希望文章能夠幫你解決所遇到的問題。

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