锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

OpenMV:22电机扩展板控制直流电机

时间:2022-10-25 06:00:03 7p8pin连接器连接器电插针

文章目录

  • 电机拓展板产品介绍
  • 代码

今天给大家讲解一下 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) # 右轮
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章