질문게시판 > 답변 : 모터 엔코더 제어 질문드립니다.

TODAY84 TOTAL2,275,193
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : 모터 엔코더 제어 질문드립니다.

페이지 정보

작성자 master 작성일2022-05-27 19:39 조회830회 댓글1건

본문

	

모터엔코더 를 통해 각도 제어를 해보려고 하는데요 

 

현재 외부인터럽트를 사용하여 스위치 한개는 방향전환 ,

한개는 PWM 출력을 통한 속도제어를 하였습니다  

 

그에 추가하여 

엔코더 카운터를 사용하여 한바퀴를 돌리고 

엔코더 카운트 값을 시리얼 통신 터미널을 통해 출력을 해보려고 하는데요 .

 

제가 사용하는 모터 엔코더가 counts per turn 이 128 인 엔코더인데 

1체배로 돌리고 있음에도 불구하고 약 엔코더카운트가 13200으로 설정을 하여야 한바퀴에서 멈추고 

터미널에서는 엔코더 카운트 통신값도 매번 다르게 나오더라구요. 

제가 공부한 바에 따르면 따르면 엔코더 카운트 값이 128에서 한바퀴가 되어야 하는걸로 알고 있는데 어디서 틀린지 모르겠네요ㅠ..

 

만약 한바퀴에 엔코더 카운트 값이 13200이라 하더라도  

13200 의 값이 항상 나오도록 하려는 의도로 작성하였는데 혹시 잘못된 부분이 있다면 지적 가능할까요? 

 

시작한지 얼마안되어 굉장히 지저분하고 부족한 점 죄송합니다.

 

 

#include <mega128.h>

#include <stdio.h>

#include <delay.h>

//

char flag1=0,flag2=0;

int  encodercount=0;

//

interrupt [EXT_INT6] void SW_0(void){

    if(++flag1>3)flag1=0; 

    //

    if(flag2==0){ // 정방향

      if(flag1==0){ OCR0= 70; PORTC=~1; }

      if(flag1==1){ OCR0=130; PORTC=~2; }

      if(flag1==2){ OCR0=180; PORTC=~4; }

      if(flag1==3){ OCR0=240; PORTC=~8; }

    }

    else{ // 역방향

      if(flag1==0){ OCR2= 70; PORTC=~1; }

      if(flag1==1){ OCR2=130; PORTC=~2; }

      if(flag1==2){ OCR2=180; PORTC=~4; }

      if(flag1==3){ OCR2=240; PORTC=~8; }

    }

    encodercount=0;

}     

//

interrupt [EXT_INT7] void SW_1(void){ // 정회전,역회전 변환 

    flag2^=1; 

    if(flag2){ PORTB=0x11; OCR0=0; }

    else     { PORTB=0x81; OCR2=0; }

    encodercount=0;

}  

//

interrupt [EXT_INT1] void enc_0(void){ // 엔코더 카운터 동작 

    if(PIND.0){ if(encodercount>-256)encodercount--; } //역방향 카운터 1하강 

    else      { if(encodercount< 256)encodercount++; } //정방향 카운터 1상승

    //

    if(encodercount==128){ PORTB=0x91; OCR0=0; OCR2=0; } // 정방향 한바퀴

    if(encodercount==  0){ PORTB=0x91; OCR0=0; OCR2=0; } // 역방향 한바퀴

}  

//

interrupt [TIM1_OVF] void enc_1(void){

    static char b=0;

    b^=1;                        // 토글

    if(b)UDR0=encodercount>>8;   // 상위바이트 전송

    else UDR0=encodercount&0xFF; // 하위바이트 전송

}

//

void main(void){

    DDRB=0xff;              // 모터 출력 설정 

    DDRC=0xff; PORTC=0xff; 

    DDRD=0x00; PORTD=0x02;  // 인터럽트 내부 풀업저항

    DDRE=0x00; PORTD=0xC0;  // 인터럽트 내부 풀업저항

    //

    TCCR0=0x6f;  TCNT0=100; // PWM 모드 설정 ,1024 분주비 

    TCCR2=0x6d;  TCNT2=100; 

    TCCR1B=0x03; TIMSK=0x04;

    //

    UCSR0B=0x18; UBRR0L=103;

    //

    EICRA=0xAA; EICRB=0xAA; EIMSK=0b11000010; //하강엣지 

    SREG=0x80;

    while(1);

}


모터가 관성에 의해서 돌아갈텐데 OCR=0을 준다고 바로 멈출까요?


  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 1

조회수 830

oreoreo님의 댓글

oreoreo 작성일

감사합니다...답변 들으니 아차 싶네요. 다시 공부하겠습니다!

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
답변 답변글 답변 : 아두이노 서보모터 질문드립니다.댓글[1] master 22-06-06 1526
질문 신호를 받아서 진동울리기댓글[4] 메론맛드링크 22-06-06 1441
질문 아두이노 자율주행 rc카 초음파 장애물에 닿으면 정지하고 장애물 없어지면 다시 전진하는 코딩을 잘모르겠습니다…댓글[5] 종느 22-06-06 2284
질문 아두이노 우노 listen() 사용댓글[3] 첨부파일 면지지 22-06-05 1171
질문 아두이노 메가 2560 관련 질문입니다!댓글[3] 이미지 아뒤노 22-06-05 1484
질문 아두이노 모터 제어 코드 질문 히동 22-06-05 1556
답변 답변글 답변 : 아두이노 모터 제어 코드 질문댓글[1] master 22-06-05 975
질문 atmega128 프로젝트 외주 사례합니다댓글[1] 공돌ㅇ 22-06-05 1153
질문 atmega128 프로테우스 부저소리 관련하여..댓글[1] 꿍다라링 22-06-04 1030
질문 assembly coding 한 번만 도와주세요 ㅜ댓글[3] 마프마푸 22-06-04 1438
질문 [ATmega 기초질문] DC모터속도제어 코딩 및 연결 질문드립니다.댓글[2] 이미지 zen123 22-06-04 1818
질문 uart 송수신 관련 질문입니다.댓글[1] 황자르 22-06-04 1241
질문 수위센서, 압력센서를 이용한 서모모터 제어 악두이노 22-06-03 1422
답변 답변글 답변 : 수위센서, 압력센서를 이용한 서모모터 제어 master 22-06-04 957
질문 Esp32 sd card댓글[1] 김아무개 22-06-03 1284
질문 아두이노 라인트레이서 센서를 이용한 rc카로 사다리타기 게임댓글[1] 이미지첨부파일 hunhun 22-06-03 1403
질문 배열에 있는 값으로 jpg 파일 보는 법댓글[3] lshlsh3690 22-06-03 552
질문 아래 ATMEGA LCD 출력 코드 및 에러 확인 질문 이미지 첨부합니다.댓글[1] 이미지첨부파일 chelsea 22-06-03 1354
답변 답변글 답변 : 아래 ATMEGA LCD 출력 코드 및 에러 확인 질문 이미지 첨부합니다. master 22-06-03 1281
질문 온도 센서관련 코드 질문드립니다..댓글[3] MzKLN 22-06-03 1890
질문 ATMEGA LCD 출력 코드 및 에러 확인 부탁드립니다.댓글[2] chelsea 22-06-03 1208
질문 atmega128 조도센서를 이용하여 서보모터와 dc모터 제어하는거 봐주실수있나요ㅠㅠ 이미지첨부파일 화니뿌뿌 22-06-02 1583
답변 답변글 답변 : atmega128 조도센서를 이용하여 서보모터와 dc모터 제어하는거 봐주실수있나요ㅠㅠ댓글[4] master 22-06-02 2776
질문 키패드 led 인체감지 질문 면지지 22-06-02 1554
답변 답변글 답변 : 키패드 led 인체감지 질문댓글[3] master 22-06-02 1098
질문 ATMEGA128 채터링(chattering)관련 질문입니다.댓글[1] 아지개구리 22-06-02 2304
질문 32x8 도트매트릭스 사용질문댓글[3] 엑스칼리버excel 22-06-02 1560
질문 아두이노 릴레이모듈로 전구밝기 조절 가능할까요?댓글[4] 초심자의행운 22-06-02 2368
질문 모터 드라이브 질문드립니다.댓글[2] 이미지첨부파일 kyho3855 22-06-02 1670
질문 안녕하세요 atmega128 chattering에 대해서 궁금한게있습니다.댓글[4] tony 22-06-01 1724
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기