建立企业网站几天,深圳晚报电子版,做的比较好网站有哪些,ftp更新wordpress基于树莓派PWM控制 控制L298N马达驱动转速 马达驱动转速
1、L298N电路图#xff1a; 2、需要留意的有几点 INA~IND四个引脚分别控制OUTA-OUTD#xff0c;即#xff0c;INA高电平则OUTA有电。
ENA#xff0c;ENB分别使能控制OUTA~OUTB以及OUTC~OUTD。
OUT口有VCC电压驱动…基于树莓派PWM控制 控制L298N马达驱动转速 马达驱动转速
1、L298N电路图 2、需要留意的有几点 INA~IND四个引脚分别控制OUTA-OUTD即INA高电平则OUTA有电。
ENAENB分别使能控制OUTA~OUTB以及OUTC~OUTD。
OUT口有VCC电压驱动而IN口相当于拨动L298N的四个开关即所谓电机驱动不需要树莓派驱动而是通过L298N配外接电源的方式驱动马 达。
一侧电机分别接OUTAOUTB可以通过两个输出高低电平来给电机上电正电压则正转负电压则倒转两侧转的方向一致因此共用。通过 控制ENA来调节电机电压实现控制转速。另一侧同理。
通过模块中的4个LED灯可以看出来OUTA~OUTD的输出情况。
VCC连接驱动电压案例采用7.2v5口会自动上电可以给树莓派供电。
PWM连接使能口通过调整脉冲宽度使得两侧使能开关“时而开时而关”来实现调速
3、实物图 4、驱动单元实现
import RPi.GPIO as GPIO
class L298N:IN []EN []P_ENA 0P_ENB 0speed 0# IN 长度必须为4 EN 长度必须为2def __init__(self, IN, EN):self.IN INself.EN ENGPIO.setup(self.IN, GPIO.OUT, initial GPIO.LOW)GPIO.setup(self.EN, GPIO.OUT, initial GPIO.LOW)self.P_ENA GPIO.PWM(self.EN[0], 50)self.P_ENB GPIO.PWM(self.EN[1], 50)self.P_ENA.start(self.speed)self.P_ENB.start(self.speed)def __del__(self):self.P_ENA.stop()self.P_ENA.stop()GPIO.cleanup(self.IN)GPIO.cleanup(self.EN)# 前进def forward(self):GPIO.output(self.IN, [1,0,1,0])# 后退def backward(self):GPIO.output(self.IN, [0,1,0,1])# 左转def leftward(self):GPIO.output(self.IN, [1,0,0,1])# 右转def rightward(self):GPIO.output(self.IN, [0,1,1,0])# 停止def stop(self):GPIO.output(self.IN, [0,0,0,0])# 加速def speedup(self, speedup 20):self.setspeed(self.speed speedup)# 减速def speeddown(self, speeddown 20):self.setspeed(self.speed - speeddown)# 速度设置def setspeed(self, speed):self.speed speedif self.speed 100:self.speed 100elif self.speed 0:self.speed 0self.P_ENA.ChangeDutyCycle(self.speed)self.P_ENB.ChangeDutyCycle(self.speed
5、调用
import CarMove
import RPi.GPIO as GPIO
import time#4个电机驱动输出通道
CarIN[6,13,19,26]
#生成小车对象
carCarMove.L298N(CarIN)#小车速度
speed10
car.speedspeed#小车前进
car.forward()
time.sleep(2)#小车后退
car.backward()
time.sleep(2)#小车加速后前进
car.speedup()
car.forward()
time.sleep(2)#小车减速后前进
car.speeddown()
car.forward()
time.sleep(2)#小车停止
car.stopall()