Table des matières:

Magnétomètre Arduino : 5 étapes (avec photos)
Magnétomètre Arduino : 5 étapes (avec photos)

Vidéo: Magnétomètre Arduino : 5 étapes (avec photos)

Vidéo: Magnétomètre Arduino : 5 étapes (avec photos)
Vidéo: Amazing arduino project 2024, Septembre
Anonim
Magnétomètre Arduino
Magnétomètre Arduino

Que construisons-nous ?

Les humains ne peuvent pas détecter les champs magnétiques, mais nous utilisons des appareils qui reposent en permanence sur des aimants. Les moteurs, les boussoles, les capteurs de rotation et les éoliennes, par exemple, nécessitent tous des aimants pour fonctionner. Ce tutoriel décrit comment construire un magnétomètre basé sur Arduino qui détecte le champ magnétique à l'aide de trois capteurs à effet Hall. Le vecteur de champ magnétique à un endroit est affiché sur un petit écran en utilisant une projection isométrique.

Qu'est-ce qu'un Arduino ?

Un Arduino est un petit microcontrôleur open source convivial. Il a des broches d'entrée et de sortie numériques. Il possède également des broches d'entrée analogiques, qui sont utiles pour lire les entrées des capteurs. Différents modèles Arduino sont disponibles. Ce tutoriel décrit comment utiliser l'Arduino Uno ou l'Arduino MKR1010. Cependant, d'autres modèles peuvent également être utilisés.

Avant de commencer ce didacticiel, téléchargez l'environnement de développement Arduino ainsi que toutes les bibliothèques nécessaires pour votre modèle particulier. L'environnement de développement est disponible sur https://www.arduino.cc/en/main/software, et les instructions d'installation sont disponibles sur

Qu'est-ce qu'un champ magnétique ?

Les aimants permanents exercent des forces sur d'autres aimants permanents. Les fils porteurs de courant exercent des forces sur d'autres fils porteurs de courant. Les aimants permanents et les fils porteurs de courant exercent également des forces les uns sur les autres. Cette force par unité de courant d'essai est un champ magnétique.

Si nous mesurons le volume d'un objet, nous obtenons un seul nombre scalaire. Cependant, le magnétisme est décrit par un champ vectoriel, une quantité plus compliquée. Premièrement, il varie avec la position dans tout l'espace. Par exemple, le champ magnétique à un centimètre d'un aimant permanent est susceptible d'être plus grand que le champ magnétique à dix centimètres.

Ensuite, le champ magnétique en chaque point de l'espace est représenté par un vecteur. L'amplitude du vecteur représente la force du champ magnétique. La direction est perpendiculaire à la fois à la direction de la force et à la direction du courant d'essai.

Nous pouvons représenter le champ magnétique à un seul endroit sous la forme d'une flèche. Nous pouvons représenter le champ magnétique dans l'espace par un réseau de flèches à différents endroits, éventuellement de différentes tailles et pointant dans différentes directions. Une belle visualisation est disponible sur https://www.falstad.com/vector3dm/. Le magnétomètre que nous construisons affiche le champ magnétique à l'emplacement des capteurs sous la forme d'une flèche sur l'écran.

Qu'est-ce qu'un capteur à effet Hall et comment fonctionne-t-il ?

Un capteur à effet Hall est un petit appareil peu coûteux qui mesure la force du champ magnétique le long d'une direction particulière. Il est constitué d'un morceau de semi-conducteur dopé avec des charges excédentaires. La sortie de certains capteurs à effet Hall est une tension analogique. D'autres capteurs à effet Hall ont un comparateur intégré et produisent une sortie numérique. D'autres capteurs à effet Hall sont intégrés dans des instruments plus grands qui mesurent le débit, la vitesse de rotation ou d'autres quantités.

La physique derrière l'effet Hall est résumée par l'équation de la force de Lorentz. Cette équation décrit la force sur une charge en mouvement due à un champ électrique et magnétique externe.

Image
Image

La figure ci-dessous illustre l'effet Hall. Supposons que nous voulions mesurer la force du champ magnétique dans la direction de la flèche bleue. Comme le montre la partie gauche de la figure, nous appliquons un courant à travers un morceau de semi-conducteur perpendiculaire à la direction du champ à mesurer. Le courant est un flux de charges, donc une charge dans le semi-conducteur se déplace avec une certaine vitesse. Cette charge ressentira une force due au champ externe, comme indiqué dans la partie médiane de la figure. Les charges se déplaceront en raison de la force et s'accumuleront sur les bords du semi-conducteur. Les charges s'accumulent jusqu'à ce que la force due aux charges accumulées équilibre la force due au champ magnétique externe. Nous pouvons mesurer la tension aux bornes du semi-conducteur, comme indiqué dans la partie droite de la figure. La tension mesurée est proportionnelle à la force du champ magnétique, et elle est dans la direction perpendiculaire au courant et à la direction du champ magnétique.

Image
Image

Qu'est-ce que la projection isométrique ?

En chaque point de l'espace, le champ magnétique est décrit par un vecteur tridimensionnel. Cependant, notre écran d'affichage est bidimensionnel. Nous pouvons projeter le vecteur tridimensionnel dans un plan bidimensionnel afin de pouvoir le dessiner sur l'écran. Il existe plusieurs façons d'y parvenir, telles que la projection isométrique, la projection orthographique ou la projection oblique.

Dans la projection isométrique, les axes x, y et z sont distants de 120 degrés et semblent également raccourcis. Des informations supplémentaires sur la projection isométrique, ainsi que les formules nécessaires, peuvent être trouvées sur la page de Wikipedia sur le sujet.

Étape 1: Rassemblez les fournitures

Arduino et câble

L'Arduino est le cerveau du magnétomètre. Ces instructions décrivent comment utiliser un Arduino Uno ou un Arduino MKR1010. Dans les deux cas, un câble est nécessaire pour le connecter à l'ordinateur.

Option 1: Arduino Uno et câble USB AB

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Option 2: Arduino MKR1010 et câble microUSB

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

Écran TFT

TFT signifie Thin Film Transistor. Cet écran de 1,44 contient 128 par 128 pixels. Il est petit, lumineux et coloré. Il est attaché à une carte de dérivation. Cependant, les broches d'en-tête sont séparées, vous devez donc les souder. (La soudure et un fer à souder sont nécessaire.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Image
    Image
  • Capteurs analogiques à effet Hall

Trois capteurs à effet Hall sont nécessaires. Le lien ci-dessous correspond au numéro de pièce Allegro A1324LUA-T. Pour ce capteur, la broche 1 est la tension d'alimentation, la broche 2 est la masse et la broche 3 est la sortie. D'autres capteurs à effet Hall devraient également fonctionner, mais assurez-vous qu'ils sont analogiques et non numériques. Si vous utilisez un capteur différent, vérifiez le brochage et ajustez le câblage si nécessaire. (J'ai en fait utilisé un capteur différent de la même entreprise à des fins de test. Cependant, celui que j'ai utilisé est obsolète et ce capteur est son remplacement.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Petite planche à pain et fil

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Aimants permanents pour les tests

Les aimants de réfrigérateur fonctionneront très bien.

Étape 2: Câblage

Câblage
Câblage

Soudez les en-têtes sur l'écran.

Image
Image

Placez les capteurs à une extrémité de la maquette et placez l'écran et l'Arduino à l'extrémité opposée. Le courant dans les fils de l'Arduino et de l'écran génère des champs magnétiques que nous ne voulons pas que les capteurs lisent. De plus, nous pouvons souhaiter placer les capteurs à proximité d'aimants permanents, ce qui pourrait avoir un impact négatif sur le courant dans les fils de l'écran et du capteur. Pour ces raisons, nous voulons que les capteurs soient éloignés de l'écran et de l'Arduino. Aussi pour ces raisons, ce magnétomètre doit être tenu à l'écart des champs magnétiques très puissants.

Placez les capteurs perpendiculairement les uns aux autres mais aussi près que possible les uns des autres. Pliez doucement les capteurs pour qu'ils soient perpendiculaires. Chaque broche de chaque capteur doit se trouver dans une rangée distincte de la planche à pain afin qu'elle puisse être connectée séparément.

Image
Image

Le câblage est légèrement différent entre le MKR1010 et le Uno pour deux raisons. Tout d'abord, l'Arduino et l'écran communiquent par SPI. Différents modèles Arduino ont des broches dédiées différentes pour certaines lignes SPI. Deuxièmement, les entrées analogiques du Uno peuvent accepter jusqu'à 5 V tandis que les entrées analogiques du MKR1010 ne peuvent accepter que jusqu'à 3,3 V. La tension d'alimentation recommandée pour les capteurs à effet Hall est de 5 V. Les sorties des capteurs sont connectées aux entrées analogiques Arduino, et celles-ci peuvent être aussi grandes que les tensions d'alimentation. Pour l'Uno, utilisez l'alimentation 5 V recommandée pour les capteurs. Pour le MKR1010, utilisez 3,3 V afin que l'entrée analogique de l'Arduino ne voie jamais une tension supérieure à ce qu'elle peut gérer.

Suivez les schémas et les instructions ci-dessous pour l'Arduino que vous utilisez.

Câblage avec l'Arduino Uno

Image
Image

L'écran a 11 broches. Connectez-les à l'Arduino Uno comme suit. (NC signifie non connecté.)

  • Vin →5V
  • 3.3 →NF
  • Gnd → GND
  • SCK →13
  • SO → NC
  • SI →11
  • TCS →10
  • RST →9
  • D/C →8
  • CCS → NC
  • Lite → NC

Connectez Vin des capteurs au 5V de l'Arduino. Connectez la masse du capteur à la masse de l'Arduino. Connectez la sortie des capteurs aux entrées analogiques A1, A2 et A3 de l'Arduino.

Image
Image

Câblage avec l'Arduino MKR1010

Image
Image

L'écran a 11 broches. Connectez-les à l'Arduino comme suit. (NC signifie non connecté.)

  • Vin →5V
  • 3.3 →NF
  • Gnd → GND
  • SCK →SCK 9
  • SO → NC
  • SI →MOSI 8
  • TCS →5
  • RST →4
  • D/C →3
  • CCS → NC
  • Lite → NC

Connectez Vin des capteurs à Vcc de l'Arduino. Cette broche est à 3,3 V, pas à 5 V. Connectez la masse du capteur à la masse de l'Arduino. Connectez la sortie des capteurs aux entrées analogiques A1, A2 et A3 de l'Arduino.

Image
Image

Étape 3: Testez l'affichage

Faisons fonctionner l'écran TFT. Heureusement, Adafruit dispose de bibliothèques conviviales et d'un excellent didacticiel pour les accompagner. Ces instructions suivent de près le tutoriel, Ouvrez l'environnement de développement Arduino. Allez dans Outils → Gérer les bibliothèques. Installez les bibliothèques Adafruit_GFX, Adafruit_ZeroDMA et Adafruit_ST7735. Redémarrez l'environnement de développement Android.

L'exemple de test graphique est inclus avec les bibliothèques. Ouvrez-le. Fichier → Exemples → Bibliothèque Adafruit ST7735 et ST7789 → graphictest. Pour sélectionner l'affichage 1,44 commentez la ligne 95 et décommentez la ligne 98.

Version originale:

94 // Utilisez cet initialiseur si vous utilisez un écran TFT 1,8 :

95 tft.initR(INITR_BLACKTAB); //Init ST7735S chip, black tab 96 97 //OU utilisez cet initialiseur (décommentez) si vous utilisez un TFT 1.44 : 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

Version correcte pour l'écran 1,44 :

94 // Utilisez cet initialiseur si vous utilisez un écran TFT 1,8 :

95 //tft.initR(INIT_BLACKTAB); //Initer la puce ST7735S, onglet noir 96 97 //OU utiliser cet initialiseur (décommenter) si vous utilisez un TFT 1,44 : 98 tft.initR(INITR_144GREENTAB); //Initer la puce SST35R, onglet vert

L'écran communique à l'aide de SPI et différents modèles d'Arduinos utilisent différentes broches dédiées pour certaines lignes de communication. L'exemple de test graphique est configuré pour fonctionner avec les broches Uno. Si vous utilisez le MKR1010, ajoutez les lignes suivantes entre les lignes 80 et 81.

Corrections pour le MKR1010:

80

#définir TFT_CS 5 #définir TFT_RST 4 #définir TFT_DC 3 #définir TFT_MOSI 8 #définir TFT_SCLK 9 Adafruit_ST7735 tft=Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); 81 flottant p = 3,1415926;

Enregistrez l'exemple de test graphique modifié. Branchez l'Arduino sur l'ordinateur si vous ne l'avez pas encore fait. Allez dans Outils → Carte et outils → Port pour vérifier que l'ordinateur peut trouver l'Arduino. Allez dans Esquisse → Télécharger. Si l'exemple fonctionne, l'écran affichera des lignes, des rectangles, du texte et la démo complète. Le didacticiel Adafruit fournit plus de détails si un dépannage est nécessaire.

Étape 4: Le code du magnétomètre

Téléchargez le code joint et ouvrez-le dans l'environnement de développement Arduino.

Ce programme utilise six fonctions:

Setup() initialise l'affichage

Loop() contient la boucle principale du programme. Il noircit l'écran, dessine les axes, lit les entrées et dessine la flèche représentant le vecteur de champ magnétique. Il a un taux de rafraîchissement d'une seconde qui peut être modifié en modifiant la ligne 127

DrawAxes3d() dessine et étiquette les axes x, y et z

DrawArrow3d() prend une entrée x, y et z allant de 0 à 1023. À partir de ces valeurs, il calcule les extrémités de la flèche dans l'espace. Ensuite, il utilise les fonctions isometricxx() et isometricyy() pour calculer les points finaux à l'écran. Enfin, il dessine la flèche et imprime les tensions en bas de l'écran

Isometricxx() trouve la coordonnée x de la projection isométrique. Il prend les coordonnées x, y et z d'un point et renvoie l'emplacement de pixels x correspondant sur l'écran

Isometricyy() trouve la coordonnée y de la projection isométrique. Il prend les coordonnées x, y et z d'un point et renvoie l'emplacement du pixel y correspondant sur l'écran

Avant d'exécuter le code, nous devons spécifier les broches à utiliser pour la communication SPI avec l'écran et nous devons spécifier la tension source des capteurs. Si vous utilisez le MKR1010, commentez les lignes 92-96 ainsi que la ligne 110. Ensuite, décommentez les lignes 85-89 ainsi que la ligne 108. Si vous utilisez le Uno, commentez les lignes 85-89 ainsi que la ligne 108 Ensuite, décommentez les lignes 92-96 ainsi que la ligne 110.

Téléchargez le code, Sketch → Upload.

Vous devriez voir les axes x, y et z en rouge. Une flèche verte avec un cercle bleu pour la pointe représente le vecteur de champ magnétique au niveau des capteurs. Les lectures de tension sont affichées en bas à gauche. Au fur et à mesure que vous rapprochez un aimant des capteurs, les lectures de tension devraient changer et la taille de la flèche devrait augmenter.

Image
Image

Étape 5: Travaux futurs

Travail futur
Travail futur

L'étape suivante consisterait à étalonner l'appareil. La fiche technique du capteur fournit des informations sur la façon de convertir les valeurs de tension brutes du capteur en intensité de champ magnétique. L'étalonnage pourrait être vérifié en comparant à un magnétomètre plus précis.

Les aimants permanents interagissent avec les fils porteurs de courant. Les fils à proximité de l'écran et dans l'Arduino génèrent des champs magnétiques qui pourraient affecter les lectures des capteurs. De plus, si cet appareil est utilisé pour mesurer à proximité d'un aimant permanent puissant, le champ magnétique de l'appareil testé interagira avec, introduira du bruit et endommagera éventuellement l'Arduino et l'écran. Un blindage pourrait rendre ce magnétomètre plus robuste. L'Arduino peut résister à des champs magnétiques plus importants s'il est blindé dans un boîtier métallique, et moins de bruit sera introduit si des câbles blindés connectent les capteurs au lieu de fils nus.

Le champ magnétique est fonction de la position, il est donc différent en tout point de l'espace. Cet appareil utilise trois capteurs, un pour mesurer les composantes x, y et z du champ magnétique en un point. Les capteurs sont proches les uns des autres mais pas en un seul point, ce qui limite la résolution du magnétomètre. Ce serait cool d'enregistrer les lectures de champ magnétique à différents points, puis de les afficher sous la forme d'un tableau de flèches aux emplacements correspondants. Cependant, c'est un projet pour un autre jour.

Les références

Informations sur les bibliothèques graphiques Adafruit Arduino

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Visualisation du champ magnétique

https://www.falstad.com/vector3dm/

Informations sur les capteurs à effet Hall et à effet Hall

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Informations sur la projection isométrique

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Conseillé: