什么是H橋?
H橋是一個比較簡單的電路,通常它會包含四個獨立控制的開關元器件(例如 MOSFET),它們通常用于驅動電流較大的負載,比如電機,至于為什么要叫H橋(H-Bridge),因為長得比較像 字母H,具體如下圖所示;
這里有四個開關元器件 Q1 , Q2 , Q3 , Q4 ,另外還有一個直流電機M, D1 , D2 , D3 , D4 是MOS-FET的續流二極管;
開關狀態
下面以控制一個直流電機為例,對H橋的幾種開關狀態進行簡單的介紹,其中正轉和反轉是人為規定的方向,實際工程中按照實際情況進行劃分即可;
正轉
通常H橋用來驅動感性負載,這里我們來驅動一個直流電機;
打開 Q1 和 Q4 ;
關閉 Q2 和 Q3 ;
此時假設電機正轉,這電流依次經過 Q1 , M , Q4 ,在圖中使用黃色線段進行標注,具體如下圖所示;
正轉 反轉
另外一種狀態則是電機反轉;此時四個開關元器件的狀態如下;
關閉 Q1 和 Q4 ;
打開 Q2 和 Q3 ;
此時電機反轉(與前面介紹的情況相反),這電流依次經過 Q2 , M , Q3 ,在圖中使用黃色線段進行標注,具體如下圖所示;
反轉 調速
如果要對直流電機調速,其中的一種方案就是;
關閉 Q2 , Q3 ;
打開 Q1 , Q4 上給它輸入 50% 占空比的PWM波形,這樣就達到了降低轉速的效果,如果需要增加轉速,則將輸入PWM的占空比設置為100%;
具體如下所示;
停止狀態
這里以電機從正轉切換到停止狀態為例;
正轉情況下; Q1 和 Q4 是打開狀態;
這時候如果關閉 Q1 和 Q4 ,直流電機內部可以 等效成電感,也就是感性負載,電流不會突變,那么電流將繼續保持原來的方向進行流動,這時候我們希望電機里的電流可以快速衰減;
這里有兩種辦法:
第一種:關閉 Q1 和 Q4 ,這時候電流仍然會通過反向續流二極管進行流動,此時短暫打開 Q1 和 Q3 從而達到快速衰減電流的目的;
第二種:準備停止的時候,關閉 Q1 ,打開 Q2 ,這時候電流并不會衰減地很快,電流循環在Q2,M,Q4之間流動,通過MOS-FET的內阻將電能消耗掉;
應用
下面是某寶上的L298N模塊,比較常見,對于新手玩家非常友好,接線也十分簡單;
L298N模塊
這個模塊有一個板載5V穩壓器,該穩壓器可使用跳線的方式進行使能。
如果電機電源電壓高達12V,我們可以啟用5V穩壓器,并且5V引腳可以用作輸出,例如給Arduino板供電。
但是,如果電動機電壓大于12V,則必須斷開跳線,因為這些電壓會損壞板載5V穩壓器。
在這種情況下,5V引腳將用作輸入,因為我們需要將其連接到5V電源,以使IC正常工作。
我們在這里可以注意到,該IC的電壓降約為2V。因此,如果使用12V電源,則電動機端子上的電壓約為10V,這意味著我們將無法從12V直流電動機中獲得最大速度。
這里使用 Arduino 為例,這是網上找的一個Demo整體的框架如下圖所示;
架構 # defineenA 9
# definein1 6
# definein2 7
# definebutton 4
introtDirection = 0;
intpressed = false;
voidsetup{
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(button, INPUT);
// Set initial rotation direction
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
}
voidloop{
// Read potentiometer value
intpotValue = analogRead(A0);
// Map the potentiometer value from 0 to 255
intpwmOutput = map(potValue, 0, 1023, 0, 255);
// Send PWM signal to L298N Enable pin
analogWrite(enA, pwmOutput);
// Read button - Debounce
if(digitalRead(button) == true) {
pressed = !pressed;
}
while(digitalRead(button) == true);
delay( 20);
// If button is pressed - change rotation direction
if(pressed == true& rotDirection == 0) {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
rotDirection = 1;
delay( 20);
}
// If button is pressed - change rotation direction
if(pressed == false& rotDirection == 1) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
rotDirection = 0;
delay( 20);
}
}
簡單描述一下:首先我們需要定義程序所需的引腳和變量。
在 setup 中,我們需要設置引腳模式和電機的初始旋轉方向。
在 loop 中,我們先讀取電位器值,然后將從中獲得的值從0到1023變化,線性映射到PWM信號的0到255的值,將其從0到100%的占空比。
然后使用 analogWrite 函數將PWM信號發送到L298N板的Enable引腳,該引腳實際上驅動電動機。
接下來,我們檢查是否按下了按鈕,如果是的話,我們將輸入1和輸入2的狀態反置,從而改變電動機的旋轉方向。該按鈕將用作切換按鈕,每次按下該按鈕都會改變電動機的旋轉方向。
某寶上這種小車很多,如下圖所示;主控可以換成51單片機或者STM32,當然Arduino也沒問題,使用L298N就可以快速搭建一個小車了;
某寶的小車 總結
本文簡單介紹了H橋的原理,并以直流電機為例簡單介紹了驅動的狀態,整體比較簡單,適合新手玩家,最后給出了基于Arduino和L298N的驅動示例,僅供參考,感興趣可以去某寶逛逛,enjoy。
-
MOSFET
+關注
關注
150文章
8588瀏覽量
220375 -
元器件
+關注
關注
113文章
4834瀏覽量
95104 -
直流電機
+關注
關注
36文章
1733瀏覽量
71795
發布評論請先 登錄
評論