- Version 1.00
- Télécharger 28
- Taille du fichier 0.19 KB
- Date de création 28 février 2022
- Télécharger
Mise à jour le 22/03/2022: Ce module Gravity basé sur un ADS1115 est un convertisseur analogique vers digital 16 bits contrôlé par le bus I2C. Il permet d'acquérir 4 signaux analogiques de capteurs ou modules vers un microcontrôleur.
Sommaire.
- Information technique .
- Description de l'adresse I2C
- Définir le gain et la plage de tension d'entrée
- Définir le mode de fonctionnement de l'appareil.
- Definition du debit de données
- Définit l'état opérationnel de la conversion
- Tutoriel
- Exemple de schema de cablage
- Programme en 4 onglets
- Onglet principal ( installation des librairie ,configuration des entrees sorties etc )
- Onglet 01 controle en manuel
- Onglet 02 controle du retour par pas
- Onglet 03 deplacement par etape
- Pour tout probléme.
- Retour au menu
Information technique |
Ce module Gravity basé sur un ADS1115 est un convertisseur analogique vers digital 16 bits contrôlé par le bus I2C. Il permet d'acquérir 4 signaux analogiques de capteurs ou modules vers un microcontrôleur.
L'adresse I2C est réglable (0x48 et 0x49) via un inverseur permettant la connexion de deux modules sur le même bus I2C.
Ce module se raccorde sur le port I2C d'une carte compatible Arduino®, Raspberry Pi ou directement sur le shield d'expansion E/S via le cordon inclus. Le convertisseur est également livré avec un connecteur 4 broches droit à souder soi-même.
Caractéristiques:
- Alimentation: 3,3 à 5 Vcc
- Consommation: 3 mA
- Plage de lecture analogique: 0 à Vcc
- Résolution: 16 bits
- Interface I2C (adresse 0x48 ou 0x49 sélectionnable grâce à un inverseur)
- Dimensions: 32 x 32 mm
Paramétrage du convertisseur .
Description de l'adresse I2C .
ADS1115_IIC_ADDRESS0:0x48
ADS1115_IIC_ADDRESS1:0x49
Exemple de code -> ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);
Définir le gain et la plage de tension d'entrée.
eGAIN_TWOTHIRDS ADC Range : 0~6.144V (1 bit = 0.1875 mV)
Plage ADC eGAIN_ONE : 0~4,096 V (1 bit = 0,125 mV)
Plage ADC eGAIN_TWO : 0~2,048 V (1 bit = 0,0625 mV)
Plage ADC eGAIN_FOUR : 0~1,024 V ( 1 bit = 0,03125 mV)
Plage ADC eGAIN_EIGHT : 0~0,512 V (1 bit = 0,015625 mV)
Plage ADC eGAIN_SIXTEEN : 0~0,256 V (1 bit = 0,0078125 mV)
Exemple de code -> ads.setGain(eGAIN_TWOTHIRDS);
Définir le mode de fonctionnement de l'appareil.
eMODE_CONTIN
eMODE_SINGLE
Exemple de code -> ads.setMode(eMODE_SINGLE);
Definition du debit de données
eRATE_8 8 SPS
eRATE_16 16 SPS
eRATE_32 32 SPS
eRATE_64 64 SPS
eRATE_128 128 SPS (par défaut)
eRATE_250 250 SPS
eRATE_475 475 SPS
eRATE_860 860 SPS
Exemple de code -> ads.setRate(eRATE_128);
Définit l'état opérationnel de la conversion
eOSMODE_SINGLE
eOSMODE_BUSY
eOSMODE_NOTBUSY
Exemple de code -> ads.setOSMode(eOSMODE_SINGLE);
.
Tuto |
.
.
Schéma de cablage |
Cablage avec un régulateur xl 6109
.
Cablage avec 2 regulateurs lineaire
.
Code Arduino |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
// // Comment controler le bon fonctionnement d'un servomoteur avec // feedbak // // // Pour RedOhm // par Mazelin-Herve // le 14/03/2022 // // https://github.com/DFRobot/DFRobot_ADS1115 // installation de la librairie pour l'utilisation des servomoteurs #include <Servo.h> // creation d'un objet servo pour contrôler un servomoteur Servo servomoteur; // La bibliothèque Wire est utilisée pour communiquer avec les appareils // I2C/TWI. #include <Wire.h> // librairie pour le pilotage de la carte DFR0553 #include <DFRobot_ADS1115.h> // creation de l'objet DFRobot_ADS1115 DFRobot_ADS1115 ads(&Wire); // déclaration du relais branché sur la broche // de votre carte Arduino servant au debrayage du servo int relais9 = 9; // declaration de la pin adc3 sur la carte dfr0553 // int : entier; la variable est un entier // 16 : nombre de bits sur lesquels la variable sera enregistée // _t : suffixe pour indiquer le type de donnée int16_t adc3; // declaration des variables de travail int passage = 0; // Un programme Arduino doit impérativement contenir cette fonction // Elle ne sera exécutee une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup() { // initialisation de la connexion série // IMPORTANT : le terminal côté PC doit être réglé sur la même valeur. Serial.begin(115200); // on attent que le port de communication soit pret while (!Serial) { ; } // Description de l'adresse I2 ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0); // Définit le gain et la plage de tension d'entrée. ads.setGain(eGAIN_TWOTHIRDS); // Définit le mode de fonctionnement de l'appareil. ads.setMode(eMODE_SINGLE); // Controle du debit de données ads.setRate(eRATE_128); // Définit l'état opérationnel de la conversion ads.setOSMode(eOSMODE_SINGLE); // Initialisation du module ads.init(); // Configure la broche spécifiée pour qu'elle se comporte soit en entrée, // soit en sortie.Dans notre cas en sortie pour le relais // de debrayage pinMode(relais9, OUTPUT); // écrit la valeur HIGH (=1) sur la broche du relais sortie 9 // ce qui active le relais et ce qui coupe l'alimentation // du servomoteur digitalWrite(relais9, HIGH); delay (500); digitalWrite(relais9, LOW); delay (100); // attache le servo a la broche spécifié servomoteur.attach(12); // positionne le servo a 0 servomoteur.write(0); } // Le programme principal s’exécute par une boucle infinie appelée Loop () void loop() { // enregistrement des deplacements en manuel // mode_manuel (); // cycle de fonctionnement par etape deplacement_par_etape(); } |
.
Onglet : 01controle en manuel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// // // Controle en manuel // void mode_manuel () { if (passage == 0) { //Serial.println("Activation de la fonction detach"); servomoteur.detach(); delay (50); // écrit la valeur HIGH (=1) sur la broche du relais sortie 9 // ce qui active le relais et ce qui coupe l'alimentation // du servomoteur digitalWrite(relais9, HIGH); delay (500); digitalWrite(relais9, LOW); delay (100); passage = 1; } // lit la valeur sur la broche 3 du convertisseur // valeur donnée en mVolt adc3 = ads.readVoltage(3); Serial.print(adc3); Serial.print(","); Serial.println(); delay(50); } |
.
Onglet : 02 controle du retour par pas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// // // Controle du retour depart par pas // void mode_pas () { for (int i = 0; i <= 270; i = i + 10) { servomoteur.write(i); delay (50); for ( int a = 0; a <= 5; a++) { // lit la valeur sur la broche 3 du convertisseur // valeur donnée en mVolt adc3 = ads.readVoltage(3); Serial.print(adc3); Serial.print(","); Serial.println(); delay(50); } } } |
.
Onglet : 03 deplacement par etape
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// // void deplacement_par_etape() { servomoteur.write(0); delay (150); for ( int a = 0; a <= 5; a++) { // lit la valeur sur la broche 3 du convertisseur // valeur donnée en mVolt adc3 = ads.readVoltage(3); Serial.print(adc3); Serial.print(","); Serial.println(); delay (500); } servomoteur.write(5); delay (150); for ( int a = 0; a <= 5; a++) { // lit la valeur sur la broche 3 du convertisseur // valeur donnée en mVolt adc3 = ads.readVoltage(3); Serial.print(adc3); Serial.print(","); Serial.println(); delay (500); } |
.
Pour tout probléme |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
Nous avons mis aussi à votre disposition un groupe RedOhm sur Facebook ou vous trouverez un maximun de documentation technique .