直流電機簡介
直流電機是指能將直流電能轉換成機械能(直流電動機)或將機械能轉換成直流電能(直流發電機)的旋轉電機。它是能實現直流電能和機械能互相轉換的電機。當它作電動機運行時是直流電動機,將電能轉換為機械能;作發電機運行時是直流發電機,將機械能轉換為電能。
直流電機的工作原理是里邊固定有環狀永磁體,電流通過轉子上的線圈產生安培力,當轉子上的線圈與磁場平行時,再繼續轉受到的磁場方向將改變,因此此時轉子末端的電刷跟轉換片交替接觸,從而線圈上的電流方向也改變,產生的洛倫茲力方向不變,所以電機能保持一個方向轉動。
直流發電機的工作原理就是把電樞線圈中感應的交變電動勢,靠換向器配合電刷的換向作用,使之從電刷端引出時變為直流電動勢的原理。
感應電動勢的方向按右手定則確定(磁感線指向手心,大拇指指向導體運動方向,其他四指的指向就是導體中感應電動勢的方向)。
導體受力的方向用左手定則確定。這一對電磁力形成了作用于電樞一個力矩,這個力矩在旋轉電機里稱為電磁轉矩,轉矩的方向是逆時針方向,企圖使電樞逆時針方向轉動。如果此電磁轉矩能夠克服電樞上的阻轉矩(例如由摩擦引起的阻轉矩以及其它負載轉矩),電樞就能按逆時針方向旋轉起來。
直流電機控制原理
對于普通直流電機。其控制方法比較簡單。只需給電機的兩根控制線加上適當的電壓即可使電機轉動起來,電壓越高則電機轉速越高。對于直流電機的速度調節。可以采用改變電壓的方法,也可采用PWM調速方法。PM調速就是使加在直流電機兩端的電壓為方波形式,加在電機兩端的電壓就在VLoad和OV之間不停的跳變,對應的電機電壓波形如圖1所示:
此時加在電機兩端的平均電壓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功能邏輯圖。
In3.In4的邏輯圖與表1相同。由表1可知EnA為低電平時。輸入電平對電機控制起作用,當EnA為高電平,輸入電平為一高一低。電機正或反轉。同為低電平電機停止。同為高電平電機剎停。
下面是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);
}
-
直流電機
+關注
關注
36文章
1708瀏覽量
70072 -
L298N
+關注
關注
21文章
224瀏覽量
78628
發布評論請先 登錄
相關推薦
評論