用BPI-BIT驱动直流电机

前言

今天我们来学习用BPI-BIT驱动直流电机。

软硬件

测试使用的开发板: BPI-BIT

测试使用的硬件: 电源(DC6800)、直流电机、BPI坦克

实验原理

直流电机: 直流电动机是将直流电能转换为机械能的电动机。因其良好的调速性能而在电力拖动中得到广泛应用。当直流电源通过电刷向电枢绕组供电时,电枢表面的N极下导体可以流过相同方向的电流,根据左手定则导体将受到逆时针方向的力矩作用;电枢表面S极下部分导体也流过相同方向的电流,同样根据左手定则导体也将受到逆时针方向的力矩作用。这样,整个电枢绕组即转子将按逆时针旋转,输入的直流电能就转换成转子轴上输出的机械能。由定子和转子组成,定子:基座,主磁极,换向极,电刷装置等;转子(电枢):电枢铁心,电枢绕组,换向器,转轴和风扇等。

32fa828ba61ea8d31de785a4990a304e241f584d

示例代码及解析

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();//这样调用,使用默认地址0x40,并且创建实例。

void setup() {
  Serial.begin(9600);

  pwm.begin();
  pwm.setPWMFreq(1000);//用来调节PWM频率,范围 freq:40-1000Hz
}

//setPWM(num,on,off)设置其中一个PCA9685引脚的脉宽调制输出
  //1.参数num代表一个脉宽调制输出引脚,从0到15(需看原理图来确定输出引脚)
  //2.参数on代表在4096部分周期的哪个点打开,以打开脉宽调制输出
  //3.参数off代表在4096部分周期的哪个点关闭参数以关闭脉冲宽度调制输出
//一个PWM周期分成4096份,由0开始+1计数,计到on时跳变为高电平,继续计数到off时跳变为低电平,直到计满4096重新开始。

void loop() {
  //前进
    //左电机
    pwm.setPWM(1, 4096, 0);//给低电平
    pwm.setPWM(2, 0, 4096);//给高电平
    pwm.setPWM(0, 0, 3580);//输出PWM控制速度
    //右电机
    pwm.setPWM(11, 4096, 0);
    pwm.setPWM(12, 0, 4096);
    pwm.setPWM(13, 0, 3680);

    delay(1000);
  //后退
    //左电机
    pwm.setPWM(2, 4096, 0);
    pwm.setPWM(1, 0, 4096);
    pwm.setPWM(0, 0, 3580);
    //右电机
    pwm.setPWM(12, 4096, 0);
    pwm.setPWM(11, 0, 4096);
    pwm.setPWM(13, 0, 3680);
    delay(1000);
}

实物图

将BPI-BIT开发板插入BPI坦克的扩展板上。

TIM%E6%88%AA%E5%9B%BE20191009144351

实验效果