第28课 ADS1115 16bit 高精度ADC

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。在第7课,我们利用 Arduino 的 ADC功能测量电池电压,但是精度只有区区的10bits,这次用 I2C 来接一块精度高达 16bits 的 ADS1115:串口通信。有任何疑问请在评论区提出,我会逐一回答。

ADS1115 是一块由 IT 开发、基于 I2C 协议的ADC,可以将电压转换成16bits的数字信号,与 Arduino 内置的ADC相比,分辨率提高数十倍,而且内置了 PGA (可编程增益放大器),可以设置测量范围(±0.256V ~ 6.144V),无需参考电压,因此精度相当之高,可达 7.8125uV(即:0.0078125mV),可以应用于精密电压测量、 示波器中。而且ADS1115 供了4组模拟输入,解决了 Arduino UNO 模拟端口被 I2C 占用后不够用的问题。

ADS1115 的设置比较复杂,可以先看看其 DataSheet 第25页,有5个表格说明了如何使用该模块。但别慌,Arduino 作为成为最流行的开源平台之一,优势在于有丰富的库。TI 开发的 ADS1XXX 系列芯片的库(点击下载)已经有不少,只要简单的设置,即可使用。

现在,我们需要先理解这块芯片的具体性能:

首先,ADS1115 内置的 PGA 可以设置测量范围,最高为 ±6.144V,但千万不要以为它可以测量6.144V 的电压,实际上,它最高耐压不能超过 VDD 的0.3V(VDD 为 5V,实际测量范围< 5.3 V),必须切记,否则可能会损坏芯片。

PGA 的默认值是 2/3x 增益,即 ±6.144V,其分辨率为 16bits,即:

±6.144V / (2∧16 – 1) = ±6.144V / 32767 =  ±0.1875 mV

与 Arduino UNO 内置的 10bits ADC,每步 4.85mV 相比,精度提高了 25倍。如果PGA 设为1x 增益,即测量范围降至 4.096V,精度为 ±0.125mV,如果 PGA 设为16x 增益,测量范围降至 ±0.256V,精度可达 ±0.0078125mV。简单来说,PGA 增益越大,测量范围越小,精度越高。默认值为 ±6.144V。

ADS1115 的地址可以通过 ADDR 与SDA、SCL、GND 或 VDD 短接,实现修改。不设置的话,默认值为 0x48,如下图:

现在,我们将 VDD 连接 Arduino 的 5V 端口,然后,用 ADS1115 的 A0 测量Arduino的3.3V 端口,但千万不要反过来,因为测量电压不能超过 VDD 的 0.3V!

注意:这个库有一个bug,如果测量电压为 0 ,会显示 “-1”,实际应用中要避开。

3 thoughts on “第28课 ADS1115 16bit 高精度ADC

    1. panft Post author

      ADS111X 系列有三种型号,1113,1114和1115。只有1113是2.048V。请见TI Datasheep,17页

      Reply
  1. 翁先生

    你好,
    我有些光偶合ADC零件 HCPL-7860,我想做個可以檢查這零件品質的工具.
    看是從電腦螢幕顯示還是LCD顯示都行
    我可以付費請你幫我用arduino製作嗎?
    電話 0921195490 翁先生

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *