ADS1115是一块由 TI 开发、基于 I2C 协议的ADC,可以将电压转换成16bits的数字信号,与 Arduino内置的ADC相比,分辨率提高数十倍,而且内置了 PGA (可程序设计增益放大器),可以设置测量范围(±0.256V ~ 6.144V),无需参考电压,因此精度相当之高,可达 7.8125uV(即:0.0078125mV),可以应用于精密电压测量、 示波器中。而且ADS1115 供了4组模拟输入,解决了 Arduino UNO 模拟埠被 I2C 占用后不够用的问题。
所有原理圖及 arduino 源成碼, 均在附件中.
传感器: 可使用 input (AC) 20A/40A, output(DC) 0V-5V 范围之线性感应线圈.
Input: (AC) 20/40A Output: (DC) 0V – 5V.
电流计算方式: (范例) 量测值: 0.25V 目标量测电流: Y
Y = 20 x 0.25 / 5.0 (20A感应线圈)
Or
Y = 40 x 0.25 / 5.0 (40A 感应线圈)
对于电流侦测, 网网让人产生困扰, 原因其实很简单, 就是在线操作中的机器, 电源线不可能让你乱改或破坏, 这时候如果需要测试电流稳定, 必须提供高斯电 流侦测器, 此装置, 无需破坏原装置电源接线, 也无需供电,可有效达成电流量 测目的.
ADS1115的设置比较复杂,可以先看看其 DataSheet 第 25 页,有 5 个表格说明了如何 使用该模块。但别慌,Arduino 作为成为最流行的开源平台之一,优势在于有丰富的库。 TI 开发的 ADS1XXX 系列芯片的库已经有不少,只要简单的设置,即可使 用。 现在,我们需要先理解这块芯片的具体性能: 首先,ADS1115 内置的 PGA 可以设置测量范围,最高为 ±6.144V,但千万不要以为它 可以测量 6.144V 的电压,实际上,它最高耐压不能超过 VDD 的0.3V(VDD 为 5V, 实际测量范围< 5.3 V),必须切记,否则可能会损坏芯片。
±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!
- #include <Wire.h>
-
- #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);
- #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads;
- void setup(void)
-
- {
-
- lcd.begin();
- // 切记,测量电压不能超过 VDD 的 0.3V (5V + 0.3V = 5.3V) !
- // PGA 默认值为 2/3 增益
-
- // ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV
-
- 0.1875mV (default)
-
- // ads.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV
-
- 0.125mV
-
- // ads.setGain(GAIN_TWO); // 2x gain +/- 2.048V 1 bit = 1mV
-
- 0.0625mV
-
- // ads.setGain(GAIN_FOUR); // 4x gain +/- 1.024V 1 bit = 0.5mV
-
- 0.03125mV
-
- // ads.setGain(GAIN_EIGHT); // 8x gain +/- 0.512V 1 bit = 0.25mV
-
- 0.015625mV
-
- // ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125mV
-
- 0.0078125mV
-
- ads.begin();
-
-
- }
-
-
- void loop(void)
-
- {
-
- double adc0;
-
- adc0 = ads.readADC_SingleEnded(0);
-
- lcd.setCursor(0,0);
-
- lcd.print("AIN0: "); lcd.print(adc0 * 0.1875 / 1000);
- delay(100); //刷新率有上限,具体请参考 DataSheet
-
-
- }
复制代码
规格书上面写的好像是 2.048v 才是默认值
ADS111X 系列有三种型号,1113,1114 和 1115。只有 1113 是 2.048V。请见TI Datasheep,17 页
全部资料51hei下载地址:
ADS1115 16bit ADC Arduino 教學.docx
(625.25 KB, 下载次数: 72)
Adafruit_ADS1X15-master.zip
(9.11 KB, 下载次数: 34)
对于AC电流针测.pdf
(441.88 KB, 下载次数: 52)
|