极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20799|回复: 4

关于如何使用L298电机驱动板驱动电机的简单介绍

[复制链接]
发表于 2012-11-24 16:47:59 | 显示全部楼层 |阅读模式
先看板子,L298N(其他的电机驱动原理与他基本上一致):
然后是关于这个板子驱动电机的简单介绍。首先先将板子通上电(将板子上电源输入口中的VCC极接电源+5V电压,gnd极接电源的负极0V电压);然后将直流电机输出口A,B中的任意一个的两端与直流电机的两端相连;最后就是最关键的驱动电机的内容了:在板子的左下端共有六个接口,其中ENA与IN1,IN2为一组,ENB与IN3,IN4为一组,每组接口驱动一个电机,其中ENA(必须与arduino板上能够输出pwm值接口相连才能发挥作用,各个arduino板子上能够输出pwm的接口不相同,在大多数arduino板(ATmega168或ATmega328)上,只有引脚3,5,6,9,10和11可以实现该功能。在aduino Mega上,引脚2到13可以实现该功能。老的Arduino板(ATmega8)的只有引脚9、10、11)为电机模拟值输出端,用来控制电机的转速(0~255,数值越大,电机转速越快),IN1与IN2的作用是给电机提供电流,当电流的方向不同(即IN1端输出高电压,IN2端输出低电压和IN1端输出低电压,IN2端输出高电压两种情形)时,电机的转动方向就不相同。另外一组(ENB,IN3,IN4)的作用同样如此。下面是一个简单的程序演示:
该程序功能如下,驱动电机A(A可真转,可反转)与B的转动,同时利用电机A与电机B的转速不同,完成小车一定的转向功能
#define motor1pin1 13                              //定义IN1引脚
#define motor1pin2 12                              //定义IN2引脚
#define motor1pwm 11                             //定义ENA引脚(我的是Mega2560的板子)
#define motor2pin1 10                              //定义IN3引脚
#define motor2pin2 9                               //定义IN4引脚
#define motor2pwm 8                              //定义ENB引脚
void motor(int motorpin1,int motorpin2,int motorpwm,int val)  //定义一个电机转动函数
{
pinMode(motorpin1,OUTPUT);                              //输出第一个引脚
pinMode(motorpin2,OUTPUT);                             //输出第二个引脚
digitalWrite(motorpin2,0);                                    //将第二个引脚置低
digitalWrite(motorpin1,1);                                     //将第一个引脚抬高
analogWrite(motorpwm,val);                                //给EN引脚设定模拟值,设定转速
}
void setup()
{  
}
void loop()
{
  int i;
  for(i=100;i<=255;i++) //让电机的转速从100到255转动,A,B转速不一样,完成转向
  {
    motor(motor2pin1,motor2pin2,motor2pwm,255);             //电机B保持255匀速转动
    motor(motor1pin1,motor1pin2,motor1pwm,i);                  //电机A从100到255转动
    delay(500);                                                              //间隔500ms
  }
  for(i=100;i<=255;i++)                                  //让电机从100到255转动,功能同上
  {
    motor(motor1pin1,motor1pin2,motor1pwm,255);
    motor(motor2pin1,motor2pin2,motor2pwm,i);
    delay(500);
  }
  motor(motor1pin1,motor1pin2,motor1pwm,255);                 //电机A以最大转速转动
  delay(5000);
  motor(motor1pin2,motor1pin1,motor1pwm,255);                //电机A反向转动
  delay(5000);
}

L298N.jpg (79.82 KB, 下载次数: 0)
半小时前 上传
点击文件名下载附件
  






回复

使用道具 举报

发表于 2012-11-24 16:55:41 | 显示全部楼层
复制来的内容?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-25 22:22:50 | 显示全部楼层
shenhaiyu 发表于 2012-11-24 16:55
复制来的内容?

额,你何出此言,这个当然是我自己写的!
回复 支持 反对

使用道具 举报

发表于 2012-12-3 10:44:46 | 显示全部楼层
1979379768 发表于 2012-11-25 22:22
额,你何出此言,这个当然是我自己写的!

最后三行明显是从别的帖子中复制来的残留信息,你连残留信息都懒得去掉……
回复 支持 反对

使用道具 举报

发表于 2013-8-22 17:08:53 | 显示全部楼层
验证过了。程序好用,一次通过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 22:14 , Processed in 0.037007 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表