电子说
直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。
直流电机的工作原理是里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。
直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。
感应电动势的方向按右手定则确定(磁感线指向手心,大拇指指向导体运动方向,其他四指的指向就是导体中感应电动势的方向)。
导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
对于普通直流电机。其控制方法比较简单。只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节。可以采用改变电压的方法,也可采用PWM调速方法。PM调速就是使加在直流电机两端的电压为方波形式,加在电机两端的电压就在VLoad和OV之间不停的跳变,对应的电机电压波形如图1所示:
此时加在电机两端的平均电压Uo=Th/ (Th+T1)*VLoad,可以通过调整PWM的占空比来改变Th和T1的比值。这样就可以通过PWM调节加在电机两端的平均电压,从而改变电机的转速。与步进电机类似。不能将单片机的I.O直接与直流电机的引线相接,而要在二者之间增加驱动威廉希尔官方网站 。也可利用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功能逻辑图。
In3.In4的逻辑图与表1相同。由表1可知EnA为低电平时。输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低。电机正或反转。同为低电平电机停止。同为高电平电机刹停。
下面是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);
}
全部0条评论
快来发表一下你的评论吧 !