Penjelasan Singkat
Module ADC ADS1115 merupakan module yang difungsikan untuk pembacaan Analog Digital Converter (ADC) dengan komunikasi I2C yang beresolusi hingga 16-bit yang terdapat 4 channel.
Secara fungsi mudah digunakan dengan pengukuran berbagai sinyal dengan range tegangan dari 2v hingga 5v, dan ini sangat bagus untuk pengukuran dengan resolusi 16-bit.
Module sangat diperlukan jika kebutuhan ADC melebihi dari total jumlah ADC baik itu module dari arduino, ESP8266, raspaberry, atau mikrokontroler jenis lainnya.
Tapi ini bisa sangat diperlukan untuk module ESP8266 misalnya NodeMCU atau WEMOS D1 dikarenakan dalam module tersebut hanya terdapat 1 ADC saja.
Sehingga dapat dimanfaatkan module ini untuk menambah kebutuhan akan fitur ADC, dan mudahnya pengaksesan menggunakan komunikasi i2c.
Spesifikasi dari module ADS1115
- Terdapat 4 Channel ADC (A0, A1, A2, A3)
- Memiliki resolusi ADC – 16 Bit
- Menggunakan komunikasi antarmuka I2C (SDA, SCL)
- Range Tegangan operasional pada 2.0 – 5.5 Vdc
- Range Tegangan masuk pada channel adc : 0 ~ VDD
- Continuous Mode: Only 150 uA
- Memiliki sampling rate dengan range antara 8 ~ 860 sps (sampling per second)
- Alamat I2C 7-bit pada 0x48 ~ 0x4B
- Single-Shot Mode: Auto Shut-Down
Dalam perbandingan langsung dengan ATmega328P, yaitu 1024 gradasi (10 bit) dibandingkan 65536 gradasi (16 bit).
Tetapi dalam pengaplikasiannya lebih banyak menggunakan variabel yang akan berperan, sehingga dapat mengukur nilai dengan ketelitian yang lebih bagus dibanding menggunakan 10 bit.
Resolusi pembacaan
Selain resolusi yang jauh lebih besar terdapat fitur yang sangat menarik yaitu PGA, atau “Programmable Gain Amplifier”.
Pada dasarnya ini adalah rangkaian yang memungkinkan memperkuat sinyal pada input analog untuk mengambil pembacaan nilai dari rentang ADC, dengan semua kontrol ini dilakukan secara digital melalui register internal yang diakses oleh I2C.
Mengkonfigurasi PGA kita dapat bekerja dengan sinyal dari +/- 256mV hingga +/- 6.144V (jangkauan standar).
Module ADC ini memiliki MUX internal yang memungkinkan untuk memilih antara 4 saluran tunggal atau 2 saluran diferensial.
Untuk konfigurasinya sinyal secara langsung direferensikan ke GND dari rangkaian dan input analog itu sendiri hanya membutuhkan satu jalur sinyal.
[irp]
Dalam konfigurasi diferensial, ADC akan mengkonversi sinyal diferensial, yaitu beda potensial antara dua titik, serupa dengan apa yang terjadi dengan multimeter. Dalam konfigurasi ini diperlukan dua input yang akan dihubungkan ke tempat tujuan, selain GND yang juga harus umum untuk menghindari melebihi batas komponen.
Satu catatan penting, sinyal pada input tidak boleh melebihi tegangan “Vcc + 0.3V” atau “GND – 0.3V”. Meskipun komponen memiliki perlindungan internal, melebihi level ini akan membuat perangkat berisiko. Singkatnya, sinyalnya tidak bisa lebih besar dari catu daya dan juga tidak negatif mengacu pada bumi.
ADS1115 memiliki pin “ADDR” yang bertanggung jawab untuk mengkonfigurasi alamat perangkat pada bus I2C. Hal yang paling menarik adalah bahwa hanya dengan satu pin kita mendapatkan 4 alamat berbeda. Secara total bisa didapatkan hingga 16 saluran tunggal atau 8 diferensial pada satu bus I2C.
Berikut tabel konfigurasi ADDR
ADDR connected to: | Address (binary) | Address (hexadecimal) |
VDD | 1001001 | 49h |
GND | 1001000 | 48h |
SDA | 1001010 | 4Ah |
SCL | 1001011 | 4Bh |
Konfigurasi addr sesuai tabel diatas
Tutorial mengakses Module ADC ADS1115 menggunakan NodeMCU ESP8266
Bahan yang diperlukan :
- NodeMCU
- Komputer + Software IDE Arduino
- Sensor Suhu LM35
- Kabel Jumper
- LCD 16×2
- PCF8574
Skema yang dirangkaikan
Library yang dibutuhkan : [ddownload id=”2387″]
Pеlеtаkаn Lіbrаrу раdа mаѕіng – mаѕіng Oреrаtіоn Sуѕtеm
- PC (Wіndоwѕ) : Prоgrаm fіlе(x86)/Arduіnо/ lіbrаrіеѕ
- Mас : (hоmе dіrесtоrу)/Aррlісаtіоnѕ/Arduіnо (Shоw Pасkаgе Cоntеnt)/Cоntеntѕ/Jаvа/Lіbrаrіеѕ
- Lіnux : (hоmе dіrесtоrу)/ѕkеtсhbооk/lіbrаrіеѕ
Kode program nodemcu rangkaian diatas
[lockercat]
#include <Wire.h> //library untuk interface i2c #include <LiquidCrystal_PCF8574.h> //library untuk mengakses driver lcd pcf8574 #include <Adafruit_ADS1015.h> #define ADC_16BIT_MAX 65365 //menggunakan resolusi 10 bit //dapat dicek menggunakan i2c scanner Adafruit_ADS1115 ads(0x48); LiquidCrystal_PCF8574 lcd(0x38); float ads_bit_Voltage; float lm35_constant; void setup() { Wire.begin(2,00); //dikarenakan dikoneksikan ke D3, dan D4 cek persamaan GPIO nya Serial.begin(115200); //baud komunikasi serial monitor lcd.begin(16, 2); // 16 baris, 2 kolom lcd.setBacklight(255); //menyalakan lampu latar lcd.setCursor(00,00); lcd.print("nyebarilmu.com"); lcd.setCursor(00,1); lcd.print("*ADS1115-ADC*"); delay(3000); while (!Serial); ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV 0.1875mV (default) ads.begin(); float ads_InputRange = 6.144f; ads_bit_Voltage = (ads_InputRange * 2) / (ADC_16BIT_MAX - 1) *3.3; /* LM35 - kenaikan suhu - 10mV/oC */ lm35_constant = 10.0f / 1000; Serial.println(); Serial.print("ADS volt/bit: "); Serial.print(ads_bit_Voltage * 1000, 4); Serial.println(" mV/bit"); Serial.println(); Serial.println(); Serial.println("ADS RAW \tADS Temp."); lcd.clear(); } void loop (void) { int16_t ads_ch0 = 0; int16_t nano_ch0_0 = 0; int16_t nano_ch0_1 = 0; float ads_Voltage_ch0 = 0.0f; float ads_Temperature_ch0 = 0.0f; ads_ch0 = ads.readADC_SingleEnded(0); ads_Voltage_ch0 = ads_ch0 * ads_bit_Voltage; ads_Temperature_ch0 = ads_Voltage_ch0 / lm35_constant; Serial.print(ads_ch0); Serial.print("\ t \ t"); Serial.print(ads_Temperature_ch0, 3); Serial.print("\ t \ t"); Serial.println(); lcd.setCursor(00,00); lcd.print("Suhu terbaca :"); lcd.setCursor(00,1); lcd.print(ads_Temperature_ch0, 3); delay(500); }
[/lockercat]