精华内容
下载资源
问答
  • SAR(逐次逼近寄存器)ADC基准电压对转换精度的影响比最初想象的还要大。图1所示为理想和带增益误差的3位ADC转换器的传递方程。ADC的传递方程等于: 在这里,DCODE为数字输出代码,VIN为转换器的输入电压,VOS为...
  • ADC 基准电压输入端的开关 电容具有动态负载,因此基准电压源电路必须能够处理与时 间和吞吐速率相关的电流。某些 ADC 片上集成基准电压源 和基准电压源缓冲器,但这类器件在功耗或性能方面可能并 非最佳——通常...
  • ADC基准电压输入端的开关电容具有动态负载,因此基准电压源电路必须能够处理与时间和吞吐速率相关的电流。某些ADC片上集成基准电压源和基准电压源缓冲器,但这类器件在功耗或性能方面可能并非最佳--通常使用外部基准...
  • SAR(逐次逼近寄存器) ADC基准电压对转换精度的影响比最初想象的还要大。图1所示为理想和带增益误差的3位ADC转换器的传递方程。ADC的传递方程等于:  在这里,DCODE为数字输出代码,VIN为转换器的输入电压,...
  • ADC基准电压输入端的开关电容具有动态负载,因此基准电压源电路必须能够处理与时间和吞吐速率相关的电流。有些ADC片上集成基准电压源和基准电压源缓冲器,但这类器件在功耗或性能方面可能并非最佳--通常使用外部基准...
  • ADC基准电压输入端的开关电容具有动态负载,因此基准电压源电路必须能够处理与时间和吞吐速率相关的电流。某些ADC片上集成基准电压源和基准电压源缓冲器,但这类器件在功耗或性能方面可能并非最佳--通常使用外部基准...
  • ADC17通道用于检测这个基准电压,在每颗芯片出厂时 ,ST公司会给芯片的VSSA和VDDA加上一个高精度的3v3电压, 然后读出此时的ADC17通道的值存放在芯片内部;我们可以利用这个值精确的算出外部VSSA的电压,然后进一步...

    STM32的48脚的单片机因为没有Vref+,Vref-,所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便。这里还有一种方法可以参考下:

    STM32内部有一个专门用于校准的稳压器VREFINT,,它由外部的VSSA供电,他的电压一般为1.2V左右。 ADC17通道用于检测这个基准电压,在每颗芯片出厂时 ,ST公司会给芯片的VSSA和VDDA加上一个高精度的3v3电压, 然后读出此时的ADC17通道的值存放在芯片内部;我们可以利用这个值精确的算出外部VSSA的电压,然后进一步算出外部ADC的精确电压。

     

    注意要获得精确的电压还要注意ADC的取样时间要足够长,并且需要启动校准

     

    我们可以看到,通过读取ADC IN17可以获得内部参考电压值,假设我们现在要读取电池电量,需要读取两个通道的值:

     

    1、ADC IN17内部参考电压原始数据,也就是下图公式中的 VREFINT_DATA

    2、读取电池电量连接通道原始数据,也就是下图公式中的ADC_DATAX值

     

    内部基准电压Vchx = Vrefint * (ADchx/ADrefint)

    其中:

    Vrefint为参照电压=1.20V。

    ADchx:17通道采集到的ADC数值

    ADrefint:4096

     

    展开全文
  • 为进一步保证精确性和稳定性,应该对ADC基准电压系统的输入进行缓冲,从而最大限度降低基准电压系统的负载效应。为满足这些要求,必须将高速ADC设计成既带有内部精密基准电压源亦可使用外部精密基准电压源的模数转换...
  • 高速高精度ADC基准电压源的研究与设计_丁家平
  •  用于高速高精度ADC的片内电压基准源不仅要满足ADC精度和采样速率的要求,并应具有较低的温度系数和较高的电源抑制比,此外,随着低功耗和便携的要求,ADC也在朝着低压方向发展,相应的基准源也要满足低电源电压的...
  • 如果您用ADC来监视系统的电源电压,则您可能会遇到电源电压超过ADC基准电压的情况。但ADC输入电压不会超过其基准电压,因此您可以用一个外部电阻分压器来将电源电压变换到ADC输入范围内。但即使容差为0.1% 的电阻器...
  • 基于TMS320F28335的ADC模块电压基准校正 基于TMS320F28335的ADC模块电压基准校正
  • 此时通过使用STM32的内部参考电压功能(Embedded internal reference voltage),可以准确的测量ADC管脚对应的电压值,精度 0.01v左右,可以满足大部分应用场景。 详情参考Blog: ...
  • 如果您用ADC来监视系统的电源电压,则您可能会遇到电源电压超过ADC基准电压的情况(图1)。但ADC输入电压不会超过其基准电压,因此您可以用一个外部电阻分压器来将电源电压变换到ADC输入范围内。但即使容差为0.1% 的...
  • 本文对电压基准源引起的ADC系统的DNL误差进行了建模分析,提出了一种采用二阶曲率补偿技术的电压基准源电路,该电路运用低噪声两级运放进行箝位,同时在采用共源共栅电流镜技术的基础上加入了PSR提高电路。...
  •  用于高速高精度ADC的片内电压基准源不仅要满足ADC精度和采样速率的要求,并应具有较低的温度系数和较高的电源抑制比,此外,随着低功耗和便携的要求,ADC也在朝着低压方向发展,相应的基准源也要满足低电源电压的...
  • 例如,制药行业使用高精度实验室天平,该天平在2.1g满量程范围内提供0.0001mg分辨率,所以需要使用分辨率高于24位的模数转换器(ADC)。校准和测试这些高精度系统对仪器仪表行业来说是一大挑战,要求提供分辨率达到25...
    从航空航天和防务、天然气勘探到制药和医疗设备制造,这些行业越来越需要能够实现高于24位分辨率的超高精度测量。例如,制药行业使用高精度实验室天平,该天平在2.1g满量程范围内提供0.0001mg分辨率,所以需要使用分辨率高于24位的模数转换器(ADC)。校准和测试这些高精度系统对仪器仪表行业来说是一大挑战,要求提供分辨率达到25位以上、测量精度至少7.5数字位的测试设备。

    为了实现这种高分辨率,需要使用低噪声信号链。图1显示噪声与有效位数(ENOB)和信噪比(SNR)之间的关系。注意,噪声是基于基准电压(VREF) =5V,ADC输入设置为满量程范围来计算的。举例来讲,要实现25位分辨率,或者152dB动态范围,可允许的最大系统噪声为0.2437µVrms。

    2f6d0e1604de5be479b66131608b34c5.png

    图1.噪声与ENOB和SNR。

    基准电压设置输入模拟信号的限值,ADC可以解析该信号。公式1是ADC的理想转换函数,其中输出数字码(小数形式)通过模拟输入信号VIN、基准电压VREF和ADC位数N计算得出。

    24fcad3f9247d4b238790416e30cb548.png

    一般来说,ADC数据手册中的分辨率是基于输入短路技术得出,其中ADC输入连接至GND,或者ADC差分输入连接至共源极。ADC输入短路技术有助于确定ADC分辨率的绝对限值特性,方法是忽略ADC输入源噪声,消除VREF噪声的影响。结果确实如此,因为VIN设置为0V,使得VIN/VREF比也等于0V。

    为了研究基准电压噪声对整体系统噪声的影响,图2显示了总系统噪声(rms)和ADC输入直流源电压之间的关系。实施本次测试期间,我们使用了AD7177-2 32位ADC,其VREF输入连接至LTC6655-5(5V),ADC输入则连接至低噪声直流源。ADC输出数据速率设置为10kSPS。注意,在整个ADC输入电压范围内,ADC噪声保持恒定(35nV/√Hz),但ADC直流输入源噪声增大(≤6nV/√Hz),与基准电压噪声(96nV/√Hz)相比,仍保持较低水平。如图2所示,总体噪声与ADC直流输入电压成正比。这是因为VIN(5V),ADC输入则连接至低噪声直流源。ADC输出数据速率设置为10kSPS。注意,在整个ADC输入电压范围内,ADC噪声保持恒定(35nV/√Hz),但ADC直流输入源噪声增大(≤6nV/√Hz),与基准电压噪声(96nV/√Hz)相比,仍保持较低水平。如图2所示,总体噪声与ADC直流输入电压成正比。这是因为VIN/VREF比随之增大,所以在ADC使用满量程输入时,VREF噪声主导整体系统噪声。信号链中各组件的噪声会以和方根(RSS)的方式叠加,导致曲线形状如图2所示。

    de9e53622646727e36e6a81323560364.png

    图2.ADC VIN与rms系统噪声之间的关系。VREF设置为LTC6655-5。

    为了实现25位或以上的高测量分辨率,即使是市面上最好的独立基准电压(具备低噪声规格)也需要获取一些帮助来衰减其噪声。添加外部电路(例如滤波器)可以帮助衰减噪声,以达到所需的ADC动态范围。

    本文的其余部分介绍各种类型的低通滤波器,以及如何使用这些滤波器来衰减基准电压噪声。本文还会讨论滤波器设计技术和与滤波器有关的取舍。本文将以衰减基准电压噪声为基础,介绍两种类型的低通滤波器,分别是简单的无源RC低通滤波器(LPF)和基于有源信号流程图(SFG)的低通滤波器。电路性能部分会展示系统评估结果,用Σ-ΔADC表示测试。

    184b8ff88c76fee9243ac16ee5c68582.gif

    使用无源低通滤波器来降低噪声

    图3显示基准电压通过低通滤波器驱动ADC,该滤波器采用了外部储能电容C1、储能电容的等效串联电阻(ESR),以及基准电压运算放大器(运放)的输出阻抗。无源RC LPF截止频率由以下公式确定

    5f436d6af872dc2128d897dadacbc2a2.png

    从公式可以看出,带宽与电阻R和电容C成反比。

    613e18701301d5bedb94bb8570091a89.png

    从公式可以看出,带宽与电阻R和电容C成反比。

    储能电容C1也可以用作本地电源存储器,用于补偿ADC基准电压电路突然要求负载电流发生变化时产生的电压尖峰。图4显示Σ-ΔADC AD7177-2和SAR AD7980ADC动态基准电流响应。

    2cbbb7cdffbd4caf6efc37184a989378.png

    图4.AD7177-2和AD7980模拟动态基准电流响应。

    用户可以选择C1电容的值来满足LPF截止频率要求,但是有些SAR ADC要求基准输入端采用至少10µF电容,以保证正常运行。最小的10µF C1电容可以降低基准电压源缓冲器的相位裕量。随着相位裕量降低,缓冲器反馈不再为负。在单位增益交叉频率附近的信号与输入信号同相反馈。1这导致闭环响应在交叉频率附近出现噪声峰值。由于源自截止频率(–3dB点)的带宽最高达到16MHz,总集成噪声(rms)由噪声峰值主导。即使基准电压储能电容C1作为噪声滤波器使用,并补偿电压尖峰,也需注意噪声峰值。图5显示LTC6655基准电压的噪声峰值,该峰值因储能电容C1引起。噪声峰值幅度由储能电容的值和其ESR额定值决定。

    1d352bd549aafa2e47b083dda1ac8172.png

    图5.LTC6655基准电压噪声峰值密度。

    大多数基准电压都具备复杂的输出级,以驱动适用于ADC基准电压源电路的大型负载电容。例如,LTC6655输出级设计用于采用设置为10µF的储能电容来执行关键衰减。LTC6655的储能电容设置为最小2.7µF、最大100µF时,会产生噪声峰值。

    VREF输出储能电容的等效串联电阻会消除主要的噪声峰值,但是会在100kHz和以上频率时产生二次噪声峰值。究其原因,可能是因为电容的ESR产生零噪声,可以改善相位裕量和降低主要噪声峰值。但是,这个零噪声与LTC6655固有的零噪声结合在一起,产生了二次噪声峰值。注意,图5所示的噪声响应只适用于LTC6655基准电压源。

    过滤基准电压噪声、消除噪声峰值,以及合理驱动ADC的另一种解决方案是添加无源RC LPF,然后添加缓冲器。通过添加缓冲器,我们可以隔离LPF和ADC基准电压源输入电容之间的设计限制。参见图6。

    7b3f5b18fa988933abd1cf2accd1dfba.png

    图6.无源RC LPF,后接缓冲器。

    将无源RC LPF截止频率设置为远低于单位增益交越频率,不止可以降低宽带和低频率噪声,还可以避免出现噪声峰值。例如,图7显示LTC6655噪声响应,其中C1=100µF(ESR=0Ω),后接无源LPF,其中R=10kΩ、C2=10µF(ESR=0Ω),在1.59Hz时产生极点。

    增大低通滤波器电阻R可以帮助实现低截止频率,但是也可能会降低精密基准电压的直流精度。添加无源RC LPF时,用户还必须考虑对负载调整和VREF缓冲器响应(τ=RC)的影响,在驱动ADC时,这会影响其瞬变性能。

    要达到所需的瞬变性能,建议如图6所示使用缓冲器。选择缓冲器时,要考虑的关键规格包括超低噪声、支持高负载电容的能力、低失真、出色的压摆率,以及宽增益带宽。建议采用的缓冲器为ADA4805-1和ADA48071。

    125c983ba14a276e0a01c05b0dc03d71.png

    图7.LTC6655-5,后接无源RC LPF噪声响应。

    184b8ff88c76fee9243ac16ee5c68582.gif

    使用有源LPF降低噪声

    表1指明了所需的动态范围和必须满足的可允许最大系统噪声要求,以实现所需的ENOB ADC分辨率。根据ADC带宽,按20dB/10倍衰减的单极低通滤波器可能无法达到所需的宽带噪声消除。级联无源低通滤波器构建一个阶梯结构,可以生成更高阶的滤波器,但每个部分的输入阻抗将是前一部分的负载。这会降低精密基准电压的直流精度。但是,基于有源组件设计更高阶的LPF可以在输入和输出之间提供良好的隔离,最大限度避免基准电压直流精度下降,并提供低输出阻抗来驱动ADC的基准电压源电路。

    b6401cdca76d4c15cd84ea9d5f29f2cf.png

    4e13fa8147177e52fc1286e05125fd6c.png

    a8bfbfa39c529d9a3039b800b75db256.png

    表1.条件:VREF = 5 V,ADC输入设置为满量程范围

    不同类型的有源低通滤波器,例如,Bessel、Butterworth、Chebyshev和elliptic,具体如图8所示。采用平坦带通或无纹波带通,可以最大限度地避免降低精密基准电压的直流精度。在所有滤波器类型中,基于Butterworth拓扑的LPF设计可以实现平坦的带通和陡峭的衰减。

    b5bf136f4abcc75db5c930ace88c638a.png

    图8.滤波器振幅响应示例。

    184b8ff88c76fee9243ac16ee5c68582.gif

    有源低通滤波器设计技巧

    信号流程图是用图形表示源自一系列线性公式的系统。SFG用于连接转换函数和对应的系统电路拓扑。该理论可用于基于有源电路设计模拟滤波器。SFG滤波器设计方法的主要优点在于:衰减系数Q和截止频率都可以单独控制。SFG LPF可以帮助衰减噪声和提高信噪比,但会导致物料成本(BOM)、PCB区域和功率增加。此外,SFG LPF可以影响基准输出电压与温度,导致产生微小PPM误差,造成直流精度下降。图9所示为二阶低通滤波器示例,该滤波器采用SFG方法,从转换函数转换至电路块。扩展电阻(R)和电容(C)针对截止频率实施配置(请参见公式5)。

    9f67d3bebb2e307993a1f670ac8aae11.png

    图9.基于SFG方法实施有源RC低通滤波器。

    有关信号流程图理论的更多信息,请参考Addison-Wesley出版的Feedback Control of Dynamic Systems(《动态系统反馈控制》)。

    3fbac02cddb824c0e583bdd9fe5ba334.png

    其中

    Rs表示比例因子

    Cn表示比例因子

    Ws表示截止频率(Rad/s)

    以下是一个计算示例,用于说明如何设计二阶0.5Hz截止频率SFG低通Butterworth滤波器:

    • 为了保持简明,选择Rs=1Ω,Cn=1F。

    • 选择Fs=0.5Hz,以最大化宽带噪声抑制效果。Ws=2×π×0.5=3.141rad.

    • 设置衰减因子Q=0.71。选择此值可实现平坦的带通和陡峭的衰减,以反映Butterworth拓扑。

    • R、C和Rq值基于迭代流程选择,以实现较低热噪声和可用于表面贴装的组件值。

    184b8ff88c76fee9243ac16ee5c68582.gif

    LTC6655LN简介

    考虑到与RC LPF和SFG LPF有关的取舍,更好的解决方案是如图10所示,将低通滤波器安装在基准电压的集成式低噪声缓冲器之前。这种布局不但会减小PCB面积,还不影响基准电压缓冲器的响应。使用快速稳定,具有高输入阻抗,能够灌电流和拉电流的基准电压缓冲器,有助于解决负载调整不良的问题,保持直流精度,以及改善瞬变性能。LTC6655LN采用了这种架构。它配有降噪引脚,可以帮助降低宽带噪声,支持使用集成式输出级缓冲器。LTC6655LN内置R3电阻(参考图10),允许用户在降噪(NR)引脚位置连接外部电容,以创建低通滤波器。采用LTC6655LN架构时,用户可以根据系统要求配置低通截止频率。

    ea9c37b3cd1a2c18a733f94019f754a3.png

    表2.3 dB截止频率,适合连接至NR引脚的电容实现不同值

    LTC6655LN RC LPF连接至缓冲器的非反向节点,该节点是此器件最灵敏的引脚。必须做好预防措施,应选择极低漏电流类型的外部电容,以防泄漏电流从R3电阻漏出,导致直流精度下降。此外,R和C之间的变化相互无关,所以RC时间常数和LPF截止频率会因为流程、电压和温度(PVT)差异而产生变化。

    a9d0f75adefc4dc5f2ca815cd0d3e830.png

    表3.3种电压选项的R3的电阻值

    基准电压(例如内置LPF的LTC6655LN)提供最佳解决方案,用于简化噪声滤波器设计,消除对外部缓冲器的需求,以驱动ADC基准电压电路。

    cca12226f9470d81222f5cf4edd73f16.png

    图10.LTC6655LN方框图。

    184b8ff88c76fee9243ac16ee5c68582.gif

    测试电路描述

    AD7177-2精密ADC被用于确定LTC6655/LTC6655LN加10uF NR电容以及LTC6655后接SFG滤波器的标准性能,。AD7177-2是高分辨率32位低噪声快速稳定2通道/4通道∑-∆模数转换器,用于实现低带宽输入。AD7177-2集成可编程数字带通滤波器,允许用户控制5SPS至10kSPS的输出数据速率(ODR)。

    设计SFG LPF(图11)时用到的组件包括2个ADA4522-1运算放大器、1个AD797运算放大器、多个25ppm表贴式电阻、多层表贴式陶瓷电容,以及1个10µF WIMA薄膜电容。ADA4522是一款轨到轨输出运算放大器,宽带噪声密度为5.8nV/√Hz,闪烁噪声为177nVp-p。AD797是一款低噪声运算放大器,具备0.9nV/√Hz宽带噪声、50nVp-p闪烁噪声、20V/µs出色压摆率,以及100MHz增益带宽,因此适合驱动ADC。

    521d77ddc3f6b9b57b0566e0a21c2814.png

    图11.SFG LPF。

    在使用LTC6655和带有AD7177-2的LTC6655LN时,为了正确评估性能,需要使用整体噪声低于ADC基准电压和ADC噪声的直流源。因此,会使用理想源,也就是9V电池电源,具体如图12所示。

    7962eefccd3e625b13984576f7922dc9.png

    图12.低噪声直流源。

    184b8ff88c76fee9243ac16ee5c68582.gif

    电路性能

    图13显示噪声谱密度,图14显示输出数据速率(ODR)和ENOB,描述AD7177-2的性能,它的VREF输入连接至LTC6655或者采用10uF NR电容的LTC6655LN或者使用SFG方法滤波的LTC6655。关于在1 kHz时噪声谱密度的比较结果,请参见表4。图13和图14都有两个重要区域。

    72716c4b78591a2e6d5b9834ae9e69d7.png

    表4.1 kHz时的噪声谱密度比较结果

    区域A:

    噪声谱密度图(图13)显示,ODR为500SPS及以上时,滤波LTC6655(SFG)和ADC直流输入源噪声远低于ADC的噪声,因此,ADC可以最大限度的去实现其最大性能,具体如图14中的区域A所示。从ODR、ENOB和噪声谱密度图中可以看出,在区域A中,总集成噪声(rms)的增高会妨碍信号链达到25位测量分辨率。

    区域B:

    在这个区域中,噪声谱密度图(图13)显示,三个基准电压选项和直流源的闪烁噪声升高,整体的系统噪声则受直流源噪声主导。区域B中的闪烁噪声升高,会导致测量性能和ADC可以实现的最大性能之间的ENOB偏差增大(图14)。

    根据ODR和ENOB图,滤波LTC6655(SFG)的ODR在小于等于20SPS时可以实现25位分辨率,带10µF NR电容的LTC6655LN-5和LTC6655实现的分辨率最高不超过24.6位。

    c2a85dab46ca7f767c09350f6b4e8bd7.png

    图13.噪声谱密度。

    2abf0e04764b975b7a565f47c6d3b7f4.png

    图14.ODR与ENOB。

    下方的表5汇总介绍AD7177-2ADC的性能,其中VREF输入连接至LTC6655或者带10µF NR电容的LTC6655LN,或者连接至滤波LTC6655(SFG)。在ADC输入连接直流源,VREF输入连接至LTC6655时,零缩放栏确定AD7177-2可以实现的最佳动态范围。在ADC输入设置为近乎满量程时,带10 μF NR电容的LTC6655LN-5的动态范围平均增大4dB(与LTC6655相比,ODR范围为10000SPS到59.96SPS)。另一方面,滤波LTC6655(SFG)的动态范围平均增大7dB(与LTC6655相比,ODR范围为10000SPS到59.96SPS)。在59.96SPS以下,动态范围区域的变化不大,由ADC输入直流源产生、占主导作用的低频率闪烁噪声是导致差异的主要原因。

    与LTC6655/LTC6655LN相比,将10µF电容连接至LTC6655LN的NR引脚时,在1kHz时可以将宽带噪声降低62%,滤波LTC6655(SFG)可以将宽带噪声降低97%。

    结 论

    精密系统如果想要实现25位或以上的分辨率,必须非常重视基准电压噪声。如图2所示,VREF噪声占系统噪声的比例与ADC满量程的使用率成正比。本文显示,在精密基准电压中添加滤波器可以衰减VREF噪声,从而降低整体的系统噪声。后接SFG滤波器的LTC6655基准电压可以将未配备滤波器的LTC6655的宽带噪声降低97%。但这会额外增加物料成本,增大PCB面积和功耗,降低几PPM的直流精度,且导致精密基准电压源输出随温度发生变化。在考虑与SFG LPF有关的取舍时,LTC6655LN采用简单设计,功耗低,只需要使用单个电容来降低宽带噪声,且无需使用外部缓冲器来驱动ADC。带10µF NR电容的LTC6655LN与不带滤波器的LTC6655相比,其宽带噪声降低62%。因此,用户现在可以使用内置的LTC6655LN低通滤波器来让精密系统实现所需的分辨率。

    展开全文
  • 针对工业物联网等应用场景中ADC的供电电压范围宽、功耗要求苛刻等问题,提出了一种配置灵活、低功耗、低噪声的片上基准电压产生电路,为ADC提供与电源无关满量程电压。该电路在电源电压为2.65 V~3.6 V时提供2.5 V...
  • 利用基准电压效正Vcc做参考电压的ADC采样计算方法
    展开全文
  • ADC极简电压表.zip

    2020-06-17 21:20:52
    单片机ADC 测量电压,stc单片机内部基准电压通过电阻分压测量外部电压,通过不同阻值的电阻可以改变电压测量量程。
  • 在#include行后面使用ADC_MODE(mode) 模式是ADC_TOUT(对于外部电压),ADC_VCC(对于系统电压)。默认情况下,它读取外部电压。 例程 编写ESP8266读取系统电压,代码如下: ADC_MODE(ADC_VCC);//设置ADC模式为读取系统...

    从今天开始,我们一点点的学习ESP12系列的使用。从基础开始,到提高,到网络应用,到实例。过程可能有些枯燥,但是耐下性子学,肯定会有收获。而且有了arduino的基础,学习这些都不难。限于篇幅,我们只讲与arduino不同的地方。

    今天我们先来学习ESP12系列的基础功能和应用。

    中断功能

    基于ESP8266的NodeMcu的数字IO的中断功能是通过attachInterrupt,detachInterrupt函数所支持的。除了D0/GPIO16,中断可以绑定到任意GPIO的引脚上。所支持的标准中断类型有:CHANGE(改变沿,电平从低到高或者从高到低)、RISING(上升沿,电平从低到高)、FALLING(下降沿,电平从高到低)。

    1.attachInterrupt() 该功能用于在将指定引脚设置为响应中断。

    函数: attachInterrupt(pin, function, mode);

    参数:

    pin:要设置中断的端口编号,注意,这里不是引脚编号。

    function:中断发生时运行的函数, 这个函数不带任何参数,不返回任何内容。

    Interrupt type/mode:它定义中断被触发的条件方式。

    CHANGE:改变沿,引脚电平从低变为高或者从高变为低时触发中断。

    RISING:上升沿,引脚电平从低变为高时触发中断。

    FALLING:下降沿,引脚电平从高变为低时触发中断。

    返回值: 无;

    2.detachInterrupt() 该功能用于禁用指定GPIO引脚上的中断。

    函数: detachInterrupt(pin)

    参数:

    pin:要禁用的中断的GPIO引脚。

    返回值: 无;

    3.digitalPinToInterrupt() 该功能用于获取指定GPIO引脚的中断号。

    函数: digitalPinToInterrupt(pin)

    参数:

    pin:要获取中断号的GPIO引脚。

    void setup() { Serial.begin(115200);//设置串口波特率 attachInterrupt(digitalPinToInterrupt(D2), InterruptFunc, RISING);//设置中断号、响应函数、触发方式 } void loop() { } /** * 中断响应函数 */ void InterruptFunc(){ Serial.println("Hello ESP8266"); }

    模拟输入(ADC)

    1.测量外部电压:analogRead(A0),用于读取施加在模块的ADC引脚上的外部电压;

    输入电压范围:0 - 1.0V之间;

    测量精度:由于ADC具有10位分辨率,因此会给出0-1023的值范围;

    注意点: 为了支持外部电压范围(0-3.3v),NodeMcu做了一个电阻分压器,如图所示:

    6e5c53fe466372eda934a931ccf448be.png

    编写一个读取NodeMcu的ADC引脚上的模拟电压。我们这里使用电位器在ADC引脚上提供0-3.3V的可变电压。如下图连接线:

    1ac8fd2d408b37cd29c6dfe3b1e267c3.png
    void setup() { Serial.begin(115200);//配置波特率}void loop() { Serial.print("ADC Value: "); Serial.println(analogRead(A0));//输出0-1023 对应 外部输入电压 0-1.0v //延时1s delay(1000);}

    2 测量系统电压

    ESP.getVcc(),读取NodeMCU模块的VCC电压,单位是mV;

    注意点

    ADC引脚必须保持悬空;在读取VCC电源电压之前,应更改ADC模式以读取系统电压。

    在#include行后面使用ADC_MODE(mode)

    模式是ADC_TOUT(对于外部电压),ADC_VCC(对于系统电压)。默认情况下,它读取外部电压。

    例程

    编写ESP8266读取系统电压,代码如下:

    ADC_MODE(ADC_VCC);//设置ADC模式为读取系统电压void setup() { Serial.begin(115200);}void loop() { Serial.print("ESP8266当前系统电压(mV): "); Serial.println(ESP.getVcc()); delay(1000);}

    模拟输出(PWM)

    NodeMcu PWM引脚:基本上数字IO都可以作为PWM复用引脚,除了D0。不过需要注意的是,D3尽量不用,它内部连接ESP8266 GPIO0。

    ee5f193a90bfdc200360e93b5f24fbe2.png

    NodeMcu PWM有关Arduino函数

    1.analogWrite()不解释

    2.analogWriteRange() 该功能用于改变PWMRANGE数值。可以理解为PWM精度范围。同样的PWM频率下,默认占空数值0-123。如果你改变PWMRANGE为2047,那么占空数值就变成0-2047。精度高了一倍。

    函数: analogWriteRange(new_range)

    analogWriteFreq()该功能用于改变PWM频率。默认是1kHZ。可控PWM频率范围应该是100Hz-40KHz。

    函数: analogWriteFreq(new_frequency)

    串口通信(Serial)

    NodeMcu上有两组串口,Serial和Serial1。Serial使用UART0,默认对应引脚是GPIO1(TX)和GPIO3(RX)。在Serial.begin执行之后,调用Serial.swap()可以将Serial重新映射到GPIO15(TX)和GPIO13(RX)。再次调用Serial.swap()将Serial重新映射回GPIO1和GPIO3。不过,一般情况下,默认就好。

    void setup() { // 这里开始写初始化代码,只会执行一次 Serial.begin(115200); Serial.println("GPIO1(TX),GPIO3(RX)"); //调用映射方法 Serial.swap(); Serial.println("GPIO15(TX),GPIO13(RX)"); //重新映射回来 Serial.swap(); Serial.println("GPIO1(TX),GPIO3(RX)");}void loop() { //这里写运行代码,重复执行}

    Serial1使用UART1,默认对应引脚是GPIO2(TX)。Serial1不能用于接收数据,因为它的RX引脚被用于flash芯片连接。要使用Serial1,请调用Serial.begin(baudrate)。代码如下:

    void setup() { // 这里开始写初始化代码,只会执行一次 Serial.begin(115200); Serial.println("Hello Serial"); Serial1.begin(115200); Serial1.println("Hello Serial1");}void loop() { //这里写运行代码,重复执行}

    如果不使用Serial1并且不映射串口,可以将UART0的TX映射到GPIO2,具体操作是:在Serial.begin()之后调用Serial.set_tx(2)或者直接调用Serial.begin(baud,config,mode,2)。

    默认情况下,当调用Serial.begin后,将禁用WiFi库的诊断输出。要想再次启动调试输出,请调用Serial.setDebugOutput(true)。要将调试输出映射到Serial1时,需要调用Serial1.setDebugOutput(true)。

    调用Serial.setRxBufferSize(size_t size)允许定义接收缓冲区的大小,默认值是256(缓冲区也是使用内存,意味着不能一味地去增大这个值)。

    Serial和Serial1对象都支持5,6,7,8个数据位,奇数(O)、偶数(E)和无(N)奇偶校验,以及1或者2个停止位。要设置所需的模式,请调用Serial.begin(baudrate, SERIAL_8N1), Serial.begin(baudrate, SERIAL_6E2)等。

    Serial和Serial1都实现了一种新方法用来获取当前的波特率设置。要获取当前的波特率,请调用Serial.baudRate(),Serial1.baudRate()。代码如下:

    void setup() { // 这里开始写初始化代码,只会执行一次 // 设置当前波特率为57600 Serial.begin(57600); // 获取当前波特率 int br = Serial.baudRate(); // 将打印 "Serial is 57600 bps" Serial.printf("Serial is %d bps
    展开全文
  • 主题: 驱动精密ADC:如何为您的ADC选择最合适的基准电压源和放大器?   在线问答:   [问:callhxw] 如何评定一颗ADC非线性?丢码?   [答:Jing] you can use ADC"s INL and DNL parameter to evaluate the ...
  • 要获得 ADC 的最佳 SNR 性能并不仅仅是给 ADC 输入提供低噪声信号,提供一个低噪声基准电压是同等重要。虽然基准噪声在零标度没有影响,但是在全标度,基准上的任何噪声在输出代码中都将是可见的。对于某个给定的 ...
  • STC15内部ADC电压

    千次阅读 2018-07-11 18:34:43
    STC15内部ADC测电压当VCC(基准电压)等于5V的时候,我们输入的是4v,那么ADC将4V转换的结果就是4/5*1024=819.2。这是一种比例关系。一般开发板的的基准电压采用的是3.3V....
  • 这样,您可以创建一个可变电压输出,该输出可以由微控制器的ADC输入读取。 请注意,您测量的输出电压是下拉电阻两端的电压降,而不是FSR两端的电压降。 分压器配置的输出由以下公式描述: 在所示的配置中,输出电压...
  • 如何选择基准电压

    2020-07-13 16:06:58
    每个比较器、ADC、DAC或检测电路必须有一个基准电压源才能完成上述工作 (图 1)。将目标信号与已知值进行比较,可以准确量化任何信号。基准电压源规格基准电压源有很多形式并提供不同的特性,但归根结底,精度和稳定...
  • TI的SAR-ADC方面资深应用工程师Rafael曾说过,SAR-ADC应用电路设计重点的70%-80%应放在基准源电路的设计。然而工程师们时常把基准源的电路的设计忽略。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 513
精华内容 205
关键字:

adc基准电压