1. 求單片機C程序,判斷旋轉編碼器正轉和反轉,以及轉數
旋轉編碼器一般輸出3路信號ABZ,AB相位差是90°
將A接到中斷。當A下降沿時:B為高就是正轉一步,B為低則是反轉一步。
轉速可以用若干步用的時間進行計算。
2. 旋轉編碼器通過單片機控制步進電機怎麼編程
我也在弄這個控制原理,哥們兒你的成功了嗎,我在某音的視頻上看過一個是這么弄的,很厲害,但是一直找不出那個驅動器和控制原理,有點想不明白,
3. 單片機控制數字旋轉編碼器,不會響應什麼原
據我所知,數字旋轉編碼器是一個輸入器件,有人稱之為數字電位器,並並不受單片機控制,而是單片機讀取編碼器的信號來判斷認為的操作,即判斷旋轉方向與角度
一般有2個輸入埠,分別為A埠和B埠,不同數字旋轉編碼器,旋轉是的信號有所不同,
有一些是順時針轉,A,B都是下降沿,但一個在前,一個在後,逆時針前後的順序相反,但都是下降沿。
有一些則不同,有下降沿,也有上升沿,但都是一個前一個後,具體要參照相關的規格書
單片機應該利用外部中斷來讀取信號,否則有可能你旋轉時,單片機並沒有去讀取
4. 如何使用旋轉編碼開關
具有左轉,右轉,按下三個功能。4、5 腳是中間按下去的開關接線 1 2 3 腳 一般是中間2
腳接地,1、3 腳上拉電阻後,當左轉、右轉旋紐時,在1、3 腳就有脈沖信號輸出了。
著這是標准資料:
在單片機編程時,左轉和右轉的判別是難點,用示波器觀察這種開關左轉和右轉時兩個輸出
腳的信號有個相位差,見下圖:
由此可見,如果輸出1 為高電平時,輸出2 出現一個高電平,這時開關就是向順時針旋轉; 當輸
出1 為高電平,輸出2 出現一個低電平,這時就一定是逆時針方向旋轉.
所以,在單片機編程時只需要判斷當輸出1 為高電平時,輸出2 當時的狀態就可以判斷出是左
旋轉或是右旋轉了。
還有另外一種3 腳的,除了不帶按鈕開關外,和上面是一樣的使用。
參考:
#include "reg51.h"
#define uint unsigned int
sbit CodingsWitch_A=P1_1;
sbit CodingsWitch_B=P1_2;
uint CodingsWitchPolling()//
{
static Uchar Aold,Bold; //定義了兩個變數用來儲蓄上一次調用此方法是編碼開關兩引
腳的電平
static Uchar st; //定義了一個變數用來儲蓄以前是否出現了兩個引腳都為高電
平的狀態
uint tmp = 0;
if(CodingsWitch_A&&CodingsWitch_B)
st = 1; //
if(st) //如果st 為1 執行下面的步驟
{
if(CodingsWitch_A==0&&CodingsWitch_B==0) //如果當前編碼開關的兩個引腳
都為底電平執行下面的步驟
{
if(Bold) //為高說明編碼開關在向加大的方向轉
{
st = 0;
tmp++; //
}
if(Aold) //為高說明編碼開關在向減小的方向轉
{
st = 0;
tmp--; //設返回值
}
}
}
Aold = CodingsWitch_A; //
Bold = CodingsWitch_B; //儲
return tmp; //
}
//
5. 單片機的旋轉編碼編程
附圖是編碼開關輸出的波形圖,可以看出任何方向的旋轉發生時,A或者B的波形都是在另一方電平穩定的時候轉換電平,不知道你的單片機是否支持電平變化中斷。
下邊是我用PIC單片機的編碼開關檢測中斷處理程序,希望能對你有參考。
if(RAIE&&RAIF)//中斷標志檢測
{
unsignedcharport_temp1,port_temp2;
port_temp1=PORTA;//讀取埠參數
port_temp2=PORTC;
if(port_temp2&0x04)
{//檢測其中一個埠的值
if(port_temp1&0x10)//檢測另外埠的值
{key_flags|=0x30;}//順時針旋轉
else
{key_flags|=0x10;}//逆時針旋轉
}
else
{;}//非正常波形,不做操作
asm("movf_PORTA,w");//清除中斷標志
RAIF=0;
}
6. 如何用單片機發出計旋轉編碼器的AB相脈沖
用定時器做,兩個IO口電平變化,例:計數器100時改變IO1,200改變IO2,300IO1取反,400IO2取反,計數器給初值。
7. 旋轉編碼器跟51單片機連接如果需要測量出旋轉角度應該怎麼弄啊,謝謝
相對型旋轉編碼器:
將A、B路脈沖接入8051(或8031)單片機的脈沖輸入埠。用程序讀入脈沖的8種狀態(即A為高電平;A非為低電平;A↑為A的上跳沿;A↓為A的下跳沿。B 類似),並有8種組合,其中四種組合表示旋轉編碼器正轉,另四種組合表示旋轉編碼器反轉(具體略)。
根據旋轉編碼器每轉的編碼數,以及選擇的倍率(一般為4倍),計算脈沖當量(即每個脈沖對應的轉角--度/脈沖)。
單片機發出讀脈沖指令,計數器開始累加脈沖輸入個數,直到單片機發出停止指令。由程序計算出旋轉角度。
以上是由主程序讀脈沖,也可以中斷方式讀脈沖。具體程序處理略。
絕對型旋轉編碼器:
將旋轉編碼器的編碼信號通過並行口接入8051(或8031)單片機的數據輸入埠。
旋轉編碼器每轉對應n個編碼,計算每度角度對應m個編碼(即m=n/360)。
可通過中斷方法讀旋轉編碼器的編碼。
通過兩次讀的編碼,計算出旋轉角度。
程序需要注意兩點:旋轉方向的處理和模數的處理。具體程序處理略。
簡單敘述至此,希望能對你有所幫助。
8. 旋轉編碼器和單片機的接法問題。
接法:直接將A、B、Z對接到相應的 IO 口,同時
1、各加一個小電容濾波以增強抗干擾;
2、根據需要確定是否需用上拉電阻。
應用:編程單片機直接讀取相應埠值。
9. 旋轉編碼器連接單片機
歐姆龍的旋轉編碼器只有5V的有正反轉的,其他的24v是只有一個方向的。
10. 旋轉編碼器與單片機怎麼連,測角度用
旋轉編碼器有A、B兩個信號線,分別接單片機的兩個IO口
A先出現高電平表示正轉,反之A是低電平,B出現高電平,編碼器是反轉