Arduino通过L298N模块控制电机正反转

Arduino已经玩了一段时间了,在开始文章之前先简单谈下自己这段时间玩的感受。Arduino是一个开源的IC板,给予初级想入门单片机的小伙伴提供了一定的便捷性,但是真要想做一些应用的话,不管是从性能还是硬件IO方面还是明显不够的。

L298N是一个桥式直流电机驱动模块,关于这个模块的资料包括电路图在网上有很多,所以波波不再重复这些了。需要查看详细资料的朋友也可以参考:http://www.elecfans.com/dianzichangshi/20171211600733_a.htmlArduino通过l298n控制电机正反转

下面是关于L298N控制直流电机正转反转的电平信号示例:

l298n控制电机正反转

一个L298N模块一般是可以同时控制两路电机的,IN3和IN4同上图。

Arduino源代码:

  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. }

将上述代码编译上传至Arduino开发板之后,我们就可以看到电机的转动情况了,但是在实际生活中我们往往不会简单的将代码上传就完事了,比如我们需要用红外遥控器控制窗帘或者用手机APP控制电机又或者通过手势动作去控制。当然这些都需要大家伙自己探索了,本篇笔记只是入门的基础。下面分享下关于一路电机控制窗帘的传动设计图。

电动窗帘控制示意图

根据上图中窗帘的电机控制示意图,我们很轻松的可以把窗帘的打开和关闭封装成一个事件,然后通过其他传感器如语音识别的信号很方便的调用。以上就是波波今日的分享,有喜欢玩Arduino的朋友也可以加我QQ502998120或2398156504进行交流。

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!