如果FPGA/微处理器上只剩下一个GPIO,该如何进行模拟测量?

在关注机器健康和其他物联网(IoT)解决方案的现代应用中,随着检测功能的日趋普及,对更简单的接口以及更少的I/O和更小的器件尺寸的需求也随之增长。连接到单个微处理器或FPGA的器件密度不断增加,而应用空间(以及由此导致的I/O引脚数量)却受到限制。在理想情况下,所有应用都需要一个ASIC来提供小巧的集成式解决方案。

但是,ASIC的开发既耗时又昂贵,并且不具备满足其他用途的灵活性。因此,越来越多的应用都在使用微处理器或尺寸小巧的FPGA,以便能够经济高效地按时完成产品开发。在本文中,我们将探讨一种温度-频率转换器,它只需要使用一个GPIO引脚即可提供准确的温度结果。本文还将演示如何将电压-频率转换器用于各种检测应用。

动机

某些传感器测量值(例如温度、湿度和气压)本质上是直流电,而且其变化速率并未快到(它们也不需要足够精确的分辨率)足以保证ADC的需求以及与之相关的设计考虑。大多数ADC要求快速准确的时钟生成和时序、稳定的基准电压、具有非常低输出阻抗的基准缓冲器以及模拟前端电路,以便对传感器输出进行适当的信号调理,然后才能对其进行数字量化并通过系统进行监控。在进行环境温度检测时,分立式应用可能会在惠斯通电桥中使用一个热敏电阻,然后由仪表放大器获得其输出,再馈入ADC。这种设计属于过度设计,需要超出应用所需的更多空间、功率和计算周期,而应用本身可能仅需要每15秒进行一次测量。

能否设计一种替代性测量解决方案,既能减少与ADC信号链相关的元件数量和复杂性,还能测量模拟电压?该解决方案就是采用一个电压-频率转换器(例如 LTC6990, 将其配置为电压控制振荡器(VCO)模式,这样就可以用来测量模拟电压,而无需ADC。在本示例中,将精密热电偶放大器 AD8494配置为环境温度传感器,其输出电压用作LTC6990的输入,从而生成一个温度-频率转换器的信号链。

图1. 简单的温度-频率转换器。

如何将温度输入转换为频率输出?

如今,许多现代电子设备都需要板载温度监控系统。将模拟信号转换为脉宽调制信号或数字信号的方法已有大量的文献记载。但是,如果测量解决方案需要一个ADC,则存在一些与成本、精度和速率相关的不利因素。通常,测量越精确,解决方案就越昂贵。该电路提供了一种低成本且易于连接的通用解决方案,其精度可以根据温度测量系统的需求而改变。

AD8494是一款热电偶精密放大器,但它也可以通过将其输入短路接地用作环境温度传感器。输出则定义为:

在使用单极性电源的电路中, –VS=地电压(0 V),同时还必须向AD8494的REF引脚施加一个失调电压,从而使输出电压偏置高于地电压,即使环境温度为负时也是如此。

温度传感器的输出电压 VOUT定义为:

在VCO模式下,LTC6990的频率输出定义为:

由于AD8494的输出电压是LTC6990的 VCTRL 因此可以用公式1来替换公式2中的 VCTRL 设定 RSET = R­VCO 则得到以下结果:

这样就可以解出 Tambient 消掉电压单位,于是得到公式5:

得到频率输出了,有什么用处呢?

频率输出的美妙之处在于可以使用单个GPIO引脚进行传感器测量。如果使用图3所示的同步计数器电路,那么在其CLK_IN输入端将始终会观察到时钟的上升沿。如果将LTC6990的 FOUT 用作输入时钟,则每次检测到 FOUT 的上升沿时,计数器都会递增,从而创建了一个周期计数器。如果每次测量之间的时间间隔保持恒定,则可以计数给定时间间隔内的周期数,并可通过浮点运算或查找表计算出频率。将采集时间 TAcquisition n除以计数所得的周期数,可以得出 FOUT的周期。对该关系式取倒数则得到公式6。

图2. 一个以LTC6990输出作为其时钟输入的4位同步计数器。

Verilog代码示例显示了一个通过使用FPGA上的单个GPIO输入来计数周期数的函数。采集周期越长,测量结果就越精确。在下述代码示例中,使用了一个16位计数器来提高分辨率。同时还假定在架构的更高层级执行采集时间测量控制逻辑。

图3. Verilog代码示例。

图4. 温度-频率转换器传递函数。

结论

在本应用中,我们讨论了一种新型的温度-频率转换器。它提供了一种精确测量温度的低成本方法。如果温度超过–40°C至+125°C的工业温度范围,则可在传感器的输入端安装一个热电偶。下图总结列出了测量系统的误差。它说明了环境温度与输出频率以及系统精度之间的线性关系。尽管此解决方案可能无法提供非常好的温度分辨率结果,但对于可接受大约±2°C误差的应用,它提供了一个经济简单的温度测量接口。此外,采用电压-频率转换器的概念也可用于测量其他类型的传感器输出,且无需使用ADC。

图5. 温度误差。

文章来源:亚德诺半导体

最新文章

最新文章