공부용 블로그 | seokmin100

Nefus - Arduino [서보모터, DC 모터, 모터드라이버] 본문

Nefus/Arduino

Nefus - Arduino [서보모터, DC 모터, 모터드라이버]

seokmin100 2024. 5. 28. 20:40

서보모터

서보모터는 제어회로를 가진 제어구동보드를 포함한 모터입니다. 

DC모터가 모터를 통해 흐르는 전류의 양에 비례한 속도로 회전하는데 비해 서보모터는 지정한 각도로 이동하여 그 위치를 유지합니다.

 

 

 

DC 모터

DC모터는 직류 전원에 의해 회전운동을 하는 전자부품입니다. 

아두이노 보드도 일정한 크기의 5V전압으로 동작하듯이 DC모터 또한 일정한 전압에 동작합니다.

DC모터는 전류의 방향 전환에 따라 회전력이 생기면서 움직이게 됩니다.

 

 

 

모터드라이버

모터드라이버는 고용량 DC모터를 원활히 운전시키기 위한 부가장치입니다.
특히 아두이노와 같은 마이크로컨드롤러로 제어하기 쉽게 구성되어 있어 회로를 구성하는 수고를 덜어줍니다.
모터드라이버는 아두이노로부터 HIGH 또는 LOW신호를 인가받아 DC모터의 회전 방향을 결정하고, PWM신호를
수신하여 모터의 회전력을 제어합니다. 

모터의 회전 방향은 모터 드라이버의 극성을 바꾸어 제어하고, 회전력은 PWM 신호로 모터에 유입되는 전력으로 제어합니다.

 

 

 

실습

초음파 센서와 서보모터를 이용해 물체가 초음파 센서의 인식 반경에 들어오게 되면 서보모터가 90도 돌아가게 되는 아두이노 실습물 입니다.

#include <Servo.h>
Servo servo;

#define TRIG 9
#define ECHO 8

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);

  servo.attach(13);
}

void loop() {
  long duration, distance;
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  duration = pulseIn(ECHO, HIGH);
  distance = duration * 17 / 1000;

  Serial.print(distance);
  Serial.println("\n");

  if(distance <= 5) {
    servo.write(90);
  } else {
    servo.write(0);
  }

  delay(1000);
}