L293D电机驱动版在Arduino上使用笔记

L293D电机驱动版在Arduino上使用笔记

硬件连接

L293D电机驱动版在Arduino上使用笔记_第1张图片

电源

驱动板是可以接受Arduino板的电力的,但是,arduino也就那么点电压,带一两个小直流电机还好说,东西搞多了,也是供不应求的.不过幸好L293D支持外部供电,通过上图中的外接电源接口,就可以进行外部供电.

进行外部供电的时候,需要将外接电源接口旁边的黄色跳线帽拔掉.

可以给每个电机最多600ma电流,1.2A的峰值电流。

电流超过1A的话,需要放散热块.

建议使用18650电池.

引脚使用

所有的六个模拟输入引脚都是可用的。它们也可以当做数字芯片来使用。(引脚14到19)

 数字引脚2和13可用。

 下面的引脚只有在下面提到的直流或者步进电机工作时才会被用到

    数字引脚11: 1号直流电机或者1号步进电机

    数字引脚3: 2号直流电机或者1号步进电机

    数字引脚5: 3号直流电机或者2号步进电机

    数字引脚6:4号直流电机或者2号步进电机

 下面的引脚只有在下面的直流或者步进电机工作时才会被用到

    数字信号4,7,8,和12通过74hc595(serial-to-parallel)来驱动直流或者步进电机

 下面的引脚只有在舵机工作时才会被用到

    数字信号9:1号舵机

    数字信号10: 2号舵机

所以只要相应的引脚没被L293D驱动板使用到,就可以可以拿来用的但前提是得自己焊出引脚来。焊引脚的地方就是上图中的预留孔位.

电机连接

L293D可以驱动4个直流电机(M1~M4),两个中间白色圈中的接口一般不用.

L293D还可以接两个舵机,分别用数字引脚9和10控制.

软件

使用L293D需要安装AFMotor库文件.

与直流电机有关的函数

确保导入AFMotor库文件并#include < AFMotor.h>后,有这么几个函数需要用到

  1. AF_DCMotor motorname(motornum,frequency);

    • motorname

      给电机起个名字,然后这个名字就是此电机在程序中的代号了

    • motornum

      用来选择你要给哪个电机取名字,参数范围为1~4

    • frequency

      用来设定此电机信号控制的频率.

      M1和M2可以使用MOTOR12_64KHZ,MOTOR12_8KHZ,MOTOR12_2KHZ,或者MOTOR12_1KHZ等常量

      M3和M4使用MOTOR34_64KHZ,MOTOR34_8KHZ,MOTOR34_1KHZ

  2. setSpeed(speed)

    • setSpeed用来设置电机的速度
    • 参数speed的取值范围从0(停止)到255(全速)
    • motorname.setSpeed(speed)
  3. run(direction)

    • 开跑

    • direction可以使用FORWARD,BACKWARD,RELEASE三个常量

示范:

#include 
AF_DCMotor motor(2,MOTOR12_64KHZ);
void setup(){
motor.setSpeed(200);
}
void loop(){
motor.run(FORWARD);
delay(1000);
motor.run(BACKWARD);
delay(1000);
motor.run(RELEASE);
delay(1000);
}

与步进电机有关的函数

确保导入AFMotor库文件并#include < AFMotor.h>后,有这么几个函数需要用到

  1. AF_Stepper steppername(steps,portnumber)

    • steppername

      给电机起个名字,然后这个名字就是此电机在程序中的代号了

    • steps

      设置电机每转的步数,比如设置36,则每步走1/36转

    • portnumber

      选择电机的通道,范围为1(通道1,2)和2(通道3和4)

  2. Step(steps,direction,style)

    • step

      转动的步数

    • direction

      转动的方向FORWARD 或者 BACKWARD

    • style

      步进的模式,可以选择的参数:

      • SINGLE - 一次只给一相线圈供电
      • DOUBLE - 一次给两项项圈都供电,得到更大的扭矩
      • INTERLEAVE - 电机会运转得更柔滑,因为步数增加了一倍,同时速度也减小一半
      • MICROSTEP - 电机会运转的更柔滑,精度更高,但扭矩也会减小

如果想更精细地控制步进电机,可以使用AccelStepper library,这个库带有电机加减速度功能。

示范:

#include 
AF_Stepper motor(200,2);
void step(){
motor.step(200,FORWARD,SINGLE);
motor.release();
delay(1000);
}
Void loop(){
motor.step(100,FORWARD,SINGLE);
motor.step(100,BACKWARD,SINGLE);
motor.step(100,FORWARD,DOUBLE);
motor.step(100,BACKWARD,DOUBLE);
motor.step(100,FORWARD,INTERLEAVE);
motor.step(100,BACKWARD,INTERLEAVE);
motor.step(100,FORWARD,MICROSTEP);
motor.step(100,BACKWARD,MICROSTEP);
}

你可能感兴趣的:(电子)