一、實驗目的和要求
了解步進電機的工作原理,學習用微控制器的步進電機控制系統的硬體設計方法,掌握定時器和中斷系統的應用,熟悉微控制器應用系統的設計與除錯方法。
二、實驗裝置
1.微控制器測控實驗系統
2.步進電機控制實驗模組
3.keil開發環境
三、實驗內容
1.編制mcs-51程式使步進電機按照規定的轉速和方向進行旋轉,並將已轉動的步數顯示在數碼管上。
2.步進電機的轉速分為兩檔,當按下s1開關時,進行快速旋轉,速度為60轉/分。當鬆開開關時,進行慢速旋轉,速度為10轉/分。當按下s2開關時,按照順時針旋轉;當鬆開 時,按照逆時針旋轉。
3.本程式要求使用定時器中斷來實現,不准使用程式延時的方式。
四、實驗步驟
1.預習 參考輔助材料,學習c51程式語言使用和步進電機原理。
2.簡單程式錄入和除錯
本程式需要使用定時器定時,並使用中斷來同步。
中斷程式的典型例子如下:
格式:void 函式名()interrupt 中斷號 using 工作組
中斷服務程式內容
注意:中斷不能返回任何值,所以前面是 void 後面是函式名,名字可以自己起,但不要與c語言的關鍵字相同;中斷函式不帶任何引數,所以 函式名後面的()內是 空的,中 斷號是指微控制器的幾個中斷源的序號。這個序號是微控制器識別不同中斷的唯一標誌。所以一定要寫正確。 後面的using 工作組 是指這個這個中斷使用微控制器記憶體中 4 個工作寄 存器的哪一組,c51 編譯後會自動分配工作組,因此最後這句話我們通常省略不寫。
c51 中斷寫法例項
void t1-time() interrupt 3
th1=(65536-50000)/256;
tl1=(65536-50000)%256;
上面的意思是定時器 1 的中斷服務程式,定時器 1 的中斷服務序號是 3 ,因此我們要寫成 interrupt 3 ,服務程式的內容是給 兩個初值暫存器裝入新值。。
寫中斷前的準備:
2.1. tmod 賦值 確定工作方式。t0 還是t1 的工作方式。
2.2.計算初值 裝入 th0 tl0 或者 th1 tl1
2.3.中斷方式時 ,對 ie 賦值,開放中斷。
2.4. 使 tr0 和 tr1 置位,啟動定時器/計數器 定時/計數。
3.程式除錯及現象觀測
用單步、斷點、連續方式除錯程式,觀察狀態指示燈及電機狀態,檢查執行結果。如果需要,可以將四個輸出訊號的狀態同時輸出到p0口的某些位上,便於觀察。
五、實驗原理
1. 定時器中斷
使用定時器時,首先應由外部條件得到要定時的時間長度t,如本實驗中,就是根據要求的速度計算出的每一步之間的間隔。然後選擇適當的定時器工作方式,去計算想要設定 的計數器初值s,使用如下方程。
(2定時器最大位數 - s)× 定時週期 =t (2的多少次方)
定時週期 = 12/cpu晶振頻率
注意#1. 得到的s需要分成高8位和低8位,分別放入計數器thx和tlx中(x為0或1)。如果s為負數,說明需要的定時時間太長,即使定時器的最大時間也無法滿足要求。這 種情況下,需要加入軟體迴圈才能實現。我們可以將需要的定時時間分成n份,利用定時器達到t/n的時間長度,然後在定時器處理程式中,累計某一變數,如果到達 n,說明總的時間t已經達到。
#2.要想使用定時器中斷,除了上面的定時器初值設定外,還需要將其他相關的特殊功能暫存器也都設定好。如果使用方式0和方式1,不要忘記在計數結束後重新恢復計數器初 值。
2.我們使用的微控制器系統的頻率是12m;步進電機轉動一周需要24步。
本步進電機實驗板,使用fan8200作為驅動晶元。cpu通過如下4個引腳與fan8200相連。
cpufan8200
p1.1
ce1p1.4
ce2p3.2
in1p1.0
in2本實驗使用簡單的雙四拍工作模式即可,這也是fan8200比較方便的工作方式。只要將ce1和ce2分別置為高,然後in1和in2按照預定的脈衝輸出,即01->11->10->00- >01這個迴圈構成乙個方向旋轉的輸出脈衝,將此序列翻轉,就是相反方向的輸出脈衝。
六、思考題
1. 如採用單四拍工作模式,每次步進角度是多少,程式要如何修改?
2. 如採用單雙八拍工作模式,每次步進角度是多少,程式要如何修改?
3. 步進電機的轉速取決於那些因素?有沒有上、下限?
4. 如何改變步進電機的轉向?
5. 步進電機有那些規格引數,如何根據需要選擇型號?
以下是匯程式設計序:
org 0000h ;復位起始位址
ljmp start
org 000bh ;中間位址保留給中斷向量表
ljmp eint0 ;定時器0中斷程式入口位址
org 0040h ;程式實際起始位址
start:
p4 equ 0c0h
p4sw equ 0bbh
clk equ p4.4 ;時鐘線
dat equ p4.5 ;資料線
sw equ p3.6
mov p4sw,#70h
mov dptr,#tab ;s = 23869 --5d3e
lp:mov r3,#0 ;計數
mov r4,#0
mov r5,#0
i1: mov tmod,#01h ; 選擇工作方式,即對tmod 賦初值。t0都工作在方式1,16位的計數器 gate(gate -門控位,控制定時器的兩種啟動方式,)等於0,不受外部控制
mov ie,#82h ;全域性中斷,t0中斷允許 中斷控制字;直接對中斷允許暫存器ie 和 優先順序暫存器 ip 設定
;orl ip,#2h ;邏輯或,t0中斷優先順序高
setb p1.1 ;ce1置高
setb p1.4 ;ce2置高
next:
jb p3.7,opp ;如果p3.7等於1則轉移
mov r0,#00101101b ;按下,順時針
mov 20h,r0
ljmp ss1
opp: mov r0,#01111000b ;鬆開,逆時針
mov 20h,r0
ss1:
jb p3.6,spd
mov r2,#0h ;按下,快速 ;23870 5d3e
ljmp l0
spd: mov r2,#1h ;鬆開,慢速
l0: mov r1,#4
mov r0,20h
l1: mov a,r0
rlc a ;迴圈左移操作
mov p3.2,c ;in1
rlc a
mov p1.0,c ;in2
mov r0,a
lcall num
lcall time
djnz r1,l1
ljmp next
time:
cjne r2,#1,quick
mov r6,#6 ;慢速 ;分6次來記時
tim2: mov th0,#5dh
mov tl0,#3eh
setb tr0
mov r7,#0h
tim3: cjne r7,#1h,tim3
djnz r6,tim2
ljmp out
quick: mov th0,#5dh ;定時器0啟動;;快速,60轉/分
mov tl0,#3eh
setb tr0
mov r7,#0h
tim1: cjne r7,#1h,tim1
out:
ret
eint0:
mov r7,#1
reti
num: ;顯示已轉動的步數,每轉動一次顯示乙個數
s0: mov a,r3
call exp
mov a,r4
call exp
mov a,r5
call exp
cjne r3,#10,s1
mov r3,#0
cjne r4,#10,s2
mov r4,#0
cjne r5,#10,s3
mov r5,#0
s1: inc r3
ljmp stop
s2: inc r4
ljmp stop
s3: inc r5
ljmp stop
stop:
retexp:
mov 21h,r0
movc a,@a+dptr
mov r0,#8
cly: clr clk ;p4.4 ;時鐘線低電平
rlc a ;累加器a 的邏輯操作指令
mov dat,c
setb clk ;p4.4 ;時鐘線高電平
djnz r0,cly
mov r0,21h
rettab:
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
end
28BYJ 48步進電機原理
28byj 48 是 4 相永磁式減速步進電機,其外觀如圖 9 3 所示 圖 9 3 步進電機外觀 我們先來解釋 4 相永磁式 的概念,28byj 48 的內部結構示意圖 9 4 所示。先看裡圈,它上面有 6 個齒,分別標註為 0 5,這個叫做轉子,顧名思義,它是要轉動的,轉子的每個齒上都帶有永久的...
電機控制6 步進電機模型及控制 3
步進電機的控制從控制形式上看,有開環控制和閉環控制。開環控制 步進電機系統的主要特點是能實現精確位移 精確定位,且無積累誤差。這是因為步進電機的運動受輸入脈衝控制,其位移是斷續的,總的位移量嚴格地等於輸入的指令脈衝數或其平均轉速嚴格正比於輸入指令脈衝的頻率 若能準確控制輸入指令脈衝的數量或頻率,就能...
電機控制7 步進電機模型及控制 4
分三個文件。1.parameter.h 檔案 ifndef parameter h define parameter h define arr 10 define psc 84 define length 100 define fre max 60000 define fre min 1000 de...