Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 7420|回復: 5
打印 上一主題 下一主題

我用51去控制SERVO MG945 可是...不動

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-4-2 01:59:17 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
我寫了一個程式,控制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秒)
2#
 樓主| 發表於 2008-4-4 19:54:45 | 顯示全部樓層
我只會單純的控制1和0而以,這顆SERVO便宜,可是我不會用

,可能他不能用我這樣的方式控制吧。

我用NE555接出來的電路可以控制轉向,可是軟體就不行。

大概這種方式他不能接受吧  ^^"
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-14 14:41 , Processed in 0.167380 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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