Python
[Python] 라즈베리파이3와 L298N 모터드라이버로 DC 모터 제어하기
teamnova
2023. 7. 15. 12:00
728x90
안녕하세요.
이번에는 라즈베리파이3와 L298N 모터드라이버로 DC모터의 회전 방향과 속도를 제어하는 예제를 진행하겠습니다.
준비물은 다음과 같습니다.
1. 라즈베리파이3
2. L298N
3. DC모터 2개
L298N은 모터의 회전방향, 회전속도를 제어할 수 있게 해주는 모터 드라이버입니다.
그림과 표를 보면서 사용법을 설명하겠습니다.
사진을 보면 Input1, Input2, Input3, Input4 가 있습니다.
연결된 라즈베리파이3에서 표와 같이 디지털 값을 Input1, Input2에 보내서 A 모터를 제어할 수 있고, Input3, Input4에 보내서 B 모터를 제어할 수 있습니다.
GpioZero 라이브러리를 사용하여 모터를 제어하겠습니다. GpioZero의 핀배열은 다음과 같습니다
예제에서는
IN1 -> GPIO 22
IN2 -> GPIO 23
IN3 -> GPIO 24
IN4 - > GPIO 25
로 연결해서 사용합니다.
연결된 구조는 다음 그림과 같습니다.
파이썬 코드는 다음과 같습니다.
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()