(SKU:DFR0513)PPM Motor Driver Module PPM直流电机驱动模块

来自DFRobot Product Wiki
跳转至: 导航搜索
DSC 91661 1.jpg

目录

简介

这款电机驱动模块是DFRobot最新推出的一款用PWM信号驱动的电机驱动,使用TLE5205-2S作为驱动芯片,芯片的最高电压为40V,超过40V会损坏芯片,持续输入低电平时,其单向持续带载为4.2A,超过4.2A会有过流保护。板上设有两个PWM信号接收通道(CH1,CH2),能接收频率为50Hz,占空比在5%~10%的PWM驱动信号。其主要工作原理是让STM8S105芯片将50Hz的PWM信号映射为频率约100Hz(实际测量98.4Hz),占空比在0%~100%范围的PWM信号并输出,从而驱动TLE5205-2S芯片。 该电机驱动模块能同时驱动两个电机,并通过控制PWM输入信号的周期和高电平持续时间来改变电机的工作状态、转速以及其方向。

产品参数

  • 逻辑部分工作电压:5V
  • 输入电压:7~12V
  • 主控芯片:STM8S105K6T6
  • 驱动芯片:TLE5205
  • 5A持续驱动能力(支持6A峰值电流)
  • 支持最高供电电压40V(直流)
  • 内部LDO稳压到5V
  • 支持2个独立通道电机驱动
  • 2个PWM信号输入通道
  • 1个串口调试接口
  • 尺寸:90mm×30mm×1.6mm


引脚说明

引脚说明图
Warning yellow.png

注:DC输入端需要提供7~12V的电源,电源负载能力视电机功率决定。


使用教程

控制信号输入

     PPM Motor Driver Module电机驱动板支持2路独立直流电机驱动,驱动信号从CH1和CH2输入,分别对应M1和M2电机驱动输出。CH1、CH2可直接与航模遥控器的接收机相连(如FS-IA6B航模遥控器),也可以通过Arduino控制器输出PPM信号进行控制。

Warning yellow.png

注:PPM Motor Driver Module提供了5V电源输出,在连接航模遥控器接收机时,不需要外接5V电源。


控制信号

     PPM Motor Driver Module电机驱动板采用的控制信号,是航模遥控标准的PPM输出信号,可以直接连接航模遥控接收机。该信号是一个频率为50Hz的PWM信号,滑动遥控器摇杆,该信号的高电平持续时间在1000us~2000us之间变化,当摇杆回归到中间时,该信号输出高电平持续时间1500us(持续时间是指PWM信号的每个周期内)。

  • 当控制信号高电平持续时间由1500us向2000us递增时,电机正转,且转速逐渐增加
  • 当控制信号高电平持续时间由1500us向1000us递减时,电机反转,且转速逐渐增加
  • 当控制空号高电平持续时间在1500us时(即摇杆回归到中心点),电机停止转动,且电机驱动端口输出低电平
控制信号波形图
Warning yellow.png

注:PPM Motor Driver Module只提供电机驱动能力,不具备刹车功能。

驱动信号

     驱动信号是指PPM Motor Drvier电机驱动板接收到控制信号后,通过STM8S105主控芯片计算,驱动电机转动的信号。该信号是一个频率为100Hz的PWM信号,可以控制电机的转速和方向。

控制信号波形图

模块介绍

图1-2 功能测试所需模块图

模块1:PPM电机驱动模块;

模块2:接外部电源(7~12V);

模块3:串口打印模块,通过杜邦线连接模块上的RX,TX排针和PPM板上的TX,RX排针,注意要交叉相连即TX要与RX相连,另一边通过USB cable线连接板上的USB母口和电脑来调试程序;

模块4:FS-IA6B富斯6通道接收器;

模块5:与PPM板上的舵机相接,用来连接驱动负载,如电机等;

模块6:普通电机。

模块7:FS-I6遥控器,可发射PPM信号给FS-IA6B接收器。

图1-2显示的是配套的FS-IA6B接收器与FS-i6发射器来驱动PPM电机动模块,从而使电机运转,下面是用FS-i6系列的接收器和发射机测试的数据:
1)电源准备:将可调直流电源调到7~12V范围内的任意值(准备其他7~12V范围内的直流电源也可);
2)模块连接步骤:

  a.电源连接:将模块2插入PPM板(模块1),并将模块2与可调直流电源(电压范围在7~12V的直流电源都可以)相连;
b.PWM信道连接:将PPM板(模块1)上的CH1(或CH2)与FS-IA6B的信道CH1相连(CH1~CH6的任意信道都行),并将与CH1(或CH2)配套的"+"、"-"引脚与FS-IA6B的"+"、"-"极相连 (注:FS-IA6B的第二排排针引脚为信道标号,第三排排针引脚为正极,第四排为负极);
c.若在b步骤你只连接了一个PWM信道接收接口,那么如果你连接了PPM板(模块1)上的CH1,就将直流电机接到M1两端,若连接了CH2,则将直流电机连接到M2两端,若既连接了CH1又连接了CH2, 则可连接两个电机(注:这里的CH1,CH2指的是PPM板上的排针标号,不是FS-IA6B的信道);
d.串口打印以及程序下载连接方式请自行探索,这里只讲解如何使用PPM板驱动直流电机。

2)对码:

  打开可调电源开关和FS-i6发射器的开关(注:要让FS-i6的开关(SW)置于最低位),让接收器与发射机对码(即让FS-IA6B接收器与FS-I6发射机之间的协议联通,让其通过固定协议通信),
  如果FS-IA6B接收器上的LED指示灯闪烁停止即代表接收器与发射机之间对码成功,可以开始发送数据包。

3)操纵FS-I6发射器的左操纵杆,进入LED的显示界面,再操纵FS-I6的右操纵杆改变电机的转速和正反方向(注:这里一个信道只能接收一个方向的指令,例:接收器的信道1(CH1)只能被右操纵杆的左右方向控制)。
4)测试数据如下表:

表1-3 芯片输出的PWM参数表

表1-4 总参数表

图1-5 PPM板PWM接收信号与PPM板PWM输出信号的波形图

由表1-3和图1-5可知PPM板能接收频率为50HZ,占空比为5%~10%的PWM信号,并能将其处理成频率约为98.04Hz,占空在0%~100%的PWM信号,通过测试发现当接收的PWM信号的占空比为7.5%时,电机的转动方向会发生改变;
由表1-2可知,50Hz的PWM信号经过PPM直流电机驱动板后,将被转换为周期约为98.04Hz,占空比在0%~100%的PWM信号以驱动直流电机。
(注:当PWM的高电平持续时间在区间(1.4,1.6]ms时,电机停止运转,故输出恒定的PWM信号时,不要用高电平为1.4~1.6ms的PWM来测试电机的运转。)

5)测试结果:当FS-I6的右操纵杆在中间时电机停止运转,从中向左时与M1连接的电机顺时针(正转)转动,且转速加快,从中向右移动时与M1相连的电机逆时针运转,转速越来越快。
由表1-4可知PWM信号的占空比越大,电机转速越快。经测试,当到达一个临界值(占空比为7.5%)时电机的运转方向会发生改变。(7.5%是经测试得到)
以上是用配套的接收器(FS-IA6B)和发射器(FS-I6)来向PPM板发送PWM信号,那么如何用Arduino微控制器来代替接收器和发射器,从而达到驱动效果。下面将介绍用Arduino微控制器来控制PPM板驱动直流电机的方法。

注:以上数据仅供参考。

结论:总之要驱动PPM直流电机驱动模块,我们需要给PPM板提供一个周期约为20ms,占空比在5%~10%的PPM信号,即高电平的持续时间不能超过2ms,同时经测试若要电机方向发生改变,占空比的临界值为7.5%。

Arduino微控制器控制PPM直流电机驱动模块的使用教程

本节讲的是如何用Arduino微控制器来驱动与PPM板上相连的直流电机。它主要通过Ardunio微控制器产生一个一定频率(50Hz)的PWM的方波信号的方式来驱动PPM模块。
硬件:Romeo BLE V1.0(一种兼容Arduino微控制)双合一控制器购买网址、PPM Motor Driver Module、6V直流电机、可调直流电源(7~12V的电源);
软件:Arduino1.8.5(其他版本的Arduino IDE也行);

1)硬件平台搭建

     a.将Romeo微控制器的数字I/O口中的”VCC”、”GND”排针用杜邦线接到PPM板中CH1(或CH2)信道引脚旁的”+”、”-”极,并将Romeo上的一个数字I/O输出引脚(在这里连接的是)连接到PPM的CH1引脚(或CH2);
     b.连接直流电机和PPM板上的M1(或M2),如果步骤a连接的是信道CH1,则将电机与M1相连,反之,则与M2相连;
     c.将电源调节到7~12V之间(其他供电在7~12V之间包括7,12V的电源也行,),关闭电源,再与PPM板的电源接口(如图1-2的模块2)相连,打开电源
     d.连接图如图1-3:
图1-3 硬件连接电路图

2) 样例代码

  示例1:如何用Romeo板上的数字输出口模拟PWM信号的输出(是一个用数字I/O口模拟的PWM信号产生,不是真的PWM信号);

用USB cable线连接Romeo微控制器和电脑,打开Arduino软件,在“工具/开发板”菜单中选择开发板信息Arduino/Genuino Uno的开发板,并选择“工具/端口”Romeo的端口(可在设备管理器中查看),将下例示例代码下载到Romeo控制器上:

int pin=2;     //将pin设置为2号数字引脚
int t=1000;        //高电平持续的时间
int Tw=20000;   //PPM的周期为20ms
void setup()
{
     pinMode(pin,OUTPUT);  //将13号数字引脚设置为输出模式
}
void loop()
{
     digitalWrite(pin,HIGH);  //设置13号数字引脚为高电平.............a
     delayMicroseconds(t);  //延时t微秒..............................b
     digitalWrite(pin,LOW);  //设置13号数字引脚为低电平..............c
     delayMicroseconds(10000);//由于20ms会溢出,里面的值最好不超过16000,故将其延时两次以达到20ms的PWM周期
     delayMicroseconds(Tw-10000-t); 
     t+=1;
     if(t>2000)
        t=1000;
}

程序功能:让Romeo的数字通道来模拟输出频率为50Hz,占空比在5%~10%的PWM信号,从而控制PPM板上的电机的转速和方向。
上述示例代码设置的PWM变化周期为20ms,PPM的占空比在5%~10%范围内变化。
将示例1的程序下载到Romeo板上测试发现当占空比到达某个临界值时(经测试为7.5%),电机的方向会发生改变,且电机转速先慢后快;

3)示例2:如何直接设置PWM的高电平持续时间,从而输出频率为50Hz,占空比在5%~10%PWM信号,来驱动PPM板;
代码:

#define FREQUENCY_TICK 20000
#define OUTPUT_PIN  2

void setPWMValue(uint8_t value){  //value:0~100%
  uint16_t tick = map(value, 0, 100, 1000, 2000);

  digitalWrite(OUTPUT_PIN, HIGH);
  delayMicroseconds(tick);
  digitalWrite(OUTPUT_PIN, LOW);
  delayMicroseconds(10000);
  delayMicroseconds(FREQUENCY_TICK-10000-tick);
}

void setup() {
  // put your setup code here, to run once:
  pinMode(OUTPUT_PIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i=0; i < 100; i++){
    setPWMValue(i);
    delay(100);
  }
  for(int i=100; i > 0; i--){
    setPWMValue(i);
    delay(100);
  }
}

程序功能:让Romeo控制器的PWM通道来输出标准的50HZ的PWM信号从而控制与PPM直流驱动模块相连的电机的转速与方向。

PWM信号

本产品主要通过接收一定频率和占空比范围的PWM信号来工作,经测试要让PPM直流电机驱动模块工作,需要我们给其发送一个频率为50Hz,占空比在5~10%范围内的PWM信号

疑难解答

更多问题及有趣的应用,请访问论坛

个人工具
名字空间

变换
操作
导航
工具箱