Robofun 機器人論壇
標題:
我用51去控制SERVO MG945 可是...不動
[打印本頁]
作者:
draw3299
時間:
2008-4-2 01:59
標題:
我用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秒)
作者:
llyyzz
時間:
2008-4-2 22:50
我也碰到過,輝盛系列的舵機就是怪,用測試儀可以驅動,用代碼就是不行。e_sky就沒有問題
一種可能就是舵機不是數字的。是模擬信號的。還有一種可能就是舵機驅動結構有差別。。。具體什麼差別就不知道了。
作者:
draw3299
時間:
2008-4-4 19:54
我只會單純的控制1和0而以,這顆SERVO便宜,可是我不會用
,可能他不能用我這樣的方式控制吧。
我用NE555接出來的電路可以控制轉向,可是軟體就不行。
大概這種方式他不能接受吧 ^^"
作者:
TroyLee
時間:
2008-4-8 05:57
你的控制方式錯誤!!
伺服馬達的波形要不停的送
就算你延遲一秒,在那一秒鐘也要送相同的波形!!!
不這樣的話馬達會抖來抖去
用 555 可以是因為他會每20ms送一次波形, 但你的程式不會
另外數位伺服機的控制頻率好像不只50hz, 好像可以到200hz,
不過要確定一下, 以免燒掉
[
本帖最後由 TroyLee 於 2008-4-8 05:59 編輯
]
作者:
tuvw356
時間:
2008-4-23 08:48
標題:
??西?留?中介
08年春季??西?留?中介,GED?球教育機構?手
??西?留?中介
出??通??西?留???,旨在打造??一流的??"??西?留?直通?"服???西?留?中介,希望到海外??深造和?展的同?可以借此機??得??西?留?中介...
4mmo
作者:
nichal
時間:
2008-10-15 17:23
有幾個重點要考慮
1. 金屬齒的SERVO啟動電流較大, 如果不能提供較大的瞬間電流, 有可能會死機
2. 用示波器檢查一下送給SERVO的波形, 如果不是連續的pulse, 或pulse的寬度一直在變, 那也有問題
所以大大提到用塑膠齒的可以, 可是金屬齒的不行, 原因是第一項所提到的
而用555可以動而8051卻不行, 原因是第二項所提到的
另外
對TowerPro的servo來說
信號的電壓也是關鍵的問題
因為TowerPro所用的內部電壓是3.3V
觀察一下當SERVO轉動時
信號的準位有沒有掉下來或是在飄
這也很可能會造成SERVO不動作
如果覺得內部的驅動電路真的很糟糕
不妨自己把驅動板改造一下再試試
在OpenServo的網站上有不少相關的介紹唷~~
http://www.openservo.com/
[
本帖最後由 nichal 於 2008-10-15 17:56 編輯
]
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2