Modulo convertitore ADC 16-bit 4 Canali ADS1115

ultimo aggiornamento 12 gennaio 2019


 

Indice

Descrizione del modulo

Il Modulo Convertitore ADC 16-bit 4 Canali ADS1115 può essere utilizzato con microcontrollori senza convertitore ADC o per aumentare il numero degli I/O analogici oppure, ancora quando si desidera un ADC ad elevata precisione.

Il modulo sensore è venduto dalla Homotix con codice HMT1115.
Il suo costo si aggira sui 3,4 €

L'integrato utilizzato tipo ADS1115 offre una precisione di 16-bit con 860 campionamenti al secondo, i 4 ingressi possono essere configurati come 4 canali single-ended oppure come 2 canali differenziali.
Il modulo si interfaccia tramite I2C e può funzionare con una tensione di alimentazione compresa tra 2Vcc e 5Vcc, all'interno del chip ADS1115 sono anche presenti un amplificatore con un guadagno programmabile fino a 16 volte ed un comparatore.

homotix

L'indirizzo dell'interfaccia I2C può essere settato con 4 valori diversi permettendo di utilizzare fino a 4 ADS1115 su un singolo bus I2C.

Caratteristiche Principali:

Schema elettrico del modulo

Lo schema elettrico è molto semplice, in quanto tutte funzioni sono svolte dall'integrato ADS1115, sono necessari solo pochi componenti esterni, tra cui due ferriti MMZ2012Y152BT000, impedenza 1500 Ω a 100MHz poste sulla linea di alimentazione e GND, e delle resistenza di pull up da 10 kΩ. sul bus I2C che servono per tenere le due linee SDA e SCL agganciate a 1 logico.
La tensione di alimentazione VDD può essere nel range di 2-5.5VDC. La corrente assorbita è limitata a 150uA durante la conversione.

La resistenza R3 posta sul pin ADDR, imposta il valore dell'indirizzo del modulo pari a quello di default ossia 0x48 (1001000) , ma è possibile attribuire altri valori che sono:

Valore indirizzo Address collegato a
0x48 (1001000) GDD Default
0x49 (1001001) VDD
0x4A (1001010) SDA
0x4B (1001011) SCL

Immagine tratta dal sito Henry’s Bench

Principali componenti del modulo

ADS111x Ultra-Small, Low-Power, I2C-Compatible, 860-SPS, 16-Bit ADCs

Piedinatura Datasheet Foto dell'integrato


MMZ2012Y152BT000 Chip Ferrite Beads
Piedinatura Datasheet Foto della ferrite

Foto del modulo

Disimballaggio del modulo

Il Modulo Convertitore ADC 16-bit 4 Canali ADS1115 è fornito in una bustina antistatica con una Pinstrip da 10 pin maschio che andrà saldata al PCB.

Libreria di gestione per Arduino

Per facilitare la gestione del Modulo Convertitore ADC 16-bit 4 Canali ADS1115 è disponibile una speciale libreria che può essere scaricata facilmente facendo uso della funzione Gestione librerie dell''IDE

A questo punto basterà inserire nel campo ricerca "ADS1x15", in questo modo apparirà la libreria creata dalla Adafruit.

Al termine dell'installazione apparirà la dicitura "INSTALLED"

Ora andando sotto la sezione Esempi, potrete trovare sotto la cartella "Esempi da librerie personalizzate" gli esempi inerenti la libreria Adafruit ADS1x16

Test di prova Modulo

Come abbiamo visto il Modulo Convertitore ADC 16-bit 4 Canali ADS1115 nasce per essere utilizzato con microcontrollori senza convertitore ADC o per aumentare il numero degli I/O analogici oppure, ancora quando si desidera un ADC ad elevata precisione.
In questo caso lo utilizzeremo per aumentare gli ingressi analogici di un modulo Wemos D1 mini, che di ingressi che possiede solamente uno.

Modulo WeMos D1 mini

Il Modulo WeMos D1 mini è basato sul microcontrollore Wi-Fi ESP8266 ESP-12F che può essere programmato utilizzando l'IDE di Arduino oppure NodeMCU. La semplicità della programmazione che può essere effettuata anche in modalità wireless e l'ampia disponibilità di shield aggiuntivi permettono di sviluppare il proprio progetto di "Internet delle cose" in tempi estremamente rapidi.
Il modulo WeMos D1 mini  è dotato di una interfaccia USB realizzata tramite il convertitore seriale-USB CH340
Dal connettore USB viene anche prelevata l'alimentazione a 5V, un regolatore interno (tipo RT9013) si occupa di generare l'alimentazione a 3,3V per il modulo ESP-12F. Per evitare confusione tutti i pin di I/O sono chiaramente etichettati.
Nota: Tutti gli I/O supportano una tensione massima di 3,3V

Modulo KY-023 XY axis joystick module

Il modulo Modulo Convertitore ADS1115 sarà utilizzato per leggere i valori analogici forniti da due moduli KY-023 XY axis joystick module che fa parte della serie "37 In 1 Sensor Module Board Set Kit For Arduino", il sensore è analogo a quello installato su joystick della playstation sullePS2, è un sensore di tipo analogico e fornisce le coordinate X e Y tramite i pin analogici.
La pressione del pulsante viene trasmesso tramite pin digitale.
Il modulo è essenzialmente composto da due potenziometri per le X-Y e da un micro switch per il pulsante

 

 
Schema dei collegamenti
 
Per i collegamenti occorre fare riferimento allo schema sotto riportato, per questo si è utilizzato una breadboard, per l'alimentazione si è utilizzato un apposto alimentatore da breadboard  impostato per fornire 5V.
Per verificare i valori forniti dal convertitore si è montato sul modulo WeMos D1 mini il relativo OLED Shield
 
 
Modulo alimentatore per Breadboard OLED Shield per Wemos D1 mini
 
 

Immagine tratta dal sito Henry’s Bench

Listato del programma

Per il funzionamento del programma, visto l'utilizzo del modulo OLED sono necessarie alcune librerie, per questo motivo vi dovrete riferire alla pagina OLED shield per come dovrete caricarle.

Programma 

/*
  test_ads1115_display.ino
  Lo sketch legge il valore letto dai 4 canali ADC e mostra sul
  display tre valori (0 1 2) a seconda della posizione del Joystik

  Creato il 12/01/2019 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog https://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#include <Wire.h>
#include <Adafruit_ADS1015.h>

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

Adafruit_ADS1115 ads(0x48);

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Hello!");

  Serial.println("Getting single-ended readings from AIN0..3");
  Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
  ads.begin();

  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  // Cancellazione schermo e buffer
  display.clearDisplay();

  // Messaggio iniziale
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" ADRIROBOT");
  display.println("  TEST  ");
  display.println(" MODULO ");
  display.println(" ADS1115 ");
  display.display();
  delay(2000);
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
}

void loop()
{
  int16_t adc0, adc1, adc2, adc3;

  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);

  Serial.print("AIN0: ");
  Serial.println(adc0);
  Serial.print("AIN1: ");
  Serial.println(adc1);
  Serial.print("AIN2: ");
  Serial.println(adc2);
  Serial.print("AIN3: ");
  Serial.println(adc3);
  Serial.println(" ");

  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.print("Joystick 1");
  display.setTextColor(WHITE);
  display.print("AIN0:");
  adc0 = map(adc0, 0, 26700, 0, 3);   // Scala di lettura ADC0
  display.println(adc0);
  display.print("AIN1:");
  adc1 = map(adc1, 0, 26700, 0, 3);   // Scala di lettura ADC1
  display.println(adc1);
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.print("Joystick 2");
  display.setTextColor(WHITE);
  display.print("AIN2:");
  adc2 = map(adc2, 0, 26700, 0, 3);   // Scala di lettura ADC2
  display.println(adc2);
  display.print("AIN3:");
  adc3 = map(adc3, 0, 26700, 0, 3);   // Scala di lettura ADC3
  display.println(adc3);
  display.display();
  delay(500);
}

Filmato

 

 

 

Elenco revisioni

12/01/2019

Emissione preliminare
Private Policy Cookie Policy