看板 ASM 關於我們 聯絡資訊
這個問題困擾我很久了... 我想利用89S52控制我的無刷直流馬達 程式碼成功的compiler過 也能燒到8051裡了 電路圖也蠻簡單的 我也很確定不會接錯 可是 為什麼我接到直流馬達時 卻始終聽到錯誤的聲音「滴、滴、滴」 而我同學卻說一樣的程式碼 他的馬達就能動 程式的設計是這樣的 首先 在馬達的自檢階段 我的頻寬是1000 接著 我按P2的按鈕 開始增加其頻寬 最後達到2000 馬達開始運轉 而我現在馬達 只有開機聲 但是沒有自檢的聲音 這個問題讓我快要抓狂了QQ 我實在不知道是哪邊出了錯 希望能有大大給我一些建議 感謝 (以下附上我的程式碼) #include "reg51.h" //for 8051 12MHz //range 1100~2100 //0x44c~0x834 12bit int pwm=1100; int base=20000; int speed(int motor,int c); void wait(); void main () { P1=0x00; P2=0xff; IE=0x8A; TH1=0xb1; TL1=0xe0; TH0=(65536-pwm)/256; TL0=(65536-pwm)%256; TMOD=0x11; TCON=0x50; while(1) { if(P2==0x7f) { pwm=speed(pwm,1); wait(); P2=0xff; }else if(P2==0xbf) { pwm=speed(pwm,0); wait(); P2=0xff; } } } void low(void) interrupt 1// time0 { P1=0x00; TR0=0; TH0=(65536-pwm)/256; TL0=(65536-pwm)%256; } void high(void) interrupt 3// time1 { TH1=0xb1; TL1=0xe0; P1=0xff; TR0=1; } int speed(int motor,int c) { if(motor<2100 && c==1) motor=motor+50; else if(motor>1100 && c==0) motor=motor-50; return motor; } void wait() { while(P2!=0xff) {P2=0xff;} } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.5.9
cwl751005:用的也是同一個硬體嗎?另外同學也是89S52? 08/03 04:16
cwl751005:題外話一下= =,我最近有時出現同一程式碼(C51)用C51系 08/03 04:19
cwl751005:列跟S51系列會有不同問題出現 08/03 04:20
cwl751005:原PO可以先作硬體排除再對程式碼下手,同個程式應該不會 08/03 04:22
cwl751005:有太大問題(除非燒錄中出錯= =+) 08/03 04:23
恩恩 我同學也是用89S52 您說由硬體排除,我昨天也試過將所有的零件都換新的(89S52,電容,振盪器等) 除了電變與無刷馬達我沒換外 其餘的都換過了 所以我在想會不會是程式碼中有我沒法發現的BUG存在 謝謝你的回覆 ※ 編輯: alexanjou 來自: 36.239.250.217 (08/03 10:53)
ruemann:有示波器可以看一下你的PWM有沒有照預期的速度變化嗎? 08/03 13:19
damody:馬達的回授有偏差嗎? 示波器看沒問題就是馬達的問題了。 08/03 16:45
alexanjou:恩恩 好 周一去試試看 08/03 23:56
還是說我的code本身有問題是我沒注意到的? 有高手可以撥冗幫我檢查一下嗎? 感激不盡> <" ※ 編輯: alexanjou 來自: 36.239.250.217 (08/04 20:32)
derek5566:可能是馬達懷掉 ?當初我也是馬達不動,拉了示波器看波 08/04 21:30
derek5566:形才確定code沒錯,結果是馬達壞了 08/04 21:30
我剛已經有接示波器了 有出現預期要出現的圖形(即按按鈕會有變化) 但 如果我接上馬達的訊號線 示波器上的圖形就會跑掉 馬達也無法如期運轉 馬達的電源可以用電供12v 還是一定給用電池? 我目前覺得是馬達或是電變故障的可能比較大~~ ※ 編輯: alexanjou 來自: 140.116.179.155 (08/05 15:44)