Robofun 機器人論壇

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

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

[複製鏈接]
1#
發表於 2006-12-6 21:27: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 編輯 ]
2#
發表於 2006-12-8 07:24:56 | 顯示全部樓層
原帖由 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.流程圖的部份,您畫畫看,是理解這個程式的一種學習喔!!
3#
發表於 2006-12-12 22:05:02 | 顯示全部樓層
原帖由 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 編輯 ]
4#
發表於 2006-12-13 18:57:21 | 顯示全部樓層
原帖由 ayu 於 2006-12-13 07:28 發表

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

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

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

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

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

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

[ 本帖最後由 marbol 於 2006-12-14 22:36 編輯 ]
6#
發表於 2006-12-15 08:08:14 | 顯示全部樓層
原帖由 ayu 於 2006-12-14 22:48 發表


marbol老師您好,

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


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

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

[ 本帖最後由 marbol 於 2006-12-20 22:08 編輯 ]
7#
發表於 2006-12-20 21:55:57 | 顯示全部樓層
原帖由 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 編輯 ]
8#
發表於 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 編輯 ]
9#
發表於 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 編輯 ]
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-17 20:28 , Processed in 0.234750 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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