有關於步進馬達的問題 |
答題得分者是:阿信
|
極光
初階會員 發表:32 回覆:96 積分:40 註冊:2005-01-16 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
延遲時間一定要加,不然馬達會鎖死.
你這應該是六線式的步進馬達,這樣寫是單相驅動法. ------------------------------------
生命的目的,在幻化出多采多姿的組合。
生活的意義,在捕捉住稍縱即逝的感動。
------------------------------------
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
jammar
一般會員 發表:2 回覆:18 積分:4 註冊:2003-10-26 發送簡訊給我 |
|
極光
初階會員 發表:32 回覆:96 積分:40 註冊:2005-01-16 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
步進馬達有它的啟動速度跟最高速度
還有加減速曲線 每顆馬達都不一樣
這些可以在規格書上找到
如果沒有規格書 自己試著找出來也行 要做加減速 程式不能這樣寫
要用計時器中斷 有好幾種方式 提供一種最簡單的給你參考 定一個Timebase 比如1mS
計時器中斷每1mS觸發一次
主程式會依外部狀態改變
一個速度值 命名為Speed
Speed介於0~9
一個方向值 命名為fg_Dir
1:正轉 0:反轉 計時器中斷
使用一個計數器 命名為GoGo
初值為120 TMR_INT:
If (fg_Dir==1) {// 要正轉
GoGo =Speed;
if (GoGo>=220) {
馬達進一步;
GoGo-=100;
}
}
else { // 要反轉
GoGo-=Speed;
if (GoGo<=20) {
馬達退一步;
GoGo =100;
}
}
這樣的程式馬達最快10mS走一步
每秒100步 速度有10速
當然修改可以調的更快 分更多速 主程式每隔0.5秒 把Speed加1
加到10就是最高速
要停止反過來每隔0.5秒 把Speed減1
減到零就停了 直流馬達是可以快速減速的
就是加個負相電壓而已
許多電動輪椅 電動代步車
都是用直流馬達的 只是要控制的好並不簡單 要能夠偵測速度才行 直流馬達公式
Vmotor=E I*r
Vmotor:施加在馬達上的電壓
E :馬達反電動勢(就是速度)
I :馬達電流
r :馬達內阻 由以上公式可知
要偵測速度
先要知道電壓 電流跟內阻
才能計算得到 而且要考慮負數
也就是負相電壓 負相電流 至於玩具馬達
嗯 一分錢一分貨
除非你只是玩玩而已 加油吧^^
|
極光
初階會員 發表:32 回覆:96 積分:40 註冊:2005-01-16 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
|
wu-eric
中階會員 發表:14 回覆:82 積分:64 註冊:2004-03-17 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |