全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2274
推到 Plurk!
推到 Facebook!

電流大小控制步進馬達之疑問

答題得分者是:aki
ryqrc418445
一般會員


發表:5
回覆:4
積分:1
註冊:2012-02-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-02-19 11:16:57 IP:218.164.xxx.xxx 訂閱
TRIG_WR        REG          P3.0              ;定義/WRITW(ADC0804)腳位
TRIG_INTR REG P3.1 ;定義/INTR(ADC0804)腳位
LARGE_LED REG P3.2 ;定義LARGE_LED(較大)輸出腳位
EQUAL_LED REG P3.3 ;定義EQUAL_LED(相等)輸出腳位
SMALL_LED REG P3.4 ;定義SMALL_LED(較小)輸出腳位
DATA_IN REG P1 ;定義DATA_IN(資料輸入)腳位
DATA_OUT REG P0 ;定義DATA_OUT(資料輸出)腳位
DSP_0 EQU 40H ;七段顯示器0"字形碼
DSP_H EQU 09H ;七段顯示器H"字形碼
DSP_L EQU 47H ;七段顯示器L"字形碼
SM_DATA DB FEH,FDH,FBH,F7H,0H ;正轉
SM1_DATA DB F7H,FBH,FDH,FEH,0H ;反轉
SP EQU 59
ORG 0H
;----- 啟動ADC0804開始載入輸入電壓V(X)轉換-----
CLR F0 ;令旗標F0=0"
START SETB TRIG_WR ;令ADC0804 IC之/WR=1"
CLR TRIG_WR ;令ADC0804 IC之/WR=0"
SETB TRIG_WR ;令ADC0804 IC之/WR=1"
WAIT JB TRIG_INTR,WAIT ;等待ADC0804 IC之/INTR=0"
;----- 當/INTR=0"讀入轉換完成的V(X)對應值值 -----
READ MOV A,DATA_IN ;把資料讀入ACC(累加器)
MOV B,A ;把資料保存在B(暫存器)
;----- 判斷輸入電壓V(X)是否大於3V -------
CLR C ;清除進位旗號C=0"
SUBB A,#153 ;ACC值減去153(對應於V(X)=3V值)
JNC LARGE ;當C=0"跳到LARGE路徑
;----- 判斷輸入電壓V(X)是否小於2V -------
MOV A,B ;由B(暫存器)重新拷貝原先的資料
CLR C ;清除進位旗號C=0"
SUBB A,#102 ;ACC值減去102(對應於V(X)=2V值)
JC SMALL ;當C=1"跳到SMALL路徑
;-----
MIDDLE CLR EQUAL_LED ;令黃色LED_ON
SETB LARGE_LED ;令紅色LED_OFF
SETB SMALL_LED ;令綠色LED_OFF
MOV DATA_OUT,#DSP_0 ;顯示0"
CLR F0 ;令旗標F0=0"
JMP BACK
;-----
LARGE SETB EQUAL_LED ;令黃色LED_OFF
CLR LARGE_LED ;令紅色LED_ON
SETB SMALL_LED ;令綠色LED_OFF
MOV DATA_OUT,#DSP_H ;顯示H"
JNB F0,NEXT_10 ;當旗標F0=0"則跳到NEXT_10
JMP BACK
;-------
NEXT_10
MOV R0,#20 ;計數20次
$1:MOV DPTR,#SM_DATA ;載入馬達正轉脈波資料
CALL ROTATE ;馬達正轉
DJNZ R0,$1 ;迴轉判斷
MOV R5,#50 ;延遲0.5秒
CALL DELAY
JMP BACK
;-------------
SMALL SETB EQUAL_LED ;令黃色LED_OFF
SETB LARGE_LED ;令紅色LED_OFF
CLR SMALL_LED ;令綠色LED_ON
MOV DATA_OUT,#DSP_L ;顯示L"
JNB F0,NEXT_20 ;當旗標F0=0"則跳到NEXT_20
JMP BACK
;--------------
NEXT_20
MOV R0,#20 ;計數20次
$2:MOV DPTR,#SM1_DATA ;載入馬達反轉脈波資料
CALL ROTATE ;馬達反轉
DJNZ R0,$2 ;迴圈判斷
MOV R5,#50 ;延遲0.5秒
CALL DELAY
JMP BACK
;-------------------------
ROTATE:
LOOP:
CLR A ;清除累加器
MOVC A,@A DPTR ;取出馬達旋轉控制信號
CJNE A,#0,0 ;判斷信號是否有效不為0
RET ;若為0則停止送出信號
OP:
MOV P2,A ;將控制信號由P2送出
MOV R5,#5
CALL DELAY ;延遲50ms
INC DPTR ;增加控制信號指標值
JMP LOOP ;在執行迴圈一次
BACK JMP START
;--------------------------
;DELAY R5*10 ms ;延遲副程式
DELAY: ;總延遲時間R5x10ms
MOV R6,#50
$1:MOV R7,#100
$2:DJNZ R7,$2
DJNZ R6,$1
DJNZ R5,DELAY
RET
;------
END
這是我要做電流大小控制步進馬達正反轉的程式
目前七段顯示跟電流大小偵測都正常
使用X8051來偵測程式,它所顯示的錯誤我都改掉了
但是步進馬達一直不轉動,不知道是我接錯還是程式出錯
我是P2輸出接到ULN2003---P2.0接1腳-P2.1接3腳-P2.2接2腳-P2.4接4腳
馬達A接16腳,A-接14腳,B接15腳,B-接13腳
------
??
aki
版主


發表:30
回覆:687
積分:753
註冊:2004-01-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-02-19 15:34:19 IP:111.243.xxx.xxx 訂閱


請把電路圖 post 上來吧!

===================引 用 ryqrc418445 文 章===================
TRIG_WR REG P3.0 ;定義/WRITW(ADC0804)腳位
TRIG_INTR REG P3.1 ;定義/INTR(ADC0804)腳位
LARGE_LED REG P3.2 ;定義LARGE_LED(較大)輸出腳位
EQUAL_LED REG P3.3 ;定義EQUAL_LED(相等)輸出腳位
SMALL_LED REG P3.4 ;定義SMALL_LED(較小)輸出腳位
DATA_IN REG P1 ;定義DATA_IN(資料輸入)腳位
DATA_OUT REG P0 ;定義DATA_OUT(資料輸出)腳位
DSP_0 EQU 40H ;七段顯示器0"字形碼
DSP_H EQU 09H ;七段顯示器H"字形碼
DSP_L EQU 47H ;七段顯示器L"字形碼
SM_DATA DB FEH,FDH,FBH,F7H,0H ;正轉
SM1_DATA DB F7H,FBH,FDH,FEH,0H ;反轉
SP EQU 59
ORG 0H
;----- 啟動ADC0804開始載入輸入電壓V(X)轉換-----
CLR F0 ;令旗標F0=0"
START SETB TRIG_WR ;令ADC0804 IC之/WR=1"
CLR TRIG_WR ;令ADC0804 IC之/WR=0"
SETB TRIG_WR ;令ADC0804 IC之/WR=1"
WAIT JB TRIG_INTR,WAIT ;等待ADC0804 IC之/INTR=0"
;----- 當/INTR=0"讀入轉換完成的V(X)對應值值 -----
READ MOV A,DATA_IN ;把資料讀入ACC(累加器)
MOV B,A ;把資料保存在B(暫存器)
;----- 判斷輸入電壓V(X)是否大於3V -------
CLR C ;清除進位旗號C=0"
SUBB A,#153 ;ACC值減去153(對應於V(X)=3V值)
JNC LARGE ;當C=0"跳到LARGE路徑
;----- 判斷輸入電壓V(X)是否小於2V -------
MOV A,B ;由B(暫存器)重新拷貝原先的資料
CLR C ;清除進位旗號C=0"
SUBB A,#102 ;ACC值減去102(對應於V(X)=2V值)
JC SMALL ;當C=1"跳到SMALL路徑
;-----
MIDDLE CLR EQUAL_LED ;令黃色LED_ON
SETB LARGE_LED ;令紅色LED_OFF
SETB SMALL_LED ;令綠色LED_OFF
MOV DATA_OUT,#DSP_0 ;顯示0"
CLR F0 ;令旗標F0=0"
JMP BACK
;-----
LARGE SETB EQUAL_LED ;令黃色LED_OFF
CLR LARGE_LED ;令紅色LED_ON
SETB SMALL_LED ;令綠色LED_OFF
MOV DATA_OUT,#DSP_H ;顯示H"
JNB F0,NEXT_10 ;當旗標F0=0"則跳到NEXT_10
JMP BACK
;-------
NEXT_10
MOV R0,#20 ;計數20次
$1:MOV DPTR,#SM_DATA ;載入馬達正轉脈波資料
CALL ROTATE ;馬達正轉
DJNZ R0,$1 ;迴轉判斷
MOV R5,#50 ;延遲0.5秒
CALL DELAY
JMP BACK
;-------------
SMALL SETB EQUAL_LED ;令黃色LED_OFF
SETB LARGE_LED ;令紅色LED_OFF
CLR SMALL_LED ;令綠色LED_ON
MOV DATA_OUT,#DSP_L ;顯示L"
JNB F0,NEXT_20 ;當旗標F0=0"則跳到NEXT_20
JMP BACK
;--------------
NEXT_20
MOV R0,#20 ;計數20次
$2:MOV DPTR,#SM1_DATA ;載入馬達反轉脈波資料
CALL ROTATE ;馬達反轉
DJNZ R0,$2 ;迴圈判斷
MOV R5,#50 ;延遲0.5秒
CALL DELAY
JMP BACK
;-------------------------
ROTATE:
LOOP:
CLR A ;清除累加器
MOVC A,@A DPTR ;取出馬達旋轉控制信號
CJNE A,#0,0 ;判斷信號是否有效不為0
RET ;若為0則停止送出信號
OP:
MOV P2,A ;將控制信號由P2送出
MOV R5,#5
CALL DELAY ;延遲50ms
INC DPTR ;增加控制信號指標值
JMP LOOP ;在執行迴圈一次
BACK JMP START
;--------------------------
;DELAY R5*10 ms ;延遲副程式
DELAY: ;總延遲時間R5x10ms
MOV R6,#50
$1:MOV R7,#100
$2:DJNZ R7,$2
DJNZ R6,$1
DJNZ R5,DELAY
RET
;------
END
這是我要做電流大小控制步進馬達正反轉的程式
目前七段顯示跟電流大小偵測都正常
使用X8051來偵測程式,它所顯示的錯誤我都改掉了
但是步進馬達一直不轉動,不知道是我接錯還是程式出錯
我是P2輸出接到ULN2003---P2.0接1腳-P2.1接3腳-P2.2接2腳-P2.4接4腳
馬達A接16腳,A-接14腳,B接15腳,B-接13腳
ryqrc418445
一般會員


發表:5
回覆:4
積分:1
註冊:2012-02-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-02-19 16:38:37 IP:218.164.xxx.xxx 訂閱
http://delphi.ktop.com.tw/download.php?download=upload/4f40b442c181e_圖.JPG
左手邊的ADC0804部分沒有問題了
現在有問題的是步進馬達的部分 測了幾次都不理我
馬達的接線也確定了
但是因為和子丟掉了 所以忘記是12V還是5V的
如果是12V的怎麼辦
5V的又要怎麼處理
打擾 謝謝
------
??
aki
版主


發表:30
回覆:687
積分:753
註冊:2004-01-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-02-21 15:52:04 IP:203.69.xxx.xxx 訂閱


(1)你先可以將 ADC 部分 and step motor 部分先分開來處理.
(2)你所提供的圖很不清楚,不過可以確定 Step motor 應該有畫錯!
(3)請先參閱很多 8051 的書, step motor 應該是標準範例題了,內有電路也有 source code,
照抄還錯,那就是你的問題.
(4)如果擔心 12V 加在 Step motor 上,先用 5V 驅動看看. 你有加 ULN2003還有不會太快燒毀!

以上

===================引 用 ryqrc418445 文 章===================
http://delphi.ktop.com.tw/download.php?download=upload/4f40b442c181e_圖.JPG
左手邊的ADC0804部分沒有問題了
現在有問題的是步進馬達的部分 測了幾次都不理我
馬達的接線也確定了
但是因為和子丟掉了 所以忘記是12V還是5V的
如果是12V的怎麼辦
5V的又要怎麼處理
打擾 謝謝
ryqrc418445
一般會員


發表:5
回覆:4
積分:1
註冊:2012-02-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-03-03 11:32:42 IP:218.164.xxx.xxx 訂閱

STEPS EQU 200
TIMES EQU 10
PHASE EQU 11H
OUT REG P1
;------------------------
ORG 0
START:
MOV A,#PHASE
CALL POSITION

LOOP1:
;左轉一圈
MOV R4, #STEPS
RL_1:
MOV OUT,A
MOV R5,#TIMES
CALL DELAY
RL A
DJNZ R4,RL_1

;右轉一圈
MOV R4,#STEPS
RR_1:
MOV OUT,A
MOV R5,#TIMES
CALL DELAY
RR A
DJNZ R4,RR_1

JMP LOOP1 ;<-加入此行
;------------------------
DELAY:
MOV R7,#100
D1:
MOV R6,#250
DJNZ R6,$
DJNZ R7,D1
DJNZ R5,DELAY
RET
;------------------------
POSITION:
MOV 30H,#4
MOV A,#PHASE
P_1:
MOV OUT,A
MOV R5,#TIMES
CALL DELAY
RL A
DJNZ 30H,P_1
RET
;------------------------
END
這些東西都是本討論區的資料!!
按程式及圖接上後馬達還是不動
馬達是四線兩相,因為還有兩隻接腳所以跑去問電子街的人
得知那兩隻腳為COM1,COM2所以就接上線接到輸入電壓
馬達編號KH42JM2B011,電壓5,V阻抗17歐姆,電流0.3A,精度1.8DEG
89S51,ULN2003訊號都有動作~用LED測試過了
卡在這裡好久了!!一直沒辦法往前走!!
------
??
aki
版主


發表:30
回覆:687
積分:753
註冊:2004-01-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2012-03-04 09:07:41 IP:220.137.xxx.xxx 訂閱
假設你的程式與接線都確認沒有錯,那回不會是提供電流太小?
你的馬達每像要 0.3A=300mA,你先提供 5V@1A 的功率看看會不會動?
ryqrc418445
一般會員


發表:5
回覆:4
積分:1
註冊:2012-02-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2012-03-08 21:01:54 IP:218.164.xxx.xxx 訂閱

===================引 用 aki 文 章===================
假設你的程式與接線都確認沒有錯,那回不會是提供電流太小?
你的馬達每像要 0.3A=300mA,你先提供 5V@1A 的功率看看會不會動?
版主大大!!我聽你的去買一條變壓器5V@1A
目前我在猜測是馬達的問題
但是我還是想請問您一些訊號跟電壓的問題
接ULN2003的IC輸入的電壓大約在3.8V-4V跳動這表示有頻率有訊號
但是輸出端的腳位沒有像這樣輸入端這樣跳動而且只有1V左右
問老師:他說這樣電壓一定不夠!!
我就跟她說有COM1.COM2來輸入驅動電壓←這樣的概念對嗎?

我還有式過接4050 FT5754的電路,整個測出來比ULN2003的輸出電壓還悲劇
IC輸給馬達的4隻腳電壓只有0.3V
這兩種接法都是書上的 這些接法最主要不是提升它的電壓嗎? 怎麼都DOWN下來了

------
??
aki
版主


發表:30
回覆:687
積分:753
註冊:2004-01-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2012-03-08 22:13:41 IP:222.126.xxx.xxx 訂閱

>
>目前我在猜測是馬達的問題 >但是我還是想請問您一些訊號跟電壓的問題 >接ULN2003的IC輸入的電壓大約在3.8V-4V跳動這表示有頻率有訊號 >但是輸出端的腳位沒有像這樣輸入端這樣跳動而且只有1V左右 >問老師:他說這樣電壓一定不夠!! >我就跟她說有COM1.COM2來輸入驅動電壓←這樣的概念對嗎? 你的描述與提供的電路應該長高出的一本 8051 的書的電路圖(10-25). 理論上,如果電路 ULN2003 的電源 Vcc = 5V 也同時接 COM1=COM2=5V, 當馬達未轉動時, Vcc 不到5V,或是馬達轉動時 Vcc 不到 5V 表示電源要提供5V@1A 以上. 這樣和你的老師說的是一樣,提供的電源功率不夠,也就是說馬達的消耗電流大,所以壓降變低了. >我還有式過接4050 FT5754的電路,整個測出來比ULN2003的輸出電壓還悲劇 >IC輸給馬達的4隻腳電壓只有0.3V >這兩種接法都是書上的 這些接法最主要不是提升它的電壓嗎? 怎麼都DOWN下來了 >


===================引 用 ryqrc418445 文 章===================

===================引 用 aki 文 章===================
假設你的程式與接線都確認沒有錯,那回不會是提供電流太小?
你的馬達每像要 0.3A=300mA,你先提供 5V@1A 的功率看看會不會動?
版主大大!!我聽你的去買一條變壓器5V@1A
目前我在猜測是馬達的問題
但是我還是想請問您一些訊號跟電壓的問題
接ULN2003的IC輸入的電壓大約在3.8V-4V跳動這表示有頻率有訊號
但是輸出端的腳位沒有像這樣輸入端這樣跳動而且只有1V左右
問老師:他說這樣電壓一定不夠!!
我就跟她說有COM1.COM2來輸入驅動電壓←這樣的概念對嗎?

我還有式過接4050 FT5754的電路,整個測出來比ULN2003的輸出電壓還悲劇
IC輸給馬達的4隻腳電壓只有0.3V
這兩種接法都是書上的 這些接法最主要不是提升它的電壓嗎? 怎麼都DOWN下來了

系統時間:2017-10-18 15:37:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!