導航:首頁 > 操作系統 > 直流電機如何和51單片機相連

直流電機如何和51單片機相連

發布時間:2024-10-13 20:47:14

❶ 51單片機怎麼驅動直流電機c語言

51單片機驅動直流電機程序(用的是l298n晶元):

#include<reg51.h>

#include<math.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineN100

sbits1=P1^0;//電機驅動口

sbits2=P1^1;//電機驅動口

sbits3=P1^2;//電機驅動口

sbits4=P1^3;//電機驅動口

sbiten1=P1^4;//電機使能端

sbiten2=P1^5;//電機使能端

sbitLSEN=P2^0;//光電對管最左

sbitLSEN1=P2^1;//光電對管左1

sbitLSEN2=P2^2;//光電對管左2

sbitRSEN1=P2^3;//光電對管右1

sbitRSEN2=P2^4;//光電對管右2

sbitRSEN=P2^5;//光電對管最右

uintpwm1=0,pwm2=0,t=0;

voiddelay(uintxms)

{

uinta;

while(--xms)

{

for(a=123;a>0;a--);

}

}

voidmotor(ucharspeed1,ucharspeed2)

{

if(speed1>=-100&&speed1<=100)

{

pwm1=abs(speed1);

if(speed1>0)

{

s1=1;

s2=0;

}

if(speed1==0)

{

s1=1;

s2=1;

}

if(speed1<0)

{

s1=0;

s2=1;

}

}

if(speed2>=-100&&speed2<=100)

{

pwm2=abs(speed2);

if(speed2>0)

{

s3=1;

s4=0;

}

if(speed2==0)

{

s3=1;

s4=1;

}

if(speed2<0)

{

s3=0;

s4=1;

}

}

}

voidgo_forward(uintspeed)

{

s1=1;

s2=0;

s3=1;

s4=0;

pwm1=speed;

pwm2=speed;

}

voidgo_back(uintspeed)

{

s1=0;

s2=1;

s3=0;

s4=1;

pwm1=speed;

pwm2=speed;

}

voidstop()

{

s1=1;

s2=1;

s3=1;

s4=1;

pwm1=0;

pwm2=0;

}

voidturn_right(uintP1,uintP2)//右轉函數

{

s1=1;

s2=0;

s3=0;

s4=1;

pwm1=P1;

pwm2=P2;

}

voidturn_left(uintP1,uintP2)//左轉函數

{

s1=0;

s2=1;

s3=1;

s4=0;

pwm1=P1;

pwm2=P2;

}

voidtracking()

{

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0))//沒有檢測到

{

go_forward(100);

}

if((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0))//左一檢測到

{

turn_left(40,80);//左轉右輪》左輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==1)&&(RSEN1==0)&&(RSEN2==0))//左二檢測到

{

turn_left(40,60);//左轉右輪》左輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==1)&&(RSEN2==0))//右一檢測到

{

turn_right(60,4);//右轉左輪》右輪

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==1))//右二檢測到

{

turn_right(80,40);//右轉左輪》右輪

delay(N);

}

if((LSEN1==1)&&(LSEN2==1))

{

turn_left(0,100);

delay(1000);

}

if((RSEN1==1)&&(RSEN2==1))

{

turn_right(100,0);

delay(1000);

}

}

voidavoidance()

{

}

voidinit()

{

TMOD=0x02;//timer0同時配置為模式2,8自動重裝計數模式

TH0=156;//定時器初值設置100us中斷

TL0=156;

ET0=1;

EA=1;

TR0=1;//開啟總中斷

}

voidmain()

{

init();

while(1)

{

tracking();

}

}

voidtimer0()interrupt1//電機驅動提供PWM信號

{

if(t<pwm1)

en1=1;

else

en1=0;

if(t<pwm2)

en2=1;

else

en2=0;

t++;

if(t>100)

t=0;

}

(1)直流電機如何和51單片機相連擴展閱讀

L298N是一種雙H橋電機驅動晶元,其中每個H橋可以提供2A的電流,功率部分的供電電壓范圍是2.5-48v,邏輯部分5v供電,接受5vTTL電平。一般情況下,功率部分的電壓應大於6V否則晶元可能不能正常工作。

❷ 如何用51單片機控制4個直流電機電機

倆L298N,一共4個H橋,能控制4個直流電機正反轉,且能調速

如果只需要正轉或者反轉,用uln2003一片即可

注意一點:用298N的時候需要加續流二極體保護晶元,uln2003自帶續流二極體

❸ 51單片機怎麼讓直流電機轉動

一般而言,所有單片機的埠驅動能力都有限,還有電機的額定電壓也許會比單片機的供電電壓高,直接驅動電機有困難。這時候要想驅動電機,就必須根據電機的額定電壓和額定功率採用合適的功率器件去驅動。


下邊的電路圖是我工程上實際使用的,可以正反轉,脈寬調制的話還可以調速。


❹ 51單片機怎麼控制大功率的直流電機,麻煩給下電路圖,謝啦。主要是驅動那怎麼設計

看了這么多回答的,還是我給你一個答案吧!

答案見插圖。解釋如下:

1:你說的大功率直流電機,用三極體肯定驅動不了,必須要大功率的MOSFET或者IGBT去驅動,IGBT或者MOSFET可以買Infineon的。主電路結構最好採用H橋電路,可以雙極性正反調速。

2:H橋的上管可以用IR2110來驅動,這個晶元自己提供了一個自舉功能,上管MOSFET(或IGBT)的源極電壓是浮動的,自舉電路可以保證上管的柵源之間的電壓在開啟電壓閾值之上。

3:你想要用51單片機實現調速,只需要用51單片機的P0~P3口產生兩組互相反相的PWM波(注意兩組之間要有死區),輸出到IR2110的HIN和LIN。至於程序,就很簡單了,不用我多說,你懂的。呵呵……

❺ 怎樣用51單片機驅動ULN2003來帶動5V直流電機

51單片機的I/O口(不是P0 口),直接和ULN2003連,ULN2003有16個腳共7路驅動.ULN2003的8腳接5V電源地,9腳接+5V電源,因為ULN2003裡面有續流二極體從9腳引出.假如你用P1.0驅動一個電機,那麼P1.0接ULN2003的1腳,ULN2003的16腳接電機線圈的一端,電機線圈的另一端接+5V電源.P1.0為高電平,電機就轉,P1.0為低電平,電機就停.ULN2003驅動電流500MA.

閱讀全文

與直流電機如何和51單片機相連相關的資料

熱點內容
51單片機控制pwm程序 瀏覽:295
汽車壓縮機串氣可以修么 瀏覽:633
30天學會全部語法pdf 瀏覽:52
java反編譯修補bug 瀏覽:614
如何修改伺服器ftp地址 瀏覽:119
雲伺服器如何用c盤分d盤 瀏覽:597
蘋果的單片機 瀏覽:804
程序員喝麻辣燙 瀏覽:140
安卓怎麼玩微軟的游戲 瀏覽:54
安卓如何在桌面同時操作好幾個app 瀏覽:72
美國app在哪裡看 瀏覽:320
java文件內容追加 瀏覽:622
為什麼下載壓縮包會變成文檔 瀏覽:727
自我安慰程序員的話 瀏覽:369
android備份程序 瀏覽:713
建設銀行亞洲手機app哪裡下載 瀏覽:502
桌面有一個文件夾圖標變透明了 瀏覽:382
vb文件如何加密 瀏覽:238
中行選擇編譯環境 瀏覽:248
編程打左右雙引號 瀏覽:719