Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 4628|回復: 3

如何使用keil c 使用 89S51 驅動 gws s03t 伺服馬達?

[複製鏈接]
發表於 2015-2-8 18:07:55 | 顯示全部樓層 |閱讀模式
本帖最後由 ROCKGG 於 2015-2-8 18:23 編輯

大家好

最近看了一些機器人的書籍 也很想做一隻
然後參考書籍 買了 GWS S03T 這顆伺服馬達

之前沒有使用過伺服馬達的經驗

一開始我用兩組VCC
5V的USB接到89S51實驗版, 5V-0.6A的變壓器 接到S03T伺服馬達
沒有共接地

接線圖.jpg
接完以後卻沒有動作,完全沒反應




後來我使用 5V-0.6A的變壓器 共VCC 共地
接完以後,按按鈕,S03T會微微的震動,但是一樣沒有轉動




以下KEIL C --- 是參考書本寫的,書本上用的伺服馬達跟我的是不同顆

按K1,K2,K3 來控制前進、後退、中間

#include <stdio.h>
#include <AT89X51.H>
sbit spu = P1^6;
sbit tpu = P1^0;
sbit K1=P1^1;
sbit K2=P1^2;
sbit K3=P1^3;
sbit K4=P1^4;
#define DEA  3
#define DEB  25
#define DEC  13
#define TS  40

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

del()
{

char i ;
for(i=0;i<25;i++) ;

}

pu_for()
{
int i;
spu = 1;
for (i=0;i<DEA;i++) del();
spu = 0;
for (i=0;i<(200-DEA);i++) del();
}

pu_back()
{
int i;
spu = 1;
for (i=0;i<DEB;i++) del();
spu = 0;
for (i=0;i<(200-DEB);i++) del();
}

pu_cen()
{
int i;
spu = 1;
for (i=0;i<DEC;i++) del();
spu = 0;
for (i=0;i<(200-DEC);i++) del();
}

rot()
{
int i ;
for (i=0;i<TS;i++) pu_for;
}

rotr()
{
int i ;
for (i=0;i<TS;i++) pu_back();
}

cen()
{
int i ;
for (i=0;i<TS;i++) pu_cen();
}

test_pulse()
{
while(1)
  {
    tpu=0; del();
    tpu=1; del();
  }
}

main()
{
  spu = 0;
  while(1)
  {
   if(K1==0)rot();
   if(K2==0)rotr();
   if(K3==0)cen();
   if(K4==0)test_pulse();
  }
}


---------
希望各位大大可以幫我解題  馬達不動作很煩惱
 樓主| 發表於 2015-2-9 22:54:08 | 顯示全部樓層
原本以為電源不夠力,所以今天用電池組跟pc power 來當電源  都沒用   s03t 依然抖動,不會運作

後來覺得 我的程式有問題,於是試了別人的程式,s03t 馬達依然抖動

我甚至開始覺得我的S03T馬達是故障的,但這是新買的新品..

很煩惱又毫無頭緒
 樓主| 發表於 2015-2-10 20:14:40 | 顯示全部樓層
問題解決了,原來是我在線路前面加裝了一顆LED(發光二極體)要來判斷伺服馬達是否通電,導致S03T無法運作,把他拔掉,動作就正常了
nichal 該用戶已被刪除
發表於 2015-5-11 18:01:50 | 顯示全部樓層
自己找到問題所在
很棒唷!!
謝謝您的分享~~~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-16 21:01 , Processed in 0.161354 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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