用51單片機控制H橋電路來實現(xiàn)直流電機正反轉(zhuǎn)(按下開關(guān)正3秒停1秒反3秒循環(huán))
- 資格考試
- 2023-04-03 12:59:23
51單片機實現(xiàn)電動機正反轉(zhuǎn)控制如何實現(xiàn)?
51單片機的IO口一般不能直接輸出控制電機,必須加裝電機驅(qū)動電路,常見的如L298N等,電機正反轉(zhuǎn)驅(qū)動采用H橋電路。你的要求使用很簡單的代碼就能實現(xiàn)。51單片機怎么控制直流電機左轉(zhuǎn),右轉(zhuǎn),加速,停止?
直流電機怎么左轉(zhuǎn)右轉(zhuǎn),單片機輸出PWM波就能控制電機轉(zhuǎn)動的速度,要想控制電機正反轉(zhuǎn)就需要一個H橋,H橋?qū)菍?dǎo)通就可以控制電機正反轉(zhuǎn)了,至于H橋就參考百科里面的http://baike.baidu.com/view/2009952.htm哪位大神有51單片機控制H橋中的直流電機正反轉(zhuǎn)及調(diào)速的電路原理
正反轉(zhuǎn)不就是電流流向的問題,調(diào)速就是輸出電壓大小的問題。用51單片機控制直流電機的轉(zhuǎn)動
電路圖就簡單了,只要按照程序去連接就不會有問題。這里需要用到一個H橋電路,注意橋電路中Q1和Q3是PNP型三極管,負電導(dǎo)通。Q2和Q4是NPN型三極管,正電導(dǎo)通。Q1和Q4導(dǎo)通是正傳,Q3和Q2導(dǎo)通是反轉(zhuǎn)。
#include
#defineucharunsigndechar
#defineuintunsigndeint
sbitzheng=P3^0;//按鍵正轉(zhuǎn)
sbitfan=P3^1; //按鍵反轉(zhuǎn)
sbitting=P3^2;//按鍵停
sbitQ1=P3^4;//定義4個IO控制橋電路
sbitQ2=P3^5;
sbitQ3=P3^6;
sbutQ4=P3^7;
sbitled1=P0^0; //定義3個LED燈
sbitled2=P0^1;
sbitled3=P0^2;
voiddaley(ucharz);//延時函數(shù)
voidmain()
{
while()
{
if(zheng==0) //電機正轉(zhuǎn)
{
delay(10);
if(zheng==0);
{
Q2=0;
Q3=1;//這兩句是把反轉(zhuǎn)關(guān)掉
Q1=0;
Q4=1;//這兩句是打開正轉(zhuǎn)
led1=0;//紅燈亮
led2=1;//其他等關(guān)閉
led3=1;//其他等關(guān)閉
}
}
if(fan==0) //電機反轉(zhuǎn)
{
delay(10);
if(fan==0)
{
Q1=1;
Q4=0;//把正轉(zhuǎn)關(guān)掉
Q2=1;
Q3=0;//開反轉(zhuǎn)
led1=1;//其他等關(guān)閉
led2=0;//綠燈亮
led3=1;//其他等關(guān)閉
}
}
if(ting==0) //關(guān)掉電機
{
delay(10);
if(ting==0)
{
Q1=1;
Q2=0;
Q3=1;
Q4=0;
led1=1;//其他等關(guān)閉
led2=1;//其他等關(guān)閉
led3=0;//黃燈亮
}
}
}
}
voiddaley(ucharz) //延時函數(shù)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}