Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir

Le Raspberry Pi est un excellent appareil pour divers projets électroniques, mais en utilisant un convertisseur ADC, vous pouvez étendre ses capacités pour mesurer des signaux analogiques et interagir avec une plus large gamme d'appareils.

Le Raspberry Pi manque généralement d’entrées analogiques. Cela le désavantage par rapport aux cartes basées sur un microcontrôleur comme l'Arduino.

Mais ne désespérez pas : de nombreuses options s’offrent à vous. Vous pouvez démarrer avec un Raspberry Pi et un ADC externe. Dans ce guide, nous vous donnerons un aperçu complet de la façon d'utiliser un convertisseur ADC avec un Raspberry Pi, en nous concentrant sur les étapes clés et les avantages potentiels. Poursuivez votre lecture pour découvrir comment vous pouvez tirer le meilleur parti de votre appareil et l'intégrer efficacement dans vos projets électroniques. Vérifier Qu'est-ce qu'un convertisseur analogique-numérique (ADC) ? Comprendre son travail et son importance à l'ère du numérique.

Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir - Raspberry Pi

Pourquoi voudriez-vous ajouter des entrées ?

Le monde réel regorge de phénomènes qui peuvent être facilement décrits en utilisant la tension, si vous disposez des circuits appropriés. Convertissez ces tensions électriques sous forme numérique et vous pouvez les enregistrer, les traiter et les utiliser pour contrôler des paramètres et d'autres appareils.

Peut-être cherchez-vous à surveiller l'humidité de votre sol, la température de votre serre ou le poids de votre hamster. Vous cherchez peut-être à ajouter un contrôle de volume à votre Pi, à créer un égaliseur ou à concevoir un joystick à partir de zéro. Les possibilités, plus ou moins, sont illimitées.

Options CAN

Alors, quel ADC convient le mieux aux débutants ?

Parmi les options les plus populaires et les plus simples figurent les chipsets MCP3004 (Et MCP3008) de Microchip. Vous obtiendrez quatre (ou huit) canaux 10 bits, capables de lire jusqu'à 200 111 SPS. D'un autre côté, il existe des appareils ADS16x de Texas Instruments, qui lisent 860 bits à XNUMX SPS. Il existe donc un compromis entre vitesse et précision (et, bien sûr, prix).

De nombreux microcontrôleurs sont équipés de convertisseurs ADC intégrés. L'ATMega que vous trouvez dans l'Arduino moyen fournira plusieurs canaux 10 bits, ainsi que tout le reste. C'est ce qui permet à l'Arduino de fournir des entrées analogiques là où le Raspberry Pi ne le peut pas. Si vous avez déjà un Arduino impliqué dans votre configuration et que 10 bits suffisent, cela peut en fait être la méthode la plus simple.

Ici, on va faire simple, avec l'ADS1115 d'Adafruit. Vérifier Les avantages et les inconvénients de l'utilisation d'un clone Arduino dans vos projets.

Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir - Raspberry Pi

Qu'est-ce qu'un amplificateur à gain programmable ?

Cette puce est dotée de fonctionnalités intéressantes, notamment un amplificateur de gain programmable (PGA). Ce qui vous permettra d'ajuster numériquement la plage de valeurs souhaitée, jusqu'à une fraction de tension. Avec le nombre de valeurs que peuvent représenter 16 bits, cela vous permettra de détecter des différences aussi minimes que quelques microvolts.

L'avantage ici est que vous pouvez modifier le gain au milieu. D'autres puces, comme la MCP3004, adoptent une approche différente ; Il est livré avec une broche supplémentaire pour laquelle vous pouvez fournir une tension de référence.

Et le multiplexage ?

Un multiplexeur (ou mux) est un commutateur qui vous permet de lire plusieurs entrées avec un seul ADC. Si votre puce ADC possède plusieurs ports d'entrée, un certain multiplexage interne se produit. Le multiplexeur de l'ADS1115 autorise quatre entrées, que vous pouvez sélectionner via des registres internes.

Gestion des enregistrements

L'ADS1115 offre ces options, ainsi que quelques autres. Vous pouvez manipuler le multiplexeur, régler le gain, activer le comparateur intégré, modifier la fréquence d'échantillonnage et mettre l'appareil en mode veille à faible consommation, le tout en appuyant sur quelques touches.

Mais où sont ces clés ? Ils existent à l’intérieur du package, sous la forme de très petits éléments de mémoire appelés registres. Pour activer une fonctionnalité particulière, définissez simplement le bit concerné sur 1, au lieu de 0.

En regardant une fiche technique ADS111xVous constaterez que ces modèles sont livrés avec quatre registres, y compris des registres de configuration qui régissent le comportement de l'appareil.

Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir - Raspberry Pi

Par exemple, les bits 14 à 12 contrôlent le multiplexeur. Grâce à ces trois bits, vous pouvez choisir parmi huit configurations. Le nombre que vous voulez ici est « 100 », qui donnera la différence entre l’entrée zéro et le minimum. D'un autre côté, les bits 7 à 5 contrôlent la fréquence d'échantillonnage. Si vous souhaitez un maximum de 860 échantillons par seconde, vous pouvez le régler sur « 111 ».

Une fois que vous savez quelles options vous souhaitez définir, vous aurez deux octets à envoyer à l'ADC. Si vous souhaitez ultérieurement définir un seul bit ici ou là, vous pouvez les gérer individuellement à l'aide d'opérateurs de bits.

C’est là que cela peut prêter à confusion. Dans ce cas, le binaire ne représente pas une valeur, mais plutôt les valeurs des transformateurs individuels. Vous pouvez exprimer ces variables sous la forme d'un grand nombre, en décimal ou en hexadécimal. Mais si vous voulez éviter le stress, vous devez vous en tenir à la version binaire, plus facile à lire.

Fils de connexion

Vous pouvez connecter cet adaptateur directement au panneau unique. Il acceptera des entrées de tension positive entre 2 et 5.5 volts, ce qui signifie que le rail 3.3 volts du Raspberry Pi fonctionnera très bien.

Connectez les entrées SDA et SCL à leurs homologues du RPi et faites les mêmes choses avec la masse et le 3.3 V. Obtenez un voltmètre entre la terre et les lignes de tension, puis placez le fil du milieu dans la première entrée de l'ADC. C'est tout ce dont vous avez besoin pour commencer !

Gérer I2C

Différents ADC fonctionnent sur différents protocoles. Dans le cas de l'ADS1115, nous utiliserons I2C.

L'exemple suivant interagira avec l'ADC à l'aide de Python. Mais avant de faire cela, vous devrez le configurer. Les versions récentes du système d'exploitation Raspberry Pi ont rendu cela très simple. Aller à Préférences > Configuration Raspberry Pi. Ensuite, depuis l'onglet Interfaces, activez I2C.

Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir - Raspberry Pi

Pour vérifier que tout fonctionne, ouvrez Terminal et exécutez :

sudo i2cdetect -y 1

Cette commande produira un maillage. En supposant que tout fonctionne et que vous l'avez connecté correctement, vous verrez une nouvelle valeur apparaître dans la grille. Il s'agit de l'adresse de votre ADC. Gardez à l'esprit ici qu'il s'agit d'une valeur hexadécimale, vous devez donc la préfixer par « 0x » lorsque vous l'utilisez dans le code ci-dessous. Et voici 0x48 :

Étendre les capacités de votre Raspberry Pi avec un convertisseur ADC : ce que vous devez savoir - Raspberry Pi

Une fois que vous avez l'adresse, vous pouvez utiliser la bibliothèque SMBus pour envoyer des commandes I2C. Vous traiterez ici de deux méthodes. Le premier est write_word_data(), qui accepte trois arguments : l'adresse de l'appareil, le registre dans lequel vous écrivez et la valeur que vous souhaitez écrire.

La seconde est read_word_data(), Qui n'accepte que l'adresse et l'historique de l'appareil. L'ADC lira les tensions en continu et stockera le résultat dans le registre de commutation. En utilisant cette méthode, vous pouvez récupérer le contenu de cet enregistrement.

Vous pouvez embellir un peu le résultat, puis l'imprimer. Avant de revenir au début de la boucle, effectuez une courte pause. Cela garantira que vous n’êtes pas submergé de données.

from smbus import SMBus
import time
addr = 0x48
bus = SMBus(1)

# set the registers for reading
CONFIGREG = 1
CONVERSIONREG = 0

# set the address register to point to the config register
# write to the config registers
bus.write_word_data(addr, CONFIGREG, (0b00000100 << 8 | 0b10000010)) 

# define the top of the range
TOP = 26300

while True:
    # read the register
    b = bus.read_word_data(addr, CONVERSIONREG)

    # swap the two bytes
    b = ((b & 0xFF) << 8) | ((b >> 8) & 0xFF)
    
    # subtract half the range to set ground to zero
    b -= 0x8000

    # divide the result by the range to give us a value between zero and one
    b /= TOP

    # cap at one
    b = min(b, 1)

    # bottom is zero
    b = max(b, 0)

    # two decimal places
    b = round(b, 2)
    print(b)
    time.sleep(.01)

Tu as presque fini. Définissez la plage de valeurs que vous obtenez sur la valeur que vous préférez, puis tronquez-la au nombre de décimales souhaité. Vous pouvez personnaliser la fonction d'impression afin qu'elle n'imprime une nouvelle valeur que lorsqu'elle est différente de la dernière valeur.

Faire face au bruit

Maintenant, à moins que votre configuration ne soit vraiment belle, soignée et bien rangée, vous remarquerez du bruit. C’est l’inconvénient inhérent à l’utilisation de 16 bits au lieu de seulement dix : cette infime quantité de bruit sera plus perceptible.

En connectant l'entrée adjacente (entrée 1) à la terre et en changeant de mode pour comparer la première et la deuxième entrées, vous pouvez obtenir des résultats plus stables. Vous pouvez également remplacer les longs câbles antibruit par des plus petits et ajouter quelques condensateurs au fur et à mesure de cet ajustement. La valeur de votre potentiomètre peut également faire la différence.

Il existe également des options logicielles. Vous pouvez créer une moyenne mobile ou simplement ignorer les petits changements. L’inconvénient est que le code supplémentaire imposera un coût de calcul. Si vous écrivez des instructions conditionnelles dans un langage de haut niveau comme Python, en prenant des milliers d'échantillons chaque seconde, ces coûts s'additionneront rapidement. Vérifier Guide de surveillance de la température Raspberry Pi et Sense HAT : meilleures étapes et conseils.

Foire Aux Questions

T1. Qu'est-ce qu'un convertisseur ADC et comment fonctionne-t-il avec Raspberry Pi ?

Un ADC (Analog-to-Digital Converter) est un appareil qui convertit les signaux analogiques en signaux numériques. Un ADC peut être connecté à un Raspberry Pi pour lui permettre de lire des signaux analogiques provenant de sources telles que des capteurs et des variables environnementales.

Q2. Quels sont les principaux avantages de l’utilisation d’un convertisseur ADC avec Raspberry Pi ?

  • Étendez les capacités de mesure: Vous permet d'utiliser des signaux analogiques tels que la lumière, la température, le son, etc.
  • Une plus grande précision: La conversion des signaux analogiques en numériques offre une plus grande précision dans les lectures.
  • Prend en charge une variété d'appareils: Il peut être utilisé avec une large gamme d'appareils électroniques et de projets Raspberry Pi.

Q3. Comment connecter un convertisseur ADC à un Raspberry Pi ?

Le convertisseur ADC peut être connecté au Raspberry Pi via l'interface GPIO à l'aide des câbles et connecteurs appropriés. Vous devez être prudent et suivre le guide de communication inclus avec le convertisseur ADC.

Q4. Puis-je utiliser le convertisseur ADC avec toutes les versions de Raspberry Pi ?

Oui, l'ADC peut être utilisé avec la plupart des versions de Raspberry Pi. Cependant, vous devrez peut-être envisager de connecter l'adaptateur au port GPIO approprié pour votre version matérielle particulière.

Q5. L'utilisation d'un convertisseur ADC nécessite-t-elle une expérience en programmation ?

Cela dépend de la portée du projet. Dans des cas simples, des bibliothèques prêtes à l'emploi peuvent être utilisées. Cependant, certains projets peuvent nécessiter des compétences en programmation pour utiliser efficacement les données.

Aller de l’avant avec plusieurs prochaines étapes potentielles

Prendre des lectures via I2C est très simple et il en va de même pour d'autres méthodes, telles que SPI. Bien qu'il puisse sembler qu'il existe des différences significatives entre les options ADC disponibles, la vérité est qu'une fois que vous en avez une en cours d'exécution, il est facile d'appliquer les connaissances aux autres.

Alors pourquoi ne pas aller plus loin ? Connectez plusieurs potentiomètres ensemble ou essayez de lire la lumière, le son ou la température. Développez le contrôleur que vous venez de créer et créez une configuration Raspberry Pi vraiment fonctionnelle ! Vous pouvez voir maintenant Défis potentiels de l'auto-hébergement de vos projets Raspberry Pi.

Aller au bouton supérieur