当前位置: 首页 > news >正文

树莓派开发相关知识三PWM控制转速

基于树莓派PWM控制 控制L298N马达驱动转速 马达驱动转速

1、L298N电路图:

2、需要留意的有几点

 INA~IND四个引脚分别控制OUTA-OUTD,即,INA高电平则OUTA有电。

ENA,ENB分别使能控制OUTA~OUTB以及OUTC~OUTD。

OUT口有VCC电压驱动,而IN口相当于拨动L298N的四个开关,即所谓电机驱动,不需要树莓派驱动,而是通过L298N配外接电源的方式驱动马 达。

一侧电机分别接OUTA,OUTB,可以通过两个输出高低电平来给电机上电,正电压则正转,负电压则倒转,两侧转的方向一致,因此共用。通过 控制ENA来调节电机电压,实现控制转速。另一侧同理。

通过模块中的4个LED灯可以看出来OUTA~OUTD的输出情况。

VCC连接驱动电压,案例采用7.2v,+5口会自动上电,可以给树莓派供电。

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]
#生成小车对象
car=CarMove.L298N(CarIN)#小车速度
speed=10
car.speed=speed#小车前进
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()


http://www.mrgr.cn/news/61034.html

相关文章:

  • leetcode 1261.在受污染的二叉树中查找元素
  • 雷池社区版compose文件配置讲解--fvm
  • JVM 调优深度剖析:优化 Java 应用的全方位攻略(一)
  • 什么是道德?
  • 红黑树(C++实现)
  • 清仓和斩仓有什么不一样?
  • 鲲泰新闻丨构筑融通的坚实智造之基!神州鲲泰亮相第二届中国航空工艺设备博览会
  • 【Java】方法的使用
  • 人工智能和大数据如何改变企业?
  • 工商银行实时汇率查询接口-外汇实时汇率API-外汇实时汇率
  • Consul微服务配置中心部署(在线安装)
  • 软件开发中的任务细化:识别和解决常见的5大问题
  • 离线挂载yum源
  • React 前端面试全攻略:基础概念、组件、Hooks 等热门考点详解
  • 派生类的构造过程
  • 学习私服并配置到项目中
  • DevOps赋能:优化业务价值流的实战策略与路径(上)
  • RECE-nfs共享文件
  • 安信金业:18k和24k黄金的区别
  • MySQL数据库中的CURRENT_TIMESTAMP函数使用经验小结