반응형

【 아두이노 기초 】 #22 DC 모터 제어 하기 3

 이번 시간은 DC모터를 시리얼 통신(창)을 이용해 제어해보자, 입력값에 따라 속도 조절도 가능하다.

(관련 내용은 앞의 DC모터 자료를 참고 : http://rasino.tistory.com/133 )


※ 모터를 다룰 때는 주의 할 것은 코일로 이루어진 모터에 전류를 흘릴 경우 반대방향으로 기전력(역기전력)이 발생하게 되는데 이를 방지하기 위해 모터와 병렬로 다이오드를 반드시 달아 주어야 한다.  그래야 주변 회로(TR, FET 등)가 손상되지 않는다. 



▶ DC 모터 제어 회로도 :




▶ 부대품 목록 : 아두이노 보드, 브레드 보드


▶ 부품 목록    : DC 모터, 100Ω (전류 제한용도), NPN형 TR, 정류용 다이오드(1N4001~4007, 아무거나) 


▶ 실습 절차  : 

 1. 회로도를 참고하여 모터 와 부품들을 연결한다.
 
 2. 저항은 전류제한(+,- 쇼트 방지용) 용도로 사용하기 위함 임으로 100옴 
    정도의 작은 저항을 사용하면 된다. 따라서 만약 100옴의 저항이 없다면, 
    50옴, 80옴, 120옴, 200옴 등의 값이 작은 저항을 사용하면 문제가 없다. 

 3. TR은 스위치 작용을 위해 연결 한 것임으로 모델 종류에 상관 NPN 타입을
  사용하면 된다. 단, TR의 극성에 주의 한다. B(베이스 단자), 
   E(에이터 단자), C(콜렉터 단자)

 4. 아래 프로그램 코드를 작성해서 실행해 본다.

 5. 아래와 같이 시리얼 모니터 창을 열어 회전값을 입력해 본다.



▶ 실습 목표  : 




▶ 프로그램 (코드& 설명) : 


int motorPin =3;    // 모터 연결 핀을 정의한다.

void setup() {

   pinMode(motorPin, OUTPUT);   //모터 연결핀을 출력으로 설정

   Serial.begin(9600);        // 시리얼 통신을 초기화 한다

   Serial.println("Speed 0 to  255"); // 입력범위를 화면에 표시한다

}

void loop() {

  if(Serial.available())    // 시리얼 데이터가 있으면 실행한다

  {

    int speed = Serial.parseInt(); // 시리얼 입력 데이터를 정수로 저장

    if(speed> 0 && speed <= 255)

    {

      analogWrite(motorPin,speed); // 시리얼 입력데이터만큼 출력

      Serial.println(speed);   //현재 스피드를 출력한다

    }

  } 

}




▶ 실행 영상 : 







▶ 아두이노 코드 다운로드 : 


serial_Input_motorControl.ino





반응형