반응형

【 아두이노 기초 】 #19 DC 모터 제어 하기 2


 DC모터를 제어 해보자!  DC 모터는 전류가 흐르는 방향으로 회전을 하기 때문에 포트의 출력을 제어하여 모터의 회전 방향을 결정할 수 있다.

이번에는 가변 저항을 연결하여 모터의 속도를 제어 해보도록 하자!   


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



▶ DC 모터 제어 회로도 :




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


▶ 부품 목록    : DC 모터, 100Ω (전류 제한용도), NPN형 TR, 정류용 다이오드(1N4001~4007, 아무거나) , 100KΩ (10Ω~500KΩ 등, 가지고 있는 가변저항 사용)


▶ 실습 절차  : 

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

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

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



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


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

void setup() {

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

}

void loop() {

 int reading=analogRead(A3);   // 아날로그포트에서 최대 2^8 (256)      // 값을 읽어온다

 digitalWrite(motorPin,HIGH);   // 읽어 들인 데이터 만큼 HIGH유지

 delay(reading);                    

 digitalWrite(motorPin,LOW);  //(255-읽어온 데이터)만큼 LOW 유지

 delay(255-reading);

}


  가변저항으로 인해 분배되어 들어 오는 값, 즉 전압에 의한 레벨값으로 2^8비트 값(최대값이 256 값-0~255) 을 읽어 들이는데 이 값을 가지고 PWM 신호 듀티비를 조절하여 모터의 속도를 조절 하는 방식이다.

 

( PWM 신호와 같이 듀티비(High와 Low 신호 비율) 로 모터의 회전 속도를 제어하는 것이다. 

 High 신호가 Low 신호 보다 출력 시간을 길게 하면 상대적으로 모터가 빨리 회전 한다.


▶ 실행 영상 : 





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


sketch_motor2_control.ino


반응형