“大功率 电机驱动GP36”的版本间的差异
(以“motor driver == 产品简介 == MD01是一款由4个分立MOSFET组成的H桥高功率电机驱动器,H...”为内容创建页面) |
(→示例代码) |
||
(未显示1个用户的8个中间版本) | |||
第1行: | 第1行: | ||
− | [[File: | + | [[File:MD01-GP36.jpg |350px|thumb|right|MD01-GP36]] |
− | + | ||
− | + | ||
== 产品简介 == | == 产品简介 == | ||
MD01是一款由4个分立MOSFET组成的H桥高功率电机驱动器,H桥的每条支路由一个N沟道的MOSFET组成;核心的电机驱动芯片用来处理外围输入信号和控制MOSFET的打开与关闭。MD01高功率电机驱动器支持6-30V宽电压输入,较高的电压可能永久的损坏驱动器。 | MD01是一款由4个分立MOSFET组成的H桥高功率电机驱动器,H桥的每条支路由一个N沟道的MOSFET组成;核心的电机驱动芯片用来处理外围输入信号和控制MOSFET的打开与关闭。MD01高功率电机驱动器支持6-30V宽电压输入,较高的电压可能永久的损坏驱动器。 | ||
该驱动器适用于多种电机驱动场合,它可以提供高达17A的持续电流,而不需要额外安装散热片。模块的尺寸为4.6cm*4.6cm,支持1.8-5V范围内的控制信号,只需要控制两个IO口即可实现电机的正反转以及速度控制。电机驱动器集成了电流检测功能,IC内部集成了PWM电流调节功能,可以通过改变外部电阻值将电机电流限制在配置的阈值范围内。SLP引脚置为低电平时可以使MD01驱动模块进入低功耗模式,进而实现较低的静态电流损耗,约为9uA。 | 该驱动器适用于多种电机驱动场合,它可以提供高达17A的持续电流,而不需要额外安装散热片。模块的尺寸为4.6cm*4.6cm,支持1.8-5V范围内的控制信号,只需要控制两个IO口即可实现电机的正反转以及速度控制。电机驱动器集成了电流检测功能,IC内部集成了PWM电流调节功能,可以通过改变外部电阻值将电机电流限制在配置的阈值范围内。SLP引脚置为低电平时可以使MD01驱动模块进入低功耗模式,进而实现较低的静态电流损耗,约为9uA。 | ||
− | |||
== 参数规格 == | == 参数规格 == | ||
− | + | * 工作电压:6V-30V(推荐24V以下) | |
− | + | * 工作电流:17A持续 | |
− | + | * 逻辑输入:1.8V,3.3V,5V(max) | |
− | + | * PWM 频率:100kHz | |
− | + | * 电流检测:50mV/A (仅在H桥工作时有效) | |
− | + | * 欠压保护:有 | |
− | + | * 短路保护:有 | |
+ | |||
+ | |||
+ | == 功能与接线 == | ||
+ | [[File:MotorDriver17A GP36 pinout w.png|800px]] | ||
+ | |||
+ | 注:模块右侧引脚VCC,GND,E1,E2为编码器连接转接端口,需要外接电源输入,不接编码器时不接线。多个电源时需共GND。 | ||
+ | |||
+ | '''频率''' | ||
+ | |||
+ | MD01电机驱动器支持高达100KHZ的PWM频率,有一点值得注意的是,驱动电路的开关损耗也将正比PWM频率,因此建议正常的PWM频率为20KHZ左右。 | ||
+ | |||
+ | PWM引脚上的脉冲信号宽度必须持续大概0.5us以上(小于0.5us的输入脉冲不会在输出端产生变化),因此较低频率的占空比在高频时不可用。如当使用100khz时,脉冲周期为10us,可实现的最小非零占空比即为0.5us/10us,也就是5%。 | ||
+ | |||
+ | '''电流检测''' | ||
+ | |||
+ | MD01电机驱动器的CS引脚可用来检测输出端的工作电流。该功能仅在H桥正常工作时才有效(制动模式、缓慢衰减模式,启动、停止瞬间都是无效的),CS引脚的输出电压大概为50mV/A+50mV的偏移值。如果负载端工作电流为10A,那么CS引脚的输出电压值则为50mV/A *10A+50mV=550mV。 | ||
+ | |||
+ | 电机频繁的启动与停止的瞬间,电流瞬时值可达到正常工作时的5-7倍。默认状态下,电机的极限电流值设定为30A。 | ||
+ | |||
+ | |||
+ | === Arduino 扩展库 === | ||
+ | |||
+ | Arduino library : https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library | ||
+ | |||
+ | == 示例代码 == | ||
+ | |||
+ | 接线说明: | ||
+ | |||
+ | SLP连接arduino UNO数字端口2,PWM连接数字口5,DIR连接数字口4,GND连接arduino UNO的GND。 | ||
+ | |||
+ | <source lang="c"> | ||
+ | /*************************************************** | ||
+ | Motor Test - MD Motor Drive | ||
+ | |||
+ | MD_01 , MD_02 , MD_03 , MD_04 , MD_GB36 | ||
+ | |||
+ | motor driver library: https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library | ||
+ | |||
+ | YFROBOT ZL | ||
+ | 10/14/2020 | ||
+ | ****************************************************/ | ||
+ | |||
+ | #include <MotorDriver.h> | ||
+ | |||
+ | #define MOTORTYPE YF_MD | ||
+ | |||
+ | // these constants are used to allow you to make your motor configuration | ||
+ | // line up with function names like forward. Value can be 1 or -1 | ||
+ | const int offseta = 1; | ||
+ | const int offsetb = 1; | ||
+ | |||
+ | // Initializing motors. | ||
+ | // MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ASLP_PIN); | ||
+ | // MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offseta, YF_MD04_BSLP_PIN); | ||
+ | MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ACS_PIN, YF_MD04_ASLP_PIN); | ||
+ | MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offsetb, YF_MD04_BCS_PIN, YF_MD04_BSLP_PIN); | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | Serial.println("Motor Drive test!"); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | motora.setMotor(255); // 电机M1全速正转 | ||
+ | motorb.setMotor(255); // 电机M2全速正转 | ||
+ | delay(500); | ||
+ | motora.setMotor(0); // 电机M1停止 | ||
+ | motorb.setMotor(0); // 电机M2停止 | ||
+ | delay(500); | ||
+ | motora.setMotor(-127); // 电机M1 50%速度反转 | ||
+ | motorb.setMotor(-127); // 电机M1 50%速度反转 | ||
+ | delay(500); | ||
+ | motora.setMotor(0); // 电机M1停止 | ||
+ | motorb.setMotor(0); // 电机M2停止 | ||
+ | delay(500); | ||
+ | |||
+ | motora.setMotor(255); // 电机M1全速正转 | ||
+ | motorb.setMotor(255); // 电机M2全速正转 | ||
+ | delay(500); | ||
+ | motora.getMotorCurrent(); // 获取电流检测口的模拟值 - 输出电压与电流电流成正比(50mV/A),电流为零时电压为0.05V | ||
+ | } | ||
+ | </source> |
2021年8月16日 (一) 17:53的最后版本
产品简介
MD01是一款由4个分立MOSFET组成的H桥高功率电机驱动器,H桥的每条支路由一个N沟道的MOSFET组成;核心的电机驱动芯片用来处理外围输入信号和控制MOSFET的打开与关闭。MD01高功率电机驱动器支持6-30V宽电压输入,较高的电压可能永久的损坏驱动器。 该驱动器适用于多种电机驱动场合,它可以提供高达17A的持续电流,而不需要额外安装散热片。模块的尺寸为4.6cm*4.6cm,支持1.8-5V范围内的控制信号,只需要控制两个IO口即可实现电机的正反转以及速度控制。电机驱动器集成了电流检测功能,IC内部集成了PWM电流调节功能,可以通过改变外部电阻值将电机电流限制在配置的阈值范围内。SLP引脚置为低电平时可以使MD01驱动模块进入低功耗模式,进而实现较低的静态电流损耗,约为9uA。
参数规格
- 工作电压:6V-30V(推荐24V以下)
- 工作电流:17A持续
- 逻辑输入:1.8V,3.3V,5V(max)
- PWM频率:100kHz
- 电流检测:50mV/A (仅在H桥工作时有效)
- 欠压保护:有
- 短路保护:有
功能与接线
注:模块右侧引脚VCC,GND,E1,E2为编码器连接转接端口,需要外接电源输入,不接编码器时不接线。多个电源时需共GND。
频率
MD01电机驱动器支持高达100KHZ的PWM频率,有一点值得注意的是,驱动电路的开关损耗也将正比PWM频率,因此建议正常的PWM频率为20KHZ左右。
PWM引脚上的脉冲信号宽度必须持续大概0.5us以上(小于0.5us的输入脉冲不会在输出端产生变化),因此较低频率的占空比在高频时不可用。如当使用100khz时,脉冲周期为10us,可实现的最小非零占空比即为0.5us/10us,也就是5%。
电流检测
MD01电机驱动器的CS引脚可用来检测输出端的工作电流。该功能仅在H桥正常工作时才有效(制动模式、缓慢衰减模式,启动、停止瞬间都是无效的),CS引脚的输出电压大概为50mV/A+50mV的偏移值。如果负载端工作电流为10A,那么CS引脚的输出电压值则为50mV/A *10A+50mV=550mV。
电机频繁的启动与停止的瞬间,电流瞬时值可达到正常工作时的5-7倍。默认状态下,电机的极限电流值设定为30A。
Arduino 扩展库
Arduino library : https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library
示例代码
接线说明:
SLP连接arduino UNO数字端口2,PWM连接数字口5,DIR连接数字口4,GND连接arduino UNO的GND。
/*************************************************** Motor Test - MD Motor Drive MD_01 , MD_02 , MD_03 , MD_04 , MD_GB36 motor driver library: https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library YFROBOT ZL 10/14/2020 ****************************************************/ #include <MotorDriver.h> #define MOTORTYPE YF_MD // these constants are used to allow you to make your motor configuration // line up with function names like forward. Value can be 1 or -1 const int offseta = 1; const int offsetb = 1; // Initializing motors. // MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ASLP_PIN); // MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offseta, YF_MD04_BSLP_PIN); MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ACS_PIN, YF_MD04_ASLP_PIN); MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offsetb, YF_MD04_BCS_PIN, YF_MD04_BSLP_PIN); void setup() { Serial.begin(9600); Serial.println("Motor Drive test!"); } void loop() { motora.setMotor(255); // 电机M1全速正转 motorb.setMotor(255); // 电机M2全速正转 delay(500); motora.setMotor(0); // 电机M1停止 motorb.setMotor(0); // 电机M2停止 delay(500); motora.setMotor(-127); // 电机M1 50%速度反转 motorb.setMotor(-127); // 电机M1 50%速度反转 delay(500); motora.setMotor(0); // 电机M1停止 motorb.setMotor(0); // 电机M2停止 delay(500); motora.setMotor(255); // 电机M1全速正转 motorb.setMotor(255); // 电机M2全速正转 delay(500); motora.getMotorCurrent(); // 获取电流检测口的模拟值 - 输出电压与电流电流成正比(50mV/A),电流为零时电压为0.05V }