用微控制器测量 5V 以上信号的频率

电器工程 测量 频率测量
2022-01-29 22:45:47

我想测量一个矩形信号的频率(最高 300 Hz),它在 0V 和 Vtop 之间变化,其中 Vtop 介于 5V 和 15V 之间。因为我不能对微控制器( PIC16F1827 )施加超过 5V的电压,所以我需要以某种方式限制电压。

我的第一个想法是使用分压器。但随后 5V 输入信号会变低。

第二种方法是使用运算放大器 ( TS914 )。当我以 5V 供电时,输出不会超过 5V。我的设计中已经有了这个运算放大器,用于过滤另一个电压测量值。但是当我查看数据表时,它说(在“绝对最大额定值”部分):

输入和输出电压的幅度不得超过 VCC+ +0.3V。

我应该添加另一个运算放大器,例如LM324吗?数据表说(输入共模电压范围(注 10)):

任一输入信号电压的输入共模电压的负值不得超过 0.3V(25°C 时)。共模电压范围的上限是 V + − 1.5V(在 25˚C 时),但一个或两个输入可以达到 +32V 而不会损坏(LM2902 为 +26V),与 V + 的幅度无关。

所以 LM324 不会损坏,但它可以在我的设计中工作(输出 5V 矩形信号)吗?

我的最后一个想法是使用齐纳二极管。这行得通吗?

你会怎么做来解决这个问题?还有其他我没有想到的可能性吗?

4个回答

总结解决方案:

  • 单个晶体管和 3 个电阻器将接收 0V\“5V 或更多”信号并产生 5V/0V 输出。以电阻值为例,信号负载在 5V 时约为 80 uA,在 15V 时约为 250 uA。如果需要,可以将其降低到 8 uA/25 uA,必要时甚至更低。(下图的较大版本)。

在此处输入图像描述

  • 一个 390 欧姆的电阻器和一个 4V7 齐纳二极管可以满足您的需求,前提是您可以承受 25 mA 的输入电流负载。

  • 使用运算放大器可以获得稍好的结果,但一个晶体管解决方案应该完全足够了。

  • 切勿让 IC 的钳位/保护二极管在正常工作期间承载电流。在产品生命周期的所有日子里,您都在招致不可靠、意外和可能不明显的操作。在正常操作期间这样做总是违反数据表条件。

    • 您可能会用几个 uA 甚至 10 个 uA 侥幸逃脱,您可能认为使用它们携带 100 个 uA 就可以侥幸逃脱。每个使用保护二极管在正常运行中承载超过一半电流的应用都违反了数据表规范并邀请 Murphy 共进午餐。
      结果是不可预测的。
      没有专业的设计会这样做
      推荐它的应用笔记通常是不专业的。
      请参阅此答案末尾的部分。

单晶体管解决方案:

输入显示为 5-15V,但任何高于 4V 的电压都可以工作。
当 vin = 4V Vbase = R2/(R1+r2) x 4V = 0.6V。
这在理论上是足够的,但在 5V 时,你有足够的驱动力。

显示的 R1 和 R2 值是建议值。
如果使用适当的 R3 和高 β 晶体管,则可以使用例如 100k 和 560k 的值。

输出与输入相反。即当Vin 为高时,Vout 为低。

在此处输入图像描述

R3 可以是 10k 或任何适合的。

Q1 适合。我会使用 BC337 或 SMD 等效产品(BC817?)

如果需要非常低的输入电流,可以小心地大大增加 R1 和 R2。例如,当 R1 = 1 兆欧时,输入电流在 15V 时约为 15 uA,在 5 伏时约为 5uA。如果晶体管 Q1 的电流增益为 100(例如 BC337-40 非常安全),则 Icollector = 500 uA 所以对于 5V 摆幅 R3 >= 10k 所以说 22k 向上是可以的。

了解电阻分压器的一个非常有价值的事实!!!

有一点值得赞赏的事实是,在标准电阻刻度上分开的两个电阻值 N 之间的比率大约是恒定的。
这隐含在选择比例值的方式中。
E12电阻值为

1
1.2
1.5
1.8
2.2
2.7
3.3
3.9
4.7
5.6
6.8
8.2
(10, 12, 15 ... )

12 个值,然后该系列重复 10 倍的比例。

所以 - 我为 R2 和 R1 显示的 56k 和 10k 值相隔 8 个值。即从上面的 1 值开始,向上计数 9 个位置,你得到 5.6
任何两个相隔 9 的值具有相同的比率(在刻度的容差范围内),并且可以用来形成一个大约等效的除法器。
例如 56k/10k、68k/12k、82k/15k 100k/18k 等中的任何一个。

只要输入电路上的负载是可以接受的,一个齐纳二极管 + 一个电阻器就可以满足您的需求。如果您想减少负载,那么基于运算放大器的设计会更好。

数据表的第 350 页上,它给出了高和低输入电压电平。哪个电平适合取决于您使用的输入引脚,但最安全的值是 >= 0.8 x Vdd 或 Vdd = 5V,Vinhi >= 4V。
数据表还指出,Vin 不得大于 Vdd + 0.3V 绝对最大值(即使操作不正确),实际上任何超过 Vdd 的东西都是有风险的。


警告:

Curd 建议使用二极管钳位至 Vdd 是常见做法,但风险很大,因为它会在正常操作期间将电流注入 IC 中制造商无意的位置。结果会有所不同并且无法预测。使用 Shottky 而不是硅二极管可以降低风险,但仍然不明智,甚至违反了制造商的绝对最大规格。


齐纳钳:

这个简单的电路可能就足够了。

在此处输入图像描述

重要的是确保 Vout 始终符合您的规范。许多人使用 xx 伏齐纳二极管并假设他们将获得 XX 伏。在低电流下,这通常与事实相去甚远。下面的曲线显示了典型齐纳二极管的齐纳电压和电流。请注意,4V7 齐纳二极管需要大约 1 mA 的电流才能将其驱动到 4V 以上。如果我们设计最小 2 mA,一切都应该很好。这会产生一个可能出乎意料的结果。
5V 英寸 i = 2 mA。Vzener 预期 = 4V2。
R = (5V - 4.2)/0.002 A = 0.8/0.002 = 400 欧姆。
假设 390 欧姆 = 标准 E12 电阻值。

在 15 V 时,我们预计电流约为 (15-5)/400 = 25 mA。

25 mA 可能超出您的允许范围。

较低的 Vin 范围将允许较低的 Imin-Imax 范围,并且 Vin min 高于 5V 几伏也将有很大帮助。

电阻器中的功率 = V x I = (15-5) x 25 mA = 250 mW = 500 mW 电阻器。

在此处输入图像描述

齐纳电流电压曲线 V02 x2.jpg

齐纳数据表示例


保护二极管:

许多人不知道或只是忽略数据表中“绝对最大”额定值和推荐工作条件之间的区别。

绝对最大额定值是保证设备能够在不损坏的情况下存活的额定值。不保证正确操作。

相关 PIC 允许其引脚上的 Vdd + 0.3V 作为绝对最大额定值。在这种情况下不能保证操作。

大多数数据表都明确规定,在正常工作期间,输入电压不应超过接地至 Vdd 的范围。该数据表在其数百页中可能会或可能不会如此。这样做仍然是错误的。

许多人认为对保护二极管电流的担忧是毫无根据的。只有他们中的一些人在他们认为如此的那一天后悔了,而且大多数人可能活到了后悔与否:-)。

请注意,此处的(邪恶的)Atmel 应用笔记 使用 1 兆欧电阻(连接到交流电源!),此处的 Microchip 应用笔记 - 图 10-1 10-2至少可以优雅地说“......电流通过钳位二极管应保持较小(在微安范围内)。如果通过钳位二极管的电流过大,则可能会导致器件闩锁。Atmels 数百 uA 不是“在微安范围内”。

但是闭锁是你的问题中最少的。如果您锁定该部件(电流触发到 IC 基板的 SCR 动作),IC 通常会变成冒烟的废墟,您会意识到可能有问题。

体二极管电流的问题是当您没有立即吸烟时。发生的情况是,IC 从未设计为接受输入引脚和基板之间的电流——IC 所在的层。当您提高 Vin > Vdd 时,电流有效地从 ICV 本身流入一个幻影仙境 tyhat,而 iC 没有意识到,设计师没有也通常无法设计。一旦到了那里,你就会有小的电位;通常情况下不会存在,电流可以流回相邻的电路模式,不完全相邻的节点,甚至流到距离较远的位置,具体取决于电流的大小和设置的电压。这很难描述和确定的原因是因为它完全没有设计,本质上是不可设计的。一种效果是将电流注入没有正式输出路径的浮动节点。这些可能充当 FET 的门——正式的或偶然的,它们可以打开或关闭电路的半随机部分。哪些部分?什么时候?多常?多久?有多难?答案-谁能说/没人能说-它是未经设计的,无法签名的。

问:这真的会发生吗? 答:哦,是的! 问:我看到它发生了吗? 答:是的。

在被它严重咬伤后,我开始了现在已证明是 1 年以上的运动,以使人们意识到这一点(即使我应该很清楚这一点)。
我有一个相对简单的异步串行电路,这给我带来了无穷无尽的冲突。处理器操作是间歇性的或半随机的。代码有时会出错,有时不会。没有什么是稳定的。问题?当然是体二极管导通。我从产品随附的应用笔记中复制了一个简单的电路,然后我们就走了。

如果你不小心这样做,它会咬你。
如果你用心、聪明和设计来做这件事,它可能不会咬你。但可能。
这类似于将中线拉到持续的交通中以进行超车 - 小心而不是太频繁地完成并且留下可能足够好的边距,您通常不会死。如果你这样做,你可能不会感到惊讶:-)。体二极管导通也是如此。微芯片的“微安范围”可能没问题。爱特梅尔的 1 兆欧断电是等待发生的事故。适合自己。

只需使用由单个晶体管和几个电阻器制成的逆变器即可。由于您正在测量频率,因此信号是否反转并不重要 - 频率是相同的。您可以使用内部有电阻的“数字晶体管”,或者您可以使用几乎任何常规晶体管并在外部添加(10K 左右)基极电阻(基极和发射极之间的电阻不是强制性的,但您也可以添加它) . 我使用该电路将电压从 25Vtop 转换为 5Vtop 以测量交流线路频率。

单晶体管逆变器

最简单的方法是将输入信号钳位到 Vcc (+5V):

钳位到 Vcc

电阻值不重要,但不能太小;可能在 10-100 kOhms 范围内。

如果你对Vcc+0.3V的要求真的很挑剔,你应该使用肖特基二极管;但我认为如果您使用普通的 1N4148,您的 µC 不会受到伤害。

编辑:
为了支持我的观点,即使用该电路完全省钱(与评论中提到的问题相反),请参阅以下关于该主题的出版物;主要来自IC厂商:

微芯片:

第 8.pdf 章,提示 #10,图 10-1 和 10-2

许多制造商通过使用钳位二极管来保护其 I/O 引脚不超过最大允许电压规格。这些钳位二极管可防止引脚超过 VSS 以下的二极管压降和 VDD 以上的二极管压降。要使用钳位二极管保护输入,您仍然需要查看通过钳位二极管的电流。通过钳位二极管的电流应保持较小(在微安范围内)。如果通过钳位二极管的电流过大,则可能会导致器件发生闩锁。

微芯片-Fig10

爱特梅尔:

doc2508.pdf,图1

为了保护器件免受高于 VCC 和低于 GND 的电压影响,AVR 在 I/O 引脚上有内部钳位二极管(参见图 1)。二极管从引脚连接到 VCC 和 GND,并将所有输入信号保持在 AVR 的工作电压范围内(见图 2)。任何高于 VCC + 0.5V 的电压都将被强制降至 VCC + 0.5V(0.5V 是二极管上的电压降),任何低于 GND - 0.5V 的电压将被强制升至 GND - 0.5V。
通过串联一个大电阻,这些二极管可用于将高压正弦信号转换为低压方波信号,幅度在 AVR 的工作电压 ± 0.5V 范围内。因此,二极管会将高压信号钳位到 AVR 的工作电压。

Atmel-Fig1

德州仪器

slya014a.pdf “3.7 外部保护电路”,图 13

通常,为输入电路选择合适的电阻是没有困难的。1 kΩ 到 10 kΩ 的电阻值通常是合适的。在实践中,通常只使用一个高阻值电阻就足够了,无需额外的二极管。

TI-Fig13

甚至对于模拟 IC,
Analog Devices提出

EDch 11 过电压和 emi.pdf

对于那些明确需要外部保护以防止过压滥用和输出反相的放大器,一种常用技术是使用串联电阻 Rs 来限制故障电流,并使用肖特基二极管将输入信号钳位到电源,如图所示图 11.7。外部输入串联电阻 Rs 将由放大器制造商提供,或由用户使用之前图 11.2 和公式 1 所示的方法根据经验确定。11.1。通常情况下,该电阻器的值将提供足够的保护,防止输出电压反相,并限制通过肖特基二极管的故障电流。

AnalogDevices-Fig11.2

AnalogDevices-Fig11.7

格言

用于敏感放大器应用的过压保护 (OVP)

行业经验法则是选择 RLIMIT,使流过 IC 输入的电流不超过 5mA。

马克西姆图01

最后让我们看看
Horowitz/Hill “The Art of Electronis”对这个话题有什么看法:

CMOS 输入不会为接地和电源电压之间的输入电压消耗电流 (...)。对于超出电源范围的电压,输入看起来像一对正电源和接地的钳位二极管。通过这些二极管的大于约 10mA 的瞬时电流足以将许多 CMOS 器件置于 SCR 闭锁状态(...;较新的设计可承受更高的电流,并且往往对这种疾病具有抵抗力或免疫力;例如 HC 和 HCT家庭可以在电源轨之外驱动 1.5V,而不会发生故障或损坏)。

EDIT2:
我猜 Russel 如此关心的是闩锁效应,现代 IC 比早期更能抵抗。也许这以某种方式解释了他的“1+十年十字军东征”。

EDIT3:
PIC16F1827 数据表(“30.0 电气规格”)表示钳位电流 Ik 的绝对最大额定值为 20mA。那是会损坏芯片的电流。应用笔记建议使用 µA 范围内的电流。

EDIT4
我发现 Microchip 的另一篇应用笔记专门针对 “在混合信号微控制器上使用 ESD 寄生二极管”这一问题。

如果将过压(超过 Vdd+0.3V)施加到可用作模拟输入的引脚上,则可能会导致问题。

第一个解决方案是防止微控制器的 I/O 引脚出现任何过压。这可以通过将肖特基二极管添加到 VDD 和 VSS 上的每个可以看到高电压的引脚来完成。这会将电压钳位到 VDD + 0.3V

...就像我从一开始就建议的那样。

该文件还明确指出,施加到 Microchip 控制器输入端的过电压导致电流流入基板是不正确的(如评论中所述)。这只能发生在欠压(= 低于 Vss;参见“欠压”段落),这不是本问题的主题。

(进入衬底的电流不会在过压欠压下发生,因为它取决于衬底的掺杂。它是 p 型或 n 型掺杂,不能同时使用)

只需使用一个分压器和一个以 5V 供电且增益至少为 3 倍的非反相放大器。

因此,在 5V 时,您将再次获得 5V 输出,在 15V 时也是如此,因为它会饱和。也许最好使用轨到轨解决方案,但如果您只想检测边缘,这并不是完全必要的。