单片机L298N电机驱动板的几种不同电压使用场景
L298N電機驅(qū)動版主要由兩個核心組件構(gòu)成
L298N 驅(qū)動芯片
78M05 穩(wěn)壓器
模塊參數(shù):
模塊端口示意圖:
其中這個板載5V使能的這個跳線帽比較的復(fù)雜,其與穩(wěn)壓模塊有關(guān)
穩(wěn)壓模塊能否生效完全取決于5V使能跳帽是否啟用(拔掉禁用、插入啟用,默認是板載連通的),這里分兩種情況,接通和未接通:
板載跳帽:
當電源小于或等于12V時,內(nèi)部電路由穩(wěn)壓器供電,并且5V引腳作為微控制器供電的輸出引腳,即:VCC作為7805的輸入,5V是7805的輸出,從而可以為板載提供5v電壓,為外部電路供電使用
拔掉跳帽:
當電源大于12V時,拔掉跳帽,并且應(yīng)通過5V端子單獨為內(nèi)部供電,此時5V端為輸入。即:VCC不作為7805的輸入,而+5v由外部電路提供,此時就需要兩個供電電源,VCC和+5V
注意事項:
**7V<U<12V:**當使用驅(qū)動電壓(上圖標識為12V,實際可以接受的輸入范圍是 7-12V)為7V-12V的時候,可以使能板載(就是圖中板載5V使能)的5V邏輯供電,當使用板載5V供電之后,接口中的+5V供電不要輸入電壓,如果強行供電,有可能會燒壞右側(cè)電容,但可以直接5V電壓供外部使用,一般引出來直接給開發(fā)板供電,比如:Arduino,51單片機
ps:上次我用4節(jié)干電池沒有驅(qū)動起來,原來是電壓不夠。
**12V<U<=24V:**芯片手冊中提出可以支持到35v,但是按照經(jīng)驗一般298保守應(yīng)用最大電壓支持到24V已經(jīng)很牛了,如果要驅(qū)動額定電壓為18V的電機,首先必須拔除板載5V輸出使能的跳帽,然后在5V輸出端口外部接入5V電壓對L298N內(nèi)部邏輯電路供電。
對U的范圍進行總結(jié):
U<7V:12V端口輸入電壓供內(nèi)部電路使用,缺點是12V輸入的電壓可能不足導(dǎo)致,電機轉(zhuǎn)速不夠
(這一種情況是我自己假設(shè)的,U<7V,理論上內(nèi)部電路依舊是由穩(wěn)壓器供電,)
7V<U<12V:內(nèi)部電路將由穩(wěn)壓器供電,5V端口為輸出,不能強行供電
12V<U<=24V:12V端口輸入高電壓驅(qū)動電機,內(nèi)部控制電路由外面從5V端口額外輸入,板載5V使能跳線帽拔開,VCC不作為7805的輸入。
電源引腳
VCC 外接直流電源引腳,電壓范圍在5~35V之間
GND GND是接地引腳,連接到電源負極
5V 驅(qū)動芯片內(nèi)部邏輯供電引腳,如果安裝了5V跳帽,則此引腳可輸出5V電壓,為微控板或其他電路提供電力供給,如果拔掉5V跳帽,則需要獨立外接5V電源
控制引腳
IN1 & IN2 電機驅(qū)動器A的輸入引腳,控制電機A轉(zhuǎn)動及旋轉(zhuǎn)角度
IN1輸入高電平HIGH,IN2輸入低電平LOW,對應(yīng)電機A正轉(zhuǎn)
IN1輸入低電平LOW,IN2輸入高電平HIGH,對應(yīng)電機A反轉(zhuǎn)
IN1、IN2同時輸入高電平HIGH或低電平LOW,對應(yīng)電機A停止轉(zhuǎn)動
調(diào)速就是改變IN1、IN2高電平的占空比(需拔掉ENA處跳帽)
IN3 & IN4 電機驅(qū)動器B的輸入引腳,控制電機B轉(zhuǎn)動及旋轉(zhuǎn)角度
IN3輸入高電平HIGH,IN4輸入低電平LOW,對應(yīng)電機B正轉(zhuǎn)
IN3輸入低電平LOW,IN4輸入高電平HIGH,對應(yīng)電機B反轉(zhuǎn)
IN3、IN4同時輸入高電平HIGH或低電平LOW,對應(yīng)電機B停止轉(zhuǎn)動
調(diào)速就是改變IN3、IN4高電平的占空比(需拔掉ENB處跳帽)
輸出引腳
調(diào)速控制引腳
關(guān)于電機調(diào)速這塊
采用PWM調(diào)速,其原理是就是開關(guān)管在一個周期內(nèi)電的導(dǎo)通時間為t,周期T內(nèi),則電機兩端的平均電壓U=Vcc*(t/T)=a Vcc。其中a=t/T,也稱占空比,Vcc是電源電壓,電機的轉(zhuǎn)速與電機兩端的電壓成正比,而電機兩端的電壓與控制波形的占空比成正比,因此電機的速度與占空比成比例,占空比越大,電機轉(zhuǎn)速越快,詳細可看文末:電機驅(qū)動原理調(diào)速PWM。
官方示例源碼:
#include<reg52.h> sbit IN1=P1^0; sbit IN2=P1^1; sbit ENA=P1^2; void delay(unsigned int z); void delay_us(unsigned int aa); /*******************?÷oˉêy**************************/ void main() {while(1){ /******************°′ò??¨????±è×a?ˉ************************/ //×a?ˉ?ü?ú?a20 unsigned int i,cycle=0,T=2048;IN1=1; //?y×aIN2=0;for(i=0;i<200;i++){delay(10);//PWM????±è?a50%£?DT???óê±μ÷??PWM??3?ENA=~ENA;} //×a?ˉ?ü?ú?a40IN1=0; //·′×aIN2=1;for(i=0;i<100;i++){delay(20);//PWM????±è?a50%£?DT???óê±μ÷??PWM??3?ENA=~ENA;}/******************×??ˉ?ó?ù?y×a************************/ //????PWM?ü?ú?a2048usIN1=1; IN2=0;while(cycle!=T){ ENA=1;delay_us(cycle++);ENA=0;delay_us(T-cycle);}IN1=0; //×??ˉ???ù·′×aIN2=1;while(cycle!=T){ ENA=1;delay_us(cycle++);ENA=0;delay_us(T-cycle);}} } /******************z???óê±oˉêy*************************/ void delay(unsigned int z) {unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--); } /****************?¢???óê±******************************/ void delay_us(unsigned int aa) {while(aa--); }參考博文:
想看更加詳細L298N芯片說明,點擊這里
總結(jié)
以上是生活随笔為你收集整理的单片机L298N电机驱动板的几种不同电压使用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3GPP TR 38.885 Study
- 下一篇: 基于Attention的Seq2Seq