树莓派L298N电机驱动程序连接图文教程

手里有一块树莓派3闲置很久,不知干点啥好呢。看到不少网友用树莓派做智能小车,好像很好玩的酱紫,就到淘宝买了一些配件。对于硬件小白的我来说安装过程并不轻松,网上看了很多资料但有的地方介绍的并不很详细,最后经过摸索还是成功了!为了新入门的玩家少走弯路,下面详细介绍树莓派+L298N电机驱动板的连接教程。至于传感器和Android控制端以后有机会再介绍一下吧。

 

 

 

接口说明:

1、12V输入:

连接7~12V的电源正极。

 

2、电源地(GND):

连接电源负极

 

3、5V输出:

树莓派使用的就是5V电源,所以这个接口可以给树莓派供电。将5V输出(正极)与树莓派5V PWR针(4号针)连接,GND电源与树莓派GND连接(6号针)。(当使用L298N为树莓派供电时,树莓派切记不要连接外部电源)。

 

4、A通道使能和B通道使能:

A通道使能是控制马达A区输出电压的,通过控制输出电压实现马达加速减速。默认带跳线帽输出的是最高电压,拔掉跳线帽后不输出电压的,但可以使用树莓派GPIO输出5V电平信号控制输出电压。

拔掉跳线帽后有两根柱子,外面1根连接树莓派的GPIO针,里面一根输出的是5V电压,千万不要搞错了,如果有其他模块需要5V供电用这个也可以。B通道使能和A通道一样都是用外面的铜柱连接树莓派GPIO针。

 

5、单机片IO控制输入:

有四根铜柱,分别连接树莓派GPIO针(推荐:11、12、13、15针)

 

6、马达A区输出和马达B区输出

可同时控制两个马达正反转,如果是四驱可以使用并联的方法,A区连接小车右前后轮,B区连接左前后轮。每个区有两个输出接口(没有正负极之分),分别连接马达正负极,注意四个电机的旋转方向是否保持一致。

 

7、板载5V输出使能

用于板载5V供电,如果把掉跳线帽,需要在5V输出接口上,输入5V电源为L298N驱动版供电。

通常是为了避免稳压芯片损坏,当输入驱动电压大于12V时,需要使用外置的5V为驱动板供电。

 

 

树莓派L298N电机驱动程序连接图文教程_第1张图片

 

 

 

具体操作源码:


import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

GPIO.setwarnings(False)

Motor1A = 11

Motor1B = 12

Motor1E = 16     #使能通道A



Motor2A = 13

Motor2B = 15

Motor2E = 18     #使能通道B





#print("Setting up GPIO pins")

GPIO.setup(Motor1A, GPIO.OUT)

GPIO.setup(Motor1B, GPIO.OUT)

GPIO.setup(Motor1E, GPIO.OUT)

GPIO.setup(Motor2A, GPIO.OUT)

GPIO.setup(Motor2B, GPIO.OUT)

GPIO.setup(Motor2E, GPIO.OUT)





#print("Warming up engines")

motorR = GPIO.PWM(Motor1E,100)

motorL = GPIO.PWM(Motor2E,100)    

#print("Starting motors")

def initStart():

    motorR.start(0)

    motorL.start(0)



def checkSpeed(speed):

    print("Checking the speed")

    if speed < 25:

        speed = 25

    if speed > 100:

        speed = 100

    print("Speed is: "+str(speed))

    return speed



def goStraight(speed):

    speed = checkSpeed(speed)

    GPIO.output(Motor1A, GPIO.LOW)

    GPIO.output(Motor1B, GPIO.HIGH)

    GPIO.output(Motor2A, GPIO.HIGH)

    GPIO.output(Motor2B, GPIO.LOW)

    motorR.ChangeDutyCycle(speed)

    motorL.ChangeDutyCycle(speed)

    print("Going straigh with speed: "+str(speed))

    #time.sleep(100)



def stop():

    print("Stoping")

    GPIO.output(Motor1A, False)

    GPIO.output(Motor1B, False)

    GPIO.output(Motor2A, False)

    GPIO.output(Motor2B, False)

    motorR.ChangeDutyCycle(0)

    motorL.ChangeDutyCycle(0)



def exitAndClean():

    print("Exiting")

    motorR.stop()

    motorL.stop()

    GPIO.cleanup()

    exit()



def cleanNoExit():

    print("Exiting")

    motorR.stop()

    motorL.stop()

    GPIO.cleanup()

    

def goBack(speed):

    speed = checkSpeed(speed)

    print("Going back with speed: "+str(speed))

    GPIO.output(Motor1A, GPIO.HIGH)

    GPIO.output(Motor1B, GPIO.LOW)

    GPIO.output(Motor2A, GPIO.LOW)

    GPIO.output(Motor2B, GPIO.HIGH)

    motorR.ChangeDutyCycle(speed)

    motorL.ChangeDutyCycle(speed)



def turnRight(speed):

    speed = checkSpeed(speed)

    print("Turning right with speed: "+str(speed))

    GPIO.output(Motor1A, GPIO.HIGH)

    GPIO.output(Motor1B, GPIO.LOW)

    GPIO.output(Motor2A, False)

    GPIO.output(Motor2B, False)

    motorR.ChangeDutyCycle(80)

    motorL.ChangeDutyCycle(80)



def turnLeft(speed):

    speed = checkSpeed(speed)

    print("Turning left with speed: "+str(speed))

    GPIO.output(Motor1A, False)

    GPIO.output(Motor1B, False)

    GPIO.output(Motor2A, GPIO.LOW)

    GPIO.output(Motor2B, GPIO.HIGH)

    motorR.ChangeDutyCycle(80)

    motorL.ChangeDutyCycle(80)

 

你可能感兴趣的:(树莓派,单片机)