高速讀取正交編碼器信號(例如,1MHz,或1m/s,分辨率為1μm)通常需要專用硬件。本設計方案展示了一個簡單的方案,僅使用ATtiny2313A AVR微控制器即可實現(xiàn)此功能。當然,微控制器也可以通過串行接口連接到其他設備,或者測量位置可以顯示在本地LCD上,可以連接到端口PB。此外,可以添加一個或多個LED來指示錯誤情況。
圖1用ATtiny2313A讀取正交信號; Z索引信號是可選的。
在這個實現(xiàn)中,中斷處理程序非常重要。它在不到1μs的時間內讀取輸入信號A和B.差分信號AP/N和BP/N由SN75157接收器處理,如果編碼器輸出邏輯電平信號,則不需要。
處理器配置為端口PD引腳的任何更改產生中斷。該中斷是中斷向量表中的最后一個,因此
可以省去跳轉指令,從而減少2-3個時鐘(100-150ns)的中斷服務時間。
先前和當前信號之間的異或操作( A 舊 ? B new或 A new ? B old )確定當前位置是否從前一個增加或減少。 old 和 B old 是改變狀態(tài)前的A和B信號, A new 和 B new 是中斷后的值。中斷處理程序位于 PCIsubroutine1.txt 文件中。
中斷處理程序的執(zhí)行時間為800-850ns(16-17個時鐘)。為了最大限度地縮短ISR的執(zhí)行時間,一些寄存器專門用于它,主程序不能使用它:
R10保存SREG并測試激活新的中斷
R11和R12用于新舊狀態(tài)
R24和R25用于位置傳感器
要計算當前位置,需要只有一個時鐘周期。缺點是該位置只能有65536個值。您可以使用3或4個字節(jié)確定位置,在這種情況下,子程序執(zhí)行時間從添加必要指令后增加到18-19個周期(使用寄存器對R24,R26,R28或R30)。
中斷處理程序在退出當前ISR之前檢查新中斷。通過在SREG中設置位T來指示該情況。執(zhí)行此檢查,執(zhí)行時間增加3個周期。我們使用RB6029(每轉4,000個脈沖)以最大速度測試子程序的操作,沒有檢測到錯誤。
在激活中斷之前,PCIE2值必須放在寄存器R12中(讀取PIND寄存器)在啟用PCINT2中斷并設置SREG -I標志之前。
如果要使用Z索引信號,該位置將存儲在三個寄存器中,為1,024,000個值? (4,000次計數(shù)/旋轉; 256次旋轉)。讀取數(shù)據(jù)的中斷處理程序更復雜,如 PCIsubroutine2.txt 中所示。長度為19個周期,或當Z激活時當前位置遞增時為20個周期。
如果Z索引處于激活狀態(tài),我們清除角度位置,增加轉數(shù),并檢查先前的角度價值是3,999。在該子程序中,檢測到三個錯誤:一個用于重疊的新中斷(如前一種情況),另外兩個與Z索引相關(檢查先前角位置的正確性)。錯誤計數(shù)器寄存器rerr1,rerr2和rerr3應由用戶定義。要初始化系統(tǒng),請運行 InitIndexZ.txt ,等待Z處于活動狀態(tài)。
-
微控制器
+關注
關注
48文章
7660瀏覽量
152186 -
PCB打樣
+關注
關注
17文章
2968瀏覽量
21854 -
華強PCB
+關注
關注
8文章
1831瀏覽量
27971 -
華強pcb線路板打樣
+關注
關注
5文章
14629瀏覽量
43192
發(fā)布評論請先 登錄
相關推薦
如何利用STM32的正交編碼器模式讀取編碼器的角度數(shù)據(jù)和速度?
一個基于ATtiny13A/5xIO的微型微控制器PCB
attiny2313中文資料pdf
attiny2313 pdf
Atmel推出快閃AVR微控制器封裝產品ATtiny4/5/
ATtiny2313 AVR增強型RISC架構的低功耗CMOS 8位微控制器的資料概述
![<b class='flag-5'>ATtiny2313</b> <b class='flag-5'>AVR</b>增強型RISC架構的低功耗CMOS 8位<b class='flag-5'>微控制器</b>的資料概述](https://file.elecfans.com/web1/M00/6C/37/o4YBAFvqeVqABlCrAACn5SUwxx0081.png)
ATtiny2313低功耗8位CMOS微控制器數(shù)據(jù)手冊免費下載
![<b class='flag-5'>ATtiny2313</b>低功耗8位CMOS<b class='flag-5'>微控制器</b>數(shù)據(jù)手冊免費下載](https://file.elecfans.com/web1/M00/7E/48/pIYBAFwPEf-AEOitAAB67NGQ1SU055.png)
評論