首页

伺服电机与ARM7 LPC2148的接口

伺服电机是一种直流电机(或交流电机),用于精确的直线或角度定位。一个简单的直流伺服电机由直流电机、位置传感器和反馈网络组成,它们结合在一起产生非常高精度的运动。

伺服电机不像普通直流电机那样用于连续旋转。它们常用于闭环位置控制应用中。伺服电机的最佳应用之一是机械手的运动或CCTV摄像机的倾斜或平移运动。

即使步进电机也用于精确的位置控制,伺服电机比步进电机的主要优势是功耗。到达预定位置后,伺服电机停止耗电。

但在步进电机的情况下,在移动到所需的位置后,步进电机吸取动力将自己锁定在该位置。因此,伺服电机在低功率器件中具有优势。

本课题采用基于ARM7的单片机LPC2148控制一个简单的直流伺服电机。伺服电机的不同位置被实现,以显示其功能。

线路图

用LPC2148电路控制伺服电机

组件的要求

如果我们正在使用开发板或独立的ARM7板,我们需要一些额外的组件,以便将伺服电机与LPC2148 MCU连接起来。因此,您可能需要以下组件。

  • 基于LPC2148单片机的ARM7开发板或独立板
  • Tower Pro SG90伺服电机(或任何其他伺服电机)
  • 电源(MCU和伺服电机分开)
  • BSS138 N -沟道MOSFET(或任何等效晶体管)
  • 4 X按钮
  • 4 X 4.7 KΩ电阻
  • 2 X 10 KΩ电阻
  • 连接电线
  • USB - to - Mini USB电缆

电路设计

因为我们需要控制伺服电机(这适用于任何电机控制),我们不应该把电机直接连接到MCU。我们需要一个驱动电路像一个简单的晶体管接口伺服电机与LPC2148。

因此,第一步是构建由MOSFET、一些电阻和伺服电机本身组成的驱动电路。

请注意:伺服电机驱动电路用于驱动控制信号。虽然来自LPC2148的3.3V信号可能已经足够了,但最好使用单独的驱动电路。

连接驱动电路后,下一步是将4个按钮连接到LPC2148上,以改变PWM信号的占空比。

请注意:电位器也可以用来线性改变输出PWM的占空比。这需要实现内部ADC模块。

其他必要的组件如晶体振荡器,USB - to -UART变流器、稳压器等已经在开发板或独立板上。

请注意因为我们使用的是LPC2148开发板,所以按钮已经嵌入到板上了。因此,本项目只做了伺服电机的连接。

项目的运作情况

该项目的目标是将一个伺服电机与ARM7 LPC2148接口。该项目的工作在于伺服电机的功能。我们知道PWM信号是用来控制伺服电机轴的位置的。因此,PWM在伺服电机的工作中起着重要的作用。

更多关于PWM在LPC2148的信息可以在这里找到。

回到我们的项目中,我们需要在LPC2148中生成PWM信号,并使用按钮控制PWM信号的占空比。四个按钮用于4个不同的占空比,即25%,50%,75%和100%。

当按下相应的按钮时,内部PWM发生器根据程序调整PWM信号,产生一个比例的PWM信号。这个PWM信号作为控制信号给伺服电机,决定了轴的位置。

通过分析所编写的程序/代码,可以更好地理解项目的工作情况。

代码

了解这个项目

伺服电机与LPC2148接口的程序主要有两个方面:使用锁相环模块产生时钟信号和使用PWM发生器产生PWM信号。首先,我们看到使用锁相环生成时钟。

系统时钟时钟和外围时钟PCLK使用LPC2148的片上锁相环设置为用户首选值。

LPC2148单片机的时钟信号频率限制为60 MHz。因此,使用程序中的以下代码行,我们可以生成一个60 MHz的CCLK和一个60 MHz的PCLK。在这里可以找到LPC2148中关于锁相环的详细信息和教程。

首先,我们需要启用PLL0模块并设置乘数和除法值。为此,可以使用以下命令。

PLL0CON = 0 x01;

PLL0CFG = 0 x24;

下一步是使用提要序列锁定这些乘法器和除法器值。

PLL0FEED = 0 xaa;

PLL0FEED = 0 x55;

现在等待PLL锁定到值并连接PLL模块。

而(!(PLL0STAT & 0 x00000400));

PLL0CON = 0 x03;

再次,锁定与馈电序列的值,也使PCLK的频率与CCLK相同。

PLL0FEED = 0 xaa;

PLL0FEED = 0 x55;

VPBDIV = 0 x01;

有了这些指令,使用PLL0模块将clk和PCLK设置为60 MHz。下一步是初始化PWM模块,生成PWM信号。这里解释了关于LPC2148中的PWM的详细信息。

PWMPCR = 0 x0;//选择单边PWM(默认选择)

PWMPR = PWMPRESCALE-1;// PWMPRESCALE=60表示1微秒分辨率

PWMMR0 = 10000;//设置时长为10ms

PWMMR5 = 2500;//设置脉冲持续时间为2.5 ms

PWMMCR = (1 < < 1);//当PWMMR0匹配时,重置PWMTC

Pwmler = (1<<5) | (1<<0);//更新MR0和MR5

PWMPCR | = (1 < < 13);//打开PWM输出

PWMTCR = (1<<1);//复位PWM TC和PR

PWMTCR = (1<<0) | (1<<3);//最后,启用计数器和PWM模式

通过上述命令,设置PWM5并产生PWM信号。最后一步是在按钮的帮助下控制脉冲持续时间。

如果按下连接到P0.15的按钮,占空比应为50%。因此,下面的代码将完成此操作。

if(!((IO0PIN) &(1<<15))) //检查P0.15

PWMMR5 = 5000;/ / t = 50%

PWMLER = (1 < < 5);// PWMMR5的Update Latch Enable位

3反应

留下一个回复

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

Electronicshub图标
Baidu
map