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)
|