51单片机驱动直流马达

在某些电子项目中,你可能要使用 8051微控制器控制直流电机。8051 微控制器可以提供的最大电流为 5v/ 15 mA。但是直流电机需要的电流远不止于此,它可能需要 6v、12v、24v 等电压,具体取决于所使用的电机类型。另一个问题是电机产生的反电动势可能会影响微控制器的正常运行。由于这些缘由,我们不能将直流电机直接连接到微控制器。

直流电机

51单片机驱动直流马达

为了克服这些问题,可以使用晶体管组成的H 桥驱动电路。应使用续流二极管或钳位二极管来避免由于反电动势引起的问题。因此它需要晶体管、二极管和电阻器,这可能会使我们的电路体积庞大且难以组装。

这里使用L293D驱动器 IC,它完美解决了这个问题。无需连接任何晶体管、电阻器或二极管。我们就可以使用微控制器轻松控制 L293D从而驱动马达。此类别中有两种 IC分别是L293D 和L293。L239D 在 4.5V 至 36V 范围内可提供 600mA 的最大电流,而L293在一样输入条件下可提供高达 1A 的电流。这些 IC 的所有输入均与 TTL 兼容,所有输出均配有钳位二极管。它们一般与感应负载一起使用,例如继电器螺线管、电机等。

L293D 包含四个半H 桥驱动器并成对启用。EN1 用于启用 1组输出(IN1-OUT1、IN2-OUT2),EN2 用于启用2组输出(IN3-OUT3、IN4-OUT4)。我们可以使用一个 L293D 驱动两个直流电机。

电路原理图

使用 L293D 将直流电机与 8051 连接

51单片机驱动直流马达

直流电机连接到L293D第一组输出,通过将 EN1 连接到逻辑高 (5V) 来启用它。VSS 引脚用于为 L293D 提供逻辑电压。这里使用工作在 5v 的 8051 微控制器来控制 L293D,因此逻辑电压为 5。电机工作电源通过L293D Vs引脚输入。

Keil C程序

#include<reg52.h>
#include<stdio.h>
void delay(void);
sbit motor_pin_1 = P2^0;
sbit motor_pin_2 = P2^1;
void main()
{
while(1)
  {
      motor_pin_1 = 1;
      motor_pin_2 = 0;
      delay();

      motor_pin_1 = 1;
      motor_pin_2 = 1;
      delay();

      motor_pin_1 = 0;
      motor_pin_2 = 1;
      delay();

      motor_pin_1 = 0;
      motor_pin_2 = 0;
      delay();
  }
}

void delay()
{
        int i,j;
        for(i=0;i<1000;i++)
       	 for(j=0;j<1000;j++);
}

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
贵替的头像 - 鹿快
评论 共2条

请登录后发表评论