질문게시판 > 서보모터 관련 질문합니다.

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

서보모터 관련 질문합니다.

페이지 정보

작성자 bono 작성일18-12-14 00:37 조회5,562회 댓글2건

첨부파일

본문

안녕하세요 어제 질문 올렸는데 도움 잘 받았습니다.

 

다시 한번 감사드립니다.!!

 

현재 ATMEGA328을 이용하여 무선컨트롤러를 UART통신으로 RC카를 제어하는 코드를 만들고 있습니다.

 

그런데 서보모터 제어 관련하여 여쭤보고 싶은게 있어서요 

 

RC CAR의 조향장치를 16비트 타이머를 이용해서 서보모터를 제어하고 싶은데요.

 

컨트롤러부분에서 가변 저항 ADC값을 읽어 0~180으로 변환해준 후  본체쪽으로 보내고 

 

본체부분에서 180 이하 값을 받으면 


그 값을 OCR1A에 원하는 각에 대한 값을 얻는 식을 코드에 삽입했는데요. 

 

본체부분으로 가는 RX부분을 터미널로 확인하여 헥사코드를 보았는데도 변화가 없고 0~180 (0~B4)의 값만 보여지고 서보모터가 가변저항 값에 따라 세밀한 각조절이 되지 않는것을 확인하였습니다.

 

 

(서보모터의 듀티비에서 20ms 의 주기 동안 0도를 만들어 주기 위해서는 1ms가 HIGH이고 19ms가 LOW인 파형을 동작시간 동안 계속 보내주어야 하고

 

따라서 OCR1A값이 0도 일때는  2000 , +90도 일때는 3000 , 180도 일때는 4000 이어야 합니다.)

 

개인적인 생각으로 0~180의 값을 받으니 본체부분에서 OCR1A = (( r / 180)*2000+2000); 으로 줘봤는데 서보모터 값이 더 이상해 진거 같네요. 

 

제가 계산을 잘못한건지...

 

코드에 무슨 문제가 있는지 봐주실 수 있나요? 

 

 

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

댓글 : 2

조회수 : 5,562

master님의 댓글

master 작성일

uint16_t ReadADC(uint8_t ch){ // ADC값을 읽어오는 함수
  ADCSRA|=(1<<ADSC); // ADC 변환 시작
  while(!(ADCSRA&(1<<ADIF))){
    ; // 변환 기다림
  }
  int ADC_Low;
  int ADC_High;
  ADC_Low=ADCL;
  ADC_High=ADCH;
  Handle=(ADC_High<<8)|ADC_Low;
  Handle=(int)((float)Handle*180.0/1023.0);
  ADCSRA|=(1<<ADIF); // 변환 완료
  return(ADC); // ADC값 반환
}
열심히 Handle을 연산까지 다 해놓고
  return(ADC); // ADC값 반환
마지막에 ADC를 리턴하고 있습니다.
 return(Handle); // Handle값 반환
이렇게 수정하세요

master님의 댓글

master 작성일

OCR1A=r*19+1200;
위 코드의 히스토리를 다 설명하려면 복잡하고요
 OCR1A=r*20+1200;
이렇게 수정해서 돌려보세요
각도 조정에 문제가 있어서 양쪽 끝에서 걸리는 모터도 있습니다.
 OCR1A=r*19+1310;
 OCR1A=r*18+1380;
끝에서 부딪히는 모터 경우에는 위처럼 수정해주세요
1500us 중심으로 양쪽 폭을 줄이는 겁니다.
//
1000~2000us의 각도는 RC에서 조정기로 조정할 때 많이 사용하는 것이고
일반적인 서보모터의 각도 범위는 600~2400us 정도입니다.
이 범위는 제조사마다 조금씩 다를 수 있고, 생산 시 오차가 있어서 정확하지는 않습니다.
1500us가 센터 위치이다 <-- 주로 이 내용만 스펙에 명시하고 있습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum 새글 22-06-26
질문 음전압 ADC 댓글[1] 412904 새글 22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전