- 1076 views
Après que la société Digilent ait présenté sa gamme de modules MCC DAQ pour Raspbbery PI, voici une application qui associe le module MCC 118 Voltage Measurement DAQ HAT et une platine Raspberry Pi afin de vous permettre de lire la sortie linéaire d'un capteur de champ magnétique.
Le module MCC 118 Voltage Measurement DAQ HAT est une carte d'extension HAT (Hardware Attached on Top) conçue pour être utilisée avec une platine Raspberry Pi®. Ce module dispose de huit entrées analogiques asymétriques (SE) ou de quatre entrées analogiques différentielles (DIFF) avec les plages d'entrée suivantes (+/-10 V, +/-5 V, +/-2 V, +/-1 V). Une broche d'E/S d'horloge bidirectionnelle permet aux utilisateurs de rythmer les opérations avec un signal d'horloge externe ou avec l'horloge de balayage interne de la carte. Utilisez un logiciel pour définir la direction. L'entrée de déclenchement numérique externe est configurable par logiciel pour un front montant ou descendant, ou un niveau haut ou bas.
Matériel nécessaire pour la réalisation de cette application
- Platine Raspberry Pi 4 Modèle B 1 Go, 2 Go, 4 Go ou 8 Go de RAM
- Module MCC 118 Voltage Measurement DAQ HAT
- Capteur de champ magnétique à sortie linéaire AD22151
- Condensateur 0.1uF
- Résistances R1 = 10 k, R2 = 2,2 k et R3 = 100 k
- Plaque de développement sans soudure (Breadboard)
- Ensemble straps
Nécessaire logiciel
- OS Raspbian
- GIT
- Bibliothèques Python
- Bibliothèques MCC DAQ HAT
Paramétrage du logiciel
Pour utiliser le module MCC DAQ 118 avec la platine Raspberry Pi, la première chose à faire est d'installer les librairies fournies par le constructeur.
Voici les différentes étapes à réaliser:
1.Ouvrez une fenêtre du terminal si vous utilisez l'interface graphique et mettez à jour votre liste de paquets :
2. Facultatif : mettez à jour vos packages installés et redémarrez :
3. S'il n'est pas installé, installez git :
4. Téléchargez le package proposé par le fabricant dans votre dossier utilisateur avec git :
5. Installez la bibliothèque. Le programme d'installation vous demandera si vous souhaitez installer le support Python 2 et Python 3.
Si vous souhaitez effectuer une mise à jour du firmware ou lire plus d'informations sur le MCC 118, vous pouvez consulter la documentation de la bibliothèque MCC DAQ HAT.
Configuration matérielle
Pour ce projet, nous aurons besoin de quelques composants en plus de la platine Raspberry Pi et du MCC 118. Pour créer le capteur de champ magnétique, nous aurons besoin des composants suivants : AD22151 (Magnetic Field Sensor), trois résistances que nous dimensionnerons plus tard, un condensateur 0.1µF, une plaque de développement sans soudure et quelques straps.
Pour démarrer ce projet, la première configuration proposée par le constructeur dans la fiche technique sera utilisée (fiche technique AD22151).
R1 est une résistance utilisée pour la compensation de température, 10 K a été choisi dans le graphique fourni, pour compenser les petites valeurs des écarts de température.
R2 et R3 sont utilisés pour régler le gain dans ce circuit. Les valeurs ont été choisies après avoir effectué le calcul avec la formule écrite ci-dessous. La valeur de R3 est de 100K et pour R2, après avoir effectué le calcul, la valeur de 2,2K a été choisie. Ainsi, un gain d'environ 19 mV/G est obtenu.
Maintenant que nous avons le circuit de mesure, nous devons l'alimenter. Afin de fournir du 5 V et de la masse, les ports GPIO sont utilisés pour cette tâche, plus précisément le port 4 pour le 5 V et le port 6 pour la masse.
La dernière étape pour la préparation matériel consiste à connecter la sortie du capteur à l'un des canaux de la carte MCC 118, le canal 0 pour ce projet. La sortie est comprise entre 0 et 5 V et la valeur de 2,5 V représente le seuil entre les valeurs de sortie positives et négatives du circuit. Plus loin dans le projet, dans la partie flux du programme mentionne comment vous pouvez modifier le code pour pouvoir en connecter plusieurs capteurs à la fois.
Après avoir terminé ces étapes, votre circuit devrait ressembler à celui de l'image ci-dessous.
Déroulement du programme
Après le montage des composants et l'installation des librairies, les deux fichiers joints ci-dessous doivent être enregistrés dans le même dossier. "daqhats_utils.py" il est extrait du dossier des exemples, il se trouve dans le dossier "daqhats" qui est installé après avoir effectué les étapes d'installation des bibliothèques à l'aide de git. "scan.py" est le fichier principal de ce projet.
Importations de bibliothèque
Pour effectuer la mesure, nous avons besoin de certaines fonctions proposées dans les bibliothèques du référentiel git et daqhats_utils. Nous importons toute la classe mcc118 et certaines fonctions d'aide. "OptionFlags" est utilisé pour définir le mode de balayage des valeurs fournies par les canaux sur le raspberry hat et pour identifier l'identifiant et les erreurs que nous utilisons les fonctions "HatIDs" et "HatError".
Déclaration constante et informations d'impression
Pour déterminer la valeur de l'intensité du champ magnétique, nous utilisons les deux constantes gain_constant et v_ref. "gain_constant" est déterminé par la formule ci-dessus, cette constante doit être modifiée pour respecter le gain de tension du circuit. Cette constante est égale à l'inverse du gain calculé (1/gain). "v_ref" est la référence de tension pour le point zéro, toutes les valeurs au-dessus sont des nombres positifs, toutes les valeurs en dessous sont des nombres négatifs. Ces deux éléments sont utilisés dans la fonction d'impression à la fin du programme.
Le programme affichera dans le terminal un numéro composé d'un maximum de dix chiffres et de cinq chiffres après la virgule. Pour calibrer la sortie, décommentez la ligne suivante et changez la valeur de "v_ref" avec la valeur mesurée.
Le taux par canal de l'horloge de balayage interne est défini dans la variable "scan_rate" et le taux maximum attendu d'une horloge de balayage externe, max 100 000.
Déclaration des chaînes
Les canaux utilisés doivent être déclarés dans un vecteur. Pour ajouter plus de canaux, modifiez le vecteur en ajoutant les canaux que vous souhaitez utiliser. Par exemple:
utilise les huit canaux pour mesurer. Toutes les fonctions de la classe mcc118 utilisent des vecteurs pour déterminer les canaux utilisés et pour cela, il est nécessaire de connaître la longueur du vecteur.
Lire et afficher des données
Les lectures sont exécutées dans une boucle qui se poursuit jusqu'à ce que l'utilisateur arrête le balayage ou qu'une erreur de dépassement soit détectée. Tous les échantillons disponibles sont lus (jusqu'à la taille du read_buffer). Étant donné que read_request_size est défini sur -1 (READ_ALL_AVAILABLE), la fonction "hat.a_in_scan_read" renvoie immédiatement avec des échantillons disponibles pour le moment et le paramètre timeout est ignoré. La fonction "hat.a_in_scan_read" renvoie plusieurs éléments : en cours d'exécution, dépassement matériel, dépassement de mémoire tampon, déclenché et délai d'attente avec tous sont de type booléen et les données sont une liste ou un nombre flottant. Le retour de données est celui que nous utiliserons ensuite pour afficher les informations lues dans le tampon.
« samples_read_per_channel » est utilisé pour afficher le numéro dans la liste de données auquel l'achat a été effectué et affiché. « total_samples_read » stocke le nombre total d'échantillons. Ces numéros sont affichés au format à 12 chiffres.
S'il y a des échantillons dans la mémoire tampon, le programme commencera à s'afficher. Pour chaque canal, son résultat est enregistré à une certaine valeur dans la liste, la position de chaque valeur est un multiple du nombre de canaux utilisés. Pour afficher, nous utilisons un index qui enregistre pour chaque lecture la position de chaque échantillon sur chaque canal.
Lancement du script
Pour lancer le script python, ouvrez un terminal dans le dossier où vous avez enregistré les 2 fichiers avec la commande ci-dessous.
Après cela, dans le terminal apparaîtront l'adresse à laquelle se trouve le MCC 118, la manière dont le chapeau fonctionne, les canaux utilisés et la vitesse de balayage à laquelle il fonctionne est réglé pour fonctionner. Après avoir appuyé sur la touche ENTER, le programme commencera à numériser.
L'interprétation de l'affichage est la suivante :
Échantillons lus est le nombre d'échantillons affichés et remis à 0 une fois le tampon rempli.
Scan Count est le nombre total d'échantillons lus, il ne se réinitialise pas lorsque le tampon est plein et continue de compter.
Le canal 0 est la valeur lue par ce canal, après quoi les canaux suivants ajoutés ultérieurement apparaîtront.
Vous pouvez télécharger le code et trouver plus de détails sur Raspberry Pi Magnetometer (electromaker.io)
Crédits : @ Digilent inc.