赞
踩
L298N双H桥直流电机驱动模块的引脚可以归纳成电源、控制和输出等三大类,下面是各类引脚的功能说明。
+12V输入:L298N芯片的电源正极,模块上标称+12V,但实际范围可以是5V35V,如果需从模块内取电,则其范围为7V35V。
GND:L298N芯片的电源地,使用的时候应该把树莓派的GND接到这里,即两者需要共地。
+5V输出:L298N芯片输出的5V电源,可以给外部设备供电,使用的时候需要用跳线把5V输出使能端短接起来。
ENA、ENB:A、B通道的使能端,高电平有效,可以用PWM来实现调速。使用时,可以接到树莓派的GPIO上,实现用程序进行控制。
IN1、IN2、IN3、IN4:IN1、IN2为A通道的控制输入,IN3、IN4为B通道的控制输入。
OUT1、OUT2、OUT3、OUT4:OUT1、OUT2由A通道输出,OUT3、OUT4由B通道输出,可以用于连接直流电机等设备。
控制直流电机的转向和转速实际是通过给控制类引脚设置不同的值来实现的,表7.1是使用通道A的控制直流电机的真值表,通道B与此类似。
BEGIN 引入GPIO库 将连接ENA的GPIO引脚设置为输出模式 将连接IN1的GPIO引脚设置为输出模式 将连接IN2的GPIO引脚设置为输出模式 DO FOREVER 将IN1设置为0,IN2设置为1,将电机设置为正向转动 将ENA设置为1,驱动A通道电机转动 等待5秒 将ENA设置为0,停止电机转动 等待2秒 将IN1设置为1,IN2设置为0,将电机设置为反向转动 将ENA设置为1,驱动A通道电机转动 等待5秒 将ENA设置为0,停止电机转动 等待2秒 ENDO 停止PWM 清理释放GPIO资源 END
import RPi.GPIO as GPIO # 引入GPIO模块 import time # 引入time模块 ENA = 13 # 设置GPIO13连接ENA IN1 = 19 # 设置GPIO19连接IN1 IN2 = 26 # 设置GPIO26连接IN2 if __name__ == '__main__': try: # 初始化 GPIO.setmode(GPIO.BCM) # 使用BCM编号方式 GPIO.setup(ENA, GPIO.OUT) # 将连接ENA的GPIO引脚设置为输出模式 GPIO.setup(IN1, GPIO.OUT) # 将连接IN1的GPIO引脚设置为输出模式 GPIO.setup(IN2, GPIO.OUT) # 将连接IN2的GPIO引脚设置为输出模式 while True: # 驱动电机正向旋转5秒 GPIO.output(IN1, False) # 将IN1设置为0 GPIO.output(IN2, True) # 将IN2设置为1 GPIO.output(ENA, True) # 将ENA设置为1,启动A通道电机 time.sleep(5) # 等待电机转动5秒 # 电机停止2秒 GPIO.output(ENA, False) # 将ENA设置为0 time.sleep(2) # 等待电机停止2秒 # 驱动电机反向旋转5秒 GPIO.output(IN1, True) # 将IN1设置为1 GPIO.output(IN2, False) # 将IN2设置为0 GPIO.output(ENA, True) # 将ENA设置为1,启动A通道电机 time.sleep(5) # 等待电机转动5秒 # 电机停止2秒 GPIO.output(ENA, False) # 将ENA设置为0 time.sleep(2) # 等待电机停止2秒 finally: pwm.stop() # 停止PWM GPIO.cleanup() # 清理释放GPIO资源,将GPIO复位
BEGIN 引入GPIO库 将连接ENA的GPIO引脚设置为输出模式 将连接IN1的GPIO引脚设置为输出模式 将连接IN2的GPIO引脚设置为输出模式 设置ENA输入一定频率的PWM脉冲信号,创建PWM对象 开始向ENA输入占空比为0的PWM脉冲信号 DO FOREVER 将IN1设置为0,IN2设置为1,将电机设置为正向转动 将ENA设置为1,驱动A通道电机转动 speed = 0 DOWHILE speed < 100 将输入ENA的PWM脉冲信号的占空比修改为speed speed += 5 等待1秒 ENDDO 将IN1设置为1,IN2设置为0,将电机设置为反向转动 将ENA设置为1,驱动A通道电机转动 speed = 0 DOWHILE speed < 100 将输入ENA的PWM脉冲信号的占空比修改为speed speed += 5 等待1秒 ENDDO ENDO 停止PWM 清理释放GPIO资源 END
import RPi.GPIO as GPIO # 引入GPIO模块 import time # 引入time模块 ENA = 13 # 设置GPIO13连接ENA IN1 = 19 # 设置GPIO19连接IN1 IN2 = 26 # 设置GPIO26连接IN2 if __name__ == '__main__': try: # 初始化 GPIO.setmode(GPIO.BCM) # 使用BCM编号方式 GPIO.setup(ENA, GPIO.OUT) # 将ENA对应的GPIO引脚设置为输出模式 GPIO.setup(IN1, GPIO.OUT) # 将IN1对应的GPIO引脚设置为输出模式 GPIO.setup(IN2, GPIO.OUT) # 将IN2对应的GPIO引脚设置为输出模式 freq = 500 speed = 0 pwm = GPIO.PWM(ENA, freq) # 设置向ENA输入PWM脉冲信号,频率为freq并创建PWM对象 pwm.start(speed) # 以speed的初始占空比开始向ENA输入PWM脉冲信号 while True: # 将电机设置为正向转动 GPIO.output(IN1, False) # 将IN1设置为0 GPIO.output(IN2, True) # 将IN2设置为1 # 通过改变PWM占空比,让电机转速不断加快 for speed in range(0, 100, 5): pwm.ChangeDutyCycle(speed) # 改变PWM占空比 time.sleep(1) # 将电机设置为反向转动 GPIO.output(IN1, True) # 将IN1设置为1 GPIO.output(IN2, False) # 将IN2设置为0 # 通过改变PWM占空比,让电机转速不断加快 for speed in range(0, 100, 5): pwm.ChangeDutyCycle(speed) # 改变PWM占空比 time.sleep(1) finally: pwm.stop() # 停止PWM GPIO.cleanup() # 清理释放GPIO资源,将GPIO复位
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。