找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15235|回复: 2
打印 上一主题 下一主题
收起左侧

直流电机的驱动原理及单片机+L298控制程序

[复制链接]
跳转到指定楼层
楼主
ID:105323 发表于 2016-2-13 02:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   直流电机用单片机控制时需要加驱动电路,目的是提供足够大的电流。一般来说,直流电机的驱动主要达林顿管和专用驱动芯片,当然最好是用MOS管自行搭建驱动电路(考虑到电机效率和经济的问题)。达林顿管方便,但是无法控制电机的转向,而驱动芯片则显得比较方便。
   所谓 H桥驱动电路是为了直流电机而设计的一种常见电路,它主要实现直流电机的正反向驱动,其典型电路形式如下:


   从图中可以看出,其形状类似于字母“H”,而作为负载的直流电机是像“桥”一样架在上面的,所以称之为“H桥驱动”。4个开关所在位置就称为“桥臂”。从电路中不难看出,假设开关A、D接通,电机为正向转动,则开关B、C接通时,直流电机将反向转动。从而实现了电机的正反向驱动。
    借助这 4个开关还可以产生另外 2 个电机的工作状态:
    A) 刹车 —— 将B、D开关(或A、C)接通,则电机惯性转动产生的电势将被短路,形成阻碍运动的反电势,形成“刹车”作用。
    B) 惰行 ——4个开关全部断开,则电机惯性所产生的电势将无法形成电路,从而也就不会产生阻碍运动的反电势,电机将惯性转动较长时间。
   以上只是从原理上描述了H桥驱动,而实际应用中很少用开关构成桥臂,通常使用晶体管,因为控制更为方便,速度寿命都长于有接点的开关(继电器)。
   细分下来,晶体管有双极性和MOS管之分,而集成电路只是将它们集成而已,其实质还是这两种晶体管,只是为了设计、使用方便、可靠而做成了一块电路。
双极性晶体管构成的H桥:
MOS管构成的H桥:
几种典型H桥驱动电路分析:
   分析之前,首先要确定 H 桥要关注那些性能:
    A)效率 ——所谓驱动效率高,就是要将输入的能量尽量多的输出给负载,而驱动电路本身最好不消耗或少消耗能量,具体到H桥上,也就是4个桥臂在导通时最好没有压降,越小越好。

     B)安全性—— 不能同侧桥臂同时导通;
     C)电压—— 能够承受的驱动电压;
     D)电流—— 能够通过的驱动电流。
     大致如此,仔细考量,指标B)似乎不是H桥本身的问题,而是控制部分要考虑的。
     而后两个指标通过选择合适参数的器件就可以达到,只要不是那些特别大的负载需求,每种器件通常都能选择到。而且,小车应用中所能遇到的电流、电压更是有限。只有指标A)是由不同器件的性能所决定的,而且是运行中最应该关注的指标,因为它直接影响了电机驱动的效率。所以,经分析的重点放在效率上,也就是桥臂的压降上。
     为了使分析简单,便于比较,将H 桥的驱动电流定位在2A水平上,而电压在5 - 12V之间。
     选择三个我所涉及到的器件:
     A)双极性晶体管—— D772、D882
     B)MOS管—— 2301、2302
     C)集成电路H桥—— L298
  D772的压降指标如下:

  D882的压降指标如下:
  2301的压降指标如下:


    因为MOS管是以导通电阻来衡量的,需要换算一下,小车的控制电压是4.5V,按上面的导通电阻计算,2A的压降应该是:2*0.093=0.186V,最大是:2*0.13=0.26V。
2302的压降指标如下:


  同上换算一下,小车的控制电压是4.5V(电池电压),按上面的导通电阻计算,2A的压降应该是: 2* 0.045 =0.09V,最大是:2 * 0.06 = 0.12V。
  L298的压降指标如下:


    表中第一行为上桥臂的压降,对应D772、2301,第二行为下桥臂的压降,对应D882、2302,第三行为两者之和。对比一下不难看出,如果均以2A电流驱动计算,三种驱动自身所消耗的功率如下:
    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
   如果以驱动一个 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 %
    从这组数据还可以看出三者的散热需求及其外形差异的原因。
    同时解释了圆梦小车开始使用D772、D882 驱动时为何选用 3V的130电机,因为小车是4节充电电池供电,只有4.8~5V,H桥压降1V,所以只能使用3V的电机。而改用MOS管驱动后,就选用了4.5V的N20电机,因为MOS管只带来了0.4V不到的压降。而分析L298的压降你就会知道,如果你的电机需要2A左右的启动电流,那使用5V是根本无法工作的。实际上使用 L298不只是驱动压降限制了电机的供电电压,它的控制电平要求也使得你几乎无法使用低于 6V 的工作电压,看如下信息:


    表中Vs为电机驱动的供电电压(L298分2路供电,一路是电机驱动的,就是H桥上的,一路是供给逻辑电路的,ViH是指逻辑控制输入高电平。

    此参数的含义是,电机驱动电压必须大于逻辑控制电平2.5V,如果你的逻辑部分使用5V供电,那电机的供电电压至少7.5V,否则将无法保证正常工作。除非你将逻辑控制电平降低。

电机驱动芯片L298介绍:
  L298是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流全桥式驱动器,接收标准TTL逻辑电平信号,可以驱动46V、2A以下的电机。1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。L298可驱动2个电机,2(OUT1)、3(OUT2)和13(OUT3)、14(OUT4)之间分别接2个电动机。5(IN1)、7(IN2);10(IN3)、12(IN4)接输入控制电平,控制电机的正反转,7(ENA),8(ENB)接控制使能端,控制电机的停转。9(Vss)接逻辑电平(即VCC),4(Vs)接给电机供电的电源。根据芯片说明的要求,Vs>Vss+2.5。

                       
典型应用:




89C52和L298控制直流电机   本例采用了两种方法来输出PWM波形,分别是软件延时法和定时器0,电机驱动芯片是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 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:274729 发表于 2018-2-11 19:23 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:791204 发表于 2020-6-27 19:26 | 只看该作者
能给出电路图吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表