极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 113205|回复: 26

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

[复制链接]
发表于 2013-2-24 22:41:57 | 显示全部楼层 |阅读模式
本帖最后由 葱拌豆腐 于 2013-2-24 23:11 编辑

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

  9. void setup()
  10. {
  11.   pinMode(in1,OUTPUT);
  12.   pinMode(in2,OUTPUT);
  13.   pinMode(in3,OUTPUT);
  14.   pinMode(in4,OUTPUT);
  15.   //下面程序开始时让控制端都为高电平,电机保持不动。
  16.   digitalWrite(in1,HIGH);
  17.   digitalWrite(in2,HIGH);
  18.   digitalWrite(in3,HIGH);
  19.   digitalWrite(in4,HIGH);
  20. }
  21. void loop()
  22. {
  23. //电机正转
  24.   _mRight(in1,in2);
  25.   _mRight(in3,in4);
  26.   //读入电位器的值,然后通过PWM输出,控制电机转速
  27.   int n=analogRead(A0)/4;
  28.   _mSetSpeed(speedPinA,n);
  29.   _mSetSpeed(speedPinB,n);
  30. }
  31. void _mRight(int pin1,int pin2)//电机右转,电机到底是右转还是左转取决于电机端的接线和控制脚的顺序
  32. {
  33.   digitalWrite(pin1,HIGH);
  34.   digitalWrite(pin2,LOW);
  35. }
  36. void _mLeft(int pin1,int pin2)//同上
  37. {
  38.   digitalWrite(pin1,LOW);
  39.   digitalWrite(pin2,HIGH);
  40. }
  41. void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了
  42. {
  43.   digitalWrite(pin1,HIGH);
  44.   digitalWrite(pin2,HIGH);
  45. }
  46. void _mSetSpeed(int pinPWM,int SpeedValue)//控制速度,实际上就是断断续续的控制298N的使能端,手抖的厉害的可以用个按钮自己尝试一下,估计也能实现对电机速度的控制,O(∩_∩)O~
  47. {
  48.   analogWrite(pinPWM,SpeedValue);
  49. }
复制代码


下面是L298N的系统结构图。

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-3-7 17:28:14 | 显示全部楼层
写的很专业了,怎么没有人回复啊,我来清出0回复
回复 支持 反对

使用道具 举报

发表于 2013-3-15 11:04:40 | 显示全部楼层
请上硬件连接图。
回复 支持 反对

使用道具 举报

发表于 2013-7-1 16:20:39 | 显示全部楼层
写的很专业,学习了
回复 支持 反对

使用道具 举报

发表于 2013-8-27 13:29:56 | 显示全部楼层
回复收藏~
回复 支持 反对

使用道具 举报

发表于 2013-10-17 09:00:35 | 显示全部楼层
收藏了~顶~~~
回复 支持 反对

使用道具 举报

发表于 2013-10-17 23:22:45 | 显示全部楼层
强大的教程
回复 支持 反对

使用道具 举报

发表于 2013-10-18 06:50:17 | 显示全部楼层
{:soso_e181:}
回复 支持 反对

使用道具 举报

发表于 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!
回复 支持 反对

使用道具 举报

发表于 2014-5-4 17:36:44 | 显示全部楼层
高宇 发表于 2014-3-6 08:42
不知道是不是L298N板子不同的问题。我的板子像使能端输入pwm,不能调速的。用串口检测pwm输出130左右,电机 ...

你的输入电压是多少啊
回复 支持 反对

使用道具 举报

发表于 2014-9-15 13:39:11 | 显示全部楼层
这个控制一个电机需要3个接口,我见他们做的平衡车都是用2个接口控制电机,不知道是怎么回事?
回复 支持 反对

使用道具 举报

发表于 2014-12-4 14:38:52 | 显示全部楼层
写得真棒,楼主不介意的话留个QQ吧?想问问,电源到底是给谁供电的,给Arduino主控板还是给驱动器?
回复 支持 反对

使用道具 举报

发表于 2015-1-25 02:52:10 | 显示全部楼层
两个电机都能转也能调速,只有一个方向转,不能反转和停止。请大师指点迷津。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 18:28 , Processed in 0.072365 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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