Lv. 76 (전무보) 62,731 납
80%
Exp. 58,995/59,290 | 80%
회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
312 마이크로프로세서 HOTuVision-51과 8051을 통해 SRF-04 컨트롤 질문입니다.2 하숑 945 2008.09.23
311 마이크로프로세서 HOT8051로 도트매트릭스 5*7만들어서 영문자 쉬프트하는것 만들어보고 싶은데..1 영화처럼살기 1891 2008.09.21
310 마이크로프로세서 HOTatmega128 2개 통신하기3 기계전기 992 2008.09.20
309 Software & IDEs HOT완전초보입니다. 잘부탁드립니다.4 초보민 991 2008.09.19
308 마이크로프로세서 HOT모터의 상 연결에 대해서 질문드립니다.1 너구리♬ 782 2008.09.18
307 마이크로프로세서 HOTPID 제어에서 Auto turning 이라는 개념이 잘 잡히지 않네요. 장작 2207 2008.09.18
306 Software & IDEs HOTMatlab 시리얼통신을 통한 그래프만들기..;;1 GreatSSang 3703 2008.09.16
305 마이크로프로세서 HOTPID 속도 제어에서 OCR 레지스터에 어떤 값을 넣어줘야 하지요???8 스텝빠스텝 8829 2008.09.15
304 마이크로프로세서 HOT모터의 하드웨어적인 질문 드립니다.1 너구리♬ 733 2008.09.10
303 마이크로프로세서 HOT지금 보니깐요 4거리 신호등이요4 마모루 1039 2008.09.08
302 마이크로프로세서 HOT자료실에 있는 신호등 제어에서요1 마모루 819 2008.09.08
301 펌웨어 & 코딩언어 HOT8051 4거리 신호등에서의 소스에서요1 마모루 1158 2008.09.08
300 마이크로프로세서 HOT8051에 대해서 궁금한거요/1 눈물겨운행복 683 2008.09.04
299 마이크로프로세서 HOT시리얼 통신..1 황금시대 817 2008.09.02
298 마이크로프로세서 HOTPID제어에관해서..1 황금시대 1074 2008.09.02
297 마이크로프로세서 HOTPC 페러렐 포트로 AVR의 변수를 저장시키고 싶어요.1 스텝빠스텝 882 2008.08.31
296 마이크로프로세서 HOTAT89S51의 ISP Programmer 활용하려면?2 띠앙 1220 2008.08.28
295 마이크로프로세서 HOTrs232 케이블에 대해서;;3 너구리♬ 846 2008.08.25
294 마이크로프로세서 HOTatmega128에서 모터 소스하고 인터럽트 소스 하고 같이 짜주면 모터가 작동을 하지 않습니다ㅠ 작은것이라도 괜찮으니 한자씩만 적어주세요 ^^7 하고만다 2131 2008.08.24
293 마이크로프로세서 HOT적외선을 이용해서 dc모터 엔코더 만들기3 marin_blues 1946 2008.08.20
Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 58 Next
  • 작가는 자기가 하고 있는 일이 이 세상에서 가장 중요한 일이라는 것을 믿지 않으면 안된다.
    - 스타인백
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.