Robofun 機器人論壇

標題: ssc(8通道pwm產生器950613)by marbol [打印本頁]

作者: ayu    時間: 2006-12-6 10:07
標題: ssc(8通道pwm產生器950613)by marbol
marbol大大您好,
   怎麼開始?
;---------------------------------------------------------------------
;程式檔名:ssc(8通道pwm產生器950613)
;
;
;
;
;------------------------------------------------------------------
CH1             .REG   P2.0
CH2             .REG   P2.1
PWM0            EQU    40H                  ;
PWM1            EQU    41H                  ;
PWM2            EQU    42H                  ;
PWM3            EQU    43H                  ;
PWM4            EQU    44H                  ;
PWM5            EQU    45H                  ;
PWM6            EQU    46H                  ;
PWM7            EQU    47H                  ;
COUNT           EQU    37H
CUT             EQU    39H
F               EQU    50H
PIN             EQU    51H
PWM             EQU    52H
PIN1            EQU    53H
;------------------------------------------------------
  ORG 00H  
        AJMP     START  
        ORG 0BH
        LJMP    T0_INT                       ;timer0中斷
        ORG 1BH
        LJMP    T1_INT                       ;timer1中斷
               
        ORG 30H
START:
        MOV     SP,#5FH                      ;設定堆疊區60H-7FH
MOV TMOD,#00010001B ;設定 TIMER1 作業於模式 1,TIMER0 作業於模式 1
;---------------------------------------------------------
        MOV   TH0,#>(2**16-40)  ;設定TIMER0在每40us中斷一次,if use
12Mhz crystal
        MOV   TL0,#<(2**16-40)
        MOV   TH1,#>(2**16-10000)  ;設定TIMER1在每10ms計時一次,if use
12Mhz crystal
        MOV   TL1,#<(2**16-10000)
;--------------------------------------------------------
SETB    EA
        SETB    ET0             ;啟用TIMER0中斷
        SETB    ET1             ;啟用TIMER1中斷
              
        MOV     CUT,#0          ;賦予解譯旗標CUT歸零
        MOV     COUNT,#0
;--------------------------------------------------------
                       
        MOV     PWM,#12       ;PWM初始值設定
        MOV     PWM0,#12      ;
        MOV     PWM1,#1
        MOV     PWM2,#24
        MOV     PWM3,#12
        MOV     PWM4,#12
        MOV     PWM5,#12
        MOV     PWM6,#1
        MOV     PWM7,#24
        
        
;--------------------------------------------------------------------------------
;通道判斷
;--------------------------------------------------------------------------------
MAIN:
     
      LCALL  OUT
           
              LJMP MAIN
;--------------------------------------------------------------------------------
        
DEL_H:                                    
;延時R7*0.1毫秒,晶振在11.0592MHZ
;MOV R7,#1  ;令 R7=0
L7:
MOV R6,#2  ;令 R6=0
L6:
MOV R5,#17         ;令 R5=0
DJNZ R5,$  ;R5=R5-1, 若 R5 <> 0, 則繼續本指令
DJNZ R6,L6  ;R6=R6-1, 若 R6 <> 0, 則跳至 $6
DJNZ R7,L7  ;R7=R7-1, 若 R7 <> 0, 則跳至 $7
RET
;--------------------------------------------------------------------------------
DEL_L:
       ; MOV R7,#2  ;令 R7=     ;延時R7*1毫秒,晶振在11.0592MHZ
L5:
MOV R6,#20  ;令 R6=0
L4:
MOV R5,#20  ;令 R5=0
DJNZ R5,$  ;R5=R5-1, 若 R5 <> 0, 則繼續本指令
DJNZ R6,L4  ;R6=R6-1, 若 R6 <> 0, 則跳至 $6
DJNZ R7,L5  ;R7=R7-1, 若 R7 <> 0, 則跳至 $7
RET
;----------------------------------------------------
PWM_WIDTH:
           MOV  COUNT,@R0
LOOP1:     SETB TR0
           JNB  TF0,$
           CLR  TR0
           DJNZ COUNT,LOOP1         
           CLR  TR0
           MOV  CUT,#0        
;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         
           INC  R0
           RET

[ 本帖最後由 ayu 於 2006-12-6 10:11 編輯 ]

8通道PWM訊號產生器測試電路圖.jpg (162.58 KB, 下載次數: 804)

8通道PWM訊號產生器測試電路圖

8通道PWM訊號產生器測試電路圖

作者: ayu    時間: 2006-12-6 10:12
標題: 程式
;----------------------------------------------------  
;輪序迴圈
;---------------------------------------------------      
OUT:
           MOV    R0,#40H        
C0:        SETB   P1.0
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.0
C1:        SETB   P1.1
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.1
C2:        SETB   P1.2
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.2
C3:        SETB   P1.3
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.3
C4:        SETB   P1.4
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.4
C5:        SETB   P1.5
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.5
C6:        SETB   P1.6
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.6
C7:        SETB   P1.7
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.7
           
            
           SETB   TR1
           RET

;---------------------------------------------------------------------
T0_INT:
           PUSH  A
           PUSH  PSW
           ;CLR   TR0
           MOV   TH0,#>(2**16-40)  ;設定TIMER0在每40us中斷一次,if use
12Mhz crystal
           MOV   TL0,#<(2**16-40)
           ;INC   CUT
           ;SETB  TR0
           POP   PSW
           POP   A
           RETI
;---------------------------------------------------------------------
T1_INT:
           PUSH  A
           PUSH  PSW
           CLR   TR0
           MOV   TH1,#>(2**16-10000)  ;設定TIMER0在每10ms中斷一次,if
use 12Mhz crystal
           MOV   TL1,#<(2**16-10000)
           SETB  TR0
           CLR   TR1
           POP   PSW
           POP   A
           RETI
   
;---------------------------------------------------------------------
      END
作者: marbol    時間: 2006-12-6 21:27
原帖由 ayu 於 2006-12-6 10:07 發表
marbol大大您好,
   怎麼開始?
;---------------------------------------------------------------------
;程式檔名:ssc(8通道pwm產生器950613)
;
;
;
;
;--------------------------------------------- ...

ayu大大~~~~~
要開始的話,手上要依照線路圖做出板子,電源的供給也不要忽略,然後要有組譯器及燒錄器並學習如何使用它們,這些備齊了,才能夠驗證上述的程式碼是否能工作喔!!!動手做做看!! 然後秀出來!!

最好能夠買本51的書,先試著瞭解指令與範例程式,若蹲好馬步,則上述程式碼都可看成範例程式的組合哩!!!

基本上SSC是一個輸入與輸出的訊號系統,而這個程式只有持續輸出PWM的效果,如果覺得每次要更動PWM初值就要重新編輯,組譯與燒錄一次很麻煩的話,那麼透過串列傳輸來賦予PWM初值就是做好輸入的工作了~~~
當您能發現有些副程式用不到,那就是呼叫uucww大大的時候了!!

[ 本帖最後由 marbol 於 2006-12-6 21:42 編輯 ]
作者: ayu    時間: 2006-12-7 21:38
標題: 第一次實驗報告
原帖由 marbol 於 2006-12-6 21:27 發表


ayu大大~~~~~
要開始的話,手上要依照線路圖做出板子,電源的供給也不要忽略,然後要有組譯器及燒錄器並學習如何使用它們,這些備齊了,才能夠驗證上述的程式碼是否能工作喔!!!動手做做看!! 然後秀出來 ...

marbol世界第一大大您好,
         我用的是亞將視窗組譯器, http://www.robofun.net/forum/viewthread.php?tid=479&highlight ,

crystal用的是11.0592MHz,兩個capacitors用的是22pf ,程式中的

CH1             .REG   P2.0     改成 CH1             REG   P2.0     請問 有無這個 "." 是什麼意思?
CH2             .REG   P2.1      CH2            REG   P2.1

程式中的每一個  MOV   TH0,#>(2**16-40)  ,設定TIMER 的 2**16 意思應該是2的16次方吧?我全部把它改成25536 這樣編譯器才可編譯成功。

我偷懶先把編譯後的hex檔燒進2051,結果沒顯現出pwm,後來才把hex檔燒進s51用示波器才看到連續的pwm,不過沒變化。

p10是1.4ms,p11<1ms,p12是2.4ms,p13是1.6ms,p14是1.6ms,p15是1.6ms,p16<1ms,p17<2.6ms,都是連續的pwm,請問是這個結果嗎?(示波器(IWATSU,SS-5702A,20MHz)比較舊,所以可能有些誤差。)

以上是實驗的結果,請大大指點一下

可否用程式流程圖來表示程式的架構呢?麻煩的話,就不用了。謝謝喔


作者: marbol    時間: 2006-12-8 07:24
原帖由 ayu 於 2006-12-7 21:38 發表


marbol世界第一大大您好,
         我用的是亞將視窗組譯器, http://www.robofun.net/forum/viewthread.php?tid=479&highlight ,

crystal用的是11.0592MHz,兩個capacitors用的是22pf ,程式中的 ...

ayu大大~~~您好~~~
動作相當快喔!!
1.首先,組譯器的不同當然語法上也會有所差異,您能夠組譯完成,表示能解決問題,很不錯的啦!!
2.我用晶振12Mhz,在"H"延時的效果也會有所不同,您可以試著調整延時副程式,調到中立點1.5ms
3.PWM能連續輸出就是這個程式最主要的結果,這樣才能讓伺服機持續維持在同一位置直到改變初值,換句話說,您要讓PWM的duty cycle有變化就要改變初值
4.在這個程式基礎上,要加上更多功能(外加的副程式)是可行的,您需要的是理解這個程式,並且把外加的副程式照顧好,這樣SSC就OK啦!!
5.流程圖的部份,您畫畫看,是理解這個程式的一種學習喔!!
作者: ayu    時間: 2006-12-11 20:23
標題: 第一次心得報告
原帖由 marbol 於 2006-12-6 21:27 發表
當您能發現有些副程式用不到,那就是呼叫uucww大大的時候了!!...

marbol老師您好,
         初步研讀,理解如下,請指正,感激不盡喔!

這個程式用到timer0 interrupt so the timer1 interrupt 可以刪掉吧?TI_INT這個 routine可刪掉,timer1的設定可刪掉,老師果然很厲害 。補充 DEL_L這個 routine 也可刪掉
        其它的理解,未盡之處還望指導喔 。傳送指令的vb和51程式,要如何開始呢?這裡可能要傷腦筋了。

[ 本帖最後由 ayu 於 2006-12-12 13:16 編輯 ]
作者: marbol    時間: 2006-12-12 22:05
原帖由 ayu 於 2006-12-11 20:23 發表


marbol老師您好,
         初步研讀,理解如下,請指正,感激不盡喔!

這個程式用到timer0 interrupt so the timer1 interrupt 可以刪掉吧?TI_INT這個 routine可刪掉,timer1的設定可刪掉,老師果然很厲 ...

ayu大大~~~~
1.我不是老師,不要叫我老師喔~~~~
2.流程圖呢?? 怎麼沒有看到呢??不可以偷懶喔!!!您可以對照http://www.robofun.net/forum/viewthread.php?tid=232&extra=page%3D1&page=3
輪序PWM產生器示意圖來理解程式,最好POST照片上來
3.這個程式需要配合uucww大大的遙控解譯程式來賦值,這就是何以會有TI_INT的存在,不過現在還不需要那個程式~~~~~那賦值賦到哪裡去呢~~~~~~您說呢??給您一個方向,做一個table,然後定時抓取table的值賦給pwm0~pwm7,然後接上伺服機,看能否依照您給的table依序轉動角度~~
如果可以的話,您就可以讓機器人動起來囉!!!(您應該有伺服機吧可以試吧,小心不要接錯接腳)

[ 本帖最後由 marbol 於 2006-12-12 22:07 編輯 ]
作者: doubletime    時間: 2006-12-12 23:02
接錯腳就促進經濟發展而已啊,台灣加油
話說,上面的老大對小弟說:「做研究沒爆過、沒燒過是不會成功的」
所以多燒多爆幾次就有經驗了
呵呵

請教一下,如果不計成本的話,選用內有3組的馬達控制PWM + 4組PWM的  共7組不受中斷干擾的PWM是否在學習上會比較方便?  (DSPIC30F4011 傳說零賣一顆300元,報價約6.X美金)
作者: ayu    時間: 2006-12-13 07:28
原帖由 marbol 於 2006-12-12 22:05 發表
1.我不是老師,不要叫我老師喔~~~~
2.流程圖呢?? 怎麼沒有看到呢??不可以偷懶喔!!!您可以對照http://www.robofun.net/forum/viewthread.php?tid=232&extra=page%3D1&page=3
輪序PWM產生器示意圖來理解程式,最好POST照片上來
3.,做一個table,然後定時抓取table的值賦給pwm0~pwm7,然後接上伺服機,看能否依照您給的table依序轉動角度~~
如果可以的話,您就可以讓機器人動起來囉!!!(您應該有伺服機吧可以試吧,小心不要接錯接腳)
marbol老師您好,
        尊稱您老師,不過份吧? 套句論語,聖人無常師,只要可以讓我們學習的對象,都可稱為師吧!,老師不要謙虛了。
這個table,會使pwm0~pwm7,分別依序轉動角度動作,還是一個pwm只作依序轉動角度變化?
       流程圖,我再補上來。
作者: ayu    時間: 2006-12-13 07:31
原帖由 doubletime 於 2006-12-12 23:02 發表
請教一下,如果不計成本的話,選用內有3組的馬達控制PWM + 4組PWM的  共7組不受中斷干擾的PWM是否在學習上會比較方便?  (DSPIC30F4011 傳說零賣一顆300元,報價約6.X美金)
doubletime大大您好,
     dsp沒玩過喔?所以不知如何來作回應,抱歉了。
作者: doubletime    時間: 2006-12-13 09:03
話說dsPIC 是MICROCHIP出大概二年的新產品
為DSP+PIC 合稱dsPIC,有著強大的硬體功能與運算能力,著重馬達控制,且最快可達30MIPS
實在是一顆非常好用的單晶片,成本高了點(300元在機器人的世界應該算小錢吧),如果能省去自己寫軟體做硬體輸出的時間話,實在是非常非常值得推薦(感覺雖然比不上FPPA的好用)(最近又常常遇到有人和我在聊低成本的話題,實在有點悶@@)

其實小弟也有興趣想玩看看機器人,可是著重金費問題與沒接觸過,加上對機樲結構的不熟悉,所以就遲遲未入門

目前著重偏自動控制與馬達定位與轉速控制上
作者: marbol    時間: 2006-12-13 18:57
原帖由 ayu 於 2006-12-13 07:28 發表

marbol老師您好,
        尊稱您老師,不過份吧? 套句論語,聖人無常師,只要可以讓我們學習的對象,都可稱為師吧!,老師不要謙虛了。
這個table,會使pwm0~pwm7,分別依序轉動角度動作,還是一個pwm只作 ...

ayu大大~~~
這麼說您是聖人囉!!!   失敬啊失敬~~~~

這個table,可以先用一個腳位做輸出,也就是一個pwm腳轉動不同角度(一般是0,90,0,90....這樣轉動看看),先熟悉熟悉基本的賦值,我一開始也只試這個功能(先做到影像檔PWM信號跳動的樣子),等到成功了,再想想如何讓不同的pwm腳隨個人意思來變動角度不遲!!!
作者: ayu    時間: 2006-12-14 22:11
marbol老師您好,
       讀書太少,只想到這個比喻,見笑了。 我想意思應該懂吧,客套話不多說了,趕緊研究囉,潛水去了。

報告marbol老師,我作出來了,不過沒延時,但可看到波形有變化,您的影片,我都保存得很好,我的數位相機可能需充一天的電,到時拍好影片,再請老師修正一下喔 !


老師您好,影片如下,拍得效果不好,只看到示波器的波形,伺服機看不到,光線太暗了。

http://www.youtube.com/watch?v=FVEUJ4kKZao

接下來要作些什麼進度呢?

[ 本帖最後由 ayu 於 2006-12-14 22:24 編輯 ]
作者: marbol    時間: 2006-12-14 22:33
原帖由 ayu 於 2006-12-14 22:11 發表
marbol老師您好,
       讀書太少,只想到這個比喻,見笑了。 我想意思應該懂吧,客套話不多說了,趕緊研究囉,潛水去了。

報告marbol老師,我作出來了,不過沒延時,但可看到波形有變化,您的影片,我 ...

太讚囉~~~~~
看起來您已經可以賦值給一個PWM腳做不同角度的擺動了 ,您用到的table的順序是怎樣的呢??看起來像是霹靂燈每次增一或減一來賦值的呢~~~~

接下來就是讓二個PWM腳交互做不同角度的擺動,要用到兩個伺服機喔!!

[ 本帖最後由 marbol 於 2006-12-14 22:36 編輯 ]
作者: ayu    時間: 2006-12-14 22:48
原帖由 marbol 於 2006-12-14 22:33 發表
您用到的table的順序是怎樣的呢??看起來像是霹靂燈每次增一或減一來賦值的呢~~~~

接下來就是讓二個PWM腳交互做不同角度的擺動 ...

marbol老師您好,

      老師,我用的是如您所說,一次增加一個數值01h,02h,03h,04h………,增加上去的,然後再減下來。請問老師一下,最後八個都要讓它們交互做不同角度的擺動嗎?
作者: marbol    時間: 2006-12-15 08:08
原帖由 ayu 於 2006-12-14 22:48 發表


marbol老師您好,

      老師,我用的是如您所說,一次增加一個數值01h,02h,03h,04h………,增加上去的,然後再減下來。請問老師一下,最後八個都要讓它們交互做不同角度的擺動嗎?


1.叫我marbol大大就好囉!!

2.增加的方式有用到table嗎??雖然說有步伐產生器的數學模型,不過有些時候動作不規則還是需要用table的方式來賦值~~~~
3.最後就是如同您所說的八個都要讓它們交互做不同角度的擺動,現在先用兩個試試看,成功了再加上去~~~`  ,您一定會遇到問題的~~~~ 這要由您來說明!!!

[ 本帖最後由 marbol 於 2006-12-20 22:08 編輯 ]
作者: ayu    時間: 2006-12-20 08:35
原帖由 marbol 於 2006-12-15 08:08 發表

2.最後就是如同您所說的八個都要讓它們交互做不同角度的擺動,現在先用兩個試試看,成功了再加上去~~~`  ,您一定會遇到問題的~~~~ 這要由您 ...
marbol大大您好,
      討論一下程式問題,

一、DEL_H 這個副程式,它是延長0.1ms的結構,經由R7給它變成1ms的延時功能,使我們的輸出電位變成1,然後再跑入TIMER0的中斷,延長PWM所給予的設定時間,基準是40us,比如   MOV  PWM0,#12 ,  P1.0  就會輸出大約1.48ms的高電位,以此類推,八個PWM應該是2.5msx8=20ms,接下來一直重覆。便產生了示波器看到的結果。

二、現在有一個想法,用DEL_H 這種方式來跑虛功的方式,應該也可達成,或用TIMER0的的中斷來完成就好了,可不可以不要兩種都用。只用一種的計時方法來完成這個程式。我有試了兩種的計時方式,可能還有一些bug,會再修正一下的。

全部用TIMER0的的中斷完成了,個別的pwm波形可形成,同最初的八通道pwm產生器。

[ 本帖最後由 ayu 於 2006-12-20 22:47 編輯 ]
作者: marbol    時間: 2006-12-20 21:55
原帖由 ayu 於 2006-12-20 08:35 發表

marbol大大您好,
      討論一下程式問題,

一、DEL_H 這個副程式,它是延長0.1ms的結構,經由R7給它變成1ms的延時功能,使我們的輸出電位變成1,然後再跑入TIMER0的中斷,延長PWM所給予的設定時間,基準是4 ...


ayu大大~~~
前半部說對了......
您可以畫畫看伺服機中立點所需的PWM波形,應該是1.5ms左右,
在這1.5ms左右各0.5ms代表舵桿各轉左右45度的角度,以這個觀點來看
應該會比較瞭解程式的意思及該如何去操作pwm波型的產生~~~~~
所以PWM=#12即是給與480us的"H",加上1ms的前置的"H",這樣約等於1.5ms,不就是中立點了嗎~~~
這是控制伺服機的基本信號原理~~~~~要溫故知新喔
http://www.robofun.net/forum/viewthread.php?tid=392&highlight=

[ 本帖最後由 marbol 於 2007-7-13 22:24 編輯 ]
作者: ayu    時間: 2006-12-20 22:15
原帖由 marbol 於 2006-12-15 08:08 發表
2.增加的方式有用到table嗎??雖然說有步伐產生器的數學模型,不過有些時候動作不規則還是需要用table的方式來賦值~~~~
3.最後就是如同您所說的八個都要讓它們交互做不 ...

八個都要讓它們交互做不同轉動 的實驗作出來了。
要秀很麻煩,我寄給您。
;---------------------------------------------------------------------
;程式檔名:ssc(8通道pwm)
;------------------------------------------------------------------
PWM0            EQU    40H                  ;
PWM1            EQU    41H                  ;
PWM2            EQU    42H                  ;
PWM3            EQU    43H                  ;
PWM4            EQU    44H                  ;
PWM5            EQU    45H                  ;
PWM6            EQU    46H                  ;
PWM7            EQU    47H                  ;
COUNT           EQU    37H
pWM             EQU    52H
;------------------------------------------------------
  ORG 00H  
        AJMP     START  
        ORG 0BH
        LJMP    T0_INT                       ;timer0中斷
                        
        ORG 30H
START:
             mov     dptr,#table                     
MOV TMOD,#00010001B              ;設定 TIMER1 作業於模式 1,TIMER0 作業於模式 1
;---------------------------------------------------------
        MOV   TH0,#>(65536-40)           ;設定TIMER0在每40us中斷一次,if use 12Mhz crystal
        MOV   TL0,#<(65536-40)
      
;--------------------------------------------------------
SETB    EA
        SETB    ET0             ;啟用TIMER0中斷         
        
;--------------------------------------------------------------------------------
;通道判斷
;--------------------------------------------------------------------------------
MAIN:
      mov   r1,#0
      mov   r2,#50
loop:
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm0,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm1,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm2,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm3,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm4,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm5,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm6,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm7,a
      inc   r1
      
      LCALL OUT
      djnz  r2,loop     
           
      LJMP MAIN
;--------------------------------------------------------------------------------
table:
      db    01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh,10h,11h,12h,13h,14h,15h,16h,17h,18h,19h
      db    19h,18h,17h,16h,15h,14h,13h,12h,11h,10h,0fh,0eh,0dh,0ch,0bh,0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h
;----------------------------------------------------


[ 本帖最後由 ayu 於 2006-12-20 22:35 編輯 ]
作者: ayu    時間: 2006-12-20 22:29
;----------------------------------------------------  
;輪序迴圈
;---------------------------------------------------      
OUT:
           MOV    R0,#40H        
C0:        SETB   P1.0
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.0
C1:        SETB   P1.1
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.1
C2:        SETB   P1.2
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.2
C3:        SETB   P1.3
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.3
C4:        SETB   P1.4
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.4
C5:        SETB   P1.5
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.5
C6:        SETB   P1.6
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.6
C7:        SETB   P1.7
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.7
           
            
           RET
;--------------------------------------------------------------------------------
        
DEL_H:                                    
                                            ;延時R7*0.1毫秒,晶振在11.0592MHZ
;MOV R7,#1  ;令 R7=0
L7:
MOV R6,#2  ;令 R6=0
L6:
MOV R5,#17         ;令 R5=0
DJNZ R5,$  ;R5=R5-1, 若 R5 <> 0, 則繼續本指令
DJNZ R6,L6  ;R6=R6-1, 若 R6 <> 0, 則跳至 $6
DJNZ R7,L7  ;R7=R7-1, 若 R7 <> 0, 則跳至 $7
RET
;----------------------------------------------------
PWM_WIDTH:
           MOV  COUNT,@R0
LOOP1:     SETB TR0
           JNB  TF0,$
           CLR  TR0
           DJNZ COUNT,LOOP1         
           CLR  TR0
           MOV  CUT,#0        
                                       ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         
           INC  R0
           RET

;---------------------------------------------------------------------
T0_INT:
           PUSH  A
           PUSH  PSW
           ;CLR   TR0
           MOV   TH0,#>(65536-40)  ;設定TIMER0在每40us中斷一次,if use 12Mhz crystal
           MOV   TL0,#<(65536-40)
           ;INC   CUT
           ;SETB  TR0
           POP   PSW
           POP   A
           RETI
;---------------------------------------------------------------------
      END

請各位大大們指正了喔

[ 本帖最後由 ayu 於 2006-12-20 22:43 編輯 ]
作者: doubletime    時間: 2006-12-21 09:44
雖然不是很懂,但小弟猜想下一步應該是加uart,功能愈加愈多,您或許就會有更多的問題會問marbol
大大了,小弟猜想marbol大大應該也是非常樂意教導您的
作者: ayu    時間: 2006-12-21 17:18
原帖由 doubletime 於 2006-12-21 09:44 發表
雖然不是很懂,但小弟猜想下一步應該是加uart,功能愈加愈多,您或許就會有更多的問題會問marbol
大大了,小弟猜想marbol大大應該也是非常樂意教導您的
doubletime大大您好,

       marbol大大就是給我請下山來教我的,大家也可討論看看,這個程式最後就是要作串列傳輸的圖型控制,也是機器人動作的基本設定,調整好以後,就可像h881068 大大,作的那個機器人,可以設定動作來玩。
      
     不過現在 只能一步一步的趕上大家,這個控制器如作出來的話,也可以作出無線遠端圖型控制的應用,至於更高深的創作,可
能要向您們請教了,第一步可能要把先前學的模糊控制,再拿出來複習了。
       doubletime大大您這方面很強的,我拜讀過您的文章,到時,等我這個控制器作出來的話,可能要跟您請示了喔。
希望作得出來?Maybe?
作者: doubletime    時間: 2006-12-21 17:53
如果小弟的文章有榮性可以讓AYU大大有收護的話,小弟也是很開心的,最近小弟都出一張嘴而已,東西都小弟的同學幫小弟操刀的@@   所以有時後厲害的不是小弟,而是我身邊的同學們。

要搞無線很簡單啊,只要UART可以正常工作,買個藍芽模組接上去,電路不用改,程式不用改,馬上有線變無線,非常快速啊,而且用CLASS 1 的還可以到100公尺遠,所以無線控制在這裡應該是不會有什麼問題。

話說小弟我只會2輸入的模糊控制,4輸入的話,規則小弟就不太清楚該如何刪去不必要的了,模糊控制在移植到單晶片時,最重要的就是要刪去不必要的規則,也就是精簡規則,不然規則一多,就會拖住整個系統的速度了,最近在準備"兩輪平衡車"的機構,想重新再驗正一次自己是否有進步(暑假失敗過一次),或許還有一段很長的路要走吧。
作者: ayu    時間: 2006-12-21 20:46
原帖由 doubletime 於 2006-12-21 17:53 發表
如果小弟的文章有榮性可以讓AYU大大有收護的話,小弟也是很開心的,最近小弟都出一張嘴而已,東西都小弟的同學幫小弟操刀的@@   所以有時後厲害的不是小弟,而是我身邊的同學們。

要搞無線很簡單啊,只要UAR ...
doubletime大大您好,
         您太謙虛了,看到大家實力都很堅強,實在讓小弟很想追上,可是年華逝去,只有加緊追趕努力學習,無奈瑣事太多,只有取捨一些領域來下工夫了。
           h881068、uucww、chamber(隨意排,不代表任何意義。漏失或未列出者,請見諒)… 等大大們的東西學也學不完,現在只好縮小一些範圍先把51弄好再玩其它東東了。

[ 本帖最後由 ayu 於 2006-12-22 10:56 編輯 ]
作者: ayu    時間: 2006-12-21 21:23
八個都要讓它們交互做不同變化影片,請修正。

http://www.youtube.com/watch?v=i05FfhlmWMc

影片中有變化腳位,程式如上頁。
marbol大大接下來要進行什麼進度呢 ?
串列傳輸可否進行了。期待您的解答喔 ?

[ 本帖最後由 ayu 於 2006-12-22 00:00 編輯 ]
作者: marbol    時間: 2006-12-22 12:26
原帖由 ayu 於 2006-12-21 21:23 發表
八個都要讓它們交互做不同變化影片,請修正。

http://www.youtube.com/watch?v=i05FfhlmWMc

影片中有變化腳位,程式如上頁。
marbol大大接下來要進行什麼進度呢 ?
串列傳輸可否進行了。期待您的解答喔 ?

ayu大大~~~
關於賦值的部份,還有很多可能的做法,不過使用table的方式基本上是沒有問題,
現在賦值還有一個重點!!!就是要指定哪隻PWM腳,輸出何種PWM波形,

程式一開始先讓PWM0~PWM7腳,賦與#12的值(也就是0ch,中立點1.5ms)
延時5秒
接下來讓PWM0賦與#24的值(也就是18h,約2ms),PWM3賦與#24的值,其它腳不賦值
延時5秒
接下來讓PWM2賦與#1的值(也就是01h,約1ms),PWM4賦與#1的值,其它腳不賦值
延時5秒
接下來讓PWM7賦與#6的值(也就是06h,約1.2ms),PWM5賦與#18的值,其它腳不賦值
延時5秒
接下來讓PWM6賦與#18的值(也就是12h,約1.7ms),PWM1賦與#6的值,其它腳不賦值


要用table取值,
不能用
mov pwm0,#24
mov pwm3,#24
call delay
mov pwm2,#1
mov pwm4,#1
call delay
...........
來做,
原因在於這樣程式才有彈性,要改變機器人姿態,就只要更換table就好~~~~~
我們不希望動到程式本體,最終目的是要方便動作的設定,可以看看戶外的文字型矩陣走馬燈,都嘛是用電腦連線更改table的,不過這是另外一種硬體配合的技巧~~~

[ 本帖最後由 marbol 於 2006-12-23 10:54 編輯 ]
作者: ayu    時間: 2006-12-22 14:49
原帖由 marbol 於 2006-12-22 12:26 發表


ayu大大~~~
關於賦值的部份,還有很多可能的做法,不過使用table的方式基本上是沒有問題,
現在賦值還有一個重點!!!就是要指定哪隻PWM腳,輸出何種PWM波形,

程式一開始先讓PWM0~PWM7腳,賦與#12的值(也就是0ch,中 ...

marbol大師,
      我馬上作,等我喔
;------------------------------------------------------------------
PWM0            EQU    40H                  ;
PWM1            EQU    41H                  ;
PWM2            EQU    42H                  ;
PWM3            EQU    43H                  ;
PWM4            EQU    44H                  ;
PWM5            EQU    45H                  ;
PWM6            EQU    46H                  ;
PWM7            EQU    47H                  ;
;------------------------------------------------------
  ORG 00H  
        AJMP     START  
        ORG 0BH
        LJMP    T0_INT                       ;timer0中斷
                        
        ORG 30H
START:
          mov     dptr,#table                     
MOV TMOD,#00010001B              ;設定 TIMER1 作業於模式 1,TIMER0 作業於模式 1
;---------------------------------------------------------
        MOV   TH0,#>(65536-40)           ;設定TIMER0在每40us中斷一次,if use 12Mhz crystal
        MOV   TL0,#<(65536-40)      
;--------------------------------------------------------
SETB    EA
        SETB    ET0             ;啟用TIMER0中斷                     
;--------------------------------------------------------------------------------
;通道判斷
;--------------------------------------------------------------------------------
MAIN:
      mov   r1,#0
      mov   r2,#5
loop:
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm0,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm1,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm2,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm3,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm4,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm5,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm6,a
      inc   r1
      mov   a,r1
      movc  a,@a+dptr
      mov   pwm7,a
      inc   r1
      mov   r3,#250       ;延時5秒設定值
      LCALL OUT
      djnz  r2,loop               
      LJMP MAIN
;--------------------------------------------------------------------------------
table:
      db    0ch,0ch,0ch,0ch,0ch,0ch,0ch,0ch
      db    18h,00h,00h,18h,00h,00h,00h,00h
      db    00h,00h,01h,00h,01h,00h,00h,00h
      db    00h,00h,00h,00h,00h,12h,00h,06h
      db    00h,06h,00h,00h,00h,00h,12h,00h


[ 本帖最後由 ayu 於 2006-12-22 21:41 編輯 ]
作者: ayu    時間: 2006-12-22 21:42
;----------------------------------------------------  
;輪序迴圈
;---------------------------------------------------      
OUT:
           MOV    R0,#40H        C0:        SETB   P1.0
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.0
C1:        SETB   P1.1
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.1
C2:        SETB   P1.2
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.2
C3:        SETB   P1.3
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.3
C4:        SETB   P1.4
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.4
C5:        SETB   P1.5
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.5
C6:        SETB   P1.6
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.6
C7:        SETB   P1.7
           MOV    R7,#10         ;每一格"H"的時間,視需要微調
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.7
           djnz  r3,out
            
           RET
;--------------------------------------------------------------------------------        
DEL_H:                                    
                                            ;延時R7*0.1毫秒,晶振在11.0592MHZ
;MOV R7,#1  ;令 R7=0
L7:
MOV R6,#2  ;令 R6=0
L6:
MOV R5,#17         ;令 R5=0
DJNZ R5,$  ;R5=R5-1, 若 R5 <> 0, 則繼續本指令
DJNZ R6,L6  ;R6=R6-1, 若 R6 <> 0, 則跳至 $6
DJNZ R7,L7  ;R7=R7-1, 若 R7 <> 0, 則跳至 $7
RET
;----------------------------------------------------
T0_INT:
           MOV   TH0,#>(65536-40)  ;設定TIMER0在每40us中斷一次,if use 12Mhz crystal
           MOV   TL0,#<(65536-40)
           RETI
;---------------------------------------------------------------------
      END

波形延長時間太長(25秒)了,所以沒拍影片,請大大們指正。謝謝了。

[ 本帖最後由 ayu 於 2006-12-22 21:44 編輯 ]
作者: marbol    時間: 2006-12-23 11:00
原帖由 ayu 於 2006-12-22 21:42 發表
;----------------------------------------------------  
;輪序迴圈
;---------------------------------------------------      
OUT:
           MOV    R0,#40H        C0:        SETB   P1.0
          ...

ayu大大~~再試看看~~
現在賦值還有一個重點!!!就是要指定哪隻PWM腳,輸出何種PWM波形,

(1)程式一開始先讓PWM0~PWM7腳,賦與#12的值(也就是0ch,中立點1.5ms)
延時5秒
(2)接下來讓PWM0賦與#24的值(也就是18h,約2ms),PWM3賦與#24的值,其它腳維持原態
延時5秒
(3)接下來讓PWM2賦與#1的值(也就是01h,約1ms),PWM4賦與#1的值,其它腳維持原態
延時5秒
(4)接下來讓PWM7賦與#6的值(也就是06h,約1.2ms),PWM5賦與#18的值,其它腳維持原態
延時5秒
(5)接下來讓PWM6賦與#18的值(也就是12h,約1.7ms),PWM1賦與#6的值,其它腳維持原態
延時5秒
驗證方法:(DIY半自動線上驗證法)
將p2.0接一個N.O.的按捺開關到地
設定p2.0=1
每一步的5秒延時使用T1計時(輪詢TF1是否為1,若否繼續輪詢,若是則清除TF1後跳到loop迴圈輪詢p2.0腳是否為0,
若否(p2.0=1)繼續輪詢(此時量量看每隻PWM腳是否如題目所示,量完後按下鈕讓p2.0接地)
若是(p2.0=0)則設定p2.0為1跳到下一步)





[ 本帖最後由 marbol 於 2006-12-23 11:23 編輯 ]
作者: zirok    時間: 2007-7-13 11:16
標題: 回復 #29 marbol 的帖子
我昨天晚上弄好程式後,打算今早來試一試,用三用電表量,挖,有訊號說(就是幅度固定但是一直HIGH.LOW這樣來回轉動),正當我要把馬達接上去的時候...,訊號不出來了=.=,然後我的89S51就很燙...,我在懷疑是不是有地方虛焊了...,熟知電路特性的大大能幫幫我嗎? 謝謝@Q@
作者: imas    時間: 2007-7-13 16:58
原帖由 zirok 於 2007-7-13 11:16 發表
我昨天晚上弄好程式後,打算今早來試一試,用三用電表量,挖,有訊號說(就是幅度固定但是一直HIGH.LOW這樣來回轉動),正當我要把馬達接上去的時候...,訊號不出來了=.=,然後我的89S51就很燙...,我在懷疑是不是有地方虛 ...


來個電路圖或接線圖吧!
很想幫忙,可是又不確定問題
真是令人難受... v_v
作者: zirok    時間: 2007-7-14 00:33
標題: 回復 #31 imas 的帖子
抱歉@Q@,我還不會貼圖...,只好給相簿的網址:http://www.wretch.cc/album/album.php?id=zirok&book=1

我是用前面大大們的電路圖照接,然後多了一個電源的開關,相簿裡面有背面接線圖,正面是藍色有段開關那個圖,因為是接上馬達後訊號才出不來...,我在想是不是虛焊還是我的8051燒了=.=  可是我又不知道我哪裡犯錯了ˊˋ  感謝您

三根銅柱分別是電源+.-和馬達電源+端

[ 本帖最後由 zirok 於 2007-7-14 00:39 編輯 ]
作者: imas    時間: 2007-7-15 17:55
標題: 回復 #32 zirok 的帖子
那個圖,有考到眼力!

聽起來加上我很仔細看那個圖的結果,
應該是因為你採用 P0 當輸出卻沒有接上提升電阻造成的!
P0 是開集極設計,如果沒有接上提升電阻輸出訊號會極小,
這也是導致你用量的量的出來,可是接上馬達就出不來訊號的原因。
買個 222 (2.2k)的排阻接上去應該就 ok 了。

^^a   希望有猜對問題...
作者: zirok    時間: 2007-7-15 19:40
標題: 回復 #33 imas 的帖子
是喔?? 雖然在學校老師有提過開集極,不過我對它還是不太瞭解@Q@....

感謝您給了我一個方向@Q@,雖然改的話好像蠻麻煩的@Q@...不過我也無路可退了~XD,為難

您的眼睛了
作者: zirok    時間: 2007-7-17 17:00
標題: 回復 #33 imas 的帖子
買玩零件...,焊好了以後(對我來說是個大工程...,要移位置),結果他還是不能動@q@,訊號也沒出來~(應該是程式我燒好,晚上在試試...),我去的店家只有賣2.2k 8pin和2.2k 10pin的,沒想太多就買了10pin的...(沒做功課..死)

因為也比較少用到排阻...,也沒常自己買零件,我到的是 B222G,這種我後來查了後才知道他跟我們平常用的不一樣=.="(A222G),所以我想請問大大,能否換成1K的排阻呢?(我手邊有的~),我把它焊在8051 port 0 和 馬達的訊號線(靠近8051 port 0 的那排針腳)之間對嗎?  感激唷~

另外想請教一下,請問舵桿是?

==========================================晚上發生的事....

不管我怎麼試...,還是沒訊號...,但ic是ok的...,改了電路就變這樣了@q@...

後來我想說寫個簡單的程式來測試一下...,奇怪都不動....,翻書看才熊熊發覺...我的輸出是在PORT 1阿~

喔 no~,雖然很悲慘...,不過問題又回到原點了...為什麼用PORT 1 當輸出還是不能讓馬達動作呢?(我是用e-sky 8g 迷你伺服馬達 )=>http://www.impresswatch.com.cn/itamuse/448/3344448.shtml 網址是我偶然找到用這個伺服馬達作的袖珍機器人~

[ 本帖最後由 zirok 於 2007-7-18 11:08 編輯 ]
作者: TroyLee    時間: 2007-7-18 17:20
剛開始建議用麵包板測試, 可以避免焊接等等的問題...
作者: ffffff2641    時間: 2007-7-18 20:01
妳好~~
我的伺服機馬達是GWS-S03N系列的!!
我也是參考了ayu大大的電路做了一個麵包版的測試電路..
現在我也是遇到ㄌ相同的問題..
伺服機插上之後完全沒反應..
真不知道是程式寫錯了還是電路有接錯..
而在示波器上也有訊號產生..
只能在請教一下ayu大大了....!!
作者: zirok    時間: 2007-7-18 21:54
標題: 回復 #36 TroyLee 的帖子
我麵包板拿去插燒錄用的東西拉~(我用的是89s51),下次我會記得先弄在板子上低@q@

問題是有訊號卻沒辦法讓伺服機動阿....(我以前不是電機科的所以根本沒碰過...),能否請各位

大大們幫忙一下呢...感謝,目前在網路上找程式...,看能不能讓我的馬達動作...,可以的話就是我

把ayu大大的程式搞砸了=.=...
作者: zirok    時間: 2007-7-18 21:56
標題: 回復 #37 ffffff2641 的帖子
話說您的馬達是哪裡買的阿? 網購嗎? 能不能貨到付款阿?

我就是因為找不到能貨到付款又貪小便宜才買了那個迷你伺服機...
作者: neo    時間: 2007-7-18 21:56
原帖由 ffffff2641 於 2007-7-18 20:01 發表
我的伺服機馬達是GWS-S03N系列的!!
我也是參考了ayu大大的電路做了一個麵包版的測試電路..
現在我也是遇到ㄌ相同的問題..
伺服機插上之後完全沒反應..
真不知道是程式寫錯了還是電路有接錯..
而在示波器上也有訊號產生..
大大您好喔,可能需要看一下您的電路圖和接線圖,不然實在不曉得問題所在

您的電源供應器是多少安培的呢?一次是用一個伺服機嗎?還是多個伺服機呢?建議電源供應器至少需600mA以上這樣可能比較好控制喔。

至於發燙的問題,可能是伺服機卡到臨界角度,造成吃太多電流,如您用類似學校實習工廠的電源供應器,有電壓表和安培表的那一種,應該會看到電流的狀況,一般來講伺服機動作的時候電流不會太大,照您所說的發燙現象,安培表會顯示大電流的情形,請您看一下,不要把伺服機燒掉了喔。

再研究了喔,這個程式是可行的。
作者: zirok    時間: 2007-7-18 23:19
標題: 回復 #40 neo 的帖子
您好,發燙?(是說我之前發的帖子嗎?),如果是的話...,發燙的其實是我的8051拉=.="

電路圖的話我和ffffff2641大大都是用第一頁上的電路圖,因為還蠻單純的我想問題應該不在這,不過我去找其他論壇他們說8051最好不要直接接上伺服馬達耶? 為什麼呢? 那要接什麼呢?

我都用4顆鹼性電池當馬達電源,8051另外用4顆充電電池,沒有學校那種電源供應器@q@

我有三用電表,但沒有量過電流 ,因為他說明書上面寫說幾倍數的...,再加上之前把一個保險絲燒了,不敢再亂動 ,另外我想請問一下大家的伺服馬達只要正極.負極有接上去(不含訊號線喔)馬達會動一下嗎??  感謝
作者: imas    時間: 2007-7-19 03:57
原帖由 zirok 於 2007-7-17 17:00 發表
買玩零件...,焊好了以後(對我來說是個大工程...,要移位置),結果他還是不能動@q@,訊號也沒出來~(應該是程式我燒好,晚上在試試...),我去的店家只有賣2.2k 8pin和2.2k 10pin的,沒想太多就買了10pin的...(沒做功課. ...


拍謝,
自己看了都覺得有點對不起你...^^a

這些日子真的事情比較多,
等有空一點,我也來試試看好了...^__^
作者: zirok    時間: 2007-7-19 13:24
標題: 回復 #42 imas 的帖子
大大快別這麼說,這是我沒做功課的下場,連DATA SHEET都還不太熟(看到一堆英文就囧了)

哈哈,不過我有學著看,老師也說以後會蠻常用到DATA SHEET的,是我用過的零件太少嚕~

另外,ffffff2641大大一般賣伺服馬達的網站或是包裝裡面不會附上程式碼嗎? 我的是沒

有拉@Q@... ,所以現在在找程式中=.=

[ 本帖最後由 zirok 於 2007-7-19 19:17 編輯 ]
作者: ffffff2641    時間: 2007-7-20 21:34
回復 #43 zirok 的帖子
我的馬達是在昆陽捷運站附近的一間模型店買的!!
他的店名是<廣營電子.....>應該是可以電購吧???!!
我買的型號是s03n的
另外他的馬達無附說明書...不過他的背後卻有類似說明之類的東西!!
ps:我在測試的時候接上正負極馬達動了半圈!!<無接上pwm>
    接上pwm了之後感覺沒有動作...我也在想辦法中!!!!!
作者: zirok    時間: 2007-7-20 22:56
標題: 回復 #44 ffffff2641 的帖子
對拉~對拉~我想起來嚕,之前有打電話問過,不過他們不能接受貨到付款...,所以我就放棄了

我現在能作的大概就是爬爬文,找找程式,亂試....=.=

[ 本帖最後由 zirok 於 2007-7-20 23:12 編輯 ]
作者: ffffff2641    時間: 2007-7-20 23:26
回復 #43 zirok 的帖子
我覺得你可以親自跑一趟押~~
降就可以跟她們詢問有關媽達控制的知識了!!
還有我那時買馬達時他是1顆300$
我那時是跟她們買15顆有打折
好像是兩顆一上就有了吧!!!
作者: neo    時間: 2007-7-20 23:43
標題: 硬體電路
兩位大大您好喔,如51試不出來的話,可先用這些電路作出一些控制電路,否則買來的伺服機還是無法動作,這是很失望的吧,不過這些電路只能控制一個伺服機。試看看吧。祝成功  

硬體電路
http://www.armory.com/~rstevew/Public/Motors/Servos/ServoDriver.htm  ayu大大的第二章電路

simone 大大的部落格
http://yukuan.blogspot.com/2006/12/motor-controlling-pwms.html
網頁下/建議閱讀/關於以 555 IC 產生 PWM 控制 DC motor 轉速

也可做一些硬體控制電路。

[ 本帖最後由 neo 於 2007-7-21 00:00 編輯 ]
作者: zirok    時間: 2007-7-21 17:47
感謝neo大大.ffffff2641大大喔~

首先我住台灣-新竹,可能要去台北比較有可能買到=.=,廣營在新竹有批貨的店家我都打電話去問過了...,他說沒進了,所以要網購,可是我只能接受貨到付款@Q@,所以囉~

555的電路只要照著上面接就OK了嗎?我進去大大的BLOG看到的是直流馬達耶@Q@? 好像有點不一樣,英文的那個網址雖然我有點看無(哈哈=.=),但它好像要改些東西不然好像會有損壞馬達的疑慮(產生1ms~2ms的脈波,剛好在最大最小值上),總之...,我先試試看吧

[ 本帖最後由 zirok 於 2007-7-21 22:17 編輯 ]
作者: zirok    時間: 2007-7-25 00:16
哪位大大可以告訴我這個網頁大概在說什麼呢?
=>http://www.armory.com/~rstevew/Public/Motors/Servos/ServoDriver.htm

好像沒有辦法剛好產生1ms~2msHIGH,20ms為一週期的脈波呢?
作者: zirok    時間: 2007-7-31 11:55
今天去借用了示波器.波形產生器...


波形產生器=>伺服馬達 =>還是不動=.="

我的8051=>示波器 =>產生,的波形沒有波形產生器產生的漂亮,而且振幅還十分小


我想是因為我賦的值持續在改變...要看清楚十分勉強=.=...,要說影片麻...因為是借用的也沒帶太多道具只能靠敘述的...,哀,能請大大們幫幫忙嗎? 感謝

(不過連波形產生器=>伺服馬達都不動我想應該是沒救了=.=)
作者: irobot    時間: 2007-7-31 22:50
Hi!! Zirok。可否說一下你遇到的問題?最好有附帶的文件如電路圖,程式原碼,選用的硬件配置等。這樣其他人較易理解你的問題。或許可以幫上一點忙也說不定。
作者: neo    時間: 2007-8-1 08:16
原帖由 zirok 於 2007-7-25 00:16 發表
哪位大大可以告訴我這個網頁大概在說什麼呢?
=>http://www.armory.com/~rstevew/P ... vos/ServoDriver.htm

好像沒有辦法剛好產生1ms~2msHIGH,20ms為一週期的脈波呢?

大大您好,
      這是一個無穩態多諧振盪器,在電子電路實習的書中會有詳細的解說,可能要請您複習一下嘍。
作者: zirok    時間: 2007-8-1 09:57
原帖由 neo 於 2007-8-1 08:16 發表

大大您好,
      這是一個無穩態多諧振盪器,在電子電路實習的書中會有詳細的解說,可能要請您複習一下嘍。


可是我已經用波形產生器=>E-SKY 8g迷你伺服機送訊號了也不會動...,會去翻一下書拉...大概不會去接電路=.="
(手上沒有各種電阻),考完試會讓人墮落XD...是該收心的時候了@Q@

我現在比較想知道要怎麼讓.ASM的檔案改成能在keil uv2上組譯.模擬  還是感謝大大的提醒喔
作者: zirok    時間: 2007-8-2 10:34
標題: 回復 #52 neo 的帖子
我現有的電子電路實習它上面的無穩態震盪器只有兩個電阻,

而網頁上的有三個電阻和多一個二極體,我的程度還沒到大專以上... ,兩個電阻的那種
DW好像一定會>50%

另外,我想請問各位大大...,在keil這套編輯軟體中,組合語言要寫中斷的話要怎麼寫阿...
我有書,可是我還是看不懂=.="

以下是書中範例一小段:

MOV  TMOD,#11H
MOV  TH0,#0ECH  ;初值設定,計數5000次            <=
MOV  TL0,#78H                                              <=

請問為什麼這邊" <= "要這麼寫呢?  感激不盡

[ 本帖最後由 zirok 於 2007-8-2 10:36 編輯 ]
作者: irobot    時間: 2007-8-2 12:57
因程式選擇了使用16位計數器(第一句 MOV  TMOD,#11H),所以計數範圍由0至65535。以每機械週期增加1進行,當計數器到達65535後再加1便會歸0。這時便會獨發中斷。計數器的初值不一定要是0,可以自由設定。以你的例子: EC 為高位(TH0) ,78為低位(TL0),應排列為 16進制數值  EC 78 H(這裡的H是16進制的意思),換算為10進制是 14x4096 + 12x256 + 7x16 + 8x1 = 60536。由這數值開始計數至計數器歸0,總次數 = 65535 - 60536 + 1 =5000次。就是這樣了。

[ 本帖最後由 irobot 於 2007-8-2 22:59 編輯 ]
作者: zirok    時間: 2007-8-2 21:54
標題: 回復 #55 irobot 的帖子
十分感激irobot大大,我的程式可以組譯了...,但卻不能全速執行...怪怪,

這麼晚才回文也不是在偷懶,只是我的問題太簡單所以要等大大回覆都要等個幾天...還是感激大大喔
作者: irobot    時間: 2007-8-2 22:57
不客氣!!
提你一下,這5000次代表的時間計算如下:
設你使用的晶掁頻率為 F。
則 時間 = (12/F) * 5000
這個 12 是因為計數器是每過一個機械週期加1的,而 8051 的1個機械週期是需要12個時鐘週期。
1 machine cycle = 12 clock cycle (所以我發的前一個貼是寫錯了,不好意思)
我猜你使用 11.0592MHz 吧,那麼 F = 11059200
時間 = 5000 * (12 / 11059200) =  0.005425 秒,大約是 5.5 亳秒
作者: zirok    時間: 2007-8-3 10:10
標題: 回復 #57 irobot 的帖子
我用的是12Mhz的晶體震盪器,所以應該是5ms吧~

我對8051的架構還不是很熟,應該說是微電腦結構沒學好@Q@?  感謝大大的提醒
作者: irobot    時間: 2007-8-3 10:34
你計的很正確。如果你把1隻腳設定為 high ,計時 0.5ms 後設為 low (改為計500次)。讓這動作每 20 ms 重複 1次。你便可以把一個 伺服機定在 0 度的位置上了。

[ 本帖最後由 irobot 於 2007-8-3 10:38 編輯 ]
作者: zirok    時間: 2007-9-6 20:22
因為我的無能導致2.3頁都是我在問同一個問題 ,
不過總算可以邁向下一步了...,若要用VB程式寫一個PC 下命令更改51內部的TABLE,請問該如何作呢?
介面是一定要用RS232還是能用comport呢? 感激不盡...

[ 本帖最後由 zirok 於 2007-9-6 20:23 編輯 ]
作者: avr    時間: 2007-9-6 21:00
原帖由 zirok 於 2007-9-6 20:22 發表
因為我的無能導致2.3頁都是我在問同一個問題 ,
不過總算可以邁向下一步了...,若要用VB程式寫一個PC 下命令更改51內部的TABLE,請問該如何作呢?
介面是一定要用RS232還是能用comport呢? 感激不盡...

zirok大大,
      大家就是不會才會在這裡交流的啊,看到您很用心在學習,真的要向您多多看齊的哦 。您的問題,看版上的一些作品好像都用232來通訊的,不然usb的話可能要向chamber大大大學習了哦。
作者: zirok    時間: 2007-9-7 11:21
標題: 回AVR大大
我是小小,哈哈,那也要有人肯教阿~,互相的~,可以用USB喔~?能的話也挺方便的說,
不過要請chamber大大出馬有點殺雞用牛刀,我想我再找找吧,不過英文苦手的我看到網頁全是英文就... ,還是很謝謝您的回覆喔~
作者: wham    時間: 2008-4-12 08:42
http://www.opentech.com.tw/search/bookinfo.asp?isbn=9572161164   機器人單晶片微電腦控制(附PCB、範例程式光碟片) 作(譯)者: 王允上

這本書的p8-378-8 b 圖



跟這張手繪的圖,大家看看

[ 本帖最後由 wham 於 2008-6-5 05:29 編輯 ]
作者: uucww    時間: 2008-4-12 09:05
wham大大..這本書不錯喔...我準備去買喔!!請問是採用VB方式編輯嗎??我最大理想就是使用最便宜零件作出機器人喔....這樣粉好玩喔!!!

[ 本帖最後由 uucww 於 2008-4-12 09:15 編輯 ]

04467000.jpg (12.52 KB, 下載次數: 263)

04467000.jpg

作者: wham    時間: 2008-4-12 09:22
原帖由 uucww 於 2008-4-12 09:05 發表
wham大大..這本書不錯喔...我準備去買喔!!請問是採用VB方式編輯嗎??我最大理想就是使用最便宜零件作出機器人喔....這樣粉好玩喔!!!


猜想

因為還沒人公開用vb程式作真正的ssc,所以現在台灣的作者也還沒有……


當然這本書也沒出現。
作者: uucww    時間: 2008-4-12 09:24
原帖由 wham 於 2008-4-12 09:22 發表


猜想

因為還沒人公開用vb程式作真正的ssc,所以現在台灣的作者也還沒有……,


當然這本書也沒出現。


wham大大....我對這本書感生興趣喔............好像滿實惠的的一本入門書喔...對我這樣老頭子學習起了很大幫助!!
瞭解喔.....那可能屬於商品喔.....(附PCB、範例程式光碟片) 不知這本書是公佈哪些內容???

[ 本帖最後由 uucww 於 2008-4-12 09:29 編輯 ]
作者: uucww    時間: 2008-4-12 09:36
wham大大....目前這塊有公佈VB程式原碼....可以做各式各樣跟改....可惜是只能繼電器搭配一般馬達....但是這缺點可能有是優點....例如就可以使用各類便宜的普通馬達... 這樣要生產出最便宜二足機器人起了里程碑...連昂貴的伺服機可以不使用.............那較大大省下費用..........如果可能連馬達也自己生產..........那幾乎是全diy的了!!!或許可能製作出等身大點機器人也有可能喔..............

[ 本帖最後由 uucww 於 2008-4-12 09:46 編輯 ]

k28-3.jpg (167.07 KB, 下載次數: 260)

k28-3.jpg

kk028-big.jpg (77.22 KB, 下載次數: 260)

kk028-big.jpg

org_k28.jpg (25.85 KB, 下載次數: 258)

org_k28.jpg

作者: uucww    時間: 2008-4-12 09:43
原帖由 wham 於 2008-4-12 09:40 發表


這本書的程式架構,可參考這篇的程式,買來(不用再打字了,書籍的程式寫的當然會讓你滿意,使你看不到……),您會發現其實……

買來照著做,可做八個控制,這一點跟這篇文章………

所以能控制到八個伺服機 ...



wham大大...好玄妙的用語....看的出來這本書具有震撼性的寫法...是否正確!!???

[ 本帖最後由 uucww 於 2008-4-12 09:50 編輯 ]

PWM訊號產生器之VB人機介面改.jpg (33.35 KB, 下載次數: 278)

PWM訊號產生器之VB人機介面改.jpg

作者: yyy    時間: 2008-4-12 09:53
原帖由 uucww 於 2008-4-12 09:24 發表
(附PCB、


這塊板子只有ISP燒錄器功能,
燒錄完後,
馬上可以用來跑程式。
以上
作者: yyy    時間: 2008-4-12 09:55
原帖由 uucww 於 2008-4-12 09:43 發表

PWM訊號產生器之VB人機介面改.jpg (33.35 KB)


沒有這個介面,只有51單晶片程式,自己要會修改程式。
作者: uucww    時間: 2008-4-12 09:58
原帖由 yyy 於 2008-4-12 09:55 發表


沒有這個介面,只有51單晶片程式,自己要會修改程式。


yyy大大...瞭解喔...是不是裡面的mov來mov去這樣寫法??
作者: yyy    時間: 2008-4-12 10:18
原帖由 uucww 於 2008-4-12 09:58 發表


yyy大大...瞭解喔...是不是裡面的mov來mov去這樣寫法??


嘸試按ㄋㄟ

計笨冊,利之要蓋 鬼鞋啊  素利 倒可以囉。

嘸啊複雜啦。
作者: uucww    時間: 2008-4-12 17:43
原帖由 yyy 於 2008-4-12 10:18 發表


嘸試按ㄋㄟ

計笨冊,利之要蓋 鬼鞋啊  素利 倒可以囉。

嘸啊複雜啦。


yyy 大大.....肅立可以嗎??喔喔喔喔...阿內我器妹一笨押.....感恩
作者: yyy    時間: 2008-4-12 20:45
原帖由 uucww 於 2008-4-12 17:43 發表


yyy 大大.....肅立可以嗎??喔喔喔喔...阿內我器妹一笨押.....感恩

你要是不會修改程式數值的話,可能書買來也沒用。照書上的說明試看看吧!!書上只做手臂和恐龍而已,沒機器人。

不過要是程式修改一次,每一次都要再重新燒錄一次,所以需要傷腦筋了。

建議還是買利基的控制板比較便宜,

或是自製mr-c3024板子來玩,這樣更便宜。

你不是有一塊mr-c3024控制板嗎?

為什麼還要再多此一舉呢?
作者: uucww    時間: 2008-4-12 21:02
yyy大大....我買回來喔...有送電路板一片喔...粉實惠呢!!
好多書店都有賣喔!!
http://www.sanmin.com.tw/page-product.asp?dept_id=475&pf_id=000651971

[ 本帖最後由 uucww 於 2008-4-12 21:15 編輯 ]

SANY0033.JPG (98.98 KB, 下載次數: 283)

SANY0033.JPG

SANY0034.JPG (94.76 KB, 下載次數: 288)

SANY0034.JPG

作者: avr    時間: 2008-4-12 21:10
原帖由 uucww 於 2008-4-12 21:02 發表
yyy大大....我買回來喔...有送電路板一片喔...粉實惠呢!!

你不是有一塊mr-c3024控制板了,

為什麼不用賓士級的控制器,

而要用劃板車的控制器呢?
作者: uucww    時間: 2008-4-12 21:18
原帖由 avr 於 2008-4-12 21:10 發表

你不是有一塊mr-c3024控制板了,

為什麼不用賓士級的控制器,

而要用劃板車的控制器呢?


avr大大....你好呀.....基本上我是各方面的喜好....只要是便宜貨我都會嘗試使用...一來瞭解原理..二來又與相關網友可以交流....一舉數得.......例如我最近嘗試小主板...就認識好多喜愛diy電腦網友喔.....另外有機會話我要去研究韻律舞或是瑜珈....哈....那將是認識許多.............................................哈
記得很多年前我去當兵就分發到醫院單位當護士....就這樣我就認識許多護士喔.....太多這樣舉例呀...多方面嘗試準沒錯喔!!

[ 本帖最後由 uucww 於 2008-4-12 21:23 編輯 ]
作者: yyy    時間: 2008-4-12 21:33
原帖由 uucww 於 2008-4-12 21:18 發表


avr大大....你好呀.....基本上我是各方面的喜好....只要是便宜貨我都會嘗試使用...一來瞭解原理..二來又與相關網友可以交流....一舉數得.......例如我最近嘗試小主板...就認識好多喜愛diy電腦網友喔.....另外有機 ...


丸來乳處,   得下囉,

按 ㄋㄟ 嘛 ㄇㄟ  ㄇㄞ。 

歌 ㄜ 賽 ㄎㄨㄟ ㄑ一 啊。 
作者: uucww    時間: 2008-4-12 21:38
原帖由 yyy 於 2008-4-12 21:33 發表


丸來乳處,   得下囉,

按 ㄋㄟ 嘛 ㄇㄟ  ㄇㄞ。 

歌 ㄜ 賽 ㄎㄨㄟ ㄑ一 啊。 


yyy大大....感恩呢!!  還有一點我忘了說...這書籍所附的電路肯定是許多學校同學喜愛的教材喔...說不定我使用這塊未來還可以成立同學友誼會交流喔........
作者: uucww    時間: 2008-4-12 22:32
原帖由 yyy 於 2008-4-12 20:45 發表

你要是不會修改程式數值的話,可能書買來也沒用。照書上的說明試看看吧!!書上只做手臂和恐龍而已,沒機器人。

不過要是程式修改一次,每一次都要再重新燒錄一次,所以需要傷腦筋了。

建議還是買利基的控制板 ...


yyy大大....8051的配件很早以前有買喔...所以不需要在買哪些東西呀....沿用喔
作者: yyy    時間: 2008-4-12 22:59
原帖由 uucww 於 2008-4-12 22:32 發表


yyy大大....8051的配件很早以前有買喔...所以不需要在買哪些東西呀....沿用喔


不是這個意思,這本書介紹的內容有他不足的地方,就是沒辦法把動作編好,直接輸入晶片裏面,
一般商用的控制器,機器人動作編程,可以記錄下來,直接在電腦顯示,最後把這些數據從電腦下載到晶片中。

最後按一下某個開關,機器人就開始照著你剛才設定的動作來動作。

而這些……控制器,不能那麼方便使用,每一次都要把伺服機的數值 人工化的一個一個記錄下來,比如十七個伺服機,一個動作要記錄十七個數據,所以每做一個動作展示,試看看,會累死你的。(還好它只有八個輸出。)

花時間是這種控制器的一大問題,

再來每一次的完整動作展示,程式都要重新燒錄一次。

以上。
作者: uucww    時間: 2008-4-12 23:08
原帖由 yyy 於 2008-4-12 22:59 發表


不是這個意思,這本書介紹的內容有他不足的地方,就是沒辦法把動作編好,直接輸入晶片裏面,
一般商用的控制器,機器人動作編程,可以記錄下來,直接在電腦顯示,最後把這些數據從電腦下載到晶片中。

最後按 ...


yyy大大..瞭解喔...太了好了..剛好與小主板絕配....這兩片搭配如虎添翼!!!互相依賴完美結合!!我是採用遠端控制小主板再行控制這塊diy八軸板......這樣就很方便控制!!

[ 本帖最後由 uucww 於 2008-4-12 23:10 編輯 ]
作者: yyy    時間: 2008-4-12 23:18
原帖由 uucww 於 2008-4-12 23:08 發表


yyy大大..瞭解喔...太了好了..剛好與小主板絕配....這兩片搭配如虎添翼!!!互相依賴完美結合!!我是採用遠端控制小主板再行控制這塊diy八軸板......這樣就很方便控制!!

哇咧,嘸是按咧拉。

你的小主板只能遠端遙控電腦而已,

妹腮控制這塊八軸板啦。

粒打麼郝啦,

按ㄋㄟ 妹賽。
作者: uucww    時間: 2008-4-12 23:25
原帖由 yyy 於 2008-4-12 23:18 發表

哇咧,嘸是按咧拉。

你的小主板只能遠端遙控電腦而已,

妹腮控制這塊八軸板啦。

粒打麼郝啦,

按ㄋㄟ 妹賽。


yyy大大....當然可以使用喔.....每塊控制版都馬聯上電腦操作.....
只是把原先桌上型電腦換成超小型電腦而已呀....
還有一點我以前買的49元人民幣8051燒錄器總算還可以延用喔喔...
這本書還滿暢銷的喔...跑了幾家店有些是賣完了情況..最後在大型書店才找到!!
書本上有介紹恐龍...只要把恐龍頭改成豬頭不就變成豬頭機器人!!
再說這塊小主板的容量是8g 喔..扣除原先windoes xp系統的3g多 剩下來的4g多...
等於彌補8051控制版沒有的存入的功能..變成使用xp初始的視窗功能存入能力!!
搞不好使用一段時間感覺還不錯....

像現在上論壇交流...
就是畫面上這塊小主板電腦上網上網與您討論的....功能粉大!!

[ 本帖最後由 uucww 於 2008-4-13 02:12 編輯 ]

ap_F23_20080304090634986.jpg (80.81 KB, 下載次數: 515)

ap_F23_20080304090634986.jpg

DSC_8277.jpg (116.66 KB, 下載次數: 542)

DSC_8277.jpg

PICT3148.jpg (81.8 KB, 下載次數: 534)

PICT3148.jpg

ok.jpg (109.82 KB, 下載次數: 552)

ok.jpg

作者: uucww    時間: 2008-4-13 02:39
http://www.robofun.net/forum/viewthread.php?tid=538
yyy大大..這裡有一個工具粉好用喔!!參考一下!!

[ 本帖最後由 uucww 於 2008-4-13 02:48 編輯 ]

pic4.jpg (69.95 KB, 下載次數: 530)

pic4.jpg

16.rar

1.97 KB, 下載次數: 1254

16csscnt.zip

14.62 KB, 下載次數: 1182


作者: uucww    時間: 2008-4-13 02:57
yyy大大....這塊是遙控功能的實驗板....搭配後可說是如虎添翼!!(冷飯熱炒功能板)
這都要感謝marbol大師的無償奉獻喔!!!....
等我豬頭機器人成功換裝內銷課伺服機後...我會在添購一片利基控制板作測試!!

USB to LPT

[ 本帖最後由 uucww 於 2008-4-13 05:08 編輯 ]

SANY0035.JPG (98.58 KB, 下載次數: 540)

SANY0035.JPG

11071109117425_306.jpg (125.52 KB, 下載次數: 542)

11071109117425_306.jpg

11071109117425_449.jpg (118.16 KB, 下載次數: 539)

11071109117425_449.jpg

作者: omegaCD    時間: 2008-4-13 03:53
姆......要做PWM的話,不如用高容量CPLD...(不過要會寫HDL....)
之前我的16bit PWM控制器可以做成4bit或8bit模式,用串列SIPO暫存器(Sieal in Parallel out Register)
暫存數值後給PWM控制器設定脈衝寬度。

如果用MAX II系列的CPLD應該可以做到(甚至能用現成SPI界面當傳輸器),
當然腳位夠的話也能用並列傳輸,不需要寫SPI通信協定(8051沒有SPI界面,要用軟體實現)
MAX II最高等級如果是固定頻率的話也許可以設計出24或30通道的輸出....(觸發時脈≦2Mhz,太高要除頻)

開發板可以參考這塊: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=Taiwan&CategoryNo=38&No=216

30通道-12bit PWM模擬(隨通道數增加,可用空間會縮減,目前這個還放的下30個模組....頻率控制可調,固定頻率還要再研究..:3)


[ 本帖最後由 omegaCD 於 2008-4-13 04:47 編輯 ]
作者: uucww    時間: 2008-4-13 04:56
omegaCD大大...這塊滿特殊喔...學習中!!




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2