회원가입 ID/PW 찾기
AA
속도가 전혀~~~~~~~~~~~~~~~~~~~~~` 제어가 안되네요
무쟈게 빨라서 바디부분이 뿌아질라고 그람니다
답답해 죽겠네
어떻게 해야죠 님들 답변 부탁드려요~
댓글 6
  • No Profile
    글쓴이 고문관 07.10.23 02:30 댓글 좋아요 0 싫어요 0
    지금이 새벽2시반   답안나옵니다 ~
  • -.-;; 어캐... 제어 잘하시라는 말씀밖엔....

    그놈 서보모터 감히 고문관님의 말을 안듣다니.
  • No Profile

    드뎌 찾았습니다.ㅋㅋㅋ 도움되시길....이건 8051 작품란에도 올려놓겠습니다.
    동시에 여러개 RC서보 제어하는 방법은 빠라삐리뽀님 글을 찾으면 제가 답변해노은게 있습니다.

    이것도 어딘가 소스가 있을텐데.ㅠㅠ


    /*

    8051을 이용해 IR리모콘으로 RC서보모터 제어

    8051을 이용해서 IR리모콘(TV리모콘과 같은)로 RC서보모터를 원격조정하는 것입니다...
    만들당시 회로는 너무 간단해서 회로도는 그리지 않았습니다.;;
    사진은 차후에 올려드리겠습니다.
    작성자 :   아크마

     작성일 : 2004년 12월 8일
     VERSION : 0.1

    */

    // 컴파일러 : 마이크로비젼 7.0

    #include <at89x52.h>
     /*
    645
    1382
    2119
    18432
    */

    #define TIME_SEC    20000
    #define RATE_8952   0.000001085069444
    #define PULS_LEFT       900
    #define PULS_MID       2000
    #define PULS_RIGHT      5000
    #define PULS_OFF        18432
    #define SPEED_1        1
    #define SPEED_2        2
    #define SPEED_3       3
    #define SPEED_4       4
    #define SPEED_5       5
    #define SPEED_6       6
    #define SPEED_20      20

    #define TIMER0_ON  TR0 = 1
    #define TIMER0_OFF   TR0 = 0
    #define TIMER1_ON       TR1 = 1
    #define TIMER1_OFF   TR1 = 0
    #define TIMER_IT0_ENABLE ET0 = 1
    #define TIMER_IT0_DISALBE ET0 = 0
    #define TIMER_IT1_ENABLE ET1 = 1
    #define TIMER_IT1_DISABLE ET1 = 0
    #define IT_ENABLE  EA = 1
    #define IT_DISABLE   EA = 0
    #define SERVO_PORT  P2_7
    #define TRUE    1
    #define FALSE    0  


    #define REMOCON_RIGHT  P1_4                         
    #define REMOCON_DOWN  P1_3                         
    #define REMOCON_STOP  P1_2                         
    #define REMOCON_UP   P1_1                         
    #define REMOCON_LEFT  P1_0  

    #define REMOCON_TEST  P1_5                      

    char old_right=1;
    char old_down=1;
    char old_stop=1;
    char old_up=1;
    char old_left=1;

    typedef unsigned int  word;
    typedef unsigned char  byte;
    typedef char   bool;

    byte flag = 0;
    word speed;
    word rate= PULS_MID;//PULS_MID;
    word angle  = PULS_MID;
    word target = PULS_MID;
    bool chat_flag = FALSE;

    long delay_count =0;
    long delay_count_h=0;
    int led_num = 0;


    void delay_s(unsigned int iSec)
    {
     int iCnt;
     
     while(iSec)
     {
      for(iCnt=0; iCnt < TIME_SEC; iCnt++);
             iSec--;
     }
    }
      
    void delay_t(unsigned int iTime)
    {
     while(iTime--);
    }
     

    //타이머 초기화
    bool InitTimer(void)
    {    


        TMOD = 0x11;  // TMOD 1(16bit timer/counter) setting - use TH, TL, [hgigh : M1 = 0, M0 = 1]  [low : M1 = 0, M0 = 1]

     TH0 = 0x4C;
       TL0 = 0x00;
     TH1 = 0x4c;
     TL1 = 0x00;
           
        TIMER_IT0_ENABLE;
        TIMER_IT1_ENABLE;
     
     TIMER0_ON;
     IT_ENABLE;
     
        return 1;

    }

    //인터럽트 초기
    bool InitInt()
    {

     PX0 = 1 ;  
     IT0 = 1 ; 
     EX0 = 1 ;  
     EX1 = 1 ;
     IT_ENABLE;

    }

    // 서보 이동속도 설
    void SetSpeed(word s)
    {
     speed = s;
    }
    void test()
    {
     char cnt;

     for(cnt=0;cnt<3;cnt++)
     {
     REMOCON_TEST = 1;
     delay_s(1);
     REMOCON_TEST = 0;
     delay_s(1);
     }
     }


    int main(void)
    {

     char flag_h = 0;

     delay_t(1);
        delay_s(1);
          
        InitTimer();
     InitInt();

     SetSpeed(SPEED_3);
        rate = 92;
        
     P0_3 = 0;
        
     while(1)
     {

      chat_flag = TRUE;

      if(old_left!=REMOCON_LEFT)
      {
       old_left = REMOCON_LEFT; 
      /*
       if(REMOCON_LEFT==0)
       {
        if(target-100 >= PULS_LEFT)
         target-=100;  
       }
       */
        if(REMOCON_LEFT==0)
       {
        target=PULS_LEFT;  
       }else
       {
        target  = angle;
        }

      }


      
      if(old_right!=REMOCON_RIGHT)
      {
       old_right = REMOCON_RIGHT;

       if(REMOCON_RIGHT==0)
       {
        target=PULS_RIGHT;  
       }else
       {
        target  = angle;
        }
        }

      
      if(old_up!=REMOCON_UP)
      {
       old_up = REMOCON_UP;

       if(REMOCON_UP==0)
       {
        if(speed < SPEED_20)
        {
         speed+=3;
        }  
       }
      }

      
      if(old_down!=REMOCON_DOWN)
      {
       old_down = REMOCON_DOWN;

       if(REMOCON_DOWN==0)
       {
        if(speed > SPEED_1)
        {
         speed-=3;
        }
       }
      }

     

      delay_count++;
      if(delay_count>40000)
      {
       delay_count = 0;

       switch(led_num)
       {
        case 0:
         P0_0 = 0;
         P0_1 = 1;
         P0_2 = 1;
         break;
        case 1:
         P0_0 = 1;
         P0_1 = 0;
         P0_2 = 1;
         break;
        case 2:
            P0_0 = 1;
         P0_1 = 1;
         P0_2 = 0;
         break;
       }

       led_num++;
       if(led_num > 2)
        led_num = 0;
        }
      
     
        delay_count_h++;
      if(delay_count_h>3000)
      {
       delay_count_h=0;
       if(angle >= PULS_MID-100 && angle <= PULS_MID+100)
         {
        if(flag_h)
         P0_3 = 0;
        else
         P0_3 = 1;
     
          flag_h = ~flag_h;
         }else
         {
           P0_3 = 0;
         }
      }

          /* target = PULS_MID;

         delay_s(15);

         target = PULS_MID + 300;

         delay_s(15);
     
         target = PULS_MID - 500;

          delay_s(15);
      */
     }      
    }

     

    void T0_int (void) interrupt 1
    {

     TIMER0_OFF;         

         if(flag == 0)
         {
          flag = 1;
            SERVO_PORT = 0;
      rate = PULS_OFF - angle; // low level time
         }
        
         else
         {
      flag = 0;
           SERVO_PORT = 1;
      rate = angle;
     }
       
         if(angle + speed < target)
          angle += speed;
         else if(angle - speed > target)
          angle -= speed;
         else
          angle = target;
        
         TH0 = ~(byte)((0xff00 & rate) >> 8);
         TL0 = ~(byte)(0x00ff & rate);

        TIMER0_ON;
    }


    void ext_int(void) interrupt 0
    {
     IT_DISABLE;
    /*
     if(chat_flag)
     {//채터링처리
      if(target+100 <= PULS_RIGHT)
       target+=100;
      else
       target = PULS_LEFT;
     }else
         chat_flag = FALSE;
    */
     IT_ENABLE;
     

  • No Profile
    올리고 보니 AVR이었네요.ㅠㅠ

    http://www.micombox.com/avr_work/635 

    위 글과 같이 잘 보시길..어차피 원리는 다 똑같고 IR리모콘부분만 다르니까요.
  • No Profile
    글쓴이 고문관 07.10.23 10:35 댓글 좋아요 0 싫어요 0
    리모컨으로 제어하는건가요 ?
    참고하겠습니다
    근데 우회를회서
    rf제어를 하고 있습니다
    지금 한번에 많은 각을주지 않고 조금씩주어서 하고있습니다
    완전 부드럽지않고 ㅡㅡ 답안나옵니다
  • No Profile
    난언제 저거 하나 ㅡ.ㅡ;;

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
172 마이크로프로세서 HOTADD Component 문의2 shin 930 2007.11.07
171 마이크로프로세서 HOT얼마전에 9핀용 부트로더를 구입하여 로더기를 제작하려하는데요...1 악당 868 2007.11.05
170 마이크로프로세서 HOT스테핑모터에 관하여8 あさひ 1730 2007.11.05
169 마이크로프로세서 HOT갑자기 물음표가 떠오릅니다8 고문관 629 2007.11.04
168 마이크로프로세서 HOTat89c2051에 대해서 질문이요^^3 머스트비 841 2007.10.30
167 마이크로프로세서 HOTAT89c51에 PWM...5 shin 1019 2007.10.29
166 마이크로프로세서 HOT아트멜 AT89C51 핀 기능....5 shin 987 2007.10.29
165 마이크로프로세서 HOT그래픽 LCD 제어가 전혀 안되네요..ㅜㅠ5 임낙 1483 2007.10.27
164 마이크로프로세서 HOT8051 질문7 shin 616 2007.10.27
163 마이크로프로세서 HOT용어 설명좀 해주세요 ㅜㅜ 무슨뜻인지 모르겠네요2 sinpk 1140 2007.10.23
마이크로프로세서 HOT아~~ 이놈의 서보모터6 고문관 796 2007.10.23
161 마이크로프로세서 HOT소스 수정중인데 잘 모르겠어요...2 남뎅이 818 2007.10.21
160 마이크로프로세서 HOT궁금한것이 있어서 질문올립니다.4 마그마 753 2007.10.16
159 마이크로프로세서 HOTkeil c 컴파일 에러1 초보 컨트롤 1506 2007.10.15
158 마이크로프로세서 HOT8051 질문입니다...1 무한질주 600 2007.10.14
157 마이크로프로세서 HOTRS232 / RS482 / RS485에 대해서64 아크마여친 12151 2007.10.13
156 마이크로프로세서 HOTled제어 .....5 고문관 737 2007.10.12
155 마이크로프로세서 HOT전원부에 관해서.4 챠리스만 602 2007.10.12
154 Software & IDEs HOT나누미질문이요...4 악당 1035 2007.10.12
153 마이크로프로세서 HOTat89s51 시리얼 isp기능질문1 악당 907 2007.10.12
Prev 1 ... 45 46 47 48 49 50 51 52 53 54 ... 58 Next
  • 패배를 극복하는 법을 배워야 한다. 그럴때에 당신의 인격이 향상된다.
    - 닉슨
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.