OpenMV:22电机扩展板控制直流电机
时间:2022-10-25 06:00:03
文章目录
- 电机拓展板产品介绍
- 代码
今天给大家讲解一下 OpenMV配套电机扩展板
我们需要自己焊接插针
使用电机扩展板时,我们的电机扩展板需要外接6V~12V为电机供电的电源;同时使用电机扩展板LDO为OpenMV进行供电
对于每个电机,电机驱动芯片需要两个引脚来设置其内部H桥的方向这个方向可以控制我们电机的正反转)
同时我们需要额外的引脚PWM控制可以控制我们的电机速度
我们的电机扩展板使用了P0、P1、P2、P34个引脚控制电机方向
,P7、P8来进行PWM速度的控制
,所以我们的电机拓展板和PCA9685舵机拓展板可以同时使用,因为它们的引脚没有冲突
电机拓展板产品介绍
打开星瞳科技官网,点击产品找到电机扩展板
我们可以用同一个电池,两个小于2A的低功率电机进行供电
我们的电机扩展板有三个地方需要外接引脚
左边的两个是两个直流电机的接口,我们可以把电机接到这两个引脚上
第三个接口用于连接电源(上面标注了GND和VBAT电池正极)
代码
# 输出电机驱动板PWM例程 # # A为左轮 B为右轮 # # 如何控制这个示例显示OpenMV Cam上电机扩展板。 # 通过使用PYB通过模块控制电机扩展板PWM控制速度并设置数字I/O引脚状态。 # 需要6个电机扩展板I/O引脚用于两个电机。 import pyb # 导入pyb模块(pyb 模块包含与插件相关的特定函数) # 四个引脚的初始化 # 这些引脚控制着我们的方向,下面还有其他的PWN引脚控制速度。 # H桥设置了每个电机的方向,其中A0/1是一个H桥驱动器的两侧。 B0/1是另一座H桥。 pinADir0 = pyb.Pin('P3', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE) pinADir1 = pyb.Pin('P2', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE) # 每两个引脚控制一个电机的方向(由电机驱动板的芯片决定) pinBDir0 = pyb.Pin('P1', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE) pinBDir1 = pyb.Pin('P0', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE) # 控制电机的方向 # 前后操作:Dir0/1必须不相等。如果它们相等,那就是刹车操作。 # 如果它们不相等,电机将以另一种方式旋转,这取决于它的连接和dir 0的值。 pinADir0.value(0) # 把P3引脚设置为低电平 pinADir1.value(1) # 把P引脚设置为高电平 如果是1 0 车轮反转;如果是0 0 就是停止) # 对于向前或向后操作,Dir0/1必须不相等。如果它们相等,那就是刹车操作。 # 如果它们不相等,电机将以另一种方式旋转,这取决于它的连接和dr 0的值。
pinBDir0.value(0)
pinBDir1.value(1) # 控制两个电机的另一个正转
# 设置一个定时器
# 创建一个以1KHz运行的定时器对象,它将为我们的OpenMV Cam上的PWM输出供电。
# 只需要创建一次。
tim = pyb.Timer(4, freq=1000)
# 通过定时器来控制PWM信号
# 使用timer对象在OpenMV Cam上创建两个PWM输出。这些定时器控制电机的速度。
# 您将在循环中重复设置这些定时器的PWM百分比。
# chA为左轮 chB为右轮
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8")) # 通过定时器来控制两个PWM信号,来控制电机速度
while (True):
for i in range(100):# i从0-99增加
pyb.delay(100)
chA.pulse_width_percent(i) # 第一个电机的占空比从0-99 ——> 速度越来越快
chB.pulse_width_percent(99-i) # 第二个电机的占空比从99-0 ——> 速度越来越慢
for i in range(100):# 这是相反的
pyb.delay(100)
chA.pulse_width_percent(99-i) # 第一个电机的占空比从99-0 ——> 速度越来越慢
chB.pulse_width_percent(i) # 第二个电机的占空比从0-99 ——> 速度越来越快
# 如果只控制单个电机
#while (True):
# chA.pulse_width_percent(20) # 左轮
# #chB.pulse_width_percent(20) # 右轮