Catégories: Circuits microcontrôleurs
Nombre de fois vus: 18998
Commentaires sur l'article: 0

Connexion de capteurs analogiques à Arduino, lecture de capteurs

 

Les capteurs sont utilisés pour mesurer les quantités, les conditions environnementales et les réactions aux changements d'états et de positions. À leur sortie, il peut y avoir à la fois des signaux numériques constitués de uns et de zéros et des signaux analogiques constitués d'un nombre infini de tensions dans un certain intervalle.


À propos des capteurs

En conséquence, les capteurs sont divisés en deux groupes:

1. Numérique.

2. Analogique.

Pour lire les valeurs numériques, les entrées numériques et analogiques du microcontrôleur peuvent être utilisées, dans notre cas Avr sur la carte Arduino. Les capteurs analogiques doivent être connectés via un convertisseur analogique-numérique (ADC). ATMEGA328, c'est lui qui est installé dans la plupart des cartes ARDUINO (en savoir plus il y a un article sur le site), contient dans son circuit ADC intégré. Jusqu'à 6 entrées analogiques sont disponibles.

Si cela ne vous suffit pas, vous pouvez utiliser un ADC externe supplémentaire pour vous connecter aux entrées numériques, mais cela compliquera le code et augmentera son volume, en raison de l'ajout d'algorithmes de traitement et du contrôle ADC. Le sujet des convertisseurs analogique-numérique est suffisamment large pour que vous puissiez en faire un article séparé ou en faire un cycle. Il est plus facile d'utiliser une carte avec un grand nombre d'entre eux ou des multiplexeurs. Voyons comment connecter des capteurs analogiques à l'Arduino.

Connecter des capteurs analogiques à Arduino, lire les lectures des capteurs

Schéma général des capteurs analogiques et leur connexion

Le capteur peut même être un potentiomètre conventionnel. En fait, il s'agit d'un capteur de position résistif, sur ce principe, ils mettent en œuvre un contrôle du niveau des liquides, de l'angle d'inclinaison, de l'ouverture de quelque chose. Il peut être connecté à Arduino de deux manières.

Schéma général des capteurs analogiques et leur connexion

Le circuit ci-dessus vous permet de lire des valeurs de 0 à 1023, du fait que toute la tension chute sur le potentiomètre. Le principe d'un diviseur de tension fonctionne ici, dans n'importe quelle position du moteur, la tension est distribuée linéairement sur la surface de la couche résistive ou sur une échelle logarithmique (en fonction du potentiomètre) la partie de la tension qui reste entre la sortie du curseur (contact coulissant) et le sol (gnd) arrive à l'entrée. Sur la maquette, cette connexion ressemble à ceci:

Schéma de câblage des capteurs analogiques

La deuxième option est connectée selon le circuit diviseur résistif classique, ici la tension au point de résistance maximale du potentiomètre dépend de la résistance de la résistance supérieure (sur la figure R2).

Diviseur résistif classique

En général, le diviseur résistif est très important non seulement dans le domaine du travail avec les microcontrôleurs, mais aussi dans l'électronique en général. Ci-dessous, vous voyez le schéma général, ainsi que les ratios calculés pour déterminer la valeur de tension sur le bras inférieur.

Schéma et relations de conception pour déterminer la valeur de tension sur le bras inférieur

Une telle connexion est caractéristique non seulement pour un potentiomètre, mais pour tous les capteurs analogiques, car la plupart d'entre eux fonctionnent sur le principe de la modification de la résistance (conductivité) sous l'influence de sources externes - température, lumière, rayonnement de toutes sortes, etc.

Ce qui suit est le schéma de connexion le plus simple thermistance, en principe, un thermomètre peut être fabriqué sur sa base. Mais la précision de ses lectures dépendra de la précision du tableau de conversion de la résistance en température, de la stabilité de la source d'alimentation et des coefficients de changement de résistance (y compris la résistance du bras supérieur) sous l'influence de la même température. Ceci peut être minimisé en sélectionnant les résistances optimales, leur puissance et leurs courants de fonctionnement.

Le schéma de connexion le plus simple pour une thermistance

De la même manière, vous pouvez connecter des photodiodes, des phototransistors comme capteur de lumière. La photoélectronique a trouvé une application dans les capteurs qui déterminent la distance et la présence d'un objet, dont nous examinerons plus loin.

Photorésistance

La figure montre la connexion de la photorésistance à l'arduino.

Schéma de connexion de la photorésistance à Arduino

Partie logiciel

Avant de parler de la connexion de capteurs spécifiques, j'ai décidé d'envisager un logiciel pour les traiter. Tous les signaux analogiques sont lus à partir des mêmes ports à l'aide de la commande analogRead ().Il convient de noter que l'Arduino UNO et d'autres modèles avec 168 et 328 atmega ont un ADC 10 bits. Cela signifie que le microcontrôleur voit le signal d'entrée comme un nombre de 0 à 1023 - un total de 1024 valeurs. Si vous considérez que la tension d'alimentation est de 5 volts, alors la sensibilité d'entrée:

5/1024 = 0,0048 V ou 4,8 mV

Autrement dit, avec une valeur de 0 à l'entrée, la tension est 0, et avec une valeur de 10 à l'entrée - 48 mV.

Dans certains cas, pour convertir les valeurs au niveau souhaité (par exemple, pour transmettre à la sortie PWM), 1024 est divisé par un nombre et, à la suite de la division, le maximum requis doit être obtenu. La fonction de carte (source, bas, haut, haut, haut, bas) fonctionne plus clairement, où:

  • faible - nombre inférieur avant conversion par fonction;

  • vch - supérieur;

  • VCh - le nombre inférieur après traitement par la fonction (en sortie);

  • VHV - haut.

Une application pratique pour convertir une fonction en une valeur d'entrée pour la transmission vers un PWM (la valeur maximale est 255, pour convertir les données de l'ADC vers la sortie PWM, 1024 est divisé par 4):

Option 1 - division.

int x;

x = analogRead (pot) / 4;

// un nombre de 0 à 1023 sera reçu

// divisez-le par 4, nous obtenons un entier de 0 à 255 analogWrite (led, x);

L'option 2 - la fonction MAP - ouvre plus d'opportunités, mais plus à ce sujet plus tard.

boucle vide ()

{int val = analogRead (0);

val = carte (val, 0, 1023, 0, 255);

analogWrite (led, val); }

Ou encore plus court:

analogWrite (led, map (val, 0, 1023, 0, 255))

Tous les capteurs n'ont pas 5 volts à la sortie, c'est-à-dire le nombre 1024 n'est pas toujours pratique à diviser pour obtenir le même 256 pour le PWM (ou tout autre). Cela peut être 2 et 2,5 volts et d'autres valeurs, lorsque le signal maximum sera, par exemple, 500.


Capteurs analogiques populaires

Une vue générale du capteur pour Arduino et de sa connexion est présentée ci-dessous:

Comment connecter un capteur analogique

Habituellement, il y a trois sorties, il peut y en avoir une quatrième - numérique, mais ce sont des fonctionnalités.

Explication de la désignation des sorties du capteur analogique:

  • G - puissance moins, bus commun, masse. Peut être désigné comme GND, «-»;

  • V - plus de puissance. Peut être noté Vcc, Vtg, "+";

  • S - signal de sortie, notation possible - Out, SGN, Vout, signe.

Les débutants pour apprendre à lire les valeurs des capteurs choisissent des projets de toutes sortes de thermomètres. Ces capteurs sont de conception numérique, par exemple DS18B20, et en analogique - ce sont toutes sortes de microcircuits comme LM35, TMP35, TMP36 et autres. Voici un exemple de la conception modulaire d'un tel capteur sur la carte.

Capteur analogique sur TMP36

La précision du capteur est de 0,5 à 2 degrés. Construit sur une puce TMP36, comme beaucoup de ses analogues, ses valeurs de sortie sont de 10 mV / ° C. À 0 °, le signal de sortie est de 0 V, puis 10 mV par 1 degré sont ajoutés. Autrement dit, à 25,5 degrés, la tension est de 0,255 V, une déviation est possible dans l'erreur et l'auto-échauffement du cristal IC (jusqu'à 0,1 ° C).


Selon le microcircuit utilisé, les plages de mesure et les tensions de sortie peuvent différer, voir le tableau.

Plages de température et tensions de sortie du capteur

Cependant, pour un thermomètre de haute qualité, vous ne pouvez pas simplement lire les valeurs et les afficher sur l'indicateur LCD ou le port série pour la communication avec un PC, pour la stabilité du signal de sortie de l'ensemble du système dans son ensemble, vous devez faire la moyenne des valeurs des capteurs, analogiques et numériques, dans certaines limites, tandis que sans altérer leur vitesse et leur précision (il y a une limite à tout). Cela est dû à la présence de bruit, d'interférences, de contacts instables (pour les capteurs résistifs basés sur un potentiomètre, voir les dysfonctionnements du capteur de niveau d'eau ou de carburant dans le réservoir de la voiture).

Les codes pour travailler avec la plupart des capteurs sont assez volumineux, donc je ne les donnerai pas tous, ils peuvent être facilement trouvés sur le réseau par la demande "capteur + nom Arduino".

Le capteur suivant que les ingénieurs en robotique arduino utilisent souvent est le capteur de ligne. Il est basé sur des dispositifs photoélectroniques, type de phototransistors.

Capteur de ligne

Avec leur aide, un robot qui se déplace le long de la ligne (utilisé dans la production automatisée pour livrer des pièces) détermine la présence d'une bande blanche ou noire. Sur le côté droit de la figure, deux appareils similaires aux LED sont visibles. L'un d'eux est la LED, il peut émettre dans le spectre invisible, et le second est un phototransistor.

La lumière est réfléchie par la surface si elle est sombre - le phototransistor ne reçoit pas de flux réfléchi, mais si la lumière reçoit et s'ouvre. Les algorithmes que vous mettez dans le microcontrôleur traitent le signal et déterminent l'exactitude et la direction du mouvement et les corrigent. La souris optique, que vous tenez très probablement dans votre main lors de la lecture de ces lignes, est disposée de la même manière.

Je compléterai avec un capteur adjacent - un capteur de distance de Sharp, est également utilisé en robotique, ainsi que dans les conditions de surveillance de la position des objets dans l'espace (avec l'erreur TX correspondante).

Capteur de distance net

Cela fonctionne sur le même principe. Des bibliothèques et des exemples de croquis et de projets avec eux sont disponibles en grand nombre sur les sites Arduino.


Conclusion

L'utilisation de capteurs analogiques est très simple et avec le langage de programmation Arduino facile à apprendre, vous apprenez rapidement des appareils simples. Cette approche présente des inconvénients importants par rapport à ses homologues numériques. Cela est dû à la grande variation des paramètres, ce qui pose des problèmes lors du remplacement du capteur. Vous devrez peut-être modifier le code source du programme.

Il est vrai que les appareils analogiques individuels incorporent des sources de tension de référence et des stabilisateurs de courant, ce qui a un effet positif sur le produit final et la répétabilité des appareils dans la production de masse. Tous les problèmes peuvent être évités en utilisant des appareils numériques.

Les circuits numériques en tant que tels réduisent la nécessité de régler et d'ajuster le circuit après l'assemblage. Cela vous donne la possibilité d'assembler plusieurs appareils identiques sur le même code source, dont les détails donneront les mêmes signaux, avec des capteurs résistifs c'est rare.

Voir aussi sur notre site internet:Connecter des appareils externes à Arduino

Voir aussi sur bgv.electricianexp.com:

  • Quelle est la différence entre les capteurs analogiques et numériques
  • Mesurer la température et l'humidité sur Arduino - une sélection de façons
  • Comment la conversion du signal analogique en numérique
  • Capteurs les plus populaires pour Arduino
  • Comment le capteur de ligne est organisé et fonctionne

  •