驱动板是可以接受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>后,有这么几个函数需要用到
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。
setSpeed(speed)
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>后,有这么几个函数需要用到
AF_Stepper steppername(steps,portnumber)
steppername
给电机起个名字,然后这个名字就是此电机在程序中的代号了
steps
设置电机每转的步数,比如设置36,则每步走1/36转
portnumber
选择电机的通道,范围为1(通道1,2)和2(通道3和4)
Step(steps,direction,style)
step
转动的步数
direction
转动的方向FORWARD 或者 BACKWARD
style
步进的模式,可以选择的参数:
如果想更精细地控制步进电机,可以使用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);
}