【转】L298N 电机驱动扩展

2013-12-051.7万
AI 快速预览详细 收起
L298N电机驱动扩展板是一种高电压、大电流电机驱动芯片,最高工作电压可达46V,持续工作电流为2A,瞬间峰值电流可达3A。该扩展板可以直接驱动两个直流电动机,并通过Arduino控制电机的旋转方向和速度。适用于Arduino外部供电方式,支持多种电源连接方式。具体连接方式包括将电机接到MA或MB接线座上,并根据供电方式选择VM跳线接到VIN或VEX端。通过Arduino的13、12、10号管脚控制电机MA的方向和速度,通过11、8、9号管脚控制电机MB的方向和速度。

基于L293D的直流电机驱动扩展板,虽然也能够接两个直流电机,但由于从于对接口数目的考虑,因此无法分别控制两路电机的旋转方向。此外,在带动较大功能的电机时,L293D也显得稍有些不足。出于这些考虑,在吸纳了一些网友的建议之后,此处设计了一个基于L298N的电机驱动扩展板。L298N是S一种高电压、大电流电机驱动芯片,其中最高工作电压可达46V,持续工作电流为2A,瞬间峰值电流更是可达 3A。该芯片内含两个H桥的高电压大电流全桥式驱动器,可以直接驱动两个直流电动机。


该扩展板在电路连接上首先要考虑的是如何给电机供电,如果你的Arduino采用的是外部供电方式(比如接9V的变压器时),而且该供电方式同你的电机也是驱配的(比如9V的直流电机),那么就可以将电机接到MA(A+和A-两个接线座)或者MB(B+和B-两个接线座)上:


然后再将VM跳线接到VIN端就:


另外一起连接方式是直接给电机单独提供一个不超过35V的电源,分别接在电机扩展板的GND和VEX接线座上,电机同样还是接在MA或者MB上:


但VM跳线此时则需要接到VEX端:


从控制原理上讲,L298N与L293D基本是一样的,都是分别通过两根方向引脚来控制电机的旋转方向,再通过一根使能引脚上的PWM信号来控制电机的转速。具体到该扩展板上,电机MA的方向引脚为Arduino的13和12号管脚,速度引脚则是Arduino的10号管脚;电机MB的方向引脚为Arduino的11和8号管脚,速度引脚则是Arduino的9号


C/C++ 代码复制内容到剪贴板

  • // motor A
  • int dir1PinA = 13;
  • int dir2PinA = 12;
  • int speedPinA = 10;
  • // motor B
  • // motor A
  • int dir1PinB = 11;
  • int dir2PinB = 8;
  • int speedPinB = 9;
  • unsigned long time;
  • int speed;
  • int dir;
  • void setup() {
  •   pinMode(dir1PinA, OUTPUT);
  •   pinMode(dir2PinA, OUTPUT);
  •   pinMode(speedPinA, OUTPUT);
  •   pinMode(dir1PinB, OUTPUT);
  •   pinMode(dir2PinB, OUTPUT);
  •   pinMode(speedPinB, OUTPUT);
  •   time = millis();
  •   speed = 0;
  •   dir = 1;
  • }
  • void loop() {
  •   analogWrite(speedPinA, speed);
  •   analogWrite(speedPinB, 255 - speed);
  •   // set direction
  •   if (1 == dir) {
  •     digitalWrite(dir1PinA, LOW);
  •     digitalWrite(dir2PinA, HIGH);
  •     digitalWrite(dir1PinB, HIGH);
  •     digitalWrite(dir2PinB, LOW);
  •   } else {
  •     digitalWrite(dir1PinA, HIGH);
  •     digitalWrite(dir2PinA, LOW);
  •     digitalWrite(dir1PinB, LOW);
  •     digitalWrite(dir2PinB, HIGH);
  •   }
  •   if (millis() - time > 5000)  {
  •     time = millis();
  •     speed += 20;
  •     if (speed > 255) {
  •       speed = 0;
  •     }
  •     if (1 == dir) {
  •       dir = 0;
  •     } else {
  •       dir =1;
  •     }
  •   }
  • }

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
20060606
20060606
无图无真相,发个图看看
xuepengjin
xuepengjin
为啥图都没了
1661381542
1661381542
图全裂了
- 没有更多了 -