회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
26 개발용역 HOT제작의뢰입니다4 wons 4021 2008.11.24
25 개발용역 HOT개발의뢰1 열심이 3642 2008.09.20
24 개발용역 HOT제작의뢰 부탁한 kit 설명( 회로도 첨부) 띠앙 6739 2008.09.11
23 개발용역 HOTUSB용 ISP Programmer용 제작 의뢰4 띠앙 4101 2008.09.01
22 개발용역 HOT풍력을 이용한 빨래 건조대 똘이 4730 2008.07.31
21 개발용역 HOT물체감지 선별 제작의뢰 입니다. 진도령 3909 2008.06.16
20 개발용역 HOT윈도우 디바이스 드라이버 강의건3 빛나는 영혼 4780 2008.05.21
19 개발용역 HOTMCU 개발 마니아 10908 2008.05.16
18 개발용역 HOTRF를 이용한 도어락을 제작3 프리스타일 4397 2008.03.30
17 개발용역 HOT마이컴 동영상 강좌(임베디드)6 마이컴넷 7291 2008.03.26
16 개발용역 HOT저렴하게 개발해드립니다. 한올 4726 2008.01.08
15 개발용역 HOTled마이컴 의뢰드립니다 완전문외한이라 ....1 차예준 4707 2007.12.30
14 개발용역 HOT간단한 10진 카운터 PCB 제작의뢰요1 대구동이 7897 2007.12.02
13 개발용역 HOT로봇 mcu개발 의뢰1 정모양ㅋㅋ 4386 2007.11.21
12 개발용역 HOT온도센서 질문입니다.1 Genesis 4445 2007.11.19
11 개발용역 HOT엔지니어 구함 열씨미 아버지 4575 2007.11.07
10 개발용역 HOT디지털도어락 질문입니다.5 얼룩이리 5212 2007.11.06
9 개발용역 HOTLED 제어 가능 하신분..2 shin 4617 2007.10.29
8 개발용역 HOT기기제작 가능하신분??1 AK 4603 2007.10.25
7 개발용역 HOTRGB 컨트롤러 문의드립니다..3 섬세한샛다 5292 2007.10.12
Prev 1 ... 3 4 5 6 7 8 9 10 11 12 Next
  • 어떤 책들은 맛만 보고, 나머지 책들은 삼켜버리고, 몇몇 소수의 책은 잘 씹어서 소화시켜야 한다.
    - 베이컨
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.