L298N是如何控制直流电机正反转的

电子说

1.2w人已加入

描述

  直流电机简介

  直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

  

  直流电机的工作原理是里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。

  直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。

  感应电动势的方向按右手定则确定(磁感线指向手心,大拇指指向导体运动方向,其他四指的指向就是导体中感应电动势的方向)。

  导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。

  直流电机控制原理

  对于普通直流电机。其控制方法比较简单。只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节。可以采用改变电压的方法,也可采用PWM调速方法。PM调速就是使加在直流电机两端的电压为方波形式,加在电机两端的电压就在VLoad和OV之间不停的跳变,对应的电机电压波形如图1所示:

  L298N

  此时加在电机两端的平均电压Uo=Th/ (Th+T1)*VLoad,可以通过调整PWM的占空比来改变Th和T1的比值。这样就可以通过PWM调节加在电机两端的平均电压,从而改变电机的转速。与步进电机类似。不能将单片机的I.O直接与直流电机的引线相接,而要在二者之间增加驱动电路。也可利用L298N电机驱动芯片实现直流电机驱动。

  L298N芯片资料

  恒压恒流桥式2A驱动芯片L298N :L298是SGS公司的产品。比较常见的是15脚Mult iwatt封装的L298N.内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机或一个两相步进电机。

  l298N芯片可以驱动两个二相电机。也可以驱动一个四相电机。输出电压最高可达50V.可以直接通过电原来调节输出电压:可以直接用单片机的IO口提供信号:而且电路简单,使用比较方便。

  L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5一7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5一46 V 输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻。形成电流传感信号。L298可驱动2个电动机。OUT1,OUT2和OUT3,OUT4之间可分别接电动机。本实验装置我们选用驱动一台电动机。5,7,10.12脚接输入控制电平。控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。表1是L298N功能逻辑图。

  L298N

  In3.In4的逻辑图与表1相同。由表1可知EnA为低电平时。输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低。电机正或反转。同为低电平电机停止。同为高电平电机刹停。

  下面是L298N的系统结构图

  L298N

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

  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);

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分