幽夜 發表於 2010-9-9 09:57:31

RB-100的GPIO

本帖最後由 幽夜 於 2010-9-9 09:58 編輯

請問關於RB-100的PWM其GPIO腳 其輸出的方波 峰對峰值電壓為多少??
目前有祥X的伺服馬達其6-PIN接腳分別為
-MOTOR
+MORTOR
HALL SENSOR Vcc
HALL SENSOR GND
HALL SENSOR A Vout
HALL SENSOR B Vout
那要如何接至rb-100
請各位高手幫個忙~謝謝~感激不盡~︿ˍ︿

mzw2008 發表於 2010-9-10 00:39:46

咦?
SERVO有6 ping ?
這是哪一顆呢?
有沒有詳細的PDF規格?

RB100的PWM若規劃為GPIO會推不動SERVO喔
因為只有3.3V
不然你就要獨立供電了

幽夜 發表於 2010-9-10 22:18:23

謝鯨大已經想到方法還在測試中~
大致上會把Vxx與GPIO作銜接吧~
感謝提供GPIO的資訊~

幽夜 發表於 2010-9-11 19:43:39

好奇的問一下~
GPIO的頻率可調嗎?
若不能那RB-100上有哪些可調頻???

lucrece_lu 發表於 2010-9-17 17:53:00

回復 4# 幽夜


    6-PIN分別為 -MOTOR+MORTORHALL SENSOR VccHALL SENSOR GNDHALL SENSOR A VoutHALL SENSOR B Vout 這種馬達應該是無刷馬達。 --------------------------------------------------- 這種馬達通常要先接線路到控制器, 再由控制器接到 RoBoard, 最後用 RoBoard 來控制。 HALL SENSOR 的控制器可能類似
你可以詢問賣你馬達的廠商, 哪一款的控制器適用於你馬達的控制器。 至於 GPIO 問題, GPIO 是傳輸 hihg, low 訊號, 你可以控制 GPIO high 起來的時間跟GPIO low 下去的時間, 你可以控制 GPIO 的 high, low,來調整頻率。 可以參考 RoBoard 的手冊, http://www.roboard.com/Files/RB-100/RoBoard_Training_SW_v16a.pdf

幽夜 發表於 2010-9-18 11:36:19

感謝JOSH大 AND LU大提供的資訊
馬達的控制器後來自己做了一塊跟LU大PO的控制方式不太相同
小弟做的是直接用PWM下去控制
不過一顆馬達需要4組PWM來控制 ~
接下來就剩訊號的處理了~

mzw2008 發表於 2010-9-19 00:51:42

其實喔, 這樣的作法就不對了
既然控制板都自己做了, 應該把東西包裝進去
讓roboard能送(前進/後退/停止/加快/減慢...)等訊號給控制板
控制板再去控制馬達
這樣才能作進一步的精確控制
而不是什麼事情都叫roboard作喔
畢竟...殺隻蚊子, 動用大砲有點不太合理, 哈哈

幽夜 發表於 2010-9-22 12:12:06

咦~包進去~
我只是利用RB上PWM的GPIO腳做訊號控制
但控制板上輸入輸出都要雙訊號/每個馬達 SO要4組PWM的GPIO
這樣應該沒做錯吧~有錯麻煩大大提醒一下
還是說可以用其他RB上的位置控制會更好~~
但我有一大疑問如果要把GPIO的頻率改1KHZ左右是改程式就可以還是說不可能
因為我只知道其頻率分別為50MHZ和10MHZ另外可調頻寬(有個異想天開的想法用頻寬變頻)
.................

josh 發表於 2010-9-23 13:02:59

本帖最後由 josh 於 2010-9-23 13:22 編輯

回復 8# 幽夜

在 RoBoard 上 PWM 跟 GPIO 是共用的,兩者無法同時使用。

依照你所說的方式,

如果用 4 組 GPIO (或是 PWM) 控制馬達,

我猜想馬達應該有四組的電晶體。

所以,使用 GPIO 是會比較適合的,但是要注意 deadband 的問題。

用 GPIO 可以控制 high ,low 的時間,讓 GPIO 的頻率為 1KHz。

程式會類似(delay 的時間要自行設定)


#include <stdio.h>
#include <roboard.h>
int main()
{
// RCSERVO_USENOCHANNEL mean that all PWM channels are treated as GPIO.
if (rcservo_Initialize(RCSERVO_USENOCHANNEL) == false)
{
    printf("ERR: rcservo initialize fails (%s)!\n", roboio_GetErrMsg());
    return 1;
}
while(1)
{
    rcservo_Outp(0, 1); // GPIO channel 0 high
    delay(ms); // delay time
    rcservo_Outp(0, 0); // GPIO channel 0 low
    delay(ms);// delay time
}
rcservo_Close()
return 0;
}
頁: [1]
查看完整版本: RB-100的GPIO