MegaPi Pro 编码/直流电机驱动模块

优质
小牛编辑
249浏览
2023-12-01

概 述

本模块为 MegaPi Pro 专用模块,可以驱动 2 个直流电机或 1 个编码电机,采用 2x8Pin 接插方式,可以方便安装在 MegaPi Pro 上。MegaPi Pro 主控板驱动电机必须安装此模块,MegaPi Pro 最多可以安装四个此模块用来驱动 4 个编码电机(或 8 个直流电机或 8 个电磁阀)其编码口可插 25 光电编码电机、180 光电编码电机,其驱动的 MegaPi Pro 电机口可插 25 直流电机、37 直流电机、电磁阀。

技术规格

  • 电机驱动:MP80495
  • 电机通道:2
  • 最低工作电压:6V
  • 最高工作电压:12V
  • 逻辑电压:5V
  • 各通道额定工作电流:3A
  • 峰值工作电流:5.5A
  • 模块尺寸:30mmx15mm(长x宽)

功能特性

  • 支持工作电压为6~12V的电机
  • 12V电源供电时,工作电流可达3A
  • 模块拥有过压保护、过流保护、过温保护,全方位保证使用安全
  • 可以驱动 1 个编码电机(白色接口)或者 2 个直流电机(绿色接口)
  • 彩色公母插座,防止插错
  • 编码电机驱动端有反响电动势保护(TVS保护)
  • 模块体积小巧,便于换取

编程指南

直流电机编程

Arduino编程

如果使用Arduino编程,需要调用库 Makeblock-Library-master 来控制电机。

函数功能
MeDCMotor (uint8_ port)选择接口
run(int16_t speed)设定转速(–255~+255)
stop()停止电机

编程示例

以下程序运行后四路电路模块接口 1 的直流电机以全速旋转 1 秒,停止 1 秒,循环运动。

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

#include <MeMegaPiPro.h>
MeDCMotor dcfourmotor_1(1);

void loop(){
    dcfourmotor_1.run(255);
    delay(1);
    dcfourmotor_1.run(0);
    delay(1);
    loop();
}

下载示例程序

mBlock编程

积木块说明

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

积木块说明
选定接口(M9~M10);设置速度(–255~+255)。

以下程序运行后四路直流电机驱动接口 1 电机以全速转动1秒,停止 1 秒,循环往复。

下载示例程序

慧编程编程

积木块说明

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

积木块说明
选定接口(M9~M12);设定参数(–100~+100)。
选定接口(M9~M12);设定参数(通电/断电)。

以下程序运行后直流电机 M9 以 50% 动力运行,电磁阀 M10 为通电,1 秒后直流电机 M9 停止转动,电磁阀 M10 断电,重复此过程。

下载示例程序

Python3 编程

1、主控板 MegaPi Pro 和树莓派连接。
2、树莓派安装最新的 makeblock 库 pip3 install makeblock --upgrade
3、新建 Python 文件,后缀为 .py。
4、在 Python 文件里写入程序。
5、运行 Python文件,如 “python123.py ”。

语句说明

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

函数功能
DCMotor(port)创建直流电机对象。
port: MegaPiPro.M9 ~ MegaPiPro.M12
run(speed)以百分比速度旋转。
speed:速度百分比,范围:–100~+100

以下程序运行后 M9 直流电机将以 50% 的动力运行 2 秒,停止运动 1秒,以 –50% 的动力运行 2 秒,停止 1 秒,循环运动。

from time import sleep
from makeblock import MegaPiPro 
board = MegaPiPro.create()
motor = board.DCMotor(MegaPiPro.M9)
while True:
    motor.run(50)
    sleep(2)
    motor.run(0)
    sleep(1)
    motor.run(-50)
    sleep(2)
    motor.run(0)
    sleep(1)

下载示例程序

编码电机编程

Arduino编程

如果使用Arduino编程,需要调用库 Makeblock-Library-master 来控制电机。

以下程序运行后编码电机 1 和 2 将以 100 速度运行 1 秒,停止 1 秒,重复此过程。

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

#include <MeMegaPiPro.h>

double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
MeEncoderOnBoard Encoder_1(SLOT1);
MeEncoderOnBoard Encoder_2(SLOT2);
void isr_process_encoder1(void)
{
    if(digitalRead(Encoder_1.getPortB()) == 0){
        Encoder_1.pulsePosMinus();
    }else{
        Encoder_1.pulsePosPlus();
    }
}
void isr_process_encoder2(void)
{
    if(digitalRead(Encoder_2.getPortB()) == 0){
        Encoder_2.pulsePosMinus();
    }else{
        Encoder_2.pulsePosPlus();
    }
}

void setup(){
    TCCR1A = _BV(WGM10);//PIN12
    TCCR1B = _BV(CS11) | _BV(CS10) | _BV(WGM12);
    TCCR2A = _BV(WGM21) | _BV(WGM20);//PIN8
    TCCR2B = _BV(CS22);
    attachInterrupt(Encoder_1.getIntNum(), isr_process_encoder1, RISING);
    attachInterrupt(Encoder_2.getIntNum(), isr_process_encoder2, RISING);
}

void loop(){
    Encoder_1.setTarPWM(100);
    Encoder_2.setTarPWM(100);
    _delay(1);
    Encoder_1.setTarPWM(0);
    Encoder_2.setTarPWM(0);
    _delay(1);
    _loop();
}

下载示例程序

mBlock编程

积木块说明

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

积木块说明
选择接口;设置动力(–255~+255)。
选择接口;设置速度(最大速度由电机型号决定)。
选择接口;设置旋转角度(非负整数);设置速度(最大速度由电机型号决定)。
获取当前电机速度。
获取电机当前相对于零点的角度位置。

以下程序运行后编码电机 1 和 2 将以 100 速度运行 1 秒,停止 1 秒,重复此过程。

下载示例程序

慧编程编程

积木块说明(以MegaPi Pro主控为例)

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

积木块说明
选择接口;设置动力(–255~+255)。
选择接口;设置速度(最大速度由电机型号决定)。
选择接口;设置旋转角度(非负整数);设置速度(最大速度由电机型号决定)。
获取当前电机速度。
获取电机当前相对于零点的角度位置。

以下程序运行后编码电机 1 和 2 将以 100 速度运行 1 秒,停止 1 秒,重复此过程。

下载示例程序

Python3 编程

1、主控板 MegaPi Pro 和树莓派连接,180 光电编码电机和直流/编码驱动模块相连接。
2、树莓派安装最新的 makeblock 库 pip3 install makeblock --upgrade
3、新建 Python 文件,后缀为 .py。
4、在 Python 文件里写入程序。
5、运行 Python文件,如 “python123.py ”。

语句说明

.tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;} .tg .tg-ycr8{background-color:#ffffff;text-align:left;vertical-align:center} .tg .tg-7g6k{font-weight:bold;background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-3xi5{background-color:#ffffff;border-color:inherit;text-align:center;vertical-align:center} .tg .tg-c6of{background-color:#ffffff;border-color:inherit;text-align:left;vertical-align:center} .tg .tg-i81m{background-color:#ffffff;text-align:center;vertical-align:center}

函数功能
EncoderMotor(port)创建直流编码电机对象。
port: MegaPiPro.PORT1~MegaPiPro.PORT4
run(speed)以指定速度旋转。
speed:转速(范围为–180~+180)
move_to(position,speed,callback)以指定速度旋转到指定位置。
position:目标位置;speed:转速(范围为–180~+180);callback:达到目标位置时触发回调
set_home()设置当前位置为原点。

程序示例 1

以下程序运行后接在 MegaPi Pro 直流/编码电机驱动接口 1 的编码电机以 50 速度旋转 2 秒,停止 1 秒,以 –50 速度旋转 2 秒,停止 1 秒,重复此过程。

from time import sleep
from makeblock import MegaPiPro 
board = MegaPiPro.create()
encoder = board.EncoderMotor(MegaPiPro.PORT1)
while True:
    encoder.run(50)
    sleep(2)
    encoder.run(0)
    sleep(1)
    encoder.run(-50)
    sleep(2)
    encoder.run(0)
    sleep(1)

下载示例程序

程序示例 2

以下程序运行后 MegaPi Pro 直流/编码电机驱动接口 1 连接的编码电机旋转到目标位置。

from time import sleep
from makeblock import MegaPiPro 
board = MegaPiPro.create()
encoder = board.EncoderMotor(MegaPiPro.PORT1)
position = 0
def on_finished(value):
    position = 5000 - position
    encoder.move_to(position,100,on_finished)

on_finished(position)

下载示例程序

连接方式