Table des matières:

Arduino et le CAN 16 bits TI ADS1110 : 6 étapes
Arduino et le CAN 16 bits TI ADS1110 : 6 étapes

Vidéo: Arduino et le CAN 16 bits TI ADS1110 : 6 étapes

Vidéo: Arduino et le CAN 16 bits TI ADS1110 : 6 étapes
Vidéo: Arduino Nano ADS1100 I2C Analog to Digital Converter Tutorial 2024, Juillet
Anonim
Arduino et l'ADC 16 bits TI ADS1110
Arduino et l'ADC 16 bits TI ADS1110

Dans ce didacticiel, nous examinons l'utilisation d'Arduino pour travailler avec le Texas Instruments ADS1110 - un CI convertisseur analogique-numérique 16 bits incroyablement petit mais utile.

Il peut fonctionner entre 2,7 et 5,5 V, il convient donc également à Arduino Due et à d'autres cartes de développement à basse tension. Avant de continuer, veuillez télécharger la fiche technique (pdf) car elle vous sera utile et référencée au cours de ce tutoriel. L'ADS1110 vous offre l'option d'un ADC plus précis que celui offert par les ADC 10 bits de l'Arduino - et il est relativement facile à utiliser. Cependant, il n'est disponible qu'en tant que pièce nue dans SOT23-6.

Étape 1:

Image
Image

La bonne nouvelle est que vous pouvez commander l'ADS1110 monté sur une carte de dérivation très pratique. L'ADS1110 utilise le bus I2C pour la communication. Et comme il n'y a que six broches, vous ne pouvez pas définir l'adresse du bus - à la place, vous pouvez choisir parmi six variantes de l'ADS1110 - chacune avec sa propre adresse (voir la page deux de la fiche technique).

Comme vous pouvez le voir sur la photo ci-dessus, le nôtre est marqué "EDO" qui correspond à l'adresse de bus 1001000 ou 0x48h. Et avec les exemples de circuits, nous avons utilisé des résistances de rappel de 10 kΩ sur le bus I2C.

Vous pouvez utiliser l'ADS1110 comme ADC asymétrique ou différentiel. Mais nous devons d'abord examiner le registre de configuration qui est utilisé pour contrôler divers attributs, et le registre de données.

Étape 2: Registre de configuration

Rendez-vous à la page onze de la fiche technique. Le registre de configuration a une taille d'un octet et, comme l'ADS1110 se réinitialise lors d'un cycle d'alimentation, vous devez réinitialiser le registre si vos besoins sont différents des valeurs par défaut. La fiche technique l'explique assez clairement… les bits 0 et 1 déterminent le réglage de gain pour le PGA (amplificateur de gain programmable).

Si vous ne faites que mesurer des tensions ou expérimenter, laissez-les à zéro pour un gain de 1V/V. Ensuite, le débit de données de l'ADS1110 est contrôlé avec les bits 2 et 3. Si vous avez activé l'échantillonnage continu, cela détermine le nombre d'échantillons par seconde pris par l'ADC.

Après quelques expériences avec un Arduino Uno, nous avons constaté que les valeurs renvoyées par l'ADC étaient un peu erronées lors de l'utilisation du taux le plus rapide, alors laissez-le à 15 SPS, sauf indication contraire. Le bit 4 définit soit l'échantillonnage continu (0), soit l'échantillonnage ponctuel (1). Ignorez les bits 5 et 6, mais ils sont toujours définis sur 0.

Enfin, le bit 7 - si vous êtes en mode d'échantillonnage unique, le définir sur 1 demande un échantillon - et le lire vous dira si les données renvoyées sont nouvelles (0) ou anciennes (1). Vous pouvez vérifier que la valeur mesurée est une nouvelle valeur - si le premier bit de l'octet de configuration qui vient après les données est 0, c'est nouveau. S'il renvoie 1, la conversion ADC n'est pas terminée.

Étape 3: Registre des données

Comme l'ADS1110 est un CAN 16 bits, il renvoie les données sur deux octets, puis suit avec la valeur du registre de configuration. Donc, si vous demandez trois octets, tout revient. Les données sont sous forme de "complément à deux", qui est une méthode d'utilisation de nombres signés avec binaire.

La conversion de ces deux octets se fait par quelques calculs simples. Lors de l'échantillonnage à 15 SPS, la valeur renvoyée par l'ADS1110 (pas la tension) se situe entre -32768 et 32767. L'octet supérieur de la valeur est multiplié par 256, puis ajouté à l'octet inférieur - qui est ensuite multiplié par 2,048 et enfin divisé par 32768. Ne paniquez pas, comme nous le faisons dans l'exemple de croquis à venir.

Étape 4: Mode ADC asymétrique

Mode ADC asymétrique
Mode ADC asymétrique

Dans ce mode, vous pouvez lire une tension comprise entre zéro et 2,048 V (qui se trouve également être la tension de référence intégrée pour l'ADS1110). L'exemple de circuit est simple (tiré de la fiche technique).

N'oubliez pas les résistances pull-up de 10kΩ sur le bus I2C. L'esquisse suivante utilise l'ADS1110 dans le mode par défaut et renvoie simplement la tension mesurée:

// Exemple 53.1 - Voltmètre simple face ADS1110 (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 float voltage, data; octet highbyte, lowbyte, configRegister; void setup() { Serial.begin(9600); Fil.begin(); } boucle vide() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // s'assurer que toutes les données arrivent { highbyte = Wire.read(); // octet de poids fort * B11111111 octet de poids faible = Wire.read(); // octet bas configRegister = Wire.read(); }

données = octet élevé * 256;

données = données + octet bas; Serial.print("Données >> "); Serial.println(données, DEC); Serial.print("Tension >> "); tension = données * 2.048; tension = tension / 32768,0; Serial.print(tension, DEC); Serial.println("V"); retard(1000); }

Étape 5:

Image
Image

Une fois téléchargé, connectez le signal à mesurer et ouvrez le moniteur série - vous verrez quelque chose de similaire à l'image du moniteur série montrée dans cette étape.

Si vous devez modifier le gain de l'amplificateur de gain programmable interne de l'ADC, vous devrez écrire un nouvel octet dans le registre de configuration en utilisant:

Wire.beginTransmission(ads1110);Wire.write(octet de configuration); Wire.endTransmission();

avant de demander les données ADC. Ce serait 0x8D, 0x8E ou 0x8F pour des valeurs de gain de 2, 4 et 8 respectivement - et utiliser 0x8C pour réinitialiser l'ADS1110 à sa valeur par défaut.

Étape 6: Mode ADC différentiel

Mode ADC différentiel
Mode ADC différentiel

Dans ce mode, vous pouvez lire la différence entre deux tensions qui tombent chacune entre zéro et 5 V. L'exemple de circuit est simple (à partir de la fiche technique).

Il faut noter ici (et dans la fiche technique) que l'ADS1110 ne peut accepter des tensions négatives sur aucune des entrées. Vous pouvez utiliser le schéma précédent pour les mêmes résultats - et la tension résultante sera la valeur de Vin- soustraite de Vin+. Par exemple, si vous aviez 2 V sur Vin+ et 1 V sur Vin-, la tension résultante serait de 1 V (avec le gain réglé sur 1).

Encore une fois, nous espérons que vous avez trouvé cela intéressant et peut-être utile. Cet article vous est présenté par pmdway.com - tout pour les fabricants et les passionnés d'électronique, avec une livraison gratuite dans le monde entier.

Conseillé: