基本微控制器的例子特点是“轨内”电压测量。一个主要的例子是测量可变电阻的输出。电阻的一端连接到微控制器的5.0电压轨,另一端接地,雨刷器被发送到微控制器的模数转换器(ADC)引脚。由此产生的电压以接地和微控制器电压轨为界。
本文提供了为测量轨外电压的微控制器选择电阻的指南。你将学习如何准确地测量这些更高的电压而不损坏你的微控制器。本文的重点是优化电阻的选择。
我们的讨论仅限于一般小于30vdc的直流电压。交流的考虑超出了这篇短文的范围。此外,更高电压的直流测量可能需要额外的安全考虑,这也超出了本文的范围。
微控制器模拟输入模型
让我们从微控制器模拟输入的模型开始。图1给出了 Microchip (Atmel) ATmega4809 的简化模型。这是Arduino Nano Every上的一个流行微控制器。这个模型的主要组件是样品和保持电容。在转换开始之前,采样信号必须存在于该电容上。
图 1 :微控制器模拟输入引脚相对于被测外部电压的简化模型
技术贴士 :一个小错误就会导致微控制器的毁灭。我们必须特别小心R1附近和较高的电源电压。接线或探测错误可能会无意中将高电压发送到微控制器的I/O引脚。虽然轨道钳位二极管提供了一小部分保护,但它将与微控制器本身一起在瞬间被破坏。在极端情况下,较高的电压将一路行进到相关PC机上的UPS端口。如果幸运的话,它会损坏PC机的端口。如果你运气不好,你将需要一台新的PC。
这个采样和保持(S/H)要求是各种微控制器结构之间的复杂交互,包括:
-
模拟选择器mux的操作。从Arduino的角度来看,当你区分模拟输入引脚(如A5和A7)时,这种情况就会发生。
-
S/H电容的大小。ATmega 4809在Control C特殊功能寄存器中有一个采样电容选择(SAMPCAP)位。根据数据手册:“这个位选择采样电容,因此,输入阻抗。最佳值取决于参考电压和应用的电性能。”
-
内部的贡献者。这包括与引脚的箝位二极管、电阻和相邻引脚之间的电容性相互作用等元件相关的泄漏。
我们可以将电容器电压/稳定性要求可视化为时间常数,重点是输入阻抗。其结果就是图2所示的简化模型。内部微控制器结构已被瞬时开关和S/H电容器所取代。外部电压源和分压器被替换为它们的Thévenin 等效电路。
图 2 :微控制器输入引脚与源相关的高级模型。
当ADC转换启动时,瞬时开关将关闭一小段时间。这是S/H电容器充电到所需电压的“采样相位”。一段时间后,开关打开。这是“保持相位”,电容将保持(采样)电压呈现给ADC。
S/H时间与源的Thévenin 阻抗之间存在一定的关系。当我们考虑τ=RC关系时,为了精确测量,RTh必须提供一个小的时间常数。在这里,“小”一词意味着S/H电容器将在瞬时开关闭合时的短时间内充满电。
技术贴士 :Thévenin 等效电路是一个强大的工具,其重要性类似于欧姆定律。它允许一个复杂电路被表征为一个理想电压源(VTh)和一个串联电阻(RTh)。然后可以使用该模型进行简化计算。这包括本文中提到的时间常数。
在这一点上,我们将注意力回到ATmega4809数据手册。我们得到了一些指导方针:
-
ADC针对源RTh小于10 kΩ进行了优化。
-
可以激活前面提到的SAMPCAP位,以将S/H电容器的尺寸从10 pF减小到5 pF。
-
采样长度(SAMPLEN)控制寄存器可用于增加阻抗较高的源的保持时间。
综上所述,这些建议为我们的电阻选择提供了一个很好的起点。
用于ADC缩放的分压器
为了选择合适的电阻,我们必须考虑要测量的电压和Thévenin 电阻。
分压器的定义为:
其中:
- VOut是满量程微控制器ADC输入电压。
- VIn(最大)是要测量的最高电压,包括任何浪涌或充电电压。如果电压异常高,ADC将饱和。例如,如果设置10位ADC来测量16 VDC(最大)信号,则对于高于16 VDC的所有电压,它将饱和并读取1023。
分压器的Thévenin 电阻为:
我们已经简化了计算,假设分压器不会明显地负载源。也许我们可以在另一篇文章中探讨源的Thévenin 等效电路上的负载。
技术贴士:Arduino的默认ADC参考是正电压轨本身,Arduino Nano Every的正电压轨约为5 VDC。为了提高性能,可以通过调用analogReference(internal)来使用内部1.1 VDC参考。也可以使用外部参考标准,如LM4040AIZ-4.1/NOPB。这些器件在温度系数小的情况下具有良好的耐受性。“满量程”ADC输入电压分别为5.0、1.1和4.096。
电阻的选择没有限制;在这种情况下,我们可以选择R1或R2,然后计算相应的电阻。不幸的是,没有完美的解决方案。我们能做的最好的是平衡源负载的竞争需求,电池供电电路的分压器中的能量耗散,需要保持在微控制器10 kΩ输入阻抗以下,或者需要延长ADC转换时间以适应高RTh。
设计实例
为了说明电阻选择过程,让我们设计一个电路来测量与淹水铅酸电池充电器相关的标称12 VDC系统。我们首先确定可能遇到的最高电压。虽然该系统被称为“12 VDC”,但涓流充电约为13.8 VDC,均衡充电可能高达14.7 VDC(请参阅电池数据手册以获取准确值)。如果我们允许10%的开销,那么我们将设计为16 VDC(最大)电压。
将微控制器配置为4.096 VDC外部参考。
通过收集变量,我们可以确定R1与R2的比值:
我们的目标是找到一个尽可能接近这个比率的电阻对,从而得到的Rth小于10 kΩ。
选择电阻对本身就是一个引人入胜的话题。使用E-24(5%)系列上一篇文章中介绍的技术,R1和R2最接近的匹配对分别为4.7 k和1.6 kΩ,比率为2.937。使用E-96(1%),我们可以选择8.98 kΩ和3.09 kΩ,以获得2.906的改进比率。
在理想情况下,进入ADC的满量程电压为:
在实际操作中,仍然存在一个错误。可以肯定的是,1%的电阻改善了这种情况。然而,它们并不完美。考虑每个电阻的可接受值范围:
8.8902 kΩ <R1<9.0698 kΩ
3.0591 kΩ <R2<3.1209 kΩ
当应用于分压器时,满量程(16 VDC输入)将从4.0355到4.1574 VDC变化。这个+/- 61 mV误差归因于所选择的电阻公差。这种困境有几种解决方案,包括使用低容差(高成本)电阻,手动选择电阻,安装微调电阻,或在微控制器中应用校准校正。每种解决方案都有其自身的成本和时间损失。然而,这是提高精度不可避免的代价。
系统性能
一个公平的批评是,我们对电阻的选择过于挑剔。当我们考虑整个系统的性能时,这种挑剔的选择的原因就显而易见了。
回想一下,我们原始的10位ADC及其外部参考电压被限制为1023的满量程二进制读数。如果我们正确地选择了分压器,那么当测量电压达到16 VDC时就会发生这种情况。结果是系统现在具有大约16 mV的分辨率(最小可检测电压变化)。这是我们所能做的最好的,因为我们已经忠实地取了最大预期电压,并将其降压以匹配ADC的满量程输出。
让我们考虑一个明显的反例。假设我们选择R1和R2,分别使用方便的10 kΩ到1 kΩ值。测量电压需要达到45.1 VDC, ADC才能达到1023的满量程计数。由于45.1 VDCX有1023步,分辨率恶化到44 mV。这是非常不希望的,因为我们不再能够辨别测量电压的微小变化。
技术贴士 :电压参考值如1.024、2.048和4.096可能看起来很熟悉,因为电压与2的幂(PO2)相关,如1,2,4,…,512,1024,2048和4096。这些都是方便的值,特别是当使用整数数学时。在我们的示例中,配备4.096 VDC基准的10位ADC用于测量16 VDC(最大)信号。假设我们为分压器选择了理想的电阻,每个位的变化与PO2电压的变化一致。在这个例子中,每个ADC位代表1/64伏特。这可能对你的应用有用,也可能没用,因为乘法可以使用一系列右移运算符来执行。请注意,当我们使用类型浮点值缩放这些独特的电压参考值时,速度优势就会丢失。
回顾
微控制器可用于测量高于其5.0或3.3 VDC供电轨的电压,前提是使用适当的分压器来降低测量电压。适当的电阻选择确保微控制器在考虑被测电压和ADC参考电压的情况下具有最佳可用分辨率。正确的电阻的选择由之前的文章提供帮助,其中包括一个粗略的C程序,以帮助从标准值中找到最佳可用电阻对。