Для электронщиков и радиолюбителей

Подключаем двигатель постоянного тока к Raspberry Pi и управляем им через драйвер

Подключаем двигатель постоянного тока к Raspberry Pi и управляем им через драйвер

Raspberry Pi и мотор постоянного тока через драйвер L298N

В данном проекте мы рассмотрим, как подключить маломощный двигатель постоянного тока к вашему Raspberry Pi. В нашем случае мы используем Raspberry Pi 4.

Двигатель постоянного тока подключается к Raspberry Pi через драйвер управления двигателями. Драйвер двигателя – это специальная схема или отдельная микросхема, которая обеспечивает необходимую мощность (точнее, ток) для двигателя с целью его плавной и безопасной работы. Никогда не следует подключать двигатель напрямую к Raspberry Pi, так как такой одноплатный компьютер не сможет обеспечить на своих выводах необходимый ток для надежной работы.

В качестве драйвера здесь мы используем модуль на основе микросхемы L298N.

L298N

Для питания схемы мы задействовали аккумулятор емкостью 3300 мАч. Сам Raspberry Pi можно питатьот собственного блока питания 5 В, 2 А. Схема подключения компонентов представлена далее.

Raspberry Pi и мотор постоянного тока через драйвер L298N

Код для Raspberry Pi следующий.

import RPi.GPIO as GPIO
from time import sleep

Motor1A = 21
Motor1B = 20
Motor1E = 16
 
def setup():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(Motor1A,GPIO.OUT)
    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__':
    setup()
    try:
            loop()
    except KeyboardInterrupt:
        destroy()