使用ARM7 LPC2148的直流电动机控制

电动机是嵌入式系统的重要组成部分。无论是简单的直流电动机,还是基于准确的伺服电动机,还是基于精确的步进电动机,所有类型的电动机通常都在许多嵌入式系统和基于微控制器的项目中使用。

当谈论基于微控制器系统中的简单直流电动机时,我们只能执行三个任务:向前方向旋转电动机,向反向旋转电动机并控制旋转速度。

在此项目中,我们将与基于ARM7的MCU(即LPC2148)连接一个简单的DC电机。在这里,我们将使用电动机驱动器IC(L293D)更改电动机旋转的方向。为了控制直流电动机的旋转速度,我们将看到另一个项目,因为它涉及ADC和PWM概念。

该项目的目的是在L293D IC的帮助下控制使用ARM7 LPC2148的简单直流电动机。

电路原理图

直流电动机控制电路图

需要组件

某些LPC2148开发板(如本项目中使用的板)包含 - 电动机驱动器IC。在这种情况下,您需要做的就是将电动机连接到适当的端子并提供必要的电源(板和电动机驱动器IC的单独电源,以免我们过度加载电源)。

如果您使用的是单位 - 单独使用板(带有水晶和USB)uartIC),然后您可能需要以下组件。

  • ARM7 LPC2148立场 - 单独的董事会或ARM7 LPC2148开发委员会
  • L293D电动机驱动器IC
  • 12 V DC电机
  • 按钮
  • 电源(对于电动机驱动器IC和MCU板分开)
  • 连接电线
  • USB - 到 - 迷你USB电缆

电路设计

电路的设计非常简单。我们需要将L293D电机驱动器IC连接到MCU板。

首先是电机驱动器IC。L293D电机驱动器IC具有双H桥配置。因此,它可以同时控制两个电动机。但是,对于项目的演示,我们将仅控制一个电动机。

L293D有16 - 引脚双线包装(DIP)表单。在16个销钉中,销钉4、5、12和13是地面销。所有这些销都连接到地面,并且还可以连接散热器。

第16和8是内部逻辑和驱动因素的电源引脚。它们连接到5V和12V供应。

笔记:向电机驱动器IC的电源必须与MCU板的电源不同。
引脚1是通道1和2启用引脚。它必须连接到5V。引脚2和7是电动机1的驱动器输入。

它们分别连接到LPC2148 MCU的P1.18和P1.19。L293D IC的第3和6是驱动器输出,电动机连接到这些引脚。

由于我们需要控制电动机的方向,因此我们将使用按钮来决定方向。按钮连接到MCU的P0.16。

诸如水晶,USB - to - uart等的其余连接将在开发委员会或立场上 - 单独建立。这样,电路的设计已完成。

笔记:该项目中使用的开发板已经具有所有必需的组件,例如马达潜水员,按钮等。因此,无需任何额外的连接。我们需要做的就是将电动机连接到电动机驱动器IC的驱动器输出引脚。

项目的工作

该项目的目的是使用ARM7 LPC2148 MCU演示直流电动机控制。由于电动机绘制了大量电流,因此我们需要一个单独的IC,例如L293D,例如L293D。该项目的工作在这里解释。

这是一个简单的项目,可以帮助我们使用LPC2148控制电动机的旋转方向。当系统电动机上电动时,MCU读取了按钮的状态。根据程序,当未按下按钮时,电动机向前旋转。

每当按下按钮时,MCU都会检测到按钮引脚处的状态,并且电动机向反向旋转。通过分析该程序在下一节中进行解释,可以更好地理解该项目。

代码

了解程序

基本组件该程序包括用于设置系统和外围时钟和GPIO引脚的PLL,用于与电动机和按钮接口。首先,我们将看到如何初始化以在GPIO模式下操作的引脚。
默认情况下,所有引脚均配置为GPIO引脚。因此,我们无需具体做任何事情。如果我们要明确将引脚配置为GPIO,则必须使用以下命令。GPIO教程将提供有关引脚的更多信息。

Pinsel0= 0x00000000;//将所有引脚作为GPIO

Pinsel1 = 0x00000000;

Pinsel2 = 0x00000000;

我们需要配置的下一个模块是PLL。根据用户或程序员的愿望,使用LPC2148中的PLL模块用于设置系统时钟和外围时钟。

LPC2148的最大时钟频率为60 MHz。通过使用以下指令,我们可以设置系统时钟,即CCLK和外围时钟,即PCLK分别为60 MHz。有关PLL模块的更多信息在ARM PLL教程中说明。

PLL0CON = 0x01;//启用PLL0模块

PLL0CFG = 0x24;//设置了PLL的乘数和分隔值

PLL0FEED = 0xAA;//将PLL0锁定在60 MHz的进料序列

PLL0FEED = 0x55;

while(!(pll0stat&0x00000400));//等待PLL的锁状态

PLL0CON = 0x03;// PLL0再次启用并连接

PLL0FEED = 0xAA;//将PLL0设置为CCLK的进给序列

PLL0FEED = 0x55;

VPBDIV = 0x01;// PCLK设置与CCLK相同

一旦CCLK和PCLK以60 MHz运行,该程序的最后一部分是读取按钮的状态。阅读按钮的状态后,我们可以向前方向或反向方向旋转电动机。

一个回应

  1. 如前所述,是否有一个针对使用ARM 7的PWM控制直流电动机的速度的项目。我还可以使用ARM7的PWM控制240V DC电机的速度吗?

    任何帮助,将不胜感激。
    谢谢你

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map