葱拌豆腐 发表于 2013-2-24 22:41:57

用L298N实现控制直流电机正反转和调速

本帖最后由 葱拌豆腐 于 2013-2-24 23:11 编辑

按照惯例先贴代码:
int in1=13;
int in2=12;
int in3=11;
int in4=10;
//上面定义了板上的4个控制端,12一组,34一组
int speedPinA=6;
int speedPinB=5;
//上面定义了PWM引脚

void setup()
{
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
//下面程序开始时让控制端都为高电平,电机保持不动。
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
}
void loop()
{
//电机正转
_mRight(in1,in2);
_mRight(in3,in4);
//读入电位器的值,然后通过PWM输出,控制电机转速
int n=analogRead(A0)/4;
_mSetSpeed(speedPinA,n);
_mSetSpeed(speedPinB,n);
}
void _mRight(int pin1,int pin2)//电机右转,电机到底是右转还是左转取决于电机端的接线和控制脚的顺序
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,LOW);
}
void _mLeft(int pin1,int pin2)//同上
{
digitalWrite(pin1,LOW);
digitalWrite(pin2,HIGH);
}
void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
}
void _mSetSpeed(int pinPWM,int SpeedValue)//控制速度,实际上就是断断续续的控制298N的使能端,手抖的厉害的可以用个按钮自己尝试一下,估计也能实现对电机速度的控制,O(∩_∩)O~
{
analogWrite(pinPWM,SpeedValue);
}

下面是L298N的系统结构图。

大家对照结构图很容易就能写出电机的控制程序。

最后说一下购买的板子和接线的情况:
按照惯例,板子是淘宝的,买的散件,用了近一个小时焊完,焊接的时候由矮到高,看好器件的引脚编号和极性,否则拆焊就麻烦多多(想连续拆焊的TX除外),说一下俺觉得要注意的几个器件吧,一个是光耦,根据原点确定好引脚1,查到插座上;再就是阻排,别插反了,最好找个万用表测一下,找出公共端。
接线的问题主要是控制端的地需不需要和主控板的地连接,我买的板子上有一个5伏的跳线,短接后可以由L298N上提供给控制板一路5V的电源,拔掉跳线就意味着控制板和L298N独立供电,我测试时是控制板独立供电,我将Arduino板上的5V的正负都接到L298N的逻辑电源引脚上,经实践证明好用。
下面是我买的板子的电路图:

最后是做实验的现场照片,O(∩_∩)O~

piaozhiling 发表于 2013-3-7 17:28:14

写的很专业了,怎么没有人回复啊,我来清出0回复

混球 发表于 2013-3-15 11:04:40

请上硬件连接图。

GoStop 发表于 2013-7-1 16:20:39

写的很专业,学习了:$

嘿你好 发表于 2013-8-27 13:29:56

回复收藏~:lol

WTF 发表于 2013-10-17 09:00:35

收藏了~顶~~~

41257203 发表于 2013-10-17 23:22:45

强大的教程:lol

szdqwl 发表于 2013-10-18 06:50:17

{:soso_e181:}

zuzuhe 发表于 2013-12-18 13:39:11

测试后 只有一个电机转

高宇 发表于 2014-3-6 08:42:49

不知道是不是L298N板子不同的问题。我的板子像使能端输入pwm,不能调速的。用串口检测pwm输出130左右,电机开始转,但是一直到255,速度都一样的。检测电机接口电压情况也一样。pwm 0-129都是ov。到130以上就是vcc了,没有逐步提高。

我有一个梦。 发表于 2014-5-4 15:06:11

VERY GOOD!

zbluecn 发表于 2014-5-4 17:36:44

高宇 发表于 2014-3-6 08:42 static/image/common/back.gif
不知道是不是L298N板子不同的问题。我的板子像使能端输入pwm,不能调速的。用串口检测pwm输出130左右,电机 ...

你的输入电压是多少啊

wininw 发表于 2014-9-15 13:39:11

这个控制一个电机需要3个接口,我见他们做的平衡车都是用2个接口控制电机,不知道是怎么回事?

fansays 发表于 2014-12-4 14:38:52

写得真棒,楼主不介意的话留个QQ吧?想问问,电源到底是给谁供电的,给Arduino主控板还是给驱动器?

suiyi8 发表于 2015-1-25 02:52:10

两个电机都能转也能调速,只有一个方向转,不能反转和停止。请大师指点迷津。
页: [1] 2
查看完整版本: 用L298N实现控制直流电机正反转和调速