第1步:材料
注意: 材料以星號列出的內容可以替換,具體取決于您可能提供的內容。本教程中用于該類別的組件列在括號中。請注意,替換可能會使本指南的部分內容無關(即如果使用不同的微控制器,則部分代碼可能無效)。
軟件:
MPLAB X IDE(免費提供:http://www.microchip.com/pagehandler/zh-cn/family 。..
MPLAB XC8(免費提供:http://www.microchip.com/pagehandler/en_us/devtoo 。..
硬件:
香蕉電纜
面包板
電線
USB 2.0電纜[包含在MPLAB ICD 3中]
PIC單片機*(PIC18F4520) - 務必使用 DIP 微控制器,以便它可以放入面包板。
帶旋轉編碼器的設備*(Pololu項目#2269)
10歐姆電阻器
RJ-11到面包板適配器(DigiKey#H11394-ND)
示波器探頭x 2(可選)
萬用表(可選) - 有助于調試問題
步驟2:電源設置
獲得必要的設備后,我們的下一個任務是設置面包板并為PIC微控制器(MCU)供電。這意味著是時候連接直流電源了。
電源: 正如您將在此步驟中所示的Acopian直流電源的圖片中看到的那樣每個電源通道都有三個彩色連接器,香蕉電纜可以連接到這些連接器上。就本教程而言,我們需要電源提供+ 5V和+ 0V(接地)。為了提供+ 5V和+ 0V,將電源的負極和接地端子連接在一起(圖中提供的綠色和黑色端子)。然后,將香蕉電纜連接到將要連接到面包板的正極(紅色)端子和接地(綠色)端子上。在面包板上找到的這些端子在步驟3中顯示為連接的香蕉電纜。
步驟3:面包板設置
面包板: 是時候設置面包板了。經過我自己的許多布線災難后,我建議你保持線顏色一致。在本教程中,您將看到紅色的+ 5V電線和綠色的+ 0V電線,以及RJ-11到面包板連接器(已布線)的電線的 exception 由一家公司)。另請注意,在面包板的端子排上設置+ 5V和+ 0V會很有幫助。
注意:上面提供的圖片顯示了下面提到的相同連接和幫助解釋下面的說明。
引腳號: 確定連接+ 5V和+ 0V(接地)的位置就像打開此鏈接一樣簡單(包含數據表)并向下滾動到第四頁:http://microchip.com/downloads/en/DeviceDoc/39631E 。..。在那里你會發現需要進行以下連接:
Pin 11至+ 5V
Pin 12至+ 0V
Pin 31至+ 0V
Pin 32至+ 5V
Pin 1至 一側 100歐姆電阻(數據表中未提及)
此外,需要使用 RJ-11到面包板適配器(以下簡稱RJ-11)進行以下連接適配器)。與該步驟相關的適配器的圖片還顯示了要連接的對象。
RJ-11適配器黃線:至+ 5V
RJ-11適配器藍線:至 10Ohm電阻器
RJ-11適配器:綠線:到+ 0V
RJ-11適配器紅色線:到插針40
RJ-11適配器黑線:到插針39
RJ-11適配器白線是 不 已連接
作為經驗法則您可以記住,集成電路芯片始于引腳1位于左上角,然后向下移動左側,然后向上備份編號最高的引腳(右上角)。要從下往上看,通常在芯片的頂部有一個凹痕或圓點。
還要注意 VDD = + 5V 和 VSS = + 0V (地面)
第4步:編碼器設置
接下來,將帶有編碼器的電動機添加到電路中,并連接到微控制器。如果您訂購了材料頁面上列出的電動機,則它帶有6針適配器,可用于將編碼器插入面包板(參見圖1)。
電路連接:電動機&編碼器需要下面列出的連接。包括三張圖片,每張圖片在電路上都有不同的視圖,以幫助進行編碼器連接過程。
紅線:至+ 5V
黑線:至+ 0V
綠線:至+ 0V
藍線:至+ 5V
黃線:至Pin 33(微控制器上)
白線:至Pin 34(微控制器上)
您可能希望連接紅線 僅在測試 電機時,因為當前配置會使電機不斷運轉。或者,可以使用電機驅動器來打開和關閉電機(本教程未介紹)。
步驟5:編程設置
在電路調試器中:要完成此項目的硬件設置,請使用RJ-11電纜將ICD3連接到電路。最后,使用USB 2.0電纜將ICD3連接到計算機。
MPLAB X配置:至此,我們準備打開MPLAB X并設置我們的項目。請參閱以下步驟:
文件》新建項目》獨立項目
選擇設備:PIC18F4520
選擇硬件工具:ICD3
選擇編譯器:XC8
名稱并保存您的項目
注意: :如果您在使用這些說明時遇到任何困難,請從起始頁中選擇“快速入門”,這將打開一個網頁,該網頁將指導您完成與圖像相同的步驟。為了本項目的目的,我們只關注該頁面上的前五個步驟。
第6步:編程
此時,我們將專門使用MPLAB X IDE。要開始使用,請注意MPLAB IDE窗口左側標題為 Projects 的面板。在此面板中,創建代碼:
右鍵單擊 項目下方列出的“源文件”文件夾》新建》 C主文件
無需任何操作根據需要命名(‘Main’很好)現在您將看到MPLAB X創建了一個 主文件 ,在中心面板中可見。
代碼: 就本教程而言,我將提供必要的代碼,您可以將其復制并粘貼到該中心窗口中(刪除文件中的所有其他文本之后)。讓您了解代碼的作用,我在下面簡要介紹了實際代碼本身的評論(粘貼在下面)
概述: 對PIC單片機進行編程的代碼有幾個不同的部分,概述如下。
定義語句: 定義語句允許程序員使用可能對計算機有意義的單詞。例如,我們可以將單詞OFF定義為二進制“0”。因此,當我們看到“ off”一詞使代碼更易于理解時,計算機將讀取二進制“ 0”。
Include語句: Include語句告訴編譯器執行以下操作:包括各種頭文件。這些外部文件可能包含定義輸入/輸出函數(stdlib.h)或各種標準C函數(stdio.h)等的文件。
編譯指示: Pragma用于設置微控制器上的配置位,用于控制振蕩器選擇,代碼保護等方面。請選擇窗口》 PIC存儲器視圖》配置位
《隨意檢查配置位。 strong》函數:函數是執行特定任務的程序部分。主要功能是程序開始執行。
程序:
/***************** ************************************************** *
如何編程PIC和讀取編碼器程序
最近修訂:1/3/14
作者:Carson Miller
撰寫:PIC18F4525(當前版本)
**** ************************************************** ***************/
#define INPUT 1
#define OUTPUT 0
#define _XTAL_FREQ 4000000//由XC8使用delay_ms(x)宏
//PIC18F25K22配置位設置
#include //包括PIC硬件映射
#include“ GenericTypeDefs.h”//包括標準變量類型
//#pragma config語句應位于
//使用項目枚舉代替#define進行ON和OFF。 CONFIG1H
#pragma config OSC = INTIO7//振蕩器選擇位(內部振蕩器模塊,RA6的CLKOUT功能) ,RA7上的端口功能)
#pragma config FCMEN = OFF//故障保護時鐘監視器使能位(故障保護時鐘監視器禁用)
#pragma config IESO = OFF//內部/外部振蕩器切換位(禁用振蕩器切換模式)
//CONFIG2L
#pragma config PWRT = OFF//上電定時器使能位(PWRT禁止)
#pragma config BOREN = SBORDIS//欠壓復位使能位(僅在硬件中使能欠壓復位(SBOREN禁用))
#pragma config BORV = 3//欠壓復位電壓位(最小設置)
//CONFIG2H
#pragma config WDT = OFF//看門狗定時器使能位(WDT使能)
#pragma config WDTPS = 32768//看門狗定時器后置選擇位(1:32768)
//CONFIG3H
#pragma config CCP2MX = PORTC//CCP2 MUX位(CCP2輸入/輸出與RC1復用)
#pragma config PBADEN = ON//PORTB A/D使能位(PORTB 《4:0》引腳在復位時配置為模擬輸入通道)
#pragma config LPT1OSC = OFF//低功耗Timer1振蕩器使能位(Timer1配置為更高功率運行)
#pragma config MCLRE = ON//MCLR Pi n使能位(MCLR引腳使能; RE3輸入引腳已禁用)
//CONFIG4L
#pragma config STVREN = ON//堆棧滿/下溢復位使能位(堆棧滿/下溢將導致復位)
#pragma config LVP = OFF//單 - 供應ICSP使能位(單電源ICSP使能)
#pragma config XINST = OFF//擴展指令集使能位(指令集擴展和索引尋址模式禁用(傳統模式))
//CONFIG5L
#pragma config CP0 = OFF//代碼保護位(塊0(000800-003FFFh)未受代碼保護)
#pragma config CP1 = OFF//代碼保護位(塊1(004000-007FFFh)不代碼 -
#pragma config CP2 = OFF//代碼保護位(塊2(008000-00BFFFh)沒有代碼保護)
//CONFIG5H
#pragma config CPB = OFF//引導塊代碼保護位(引導塊(000000-0007FFh)沒有代碼保護)
#pragma config CPD = OFF//數據EEPROM代碼保護位(數據EEPROM沒有代碼保護)
//CONFIG6L
#pragma config WRT0 = OFF//寫保護位(塊0(000800) -003FFFh)沒有寫保護)
#pragma config WRT1 = OFF//寫保護位(塊1(004000-007FFFh)沒有寫保護)
#pragma config WRT2 = OFF//寫保護位(塊2(008000-00BFFFh)沒有寫保護)
//CONFIG6H
#pragma config WRTC = OFF//配置寄存器寫保護位(配置寄存器(300000-3000FFh)沒有寫保護)
#pragma config WRTB = OFF//引導塊寫保護位(引導塊(000000-0007FFh)未寫保護)
#pragma config WRTD = OFF//數據EEPROM寫保護位(數據EEPROM未寫保護)
//CONFIG7L
#pragma config EBTR0 = OFF//表讀保護位(塊0(000800-003FFFh)不受其他塊中執行的表讀操作的保護)
#pragma config EBTR1 = OFF//表讀保護位(塊1(004000-007FFFh)不受其他塊中執行的表讀操作的保護)
#pragma config EBTR2 = OFF//表讀保護位(塊2(008000-00BFFFh)未受保護
//CONFIG7H
#pragma config EBTRB = OFF//引導塊表讀取保護位(引導塊(000000-0007FFh)不受其他塊中執行的表讀取的保護)
》//虛擬變量設置
UINT距離= 0;
CHAR方向= 0;
CHAR錯誤= 0;
void configure(void)
{
//ADC Setup
ADCON1bits.PCFG = 1111;//關閉所有模擬輸入(參見數據表第224頁)
//振蕩器設置
OSCCONbits.IRCF = 110;//將振蕩器設置為4MHz
//中斷設置
INTCONbits.GIE = 1;//啟用所有未屏蔽或高優先級的中斷(取決于IPEN)
INTCONbits.PEIE = 1;//啟用所有未屏蔽的外設中斷或低優先級中斷(取決于IPEN)
INTCONbits.INT0IF = 0;//清除中斷0標志位(必須在啟用中斷之前發生)
INTCONbits.INT0IE = 1;//啟用INT0外部中斷
INTCON2bits.INTEDG0 = 1;//將外部中斷0設置為在上升沿中斷
RCONbits.IPEN = 0;//禁用中斷優先級
TRISBbits.TRISB0 = INPUT;//將INT0設置為輸入
TRISBbits.TRISB1 = INPUT;//將INT1設置為輸入
}
void main()
{
configure();
while(1)
{
//Program Loop
}
}
//主中斷服務程序(ISR)
void中斷ISR()
{
//檢查它是否是中斷0
(INTCONbits.INT0IF = = 1)
{
distance ++;
INTCONbits.INT0IF = 0;//清除中斷標志
錯誤= 1;
}
步驟7:運行程序和調試
使用MPLABX IDE的注意事項: 添加該程序后,您可以按以下方式運行該程序調試項目按鈕。調試項目按鈕看起來像一段破碎的代碼,旁邊有一個播放按鈕,位于上方工具欄(文件工具欄下方)。按下此按鈕后,您將可以使用上方工具欄中的按鈕暫停和播放程序。
檢查編碼器值: 要檢查編碼器值,必須在MPLAB IDE窗口左側的面板中添加變量“watch”。只需單擊“輸入新手表”的位置,然后鍵入方向或距離。然后,您將可以通過該窗口跟蹤這些變量。請注意,必須暫停程序才能看到變量監視中的值發生變化。此外,如果變量監視中的值以不正確的格式顯示,請右鍵單擊不正確的值并將鼠標懸停在“顯示值列為”上,以便您可以選擇正確的格式。
項目完成!
如果你已經到了最后并且沒有工作項目,請不要擔心。有許多事情要嘗試:
萬用表:檢查以確保您的微控制器和電機/編碼器在適當的位置接收+ 5V和+ 0V(接地)
示波器:檢查以確保編碼器正在發送與該步驟相關的示波器圖像中所示的信號。編碼器應該從黃色和白色線中放出兩個90度異相的方波。
MPLAB X:檢查以確保您的微控制器設置正確,確保您的特殊功能寄存器具有適當的二進制值(在步驟6的代碼中設置)。要在調試會話期間暫停后,要查看特殊功能寄存器,請轉到窗口》 PIC內存視圖》 SFR。從那里你可以檢查INT0(引腳33)的引腳是否設置為輸入,例如,將光標懸停在TRISB寄存器上。
責任編輯:wv
-
單片機
+關注
關注
6067文章
44989瀏覽量
650349 -
編碼器
+關注
關注
45文章
3796瀏覽量
138012 -
編程
+關注
關注
88文章
3689瀏覽量
95238
發布評論請先 登錄
編碼器常見的故障詳細說明
軸編碼器與無軸承編碼器,到底如何選擇?

評論