使用传感器和电机,我可以同时使用还是应该使用电机护罩?

电器工程 Arduino 硬件 引脚
2022-02-03 01:32:11

更新:我目前正在对该项目进行一些更改。我听取了你们中的一些建议。我已经从步进电机改为 RC 伺服(通过 PWM 控制),如果我遇到任何问题并且无法弄清楚,我会问。谢谢您的帮助!

我正在和一个朋友一起做一个项目,这是我们第一次使用 Arduino。我们使用 Arduino 从传感器(加速度计)获取数据,然后打开电机(6V,DC)。

我一直在做一些挖掘工作,似乎从 Arduino 输出的电源可能不足以同时用于电机和传感器。也许某种延迟可能会起作用(这可能吗?)。

我正在考虑使用电机护罩我还能控制加速度计和电机吗?

我正在尝试使用单个外部电源(最多:6 节 AA 电池;我正在尝试限制电池的数量,因为我们试图保持便携性)所以有没有办法使用一个电源,因为Arduino 和电机屏蔽需要两个不同的电源(据我了解)。

2个回答

问题 1:直接从 Arduino 驱动电机

出于多种原因,不建议直接从 Arduino 引脚驱动电机:

  • 负载电流,尤其是在电机启动和失速情况下。正如问题中正确指出的那样,Arduino 引脚可能根本无法提供足够的电流。Arduino 可能会因持续的高电流消耗而发热甚至损坏。
    虽然基于 ATmega 的 Arduino 的每个 Arduino 引脚的额定电流为 40 mA,但我个人更喜欢将任何持续负载保持在 30 mA 以下,您的风险偏好可能会有所不同。如果没有看到相关电机的数据表,就无法推测电机需要多少电流
  • 来自电机的反电动势,无论是在电机关闭期间,还是可能在电机换向期间 - 当直流电机旋转时,至少在传统类型的有刷直流电机中,接触电刷会在开口环之间“换向”,产生极少每次都会产生火花。
    反电动势基本上是由电机线圈(或关闭时的任何感性负载)产生的反向电压,瞬态(尖峰)可以瞬间远远超过微控制器引脚可以承受的可接受电压范围。
    反电动势仍然是一个风险,尽管已经减弱,即使一个快速二极管以反向偏置连接在电机的引线上,这是一种强烈推荐的做法。
  • 因此,强烈建议在 Arduino 和电机驱动器之间进行某种隔离。为简单起见,这将是一个电机屏蔽。
    如果您对基本电子设备感到满意,这也可以通过直接连接合适的电机驱动器 IC 和反激二极管来实现。编辑:这在 Manishearth 的回答中得到了很好的描述
    电机驱动器,无论是屏蔽还是 IC,都应独立于 Arduino 供电,但将两条电源地线连接在一起。再往下看。

问题 2:同时控制加速度计和电机屏蔽

  • 是的,通过确保选择用于访问加速度计的引脚不是电机护罩实际使用的引脚,可以在电机护罩就位的情况下从 Arduino 控制和读取加速度计。它们都将连接到屏蔽层,但在屏蔽层内没有内部功能或连接。所选屏蔽的文档通常会提供此信息。
    为方便起见,请寻找带有可堆叠接头的电机护罩,即在电机护罩上复制 Arduino 接头引脚以连接额外的硬件,在您的情况下为加速度计。并非所有屏蔽都提供可堆叠的接头。因此,使用屏蔽层未使用的引脚变得复杂,需要将电线焊接到 PCB 上的相关插头焊盘或某些此类布置。
    如果您选择的电机屏蔽用尽所有 GPIO 引脚,就像驱动多个电机的屏蔽一样,您可能会遇到问题。由于仅要驱动 1 个电机,因此请避免使用不会留下足够多未使用 GPIO 引脚的多电机屏蔽。

问题 3:Arduino 和电机屏蔽之间的配电

  • 建议的 6 x AA 布置(标称最大 9 伏)的问题在于,虽然它为许多 Arduino 上可用的直流输入插孔提供了足够的电压(通常额定为 7 到 12 伏输入),但它对于电机来说太高了被直接赶下它。
  • 然而,有几个电机屏蔽可以接受直接电源输入(例如 7 到 25 伏),然后为它们所连接的 Arduino 提供经过良好调节的 5 伏。所以Arduino根本不需要单独供电,也不应该。这绝对是唯一一种应该购买的电机防护罩
  • Kludgier 替代方案包括通过 6 节 AA 电池中的 4 节为电机供电,所有 6 节电池为 Arduino 的直流插孔 (PWRIN) 供电,或使用单独的 6 伏降压稳压器为电机供电,同时为 9 伏供电直接连接到 Arduino DC 插孔。
  • 尝试用电池组为 Arduino 供电,然后从 Arduino 的 Vin 引脚为电机供电是一个坏主意,因为
    • 在几个 Arduino 参考设计中,DC 插孔和 Vin 引脚之间的 M7 二极管的额定电流为 1 安培,可以想象,电机可能会消耗更多电流,至少暂时如此
    • 电机产生的所有电磁噪声、换向噪声加上反激瞬变,将反馈到 Arduino 板,除非实施非常严格的去耦,这不是一件简单的事情。这种 EMI 反馈会导致 Arduino 运行出现间歇性、难以调试的问题。

大多数防护罩占用几个引脚,其余的留给您(这就是为什么许多人使用可堆叠的接头在其顶部使用 Arduino 引脚系统的复制品)。它们被设计为尽可能轻松,因此获得盾牌是解决此问题的最简单方法。

我个人不直接从板上为电机供电。相反,我为此使用 L293D 之类的电机驱动器。这些引脚并不适合提取电流,通常最好直接为传感器供电,而不是通过 Arduino 引脚。请记住,引脚有电流限制,如果您使它们过载,它们会烧坏。

使用 L293D 很容易:

在此处输入图像描述

将引脚 1、9、16 连接到您的 Vcc 电源(为 Arduino 供电的任何 5V 电源的正极端子。对我来说,它通常是从 LM7805 拉出的线)。现在将引脚 4、5、13、12 连接到您的 GND(负极端子)。现在,将引脚 8 连接到更高电压的电源(6V、12V 或任何您想为电机供电的电压)。请注意,所有电压源的负极端子都需要短接到 GND。

现在,将电机连接到一个位置(左侧的 3,4)的两个输出引脚上。将输入引脚 (2,7) 连接到 Arduino 上的两个不同引脚。当您向两个引脚提供相同的信号(高或低)时,电机就会停止。如果您从一个引脚给出高电平,从另一个引脚给出低电平,则电机将顺时针或逆时针转动,具体取决于哪个引脚得到哪个信号。

如果您想要一个单向电机并且想要节省引脚,请将其中一个输入引脚短接到 GND。现在,当另一个输入引脚为低电平时,电机将关闭,当它为高电平时,电机将打开。

如果您愿意,您可以使用相同的程序在芯片的另一端连接另一个电机。

L293D 从 Arduino 汲取少量电流,并通过引脚 8 汲取的电流为电机供电,通常是此类情况的理想选择。