找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15167|回復: 2
打印 上一主題 下一主題
收起左側(cè)

直流電機的驅(qū)動原理及單片機+L298控制程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-13 02:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   直流電機用單片機控制時需要加驅(qū)動電路,目的是提供足夠大的電流。一般來說,直流電機的驅(qū)動主要達林頓管和專用驅(qū)動芯片,當然最好是用MOS管自行搭建驅(qū)動電路(考慮到電機效率和經(jīng)濟的問題)。達林頓管方便,但是無法控制電機的轉(zhuǎn)向,而驅(qū)動芯片則顯得比較方便。
   所謂 H橋驅(qū)動電路是為了直流電機而設(shè)計的一種常見電路,它主要實現(xiàn)直流電機的正反向驅(qū)動,其典型電路形式如下:


   從圖中可以看出,其形狀類似于字母“H”,而作為負載的直流電機是像“橋”一樣架在上面的,所以稱之為“H橋驅(qū)動”。4個開關(guān)所在位置就稱為“橋臂”。從電路中不難看出,假設(shè)開關(guān)A、D接通,電機為正向轉(zhuǎn)動,則開關(guān)B、C接通時,直流電機將反向轉(zhuǎn)動。從而實現(xiàn)了電機的正反向驅(qū)動。
    借助這 4個開關(guān)還可以產(chǎn)生另外 2 個電機的工作狀態(tài):
    A) 剎車 —— 將B、D開關(guān)(或A、C)接通,則電機慣性轉(zhuǎn)動產(chǎn)生的電勢將被短路,形成阻礙運動的反電勢,形成“剎車”作用。
    B) 惰行 ——4個開關(guān)全部斷開,則電機慣性所產(chǎn)生的電勢將無法形成電路,從而也就不會產(chǎn)生阻礙運動的反電勢,電機將慣性轉(zhuǎn)動較長時間。
   以上只是從原理上描述了H橋驅(qū)動,而實際應(yīng)用中很少用開關(guān)構(gòu)成橋臂,通常使用晶體管,因為控制更為方便,速度壽命都長于有接點的開關(guān)(繼電器)。
   細分下來,晶體管有雙極性和MOS管之分,而集成電路只是將它們集成而已,其實質(zhì)還是這兩種晶體管,只是為了設(shè)計、使用方便、可靠而做成了一塊電路。
雙極性晶體管構(gòu)成的H橋:
MOS管構(gòu)成的H橋:
幾種典型H橋驅(qū)動電路分析:
   分析之前,首先要確定 H 橋要關(guān)注那些性能:
    A)效率 ——所謂驅(qū)動效率高,就是要將輸入的能量盡量多的輸出給負載,而驅(qū)動電路本身最好不消耗或少消耗能量,具體到H橋上,也就是4個橋臂在導通時最好沒有壓降,越小越好。

     B)安全性—— 不能同側(cè)橋臂同時導通;
     C)電壓—— 能夠承受的驅(qū)動電壓;
     D)電流—— 能夠通過的驅(qū)動電流。
     大致如此,仔細考量,指標B)似乎不是H橋本身的問題,而是控制部分要考慮的。
     而后兩個指標通過選擇合適參數(shù)的器件就可以達到,只要不是那些特別大的負載需求,每種器件通常都能選擇到。而且,小車應(yīng)用中所能遇到的電流、電壓更是有限。只有指標A)是由不同器件的性能所決定的,而且是運行中最應(yīng)該關(guān)注的指標,因為它直接影響了電機驅(qū)動的效率。所以,經(jīng)分析的重點放在效率上,也就是橋臂的壓降上。
     為了使分析簡單,便于比較,將H 橋的驅(qū)動電流定位在2A水平上,而電壓在5 - 12V之間。
     選擇三個我所涉及到的器件:
     A)雙極性晶體管—— D772、D882
     B)MOS管—— 2301、2302
     C)集成電路H橋—— L298
  D772的壓降指標如下:

  D882的壓降指標如下:
  2301的壓降指標如下:


    因為MOS管是以導通電阻來衡量的,需要換算一下,小車的控制電壓是4.5V,按上面的導通電阻計算,2A的壓降應(yīng)該是:2*0.093=0.186V,最大是:2*0.13=0.26V。
2302的壓降指標如下:


  同上換算一下,小車的控制電壓是4.5V(電池電壓),按上面的導通電阻計算,2A的壓降應(yīng)該是: 2* 0.045 =0.09V,最大是:2 * 0.06 = 0.12V。
  L298的壓降指標如下:


    表中第一行為上橋臂的壓降,對應(yīng)D772、2301,第二行為下橋臂的壓降,對應(yīng)D882、2302,第三行為兩者之和。對比一下不難看出,如果均以2A電流驅(qū)動計算,三種驅(qū)動自身所消耗的功率如下:
    D772、D882: (0.5+0.5)* 2 = 2 W
    2301、2302:  (0.26+0.12)* 2 = 0.76 W
    L298:         4.9* 2 = 9.8 W
   如果以驅(qū)動一個 4.5V 、2A的直流電機為例:
    電機得到的功率是:4.5*2 = 9W;
    用D772、D882 則需要供電5.5V,效率為:9/(5.5*2)= 81% ;
    用2301、2302 則需要供電4.88V,效率為:9 /(4.88*2)= 92%
    用L298 則需要供電 9.4V ,效率為:9/(9.4*2)= 48 %
    從這組數(shù)據(jù)還可以看出三者的散熱需求及其外形差異的原因。
    同時解釋了圓夢小車開始使用D772、D882 驅(qū)動時為何選用 3V的130電機,因為小車是4節(jié)充電電池供電,只有4.8~5V,H橋壓降1V,所以只能使用3V的電機。而改用MOS管驅(qū)動后,就選用了4.5V的N20電機,因為MOS管只帶來了0.4V不到的壓降。而分析L298的壓降你就會知道,如果你的電機需要2A左右的啟動電流,那使用5V是根本無法工作的。實際上使用 L298不只是驅(qū)動壓降限制了電機的供電電壓,它的控制電平要求也使得你幾乎無法使用低于 6V 的工作電壓,看如下信息:


    表中Vs為電機驅(qū)動的供電電壓(L298分2路供電,一路是電機驅(qū)動的,就是H橋上的,一路是供給邏輯電路的,ViH是指邏輯控制輸入高電平。

    此參數(shù)的含義是,電機驅(qū)動電壓必須大于邏輯控制電平2.5V,如果你的邏輯部分使用5V供電,那電機的供電電壓至少7.5V,否則將無法保證正常工作。除非你將邏輯控制電平降低。

電機驅(qū)動芯片L298介紹:
  L298是SGS公司的產(chǎn)品,內(nèi)部包含4通道邏輯驅(qū)動電路,是一種二相和四相電機的專用驅(qū)動器,即內(nèi)含二個H橋的高電壓大電流全橋式驅(qū)動器,接收標準TTL邏輯電平信號,可以驅(qū)動46V、2A以下的電機。1腳和15腳可單獨引出連接電流采樣電阻器,形成電流傳感信號。L298可驅(qū)動2個電機,2(OUT1)、3(OUT2)和13(OUT3)、14(OUT4)之間分別接2個電動機。5(IN1)、7(IN2);10(IN3)、12(IN4)接輸入控制電平,控制電機的正反轉(zhuǎn),7(ENA),8(ENB)接控制使能端,控制電機的停轉(zhuǎn)。9(Vss)接邏輯電平(即VCC),4(Vs)接給電機供電的電源。根據(jù)芯片說明的要求,Vs>Vss+2.5。

                       
典型應(yīng)用:




89C52和L298控制直流電機   本例采用了兩種方法來輸出PWM波形,分別是軟件延時法和定時器0,電機驅(qū)動芯片是L298,它的中文資料見IC學習筆記。

程序代碼:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit IN1=P2^0;
  5. sbit IN2=P2^1;
  6. sbit key1=P2^3;//電源
  7. sbit key2=P2^4;//急停
  8. sbit key3=P2^5;//正高
  9. sbit key4=P2^6;//正低
  10. sbit key5=P2^7;//反高
  11. sbit key6=P3^4;//反低
  12. sbit power=P3^6;//電源控制
  13. uchar choice=0;
  14. uchar an1=0;
  15. uchar count=0;

  16. void delay1ms(uint z)
  17. {
  18. uint x;
  19. uint y;
  20. for(x=z;x>0;x--)
  21.   for(y=122;y>0;y--);
  22. }

  23. void PWMZ()
  24. {
  25. IN1=1;
  26. delay1ms(1);
  27. IN1=0;
  28. delay1ms(2);
  29. }

  30. void PWMF()
  31. {
  32. TR0=1;
  33. while(!TF0);
  34. }

  35. void keyscan()
  36. {
  37. if(key1==0)
  38. {
  39.   delay1ms(10);
  40.   if(key1==0)
  41.   {
  42.    while(!key1);
  43.    an1++;
  44.    if(an1==2) an1=0;
  45.    choice=1;
  46.   }
  47. }
  48. if(key2==0)
  49. {
  50.   delay1ms(10);
  51.   if(key2==0)
  52.   {
  53.    while(!key2);
  54.    choice=2;
  55.   }
  56. }
  57. if(key3==0)
  58. {
  59.   delay1ms(10);
  60.   if(key3==0)
  61.   {
  62.    while(!key3);
  63.    choice=3;
  64.   }
  65. }
  66. if(key4==0)
  67. {
  68.   delay1ms(10);
  69.   if(key4==0)
  70.   {
  71.    while(!key4);
  72.    choice=4;
  73.   }
  74. }
  75. if(key5==0)
  76. {
  77.   delay1ms(10);
  78.   if(key5==0)
  79.   {
  80.    while(!key5);
  81.    choice=5;
  82.   }
  83. }
  84. if(key6==0)
  85. {
  86.   delay1ms(10);
  87.   if(key6==0)
  88.   {
  89.    while(!key6);
  90.    choice=6;
  91.   }
  92. }
  93. switch(choice)
  94. {
  95.   case 1:if(an1) power=1;else power=0;break;
  96.   case 2:IN1=0;IN2=0;break;
  97.   case 3:IN2=0;IN1=1;break;
  98.   case 4:TR0=0;IN2=0;PWMZ();break;
  99.   case 5:IN1=0;IN2=1;break;
  100.   case 6:IN1=0;PWMF();break;
  101. }
  102. }

  103. void main()
  104. {
  105. power=0;
  106. TMOD=0x01;
  107. TH0=0xff;
  108. TL0=0xff;
  109. ET0=1;
  110. EA=1;
  111. while(1)
  112. {
  113.   keyscan();
  114. }  
  115. }

  116. void time0() interrupt 1
  117. {
  118. TR0=0;
  119. IN2=~IN2;
  120. if(IN2)//高電平脈寬
  121. {
  122.   TH0=0xfc;
  123.   TL0=0x18;
  124. }
  125. else//低電平脈寬
  126. {
  127.   TH0=0xf4;
  128.   TL0=0x48;
  129. }
  130. }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:274729 發(fā)表于 2018-2-11 19:23 | 只看該作者
謝謝分享
回復

使用道具 舉報

板凳
ID:791204 發(fā)表于 2020-6-27 19:26 | 只看該作者
能給出電路圖嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表