找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7775|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的直流電機(jī)驅(qū)動(L298)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114642 發(fā)表于 2016-4-18 00:21 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
L298SGS公司的產(chǎn)品,L298N15個管角的單塊集成電路,高電壓,高電流,四通道驅(qū)動,設(shè)計用L298N來接收DTL或者TTL邏輯電平,驅(qū)動感性負(fù)載(比如繼電器,直流和步進(jìn)馬達(dá))和開關(guān)電源晶體管。內(nèi)部包含4通道邏輯驅(qū)動電路,其額定工作電流為 1 A,最大可達(dá) 1.5 A,Vss 電壓最小 4.5 V,最大可達(dá) 36 V;Vs 電壓最大值也是 36 V。L298N可直接對電機(jī)進(jìn)行控制,無須隔離電路,可以驅(qū)動雙電機(jī)。
1,L298內(nèi)部的原理圖


2,L298 引腳符號及功能


3,L298的邏輯功能


當(dāng)使能端為高電平時,輸入端IN1為PWM信號,IN2為低電平信號時,電機(jī)正轉(zhuǎn);輸入端IN1為低電平信號,IN2為PWM信號時,電機(jī)反轉(zhuǎn);;IN1與IN2相 同時,電機(jī)快速停止。當(dāng)使能端為低電平時,電動機(jī)停止轉(zhuǎn)動。
在對直流電動機(jī)電壓的控制和驅(qū)動中,半導(dǎo)體功率器件(L298)在使用上可以分為兩種方式:線性放大驅(qū)動方式和開關(guān)驅(qū)動方式在線性放大驅(qū)動方式。
半導(dǎo)體功率器件工作在線性區(qū)優(yōu)點(diǎn)是控制原理簡單,輸出波動小,線性好,對鄰近電路干擾小,缺點(diǎn)為功率器件工作在線性區(qū),功率低和散熱問題嚴(yán)重。開關(guān)驅(qū)動方式是使半導(dǎo)體功率器件工作在開關(guān)狀態(tài),通過脈調(diào)制(PWM)來控制電動機(jī)的電壓,從而實(shí)現(xiàn)電動機(jī)轉(zhuǎn)速的控制。


  1. #include<reg51.h>   
  2. #include<intrins.h>
  3. #define uchar unsigned char

  4. #define uint unsigned int


  5. sbit MOTOR_A_1=P3^6;

  6. sbit MOTOR_A_2=P3^7;   

  7. sbit k1=P1^0; //定義k1為p1.0口

  8. sbit k2=P1^1;   //定義k2為p1.1口

  9. sbit k3=P1^2;   //定義k3為p1.2口

  10. sbit k4=P1^3;   //定義k4為p1.3口

  11. uchar T=0;   //定時標(biāo)記

  12. uchar W=0;   //脈寬值 0~100

  13. uchar A=0;   //方向標(biāo)記 0,1

  14. uchar k=0;   //按鍵標(biāo)記

  15. uchar i=0;     //計數(shù)變量


  16. uchar code table1[]={

  17. 0x3f,0x06,0x5b,0x4f,

  18. 0x66,0x6d,0x7d,0x07,

  19. 0x7f,0x6f,0x77,0x7c,

  20. 0x39,0x5e,0x79,0x71};


  21. uchar code table2[]={0xfe,0xfb,0xfd,0xf7};



  22. void delayms(uint t);  



  23. void disp(void)

  24. {

  25. P2=table2[3];

  26. P0=table1[W]; //顯示占空比個位

  27. delayms(1); //延時1ms

  28. P2=0xff; //P0清1


  29. P2=table2[2];

  30. P0=table1[W/100]; //顯示占空比百位

  31. delayms(1); //延時1ms

  32. P2=0xff; //P0清1

  33.   

  34. P2=table2[1];

  35. P0=table1[W/10];  //顯示占空比十位

  36. delayms(1); //延時1ms

  37. P2=0xff;   //P0清1


  38. P2=table2[0];

  39. P0=table1[A];   //顯示方向

  40. delayms(1); //延時1ms

  41. P2=0xff; //P0清1

  42. }






  43. void init(void)

  44. {

  45. //啟動中斷

  46. TMOD=0x01;

  47. EA=1;

  48. ET0=1;

  49. TR0=1;

  50. //設(shè)置定時時間

  51. TH0=0xff;

  52. TL0=0xf6;

  53. }


  54. void timer0() interrupt 1

  55. {     

  56. //重置定時器時間

  57. TH0=0xff;

  58. TL0=0xf6;

  59. T++; //定時標(biāo)記加1

  60. disp(); //數(shù)碼管顯示

  61. if(k==0)

  62. {

  63. if(T>W)

  64. MOTOR_A_1 =0;

  65. else

  66. MOTOR_A_1 =1;

  67. }

  68. else

  69. {

  70. if(T>W)

  71. MOTOR_A_2 =0;

  72. else

  73. MOTOR_A_2 =1;

  74. }



  75. if(T==100)

  76. T=0;

  77. }



  78. void delayms(uint t)

  79. {

  80. uchar j;

  81. while(t--)

  82. {

  83. for(j=0;j<250;j++) //循環(huán)250次

  84. {

  85.   _nop_();             //系統(tǒng)延時         

  86.       _nop_(); //系統(tǒng)延時

  87.       _nop_(); //系統(tǒng)延時

  88.       _nop_(); //系統(tǒng)延時

  89. }

  90. }

  91. }



  92. void key(void)           //按鍵判斷程序

  93. {

  94. if(k1==0) //按鍵1按下

  95. {

  96. while(k1==0); //按鍵1抬起

  97. if(W==100) //如果脈寬為100

  98. W=0; //脈寬置0

  99. else

  100. W+=1; //否則加1

  101. }

  102. else if(k2==0) //按鍵2按下

  103. {  

  104. while(k2==0); //按鍵2抬起

  105. if(W==0) //如果脈寬為0

  106. W=100; //脈寬設(shè)置成100

  107. else

  108. W-=1; //否則減1

  109. }

  110. else if(k3==0) //按鍵3按下

  111. {   

  112. while(k3==0); //按鍵3抬起

  113. A=!A; //方向標(biāo)記取反

  114. k=!k; //按鍵標(biāo)記取反

  115. }

  116. else if(k4==0) //按鍵4按下

  117. {   

  118. while(k4==0); //按鍵4抬起

  119. W=0; //脈寬清0

  120. }

  121. }


  122. void main(void)

  123. {


  124. init(); /////////系統(tǒng)初始化

  125. while(1)  

  126. {

  127. if(k==0)

  128.    MOTOR_A_2=0;

  129. else

  130. MOTOR_A_1=0;

  131. key(); ////////查詢按鍵

  132. }

  133. }
復(fù)制代碼



評分

參與人數(shù) 1黑幣 +5 收起 理由
單單單片機(jī)就好 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:123712 發(fā)表于 2016-7-7 20:08 | 只看該作者
謝謝樓主分享資料,學(xué)習(xí)中
回復(fù)

使用道具 舉報

板凳
ID:57149 發(fā)表于 2016-7-11 16:03 | 只看該作者
謝謝樓主分享資料!
回復(fù)

使用道具 舉報

地板
ID:161494 發(fā)表于 2017-1-12 17:44 | 只看該作者
O(∩_∩)O謝謝,樓主分享。
回復(fù)

使用道具 舉報

5#
ID:238367 發(fā)表于 2017-10-10 18:25 | 只看該作者
PWM的EN A接單片機(jī)哪個借口?你的程序里看不出啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表