에듀이노-코딩교육 전문 쇼핑몰 에듀이노-코딩교육 전문 쇼핑몰

학교, 공공기관이라면 후불결제하세요!

 
현재 위치
  1. 게시판
  2. 묻고답하기

묻고답하기

기술문의 게시판입니다.

게시판 상세
제목 서보모터 관련 문의
작성자 임재훈 (ip:)
  • 작성일 2021-05-14
  • 추천 추천하기
  • 조회수 601

MG996R 제품 받았습니다.

모터를 제어하기 위해 3가지 방법으로 테스트하였습니다.


1. UNO R3 와 MG996R 만을 사용

 ㄱ. 5V, GND, PWM(9) 연결 시 USB 통신 끊김 현상 발생 

 ㄴ. 3.3V, GND, PWM(9) 연결 시 정회전으로만 동작

 ㄷ. 소스 코드

    #include <Servo.h>


    Servo myServo;

    int pos=0;


    void setup() {

      Serial.begin(9600);

      myServo.attach(9);

    }


    void loop() {

     myServo.write(150);

     Serial.write("정회전");

     delay(1000);

     myServo.write(50);

     Serial.write("역회전");

     delay(1000);

     myServo.write(90);

     Serial.write("정지");

     delay(5000);

    }


-> 결과 : 역회전으로 동작하지않음, 정회전으로만 계속하여 돎


2. 위의 1번의 ㄱ,ㄴ 은 동일


  ㄷ. 아두이노 예제 코드 sweep 사용


-> 결과 : 역회전으로 동작하지않음, 정회전으로만 계속하여 돎 


3. 16채널 모터 제어보드, UNO R3, MG996R 사용 

   ㄱ. 제어보드와 우노 연결

   ㄴ. 제어보드 0번 채널 사용 (이 때, 6V 전압 인가)

   ㄷ. 소스 코드 2개

    

#include "HCPCA9685.h"  // 설치한 헤더 파일

#define I2CAdd 0x40

 

HCPCA9685 HCPCA9685(I2CAdd);

unsigned int Pos;     // 각도 조정을 위한 변수

 

void setup() {

  HCPCA9685.Init(SERVO_MODE);   // 쉴드를 서보모드로 초기화

  HCPCA9685.Sleep(false);

  Serial.begin(9600);

}

 

void loop() {

  HCPCA9685.Servo(1, 150);           // 연결된 서보모터를 Pos만큼 움직이기

  Serial.println("정회전");

  delay(3000);

  HCPCA9685.Servo(1, 0);

  Serial.println("역회전");

  delay(3000);

  HCPCA9685.Servo(1, 90);

  Serial.println("정지");

  delay(3000);

}


#include "HCPCA9685.h"  // 설치한 헤더 파일
#define I2CAdd 0x40
 
HCPCA9685 HCPCA9685(I2CAdd);  
 
void setup() {
  HCPCA9685.Init(SERVO_MODE);   // 쉴드를 서보모드로 초기화
  HCPCA9685.Sleep(false);
}
 
void loop() {
  unsigned int Pos;     // 각도 조정을 위한 변수
  for(Pos = 10; Pos < 450; Pos++) {   // Pos가 10부터 449까지 증가할 때
    HCPCA9685.Servo(0,Pos);           // 연결된 서보모터를 Pos만큼 움직이기
    delay(1);
  }
 
  for(Pos = 450; Pos >= 10; Pos--) {  // Pos가 450부터 10까지 감소할 때
    HCPCA9685.Servo(0,Pos);           // 연결된 서보모터를 Pos만큼 움직이기
    delay(1);
  }
}



구글링하여 찾아보니 90도를 기준으로 정지, 90도 초과이면 정회전, 90도 미만이면 역회전으로 나와있습니다.

하지만 멈추지않고 계속하여 정회전만 반복하여 회전합니다. 

또한 아두이노 예제 코드 sweep를 사용하였음에도 정회전으로만으로 동작합니다.


모터가 제어 불능 상태입니다. 답변 부탁드립니다.


게시글 신고하기

신고사유

신고해주신 내용은 쇼핑몰 운영자의 검토 후 내부 운영 정책에 의해 처리가 진행됩니다.

평점 0점
첨부파일
비밀번호 수정 및 삭제하려면 비밀번호를 입력하세요.
  • 아공생 2021-05-18 0점
    수정 삭제 댓글
    스팸글 외부전원이 적은것 같습니다! 9V~12V 전압을 공급해주시고,
    MG996R에 필요한 동작 전압 전류를 확인해보셔야할 것 같아요. 저도 테스트 하면서 보드 전류로는
    제어 안된다는걸 알았습니다...

스팸신고 스팸해제

댓글 수정

비밀번호 :

수정 취소

/ byte

비밀번호 : 확인 취소

댓글 입력

댓글달기이름 :비밀번호 : 관리자답변보기

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

댓글 입력

댓글달기이름 :비밀번호 :

확인

/ byte

왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)

에게만 댓글 작성 권한이 있습니다.

«
»