0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将步进电机与ARM7-LPC2148连接起来的方法

科技观察员 来源:circuitdigest 作者:Pramoth Thangavel 2022-09-23 16:50 次阅读

在当今的自动化世界中,步进电机伺服电机是嵌入式系统中最常用的两种电机。两者都用于各种自动化机器,如机械臂、CNC 机器、相机等。在本教程中,我们将了解如何将步进电机与 ARM7-LPC2148 连接以及如何控制它的速度。

步进电机

步进电机是无刷直流电机,可以小角度旋转,这些角度称为步进。我们可以通过向其引脚提供数字脉冲来逐步旋转步进电机。步进电机价格便宜且设计坚固。电机的速度可以通过改变数字脉冲的频率来控制。

pYYBAGMtc3KAOIR1AAA5saEfR0g545.jpg

根据定子绕组的类型,有两种类型的步进电机可用: 单极 和 双极。这里我们使用的是最常用的步进电机UNIPOLAR步进电机。要旋转步进电机,我们需要按顺序为步进电机的线圈通电。根据旋转操作,它们分为两种模式:

全步模式:(4步序列)

单相步进(WAVE STEPPING)

两相步进

半步模式(8 步序列)

要了解有关步进电机及其操作的更多信息,请点击链接。

使用 ARM7-LPC2148 旋转步进电机

pYYBAGMtc3aAHHeEAACKtPpkgRI919.jpg

在这里,我们将使用FULL STEP: ONE PHASE ON 或 WAVE STEPPING模式使用 ARM7-LPC2148 旋转步进电机

在这种方法中,我们一次只能为一个线圈(LPC2148 的一个引脚)通电。也就是说,如果第一个线圈A通电一小段时间,轴将改变其位置,然后线圈B同样通电,轴将再次改变其位置。与此相同,线圈 C 和线圈 D 通电以进一步移动轴。这使得步进电机的轴通过一次激励一个线圈来逐步旋转。

通过这种方法,我们通过依次为线圈通电来逐步旋转轴。这被称为四步序列,因为它需要四个步骤。

您可以根据下面给出的值使用半步法(8 序列法)旋转步进电机。

pYYBAGMtc0CAJLN9AAASNtlO03Y685.png

所需组件

硬件

ARM7-LPC2148

ULN2003电机驱动IC

LED – 4

步进电机 (28BYJ-48)

面包板

连接线

软件:

凯尔uVision5

Flasic 魔法工具

步进电机 (28BYJ-48)

28BYJ-48步进电机已如上图所示。它是一个 单极步进 电机,需要 5V 电源。该电机采用 4 线圈单极排列,每个线圈的额定电压为 +5V,因此使用任何微控制器(如 Arduino、Raspberry Pi、STM32、ARM 等)都相对容易控制。

但是我们需要一个像 ULN2003 这样的电机驱动 IC 来驱动它,因为步进电机消耗大电流并且可能会损坏微控制器。

28BYJ-48 的规格在以下数据表中提供:

poYBAGMtczqAUrpMAAEmaKWpAaY107.png

ULN2003步进电机驱动器

大多数 步进电机 只能在驱动模块的帮助下运行。这是因为控制器模块(在我们的例子中为 LPC2148)将无法从其 I/O 引脚提供足够的电流供电机运行。所以我们将使用像 ULN2003 模块这样的外部模块作为 步进电机驱动器。

在这个项目中,我们将使用 ULN2003 电机驱动器 IC。IC的管脚图如下:

poYBAGMtcy6AEUZTAACrAvkk0VA402.png

引脚(IN1 至 IN7)是用于连接微控制器输出的输入引脚,OUT1 至 OUT7 是用于连接步进电机输入的相应输出引脚。COM 提供输出设备和外部电源输入源所需的正电源电压。

电路原理

下面给出了将步进电机与 ARM-7 LPC2148 连接的电路图

poYBAGMtcyqAfIORAAF6MkRiagg668.pngpYYBAGMtc3mAUlAIAACnXpVq_Mo905.jpg

带有 ULN2003 电机驱动器 IC 的 ARM7-LPC2148

LPC2148 的 GPIO 引脚(P0.7 至 P0.10)被视为与 ULN2003 IC 的输入引脚(IN1-IN4)相连的输出引脚。

poYBAGMtcySAH1SKAAAP0AgK3UU204.png

ULN2003 IC与步进电机的连接(28BYJ-48)

ULN2003 IC 的输出引脚 (OUT1-OUT4) 连接到步进电机引脚(蓝色、粉色、黄色和橙色)。

poYBAGMtcx2ABUqSAAAQY17bj-8315.png

ULN2003 的 IN1 到 IN4 的 LED

四个 LED(LED1、LED2、LED4、LED 4)阳极引脚分别与 ULN2003 的引脚 IN1、IN2、IN3 和 IN4 连接,LED 的阴极连接到 GND,用于指示来自 LPC2148 的脉冲。我们可以注意到所提供的脉冲模式。模式显示在最后附上的演示视频中。

为步进电机编程 ARM7-LPC2148

要对 ARM7-LPC2148 进行编程,我们需要 keil uVision 和 Flash Magic 工具。我们正在使用 USB 电缆通过微型 USB 端口对 ARM7 Stick 进行编程。我们使用 Keil 编写代码并创建一个 hex 文件,然后使用 Flash Magic 将 HEX 文件闪存到 ARM7 棒。

使用 ARM 7 控制步进电机的完整代码 在本教程的末尾给出,这里我们解释它的几个部分。

1.为了使用完整的 STEP-ONE PHASE ON方法,我们需要包含以下命令。所以我们在程序中使用下面这行

无符号字符顺时针[4] = {0x1,0x2,0x4,0x8};//顺时针旋转命令
unsigned char antilateral[4] = {0x8,0x4,0x2,0x1}; //逆时针旋转命令
2.以下行用于将 PORT0 引脚初始化为输出并将它们设置为 LOW

PINSEL0 = 0x00000000;//设置PORT0引脚
IO0DIR |= 0x00000780; //设置引脚P0.7、P0.8、P0.9、P0.10为OUTPUT
IO0CLR = 0x00000780; //设置P0.7、P0.8、P0.9、P0.10引脚输出为低
3.通过使用此for循环延迟,根据顺时针命令将 PORT 引脚(P0.7 至 P0.10)设置为高电平

for (int j=0; j {
for(int i=0; i<4;i++)
{
IOPIN0 = 顺时针[i]<<7; // 左移后将引脚值逐一设置为 HIGH
delay(0x10000); //改变这个值来改变旋转速度
}
}
Anti-clock Wise 也一样

for (int z=0;z {
for(int i=0; i<4;i++)
{
IOPIN0 =逆时针[i]<<7;
延迟(0x10000);//改变这个值来改变旋转速度
}
}
4.改变延迟时间改变步进电机的转速

延迟(0x10000);//更改此值以更改旋转速度
(0x10000)-全速
(0x50000)-变慢
(0x90000)-比以前变慢。因此,通过增加延迟,我们降低了旋转速度。
5.一整圈的步数可以用下面的代码改变

int no_of_steps = 550; //将此值更改为所需的旋转步数(550 为一个完整的旋转)
对于我的步进电机,完全旋转有 550 步,半旋转有 225 步。所以根据你的要求改变它。

6.此功能用于创建延迟时间。

void delay(unsigned int value) //产生延迟的函数
{
unsigned int z;
for(z=0;z<值;z++);
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    149

    文章

    2929

    浏览量

    146041
  • ARM7
    +关注

    关注

    3

    文章

    208

    浏览量

    50080
  • LPC2148
    +关注

    关注

    0

    文章

    25

    浏览量

    14850
收藏 人收藏

    评论

    相关推荐

    使用ARM7-LPC2148控制伺服电机的教程

    在本教程中,我们将使用 ARM7-LPC2148 控制伺服电机。伺服电机步进电机具有低功耗的优势。当到达所需位置时,伺服
    发表于 09-22 16:40 1107次阅读
    使用<b class='flag-5'>ARM7-LPC2148</b>控制伺服<b class='flag-5'>电机</b>的教程

    ARM7-LPC2148连接7段显示器的教程

    今天在本教程中,我们将用ARM7-LPC2148连接7段显示器。在详细介绍之前,我们将了解如何控制7段模块以显示任意数量的字符。
    的头像 发表于 10-28 15:34 2163次阅读
    用<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>连接</b>7段显示器的教程

    将16x2 LCD与ARM7-LPC2148连接并显示文字

    在本教程中,我们将了解如何将 16x2 LCD 与 ARM7-LPC2148 微控制器连接,并显示简单的欢迎消息。如果您是 ARM7 的新手,请从 ARM7
    的头像 发表于 10-28 17:12 1493次阅读
    将16x2 LCD与<b class='flag-5'>ARM7-LPC2148</b><b class='flag-5'>连接</b>并显示文字

    如何数据库的资料与报表连接起来

    如何数据库的资料与报表连接起来
    发表于 08-07 16:04

    请问有什么方法能用线把这里连接起来

    这儿必须用线连接起来,有没有别的方法?89C52的,连接起来非常费劲!我是新手,希望高手来看看
    发表于 09-19 05:36

    请问Alitum不同的地要单点连接起来吗?

    不同的地要这么单点连接起来吗还是可以直接铺铜,可是铺铜要选择哪个地网络呢,我有功率地,数字地,大地
    发表于 09-24 05:36

    如何QDR与Virtex 7 FPGA连接起来

    我们正在QDR与Virtex 7 FPGA连接起来。QDR - 赛普拉斯 - 带Xilinx的CY7C2663KV18-450BZI - XC7
    发表于 05-22 08:38

    利用开发板继电器和发电机连接起来

    利用开发板继电器和发电机连接起来通过两种方法控制风扇的转动1.通过串口的方式进行输入2.通过开发板上的按钮进行控制最终都能使风扇按照操作转动视频:
    发表于 09-08 07:47

    如何蓝牙与STM32连接起来

    蓝牙模块有何功能?如何蓝牙与STM32连接起来呢?
    发表于 11-18 07:02

    如何Eink显示器与esp32连接起来

    一般来说,我是嵌入式系统和 ESP-IDF 的新手。我正在尝试 Eink 显示器与 esp32 连接起来,但我对如何为其编写代码有点迷茫。有没有我可以参考的指南或教程?
    发表于 03-01 06:36

    如何EMMC SanDisk iNAND® 7250与LPC 1850连接起来

    我们正在尝试 EMMC SanDisk iNAND® 7250 与 LPC 1850 连接起来。EMMC 使用 MMC 5.1,但 1850 提到 4.4 作为标准。经过研究,发现4.4是向下兼容
    发表于 04-27 06:33

    如何编码器与s32k连接起来并在freemaster中显示结果?

    我正在尝试 nxp pmsm 闭环模型与我电机中存在的正余弦编码器连接起来,并在 freemaster 中获取可视化的转子位置数据。 我能够变量添加到 freemaster,但是当
    发表于 06-07 06:31

    CS1238的AINN1和AINN2连接起来用吗?

    CS1238的AINN1和AINN2连接起来用吗? 需要测如此信号,打算把两个差分对的负引脚连接起来用,这个用法行不行?
    发表于 08-24 17:51

    步进电机与Atmega16连接起来方法

    在本教程中,我们将使用 Atmel Studio 7.0将 28BYJ-48步进电机与 Atmega16 AVR 微控制器连接起来步进电机
    发表于 09-09 14:40 981次阅读
    将<b class='flag-5'>步进</b><b class='flag-5'>电机</b>与Atmega16<b class='flag-5'>连接起来</b>的<b class='flag-5'>方法</b>

    如何在ARM7-LPC2148中使用ADC

    在本教程中,我们将了解如何在 ARM7-LPC2148 中使用 ADC,方法是向模拟引脚提供不同的电压,并在模数转换后将其显示在16x2 LCD 屏幕上。
    的头像 发表于 09-23 17:02 2506次阅读
    如何在<b class='flag-5'>ARM7-LPC2148</b>中使用ADC