Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
樓主: ayu
打印 上一主題 下一主題

ssc(8通道pwm產生器950613)by marbol

[複製鏈接]
21#
發表於 2006-12-21 09:44:07 | 只看該作者
雖然不是很懂,但小弟猜想下一步應該是加uart,功能愈加愈多,您或許就會有更多的問題會問marbol
大大了,小弟猜想marbol大大應該也是非常樂意教導您的
22#
 樓主| 發表於 2006-12-21 17:18:56 | 只看該作者
原帖由 doubletime 於 2006-12-21 09:44 發表
雖然不是很懂,但小弟猜想下一步應該是加uart,功能愈加愈多,您或許就會有更多的問題會問marbol
大大了,小弟猜想marbol大大應該也是非常樂意教導您的
doubletime大大您好,

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

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

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

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

[ 本帖最後由 ayu 於 2006-12-22 10:56 編輯 ]
25#
 樓主| 發表於 2006-12-21 21:23:04 | 只看該作者
八個都要讓它們交互做不同變化影片,請修正。

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

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

[ 本帖最後由 ayu 於 2006-12-22 00:00 編輯 ]
26#
發表於 2006-12-22 12:26:36 | 只看該作者
原帖由 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 編輯 ]
27#
 樓主| 發表於 2006-12-22 14:49:23 | 只看該作者
原帖由 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 編輯 ]
28#
 樓主| 發表於 2006-12-22 21:42:06 | 只看該作者
;----------------------------------------------------  
;輪序迴圈
;---------------------------------------------------      
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 編輯 ]
29#
發表於 2006-12-23 11:00:01 | 只看該作者
原帖由 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 編輯 ]
30#
發表於 2007-7-13 11:16:49 | 只看該作者

回復 #29 marbol 的帖子

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


來個電路圖或接線圖吧!
很想幫忙,可是又不確定問題
真是令人難受... v_v
32#
發表於 2007-7-14 00:33:16 | 只看該作者

回復 #31 imas 的帖子

抱歉@Q@,我還不會貼圖...,只好給相簿的網址:http://www.wretch.cc/album/album.php?id=zirok&book=1

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

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

[ 本帖最後由 zirok 於 2007-7-14 00:39 編輯 ]
33#
發表於 2007-7-15 17:55:45 | 只看該作者

回復 #32 zirok 的帖子

那個圖,有考到眼力!

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

^^a   希望有猜對問題...
34#
發表於 2007-7-15 19:40:40 | 只看該作者

回復 #33 imas 的帖子

是喔?? 雖然在學校老師有提過開集極,不過我對它還是不太瞭解@Q@....

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

您的眼睛了
35#
發表於 2007-7-17 17:00:43 | 只看該作者

回復 #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 編輯 ]
36#
發表於 2007-7-18 17:20:57 | 只看該作者
剛開始建議用麵包板測試, 可以避免焊接等等的問題...
37#
發表於 2007-7-18 20:01:12 | 只看該作者
妳好~~
我的伺服機馬達是GWS-S03N系列的!!
我也是參考了ayu大大的電路做了一個麵包版的測試電路..
現在我也是遇到ㄌ相同的問題..
伺服機插上之後完全沒反應..
真不知道是程式寫錯了還是電路有接錯..
而在示波器上也有訊號產生..
只能在請教一下ayu大大了....!!
38#
發表於 2007-7-18 21:54:52 | 只看該作者

回復 #36 TroyLee 的帖子

我麵包板拿去插燒錄用的東西拉~(我用的是89s51),下次我會記得先弄在板子上低@q@

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

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

把ayu大大的程式搞砸了=.=...
39#
發表於 2007-7-18 21:56:26 | 只看該作者

回復 #37 ffffff2641 的帖子

話說您的馬達是哪裡買的阿? 網購嗎? 能不能貨到付款阿?

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

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

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

再研究了喔,這個程式是可行的。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-18 12:37 , Processed in 0.379878 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表