Processor

【라즈베리파이】 wiringPi Python : L298N 모터 드라이브를 이용한 DC 모터 제어하기

작성자 임베디드코리아 작성일26-02-20 00:22 조회75회 댓글0건
■ L298N 모터 드라이브의  사양
   입출력 채널 : 2개 → 2개의 모터 제어 가능
   모터 구동 입력 전압 : 5 Volt 또는 12 Volt
   최대 전력 : 25W
   최대 허용 전류 : 2A(모터 당)


■ DC 모터의 회전 방향을 제어 방법
   DC 모터는 전류가 흐르는 방향에 따라 모터의 회전 방향이 변경된다.
   +에서 -로 흐르는 전류의 방향을 -에서 +로 변경하면 회전 회전 방향이 반대가 된다.


■  DC 모터의 속도를 제어하는 방법
   전압의 크기로 DC 모터의 속도를 변경할 수 있다.
   입력 전압이 높으면 모터의 속도가 빨라지고 입력 전압이 낮으면 모터의 속도가 느려진다.
   전압의 크기를 가변 할 수 있는 PWM를 이용한다.


<<<  DC 모터 한 개만 연결하여 모터 제어 동작 >>>
• 외부 전원 6 Volt 사용(1.5 Volt 4개 직렬 연결)
• L298N 모터 드라이브 GND는 라즈베리파이의 Ground와 외부 전원의 (-) 극과 연결
• L298N 모터 드라이브의 +5V 는 외부 전원의 (+)극과 연결
• L298N 모터 드라이브의 OUT1과 OUT2는 DC 모터의 2개의 선과 연결
  (순서에 상관없이 연결 후 모터 회전 방향이 생각했던 방향과 반대로 회전하면 연결하였던 선의 순서를 변경하면 됨.)
• L298N 모터 드라이브의 IN1과 라즈베리파이 GPIO 20 핀과 연결
• L298N 모터 드라이브의 IN2와 라즈베리파이 GPIO 21 핀과 연결

---<<< 예제 : DC-Motor.py  >>>----------------------------
from gpiozero import Motor
from time

# Motor Pin Setup
motor = Motor(forward=20,backward=21)

while True:
    print('Motor Rotation : Forward')
    motor.forward(speed=0.5)
    time.sleep(5)

    print('Motor Rotation : backward')
    motor.backward(speed=0.5)
    time.sleep(5)
-----------------------------------------------------------------
peed=1 이라고 하면 최대 속도이며 speed=0.5라고 하면 최대 속도의 50% 로 속도가 느려진다.


<<<  DC 모터 2개 연결하여 모터 제어 동작 >>>
•  IN1 -> GPIO 22
•  IN2 -> GPIO 23
•  IN3 -> GPIO 24
•  IN4 -> GPIO 25

--->>> 예제 : DC_Motor2.py  <<<-----------------------------
from gpiozero import Motor
from time import sleep

# 모터 핀 세팅.
motorR = Motor(forward=23,backward=22) # 오른쪽 모터 객체 생성. (그림에서 A 방향)
motorL = Motor(forward=24,backward=25) # 왼쪽 모터 객체 생성. (그림에서 B 방향)

# speed 변수에 0~1 사이의 값을 넣어서 속도를 조절할 수 있다. 수가 클수록 빠르다.
# 3초 동안 전진
motorR.forward(speed=0.7)
motorL.forward(speed=0.7)
sleep(3)

# 3초 동안 후진
motorR.backward(speed=0.7)
motorL.backward(speed=0.7)
sleep(3)

# 3초 동안 좌회전
motorR.forward(speed=0.7)
motorL.backward(speed=0.7)
sleep(3)

# 3초 동안 우회전
motorR.backward(speed=0.7)
motorL.forward(speed=0.7)
sleep(3)

# 양쪽 모터 정지.
motorR.stop()
motorL.stop()