首页

用Arduino控制直流电机

直流电动机是一种将直流电动力转换为机械动力的电动机,即直流电源转换为旋转或运动。直流电机是在电子玩具、电动工具、便携式风扇等不同应用中常用的电机之一。

arduino-dc-motor-control-1

直流电机进一步分为不同的类型,如串联、分流和复合,每种类型用于不同的应用领域。一些直流电机也用于机器人和工业应用,其易于控制和精度。

由于直流电机通常与中小型应用有关,其中系统主要由一个微控制器作为主要处理单元组成,因此控制和驱动直流电机是非常重要的。这是因为,直接使用微控制器驱动电机是不建议的(有时不可能),因为来自微控制器的电流非常小(通常小于30mA)。

在Electronicshub中选择您想学习的下一组Arduino项目 Arduino项目»

本课题通过Arduino和电机驱动IC对小型直流电机进行控制,控制电机的转速和旋转方向。

线路图

arduino_dc_motor_control_circuit_diagram

所需的组件

  • Arduino UNO [在这里买
  • L293D电机驱动IC [在这里买
  • 10 kΩ电位计
  • 按钮X 2
  • 12 v直流电机
  • 12 v直流适配器
  • 连接电线

组件描述

Arduino UNO

Arduino UNO是一个基于ATmega328P单片机的简单电子样机。它是一个基于8位AVR的微控制器,充当Arduino UNO的大脑。Arduino UNO板经常用于许多入门级应用程序,如控制led,驱动电机到高端应用程序,如天气监测,手持游戏机等。

L293D电机驱动IC

L293D顾名思义是一个四组h桥大电流电机驱动IC,可以同时驱动两个电机在两个方向上,每个电机输出电流为600mA。L293D IC设计用于驱动继电器,直流电机,步进电机和其他有大电流和高电压要求的感应负载。

arduino-dc-motor-control-2

电路设计

  • 如前所述,电路的主要组成部分是Arduino UNO和L293D Motor Driver IC。Arduino UNO作为电路的主要处理部分。用一个按钮和一个电位器分别控制电机的旋转方向和速度。
  • 因此,在Arduino的Pin 13上连接一个按钮,用于驱动电机前进,在Arduino的Pin 12上连接另一个按钮,用于驱动电机反向,两个按钮的另一端均接地。
  • 电位器即壶的雨刷端连接到Arduino UNO的模拟输入引脚A0上。电位器的其他端子分别接5V电源和接地。
  • L293D是一个16针的集成电路,可在双直列封装。由于它能够驱动两个电机,我们将看到需要驱动一个电机的连接。在这一点上,
  • L293D IC的引脚1用于使能驱动通道1和2,即电机1的输入。这是一个有源高引脚,因此它连接到5V电源。
  • L293D的引脚2和引脚7是电机1相关驱动的输入。分别连接到Arduino UNO的引脚11和10。
  • L293D的引脚3、6为第一驱动通道的输出引脚。它们必须连接到我们要控制的马达上。
  • L293D IC的引脚4,5,12和13为接地引脚。
  • 其余与L293D IC的连接为电源引脚。L293D电机驱动IC需要两种类型的电源:一种用于其内部操作,另一种用于驱动电机的驱动通道。
  • L293D IC的引脚16为内部操作的供电引脚,接5V电源。L293D IC的引脚8是驱动电机的电源,接12V电源。

arduino-dc-motor-control-3

工作过程

本课题的目的是设计一个基于Arduino的直流电机控制系统。所有的连接都按照上面提到的电路图进行。该项目的工作非常简单,并在这里解释。

在这个项目中使用了两个按钮,分别用于电机的前进和反向方向。两个按钮连接Arduino的13和12引脚,引脚是内部上拉的(使用代码)。按钮的其他终端连接到地面,因此当按钮被按下时,微控制器检测到LOW(逻辑0)。

POT的输出是模拟信号,因此与Arduino的模拟引脚相连。根据来自POT的模拟电压值,电机的速度是变化的。

为了实现这一点,我们需要在电路中使用PWM的概念。电机驱动IC的输入必须是PWM信号的形式,因此分别连接Arduino的引脚11和10,这两个引脚可以产生脉宽调制信号

当系统上电时,Arduino等待按钮被按下。按下正向键,Arduino以PWM信号驱动电机驱动IC (Pin 2)的输入1,逻辑低至输入2 (Pin 3),电机开始正向旋转。

同样,如果按下反向按钮,Arduino用PWM信号驱动L293D电机驱动IC的输入2 (Pin 3),并给L293D的输入1 (Pin 2)一个逻辑低。因此,电机开始反向旋转。

电机的任何方向的速度都可以使用POT控制,因为它控制输出PWM信号的占空比。

应用程序

  • 该电路使用Arduino UNO控制直流电机,可用于基于Arduino的机器人、直流电机的速度和方向控制等应用。
  • 这里显示的电路控制一个直流电机,但可以扩展到控制两个电机独立的速度和方向控制。

代码

推荐阅读:

17的反应

  1. 嗨,我是sudharson,我有个问题。如何使用瞬间的按钮作为旋转的触发器。我需要电机向前或反向旋转,一旦我触发按钮,而不是按住开关ON旋转。

  2. 嘿,有用的代码
    你能告诉我如何计算motorValue吗?
    我在我的arduino上运行它,但有一个问题,获得potvalue
    它只从500变到600

  3. 先生,我想做一个项目的直流电机的四象限速度控制使用arduino +液晶显示....先生,你能给我一个代码和电路图吗

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map