Controlling a DC Motor With Raspberry Pi4
by sarful in Circuits > Raspberry Pi
21 Views, 0 Favorites, 0 Comments
Controlling a DC Motor With Raspberry Pi4
Introduction
In this tutorial, I will show you how to connect some motors to your Raspberry Pi4. DC Motor with Raspberry Pi lies with the Motor Driver. What is motor Driver: A Motor Driver is a special circuit or IC that provides the necessary power (or rather the current) to the motor for smooth and safe operation.
we should never connect a motor directly to Raspberry Pi
Circuit Diagram
Components Required
- Raspberry Pi 4 Model B
- L298N Motor Driver Module
- Lipo Battery 3300mAh
- Connecting wires (Jumper Wires)
- 5V – 2A Power Supply for Raspberry Pi
- 5V DC Motor
with Motor Driver Module-L298N, we can actually control two motors. For simplicity reasons, I’ll demonstrate the circuit, working, and program for controlling a single DC Motor with Raspberry Pi4.
Short Brief Motor Driver Module-L298N :
From this Datasheet, This dual bidirectional motor driver is based on the very popular L298 Dual H-Bridge Motor Driver Integrated Circuit. The circuit will allow you to easily and independently control two motors of up to 2A each in both directions.It is ideal for robotic applications and well suited for connection to a microcontroller requiring just a couple of control lines per motor. It can also be interfaced with simple manual switches, TTL logic gates, relays, etc. This board equipped with a power LED indicators, onboard +5V regulator, and protection diodes.
Python Program for Controlling a DC Motor with Raspberry Pi
import RPi.GPIO as GPIO from time import sleep # Pins for Motor Driver Inputs Motor1A = 21 Motor1B = 20 Motor1E = 16 def setup(): GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) # GPIO Numbering GPIO.setup(Motor1A,GPIO.OUT) # All pins as Outputs GPIO.setup(Motor1B,GPIO.OUT) GPIO.setup(Motor1E,GPIO.OUT) def loop(): # Going forwards GPIO.output(Motor1A,GPIO.HIGH) GPIO.output(Motor1B,GPIO.LOW) GPIO.output(Motor1E,GPIO.HIGH) print("Going forwards") sleep(5) # Going backwards GPIO.output(Motor1A,GPIO.LOW) GPIO.output(Motor1B,GPIO.HIGH) GPIO.output(Motor1E,GPIO.HIGH) print("Going backwards") sleep(5) # Stop GPIO.output(Motor1E,GPIO.LOW) GPIO.output(Motor1B,GPIO.LOW) print("Stop") def destroy(): GPIO.cleanup() if __name__ == '__main__': # Program start from here setup() try: loop() except KeyboardInterrupt:destroy()