Robofun 機器人論壇

標題: 我用51去控制SERVO MG945 可是...不動 [打印本頁]

作者: draw3299    時間: 2008-4-2 01:53
標題: 我用51去控制SERVO MG945 可是...不動
我寫了一個程式,控制SERVO轉向的。

我控制了其他顆(如towerpro 5010) 1.5MS為中立點,大於1.5MS與小於1.5MS都可以轉向。

可是我拿TOWERPRO MG945金屬齒來試試,他卻不會轉向了.....我是有把電源分開。

奇怪的是,我控制塑膠齒的可以,但是金屬齒的卻不行,請問有大大遇過這種問題嗎?

不曉得是不是這顆SERVO與其他部一樣

規格:Type:MG945
Dimension:40.5x19.8x37.8mm
weight:55.2g
Operating speed:0.24sec/60degree(6.0v)
stall torque: 13.0kg/cm(6.0)
Tmperature range : -20_60degree
Dead band width:4ms
Operating voltage:4.8V-7.2V

以下是我的程式 KEILC  石英振盪器12MHZ

#include<regx51.h>
sbit servo2=P2^1;

delay01s(int d)
{
int i,j,k;
for(i=0;i<d;i++)
  for(j=0;j<100;j++)
   for(k=0;k<120;k++);
}

delay01ms()
{
int i;
  for(i=0;i<12;i++);
}

srv2_ce()                      //置中1.5MS      
{
int i;
servo2=1;
for(i=0;i<15;i++) delay01ms();
servo2=0;
for(i=0;i<185;i++) delay01ms();
}

srv2_cw()                       //順轉1.0MS                       

int i;
servo2=1;
for(i=0;i<10;i++) delay01ms();
servo2=0;
for(i=0;i<190;i++) delay01ms();
}

srv2_ccw()                              //逆轉2.0MS            
{
int i;
servo2=1;
for(i=0;i<20;i++) delay01ms();
servo2=0;
for(i=0;i<180;i++) delay01ms();
}

cen()                                                         
}
int i;
for(i=0;i<40;i++) srv2_ce();                                 
}

right()
{
int i;
for(i=0;i<40;i++) srv2_cw();
}

left()
{
int i;
for(i=0;i<40;i++) srv2_ccw();
}

main()
{

while(1)
  {
  cen();
  delay01s(10);
  right();
  delay01s(10);
  cen();
  delay01s(10);
  left:
  delay01s(10);
  }
}

動作為:置中(延遲1秒)→順時針(延遲1秒)→置中(延遲1秒)→逆時針(延遲1秒)

[ 本帖最後由 draw3299 於 2008-4-2 01:54 編輯 ]
作者: marbol    時間: 2008-4-2 19:19
原帖由 draw3299 於 2008-4-2 01:53 發表
我寫了一個程式,控制SERVO轉向的。

我控制了其他顆(如towerpro 5010) 1.5MS為中立點,大於1.5MS與小於1.5MS都可以轉向。

可是我拿TOWERPRO MG945金屬齒來試試,他卻不會轉向了.....我是有把電源分開。

奇怪 ...


draw3299大大~~
把delay01s(10);拿掉
改成
while(1)
  {
  cen();
  right();
  cen();
  left:
   }
若不行則考慮加上提昇電阻或透過波形整形ic(史密特觸發器)試試
作者: draw3299    時間: 2008-4-4 20:03
回marbol大

就在你回覆的之前,我已經退還給遙控模型店的老闆了 @@:

老闆還不耐煩的問我到底嫌那顆伺服機哪裡,我總不能告訴他這顆馬達我8051不能如期控制....

講出來搞不好不讓我退...,只好編故事騙說這顆伺服機很耗電。


marbol大 我有用電晶體放大PORT腳的電流,也是不行;你的方法我是還沒有測試過。

不過我先前接了一個NE555的電路,是可以控制,但硬體行,但軟體就不行。

之前買了一顆台灣製的 BMS620,用軟體控制,居然會煞不住車而轉過頭...連續丟1.5MS 還會一直抖呀抖的...
作者: marbol    時間: 2008-4-5 21:13
原帖由 draw3299 於 2008-4-4 20:03 發表
回marbol大

就在你回覆的之前,我已經退還給遙控模型店的老闆了 @@:

老闆還不耐煩的問我到底嫌那顆伺服機哪裡,我總不能告訴他這顆馬達我8051不能如期控制....

講出來搞不好不讓我退...,只好編故事騙說這顆 ...


draw3299 大大~~~

之前我用的是MG995,用標準的futuba搖控器跟接收機,是可以控制的,

不過用51丟出來的信號,MG995沒有反應,用手去扳,仍有hold住的效果,

但是不被控制的~~~~加上提昇電阻也是no ~~~

後來將51的信號透過74ic(含史密特觸發器)波形整形後,MG995就可以照著動作了~~~

MG945MG995都是數位伺服機,

如果大大有找型錄來看,或許能瞭解一下跟類比伺服機的差別在哪~~~~
數位伺服機跟類比伺服機都是吃1.5ms中立點,週期20ms左右的PWM信號,
差別在於數位伺服機把輸入的PWM信號採取了過取樣的手段,再經過一些處理後,讓數位伺服機達到更好的效果,所以可以事後諸葛的說,數位伺服機對於PWM信號波形的要求還蠻嚴謹的~~~~


可能數位伺服機對於波形的要求比較高,
所以採用提昇電阻提昇驅動電流的方式並未能準確符合數位伺服機的口味吧!!
不過irobot大大曾經透露出提昇電阻能讓51控制MG995,
可能51產生PWM波形完整性跟不同的程式安排會有些許的差別,
畢竟SETBMOV RLC等指令對於輸出波形產生的效果還是會有那嘛一點的差異,說不定會摻雜一些雜波進去,造成數位伺服機翻臉不認人咧~~~~

目前我要控MG995還是得透過74ic!!

或許大大還是可以不動聲色的回贖那一顆MG945,深入程式的探究,然後會有不同的感受可以告訴大家~~~

[ 本帖最後由 marbol 於 2008-4-5 21:15 編輯 ]
作者: rwu    時間: 2008-4-7 11:15
我亦有用MG 995! 這一隻Digital servo要求的Logic High 比較高, 所以51未必有足夠輸出! 所以在輸出Pins 加上10K Ohm pull high 電阻便可! 可參考本人之前之BLOG->

http://hk.myblog.yahoo.com/arnoldwu73/article?mid=253

RWU
作者: 港豪奻辣炰邲    時間: 2008-4-21 10:37
標題: 同意?上意?~
同意?上兄弟的意?~

-------------------------------------------------------------------------------------------------------------------
浙江老虎機上分器,上海老虎機上分器,江?老虎機上分器,水果機上分器,水果機?控器
作者: sec39    時間: 2008-5-8 22:57
原帖由 marbol 於 2008-4-5 21:13 發表


draw3299 大大~~~

之前我用的是MG995,用標準的futuba搖控器跟接收機,是可以控制的,

不過用51丟出來的信號,MG995沒有反應,用手去扳,仍有hold住的效果,

但是不被控制的~~~~加上提昇電阻也是no 控~~~

...


請問是使用7413或74132嗎?
不知道電路如何接
作者: marbol    時間: 2008-5-12 22:28
標題: 回復 7# 的帖子
sec39大大~~~
近來潛水得到一個結論,就是先用提昇電阻試過,若不行的話再用我這個方法,
畢竟電阻還是比較便宜,選用排阻,也不佔空間,先試試看~~~

我用的74LS245,可以參考
http://www.alldatasheet.com/
去看datasheet,有模式的選用接線方式,good luck!!
作者: sec39    時間: 2008-5-13 23:56
原帖由 marbol 於 2008-5-12 22:28 發表
sec39大大~~~
近來潛水得到一個結論,就是先用提昇電阻試過,若不行的話再用我這個方法,
畢竟電阻還是比較便宜,選用排阻,也不佔空間,先試試看~~~

我用的74LS245,可以參考
http://www.alldatasheet. ...


接上10K排組一樣不會轉
裡面會出現轉動聲音但是完全不會動

看了一下74245因該第20接VCC第10接地
第1跟19不接是L
所以11到18接輸入2到9接輸出
不知道這樣接法正確嗎?
作者: marbol    時間: 2008-5-14 07:44
原帖由 sec39 於 2008-5-13 23:56 發表


接上10K排組一樣不會轉
裡面會出現轉動聲音但是完全不會動

看了一下74245因該第20接VCC第10接地
第1跟19不接是L
所以11到18接輸入2到9接輸出
不知道這樣接法正確嗎?


sec39大大~~~
應該是第1跟19接地,這樣輸入輸出就會如同您說的來接即可 ~~~good luck !!
作者: sec39    時間: 2008-5-15 20:38
原帖由 marbol 於 2008-5-14 07:44 發表


sec39大大~~~
應該是第1跟19接地,這樣輸入輸出就會如同您說的來接即可 ~~~good luck !!


我用74244
http://etl.uom.gr/mr/courses/datasheets/74LS244.PDF
結果還是出現轉動聲音但是完全不會動
我是第1(1G)跟10接地
第20接VCC
2.4.6.8接輸入18.16.14.12輸出
作者: marbol    時間: 2008-5-16 06:44
標題: 回復 11# 的帖子
sec39大大~~~
74244這樣接可以的,先問一下,
用它牌的伺服機接進去看看,是否能動作,
假設照樓主大大的demo程式規畫,這樣接會轉動才是~~~
若不能轉動,那~~~
這樣看起來,每個環節都需要重新檢視,
才能瞭解哪邊出問題,從元件確認ok後,再看
線路是否有接錯,電源供應夠不夠力,
這些基礎的測試想法要思考一下喔!!!
作者: sec39    時間: 2008-5-16 19:57
原帖由 marbol 於 2008-5-16 06:44 發表
sec39大大~~~
74244這樣接可以的,先問一下,
用它牌的伺服機接進去看看,是否能動作,
假設照樓主大大的demo程式規畫,這樣接會轉動才是~~~
若不能轉動,那~~~
這樣看起來,每個環節都需要重新檢視,
才能瞭解哪邊出問 ...


74244接上S3003會動
電源是用USB的4.75V~5.25V ,500mA(max)
因為我覺得MG945是有動作但是不知道是不是沒力.
我程式是用組合去寫的不知道會不會影響PWM輸出

[ 本帖最後由 sec39 於 2008-5-16 20:43 編輯 ]
作者: marbol    時間: 2008-5-17 07:49
原帖由 sec39 於 2008-5-16 19:57 發表


74244接上S3003會動
電源是用USB的4.75V~5.25V ,500mA(max)
因為我覺得MG945是有動作但是不知道是不是沒力.
我程式是用組合去寫的不知道會不會影響PWM輸出


sec39大大~~~
用usb的電源需要勇氣呢~~~~小心把usb弄壞了~~~~
這樣看起來是電源的問題了~~~~

您實驗看看~~~回頭想想~~~
另外用鎳氫電池四顆約4.8v~5v,直接供電給微控器,MG995,加上提昇電阻看會不會動~~~
不會動的話,就直接供電給微控器,MG995,74244,應該就ok啦~~~

前提是~~~74244接上S3003會動,動的情形是照您的規畫轉動方式




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