모터 드라이버는 전기 모터를 제어하기 위해 사용되는 전자 장치입니다. 주로 DC 모터나 스텝 모터와 같은 전기 모터를 제어하는 데 사용되며, 모터의 회전 방향, 속도, 전원 공급을 조절할 수 있습니다. 모터 드라이버는 보통 저전력의 신호(예: 마이크로컨트롤러에서 나오는 신호)를 받아 이를 고전력으로 변환하여 모터를 구동합니다.
주요 기능
- 방향 제어: 모터의 회전 방향을 제어할 수 있습니다. 대부분의 모터 드라이버는 H-브릿지 회로를 사용하여 모터의 방향을 바꿀 수 있습니다.
- 속도 제어: PWM(Pulse Width Modulation) 신호를 사용하여 모터의 속도를 제어합니다. PWM의 듀티 사이클을 조절함으로써 모터의 평균 전압을 변화시켜 속도를 조절할 수 있습니다.
- 전류 보호: 모터가 과도한 전류를 소비하면 손상될 수 있기 때문에, 모터 드라이버에는 과전류 보호 기능이 포함된 경우가 많습니다.
- 전압 증폭: 마이크로컨트롤러의 출력 전압(예: 5V)을 모터에 필요한 전압(예: 12V, 24V 등)으로 증폭하여 모터가 충분한 전력을 공급받도록 합니다.
모터 드라이버의 종류
- L293D: 가장 널리 사용되는 DC 모터 드라이버로, 두 개의 DC 모터를 독립적으로 제어할 수 있습니다.
- L298N: 고전압 모터 드라이버로, DC 모터 두 개나 스텝 모터 한 개를 제어할 수 있습니다.
- DRV8825: 주로 스텝 모터에 사용되며, 고전류와 고전압 모터에 적합합니다.

라이브러리 다운로드
모터테스트 코드
#include <SoftwareSerial.h> #include <AFMotor.h> AF_DCMotor motor_L(1); AF_DCMotor motor_R(4); void setup() { motor_L.setSpeed(150); motor_L.run(RELEASE); motor_R.setSpeed(150); motor_R.run(RELEASE); } void loop() { motor_L.run(FORWARD); motor_R.run(FORWARD); delay(2000); motor_L.run(RELEASE); motor_R.run(RELEASE); delay(3000); motor_L.run(BACKWARD); motor_R.run(BACKWARD); delay(2000); motor_L.run(RELEASE); motor_R.run(RELEASE); delay(1000); }
적외선센서를 고정시켜줍니다.

적외선 센서 코드가 결합된 코드
적외선 센서는 디지털 12번, 13번 pin에 연결하도록 한다.
void setup() { pinMode(7, OUTPUT); // Motor A 방향설정1 pinMode(8, OUTPUT); // Motor A 방향설정2 pinMode(4, OUTPUT); // Motor B 방향설정1 pinMode(5, OUTPUT); // Motor B 방향설정2 analogWrite(9, 130); // Motor A 속도조절 (0~255) analogWrite(3, 130); // Motor B 속도조절 (0~255) Serial.begin(9600); } void loop() { int val1 = digitalRead(12); // 라인센서1 왼쪽 int val2 = digitalRead(13); // 라인센서2 오른쪽 Serial.print(val1); Serial.println(val2); if (val1 == 1 && val2 == 1) // 직진 { digitalWrite(7, HIGH); digitalWrite(5, HIGH); } else if (val1 == 0 && val2 == 1) // 좌회전 { digitalWrite(7, LOW); digitalWrite(5, HIGH); } else if (val1 == 1 && val2 == 0) // 우회전 { digitalWrite(7, HIGH); digitalWrite(5, LOW); } else if (val1 == 0 && val2 == 0) // 정지 { digitalWrite(7, LOW); digitalWrite(5, LOW); } }
답글 남기기