23
Projet microcontrôleur #28: Capteur de toucher avec Arduino et ADS1115 FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr Sommaire 1 Objectifs 2 Vidéos démonstration 3 Les caractéristiques techniques du convertisseur A/N ADS1115 4 Amplificateur à gain programmable (PGA) 4.1 GAIN Vs Dynamique de la mesure: 4.2 Dynamique Vs Précision 5 Fonctionnement 6 Programmation Arduino 6.1 Librairies Arduino 6.2 Programme principal commenté 7 Photo du projet 8 Téléchargement du projet

Projet microcontrôleur #28: Capteur de toucher avec

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Sommaire1 Objectifs2 Vidéos démonstration3 Les caractéristiques techniques du convertisseur A/N ADS11154 Amplificateur à gain programmable (PGA)

4.1 GAIN Vs Dynamique de la mesure:4.2 Dynamique Vs Précision

5 Fonctionnement6 Programmation Arduino

6.1 Librairies Arduino6.2 Programme principal commenté

7 Photo du projet8 Téléchargement du projet

Page 2: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

ObjectifsSavoir les caractéristiques techniques du convertisseur ADC ADS1115Savoir configurer le gain et la fréquence d’échantillonne du convertisseur ADS1115Savoir programmer le convertisseur avec ArduinoSavoir utiliser le convertisseur comme capteur de touchéEtc.

Vidéos démonstration

Les caractéristiques techniques duconvertisseur A/N ADS1115

Page 3: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Les composants ADS1113, ADS1114 et ADS1115 (ADS111x) sont des convertisseursanalogique-numérique (CAN) ou (ADC) d’une résolution de 16 bits d’une grande précision,compatibles avec l’interface I2C. Le convertisseur intègre une référence de tension à faibledérive et un oscillateur. Le ADS1114 et ADS1115 également intègrent un amplificateur à gainprogrammable (PGA) et un comparateur numérique. Ces deux fonctionnalités d’un largedomaine d’application rendent l’ADS111x bien adapté aux applications des capteurs àcontraintes de puissance e et de l’encombrement.

L’ADS111x effectué des conversions avec des débits de données supérieurs à 860échantillons par seconde (SPS). La tension à l’entrée du PGA variée de ± 256 mV à ± 6.144V, ce qui permet la mesure des signaux de grandes ou petites amplitudes. L’ADS1115 estdoté aussi d’un multiplexeur à l’entrée (MUX) qui permet d’avoir 2 entrées différentielles ou 4en mode single. Ci-dessous les caractéristiques techniques du composant et son datasheet.

Page 4: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Package: X2QFN: 2 mm × 1,5 mm × 0,4 mmRésolution binaire: 16 bitsAmplificateur à gain programmable intégré PGA (8 gains)Tension d’alimentation: 2,0 V à 5,5 VCourant nominal: 150 μA (Mode de conversion continue)Débit de données programmable: 8 SPS à 860 SPS

Page 5: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Règlement à cycle uniqueRéférence de tension interne à faible dériveOscillateur interneInterface I2C: adresses sélectionnables à quatre brochesQuatre entrées asymétriques ou deux entrées différentielles (ADS1115)Comparateur programmable (ADS1114 et ADS1115)Température de fonctionnement: –40 ° C à + 125 ° CAutres: Voir le datasheet

Amplificateur à gain programmable(PGA)Le circuit dispos de trois bits de contrôles dédiés à la configuration du gain de l’amplificateuren aval du convertisseur A/N interne du circuit. Le PGA permet d’augmenter la précision de lamesure. En effet grâce à l’utilisation du PGA, le convertisseur peut mesurer des tensions del’ordre de 7.8125 μV (Fort gain). Ci-dessous le tableau récapitulatif de la précision et ladynamique de mesure en fonction de l’état des bits.

GAIN Vs Dynamique de la mesure:000 : FSR = ±6.144 V(1)001 : FSR = ±4.096 V(1)010 : FSR = ±2.048 V (default)011 : FSR = ±1.024 V100 : FSR = ±0.512 V101 : FSR = ±0.256 V110 : FSR = ±0.256 V111 : FSR = ±0.256 V

Page 6: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Dynamique Vs Précision

FonctionnementNous constatons pour un fort gain que le convertisseur peut mesurer une tension de l’ordrede 7.8µC qui n’est pas faisable pour les convertisseurs A/N de l’Arduino (Résolution 10 bits,précision d’environ 50mV). En effet grâce à l’ADS1115 on peut détecter des tensions de trèsfaibles valeurs qui peuvent être manifestées lorsqu’un utilisateur touche une entréeanalogique. Après des tests, nous constatons que la tension de l’entrée effectivementaugmente lorsqu’on touche l’entrée. La variation est de l’ordre de 70-110mV lorsqu’onbranche une résistance entre l’entrée analogique (A0) et la masse, mais d’une valeur stable.La valeur mesurée est en revanche importante lorsque l’entrée est en air, par contre lavaleur est fluctuante. Ci-dessous les deux configurations:

Page 7: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 8: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 9: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 10: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Programmation Arduino

Librairies ArduinoInterface I2CConvertisseur ADS1115

Programme principal commenté#include <I2Cdev.h>

/*-----------------------------------------------Librairies Arduino-----------------------------------------------

Page 11: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

I2C: https://github.com/jrowberg/i2cdevlibADS1115: https://github.com/addicore/ADS1115

-----------------------------------------------Branchement Arduino-ADS1115:-----------------------------------------------ADS1115 --> UNO VDD 5V GND GND SCL A5 (or SCL) SDA A4 (or SDA) ALRT 2-----------------------------------------------Paramètres du Gain:-----------------------------------------------ADS1115_PGA_6P144 0x00ADS1115_PGA_4P096 0x01ADS1115_PGA_2P048 0x02 // defaultADS1115_PGA_1P024 0x03ADS1115_PGA_0P512 0x04ADS1115_PGA_0P256 0x05ADS1115_PGA_0P256B 0x06

0 : FSR = ±6.144 V(1)1 : FSR = ±4.096 V(1)2 : FSR = ±2.048 V (default)3 : FSR = ±1.024 V4 : FSR = ±0.512 V5 : FSR = ±0.256 V6 : FSR = ±0.256 V7 : FSR = ±0.256 V

-----------------------------------------------Paramètres de la fréquence de mesure:-----------------------------------------------ADS1115_RATE_8 0x00ADS1115_RATE_16 0x01ADS1115_RATE_32 0x02ADS1115_RATE_64 0x03ADS1115_RATE_128 0x04 // defaultADS1115_RATE_250 0x05ADS1115_RATE_475 0x06ADS1115_RATE_860 0x07

Page 12: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

*/

#include "ADS1115.h"

ADS1115 adc0(ADS1115_DEFAULT_ADDRESS);

// Paramètresconst int alertReadyPin = 2;const int AlarmePin=3;double ADC_mV=0.0;double Seuil_Alarme_mV=50.0;

void setup() { //Connexion du bus I2C Wire.begin();

// Init interface série Serial.begin(115200);

// Test de la connectivité Serial.println("Testing device connections..."); Serial.println(adc0.testConnection() ? "ADS1115 connexion réussie" : "ADS1115connexion non établie");

// Initiation du convertisseur ADS1115 adc0.initialize();

// Mode: Lecture unique (Il existe le mode continu!) adc0.setMode(ADS1115_MODE_SINGLESHOT); // Affectation de la fréquence d'échantillonnage (16SPS) adc0.setRate(ADS1115_RATE_16); // Affectation du Gain adc0.setGain(ADS1115_PGA_0P512);

// Connexion de l'indicateur de fin de conversion pinMode(alertReadyPin,INPUT); adc0.setConversionReadyPinMode();

// Alarme pinMode(AlarmePin,OUTPUT);}

void loop(){

Page 13: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

// Sélection de l'entrée (A0) adc0.setMultiplexer(ADS1115_MUX_P0_NG);

// Lancement de la conversion adc0.triggerConversion();

// Test la fin de la conversion pollAlertReadyPin();

// Lecture du convertisseur en mV ADC_mV=abs(adc0.getMilliVolts(false));

// Affichage de la valeur acquise Serial.print("A0: "); Serial.print(ADC_mV); Serial.println("mV");

// Déclanchement de l'alarme if (ADC_mV > Seuil_Alarme_mV) { digitalWrite(AlarmePin, HIGH); } else { digitalWrite(AlarmePin, LOW); }

// Attente (Attention à la fréquence de la mesure!) delay(250);}

// Fonction affichage de l'état de conversion après 100000 tentativesvoid pollAlertReadyPin(){ for (uint32_t i = 0; i<100000; i++) if (!digitalRead(alertReadyPin)) return; Serial.println("Failed to wait for AlertReadyPin, it's stuck high!");}

Page 14: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Photo du projet

Page 15: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 16: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 17: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 18: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 19: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 20: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 21: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Page 22: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

Téléchargement du projetArduino: Capteur de toucher avec Arduino et ADS1115

Tout les projets microcontrôleur

Click to rate this post!

Page 23: Projet microcontrôleur #28: Capteur de toucher avec

Projet microcontrôleur #28: Capteur de toucher avec Arduino etADS1115

FPGA | Arduino | Matlab | Cours @ www.electronique-mixte.fr

[Total: 1 Average: 5]