Re: [問題] 8051控制步進馬達程式
※ 引述《typecommand (:))》之銘言:
: 我先承認這是學校程式,但不是請大家幫我寫,而是我題目看不太懂
: ,題意懂了,我就會寫了 (我是用Keil C去模擬port的訊號)
: 一)P1 pin 0-3 are input, pin 4-7 are output and are used to drive motor.
: (P1有可能同時做為input port和output port嗎? 我是把P2設為output port)
所有 port 都可以當 IO port
datasheet 有說明
: (1)if key pressed(port P1 pin 0) , the motor loop forward 2 step per second
: (是不是說在P1的pin 0打勾,就要讓馬達每秒鐘正轉2個半步)
我猜 打勾 這個應該是 keil C 裡面的IO模擬功能吧
如是,那你的解釋就沒錯
不過,我不曉得你的 半步 是多少
題意來說,是指 每秒 2個 full step (每秒兩步)
另,題目是說 key press 這個應該是指 按一下
不過 keil C 裡,打勾表邏輯訊號 HI(永遠) (勾 - HI ; 不勾 - Low)
這個算是 key down 表 按住
: (2)if key pressed(port P1 pin 1) , the motor loop backward 2 step per second.
: (同上)
雖然我知道你知道
但,還是說一下 這是 反轉
: (3)if switch on (port P1 pin 2==1) , using Full step control, else half step
: (是不是pin2 和 pin0同時打勾,就正轉全步)
: ( pin2 和 pin1 反 )
你的解釋沒錯,不過簡單來說,pin2只是用來控制
Full step 還是 half step 兩者間的切換
跟 pin0, pin1 沒有關係
: Step motor control:
: Full step
: step[0] = 1; { binary 0001 }
: step[1] = 4; { binary 0100 }
: step[2] = 2; { binary 0010 }
: step[3] = 8; { binary 1000 }
: (1 4 2 8 什麼意思,完全看不太懂)
: half-step control:
: step[0] = 1; { binary 0001 }
: step[1] = 5; { binary 0101 }
: step[2] = 4; { binary 0100 }
: step[3] = 6; { binary 0110 }
: step[4] = 2; { binary 0010 }
: step[5] = 10; { binary 1010 }
: step[6] = 8; { binary 1000 }
: step[7] = 9; { binary 1001 }
: (1 5 4 6 2 10 8 9 也完全看不懂)
我不曉得你的馬達有幾條線,簡單一點的
就是 四條線(四線二相),上述 binary 四個bit 剛好對應四條電線的電訊號
這樣不曉得, 1428..... ,了解否
不過,如果使用題目給定的 p4~7 當output
此值就不是1 4 2 8 or 1 5 4 .....
至於 啥是 full step 啥是 half step
簡單來說,馬達轉一圈如果需要 24 step 的話(每步18度)
full step - 每圈24步
half step - 每圈48個半步
(恩~很白癡的解釋)
另外 full step 有兩個模式 單相激磁
雙相激磁
題目所給的 為單相激磁
更詳細的,google一下 step motor
步進馬達
都有很多資料
: procedure onestep( direction );
: begin
: step := step + direction;
: if step > maxstep then step := 0
: else if step < 0 then step := maxstep;
: write( motor, steptab[step] );
: end;
: (上述的虛擬碼是不是在說,步進馬達不能一次轉動太多,不能超
: 過maxstep。另外direction有可能是負的嗎?否則幹嘛判斷step<0
: 的時候,step = maxstep,還是說direction負的表示反轉)
: 又臭又長,感謝大家努力的看完它,謝謝。
不完全是 你會錯意了
對照 題目給的 table (控制訊號)
以 full step 來說 有四個不同的控制訊號
也就是 上上的 step[i] i = 0~3
那個 你如果要馬達轉動的話
i 的順序為(正向) 0 1 2 3 0 1 2 3 0 1 2 3
對照下 上上述 i 則為 begin end 裡面的 step
step ~ steptab
maxstep 則為 3
direction 則是方向 +1 表 正向(正轉)
0 表 停止
-1 表 反向(反轉)
------
我最討厭這種前後變數名稱不一的題目了 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.220.183
※ 編輯: FancyWing 來自: 140.115.220.183 (10/20 16:46)
推
10/20 18:19, , 1F
10/20 18:19, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章