Les capteurs à effet Hall sont l'une des options de rétroaction que nous proposons sur nos actionneurs linéaires pour fournir des informations de position et de vitesse. Nos PA-04-HS et PA-100 sont équipés de capteurs à effet Hall en standard. Plusieurs de nos autres actionneurs peuvent être commandés sur mesure avec des capteurs à effet Hall.
QU'EST-CE QU'UN CAPTEUR À EFFET HALL ?
Un capteur à effet Hall est un composant électronique qui génère une tension en fonction de l'intensité du champ magnétique qui le traverse. Associé à un circuit de détection de seuil de tension, ce capteur produit un signal à deux états. Dans nos actionneurs , le capteur à effet Hall est conçu pour produire un signal à deux canaux dont les formes d'onde sont quantifiées dans l'un des deux états binaires suivants : marche ou arrêt. Ces deux signaux augmentent et diminuent avec la rotation du moteur électrique, avec un déphasage de 90°, comme illustré ci-dessous. La fréquence de ces impulsions, liée au changement de position dans l'actionneur, dépend de sa résolution globale et diffère selon nos différents actionneurs.
COMMENT CES SIGNAUX DE HALL SONT-ILS LUS ?
Comment utiliser un capteur à effet Hall
Lors de la lecture d'un signal numérique sur un microcontrôleur, il existe deux méthodes principales : l'interrogation et les interruptions. L'interrogation est une méthode programmée par laquelle un microcontrôleur vérifie périodiquement l'état d'une entrée pour détecter tout changement. Les interruptions, quant à elles, sont un mécanisme matériel qui déplace immédiatement le programme du microcontrôleur lorsque le signal change sur une entrée. Chacune de ces méthodes présente des avantages et des inconvénients, et chacune a ses applications spécifiques. Dans notre cas, nous souhaitons connaître le moment exact où un signal change d'état ; nous utiliserons donc des interruptions. Pour utiliser un capteur à effet Hall avec les microcontrôleurs Arduino, une interruption est utilisée. En créant une routine de maintenance d'interruption (ISR), l'Arduino peut exécuter une section de code immédiatement lorsqu'un changement défini est détecté sur une entrée spécifiée. Un exemple d'ISR pour Arduino est présenté ci-dessous. Une version modifiée, qui dirige les signaux détectés vers des LED, permet de tester un capteur à effet Hall.
Programmation d'un Arduino pour lire les capteurs à effet Hall - méthode d'interruption
// des variables volatiles globales sont nécessaires pour transmettre des données entre les // programme principal et les ISR signal d'octet volatileA ; // les broches qui peuvent être utilisées avec des interruptions dépendent de la carte que vous // utilisent // détectera un front montant ou descendant // à l'opposé de l'état actuel signalA = !signalA; |
QUE FAUT-IL PRENDRE EN COMPTE DANS LA DEMANDE ?
Comme les signaux que nous lisons sont à haute fréquence, quelques considérations doivent être prises en compte. Premièrement, combien de temps le programme mettra-t-il à exécuter le code dans l'ISR ? Combien de signaux distincts doivent comporter des ISR ? Quelle est la fréquence d'horloge du microcontrôleur ?
Un problème pouvant survenir dans un programme avec une ISR longue est que l'ISR sera déclenché à nouveau avant d'avoir terminé le code qu'il contenait lors de son précédent déclenchement. Il est recommandé de conserver le minimum de code nécessaire dans une ISR pour éviter ce problème.
Dans l'exemple de code ci-dessus, deux signaux sont configurés avec des interruptions distinctes. Ces deux signaux sont nécessaires pour détecter le sens de déplacement de l'actionneur linéaire. Pour ce faire, il faut vérifier quel signal passe de bas à haut avant l'autre. L'inconvénient d'activer les interruptions sur les deux signaux est que la quantité de code ISR à exécuter est doublée. Dans les applications où le sens de déplacement de l'actionneur n'est pas nécessaire ou est déjà visible dans le programme en cours d'exécution, un seul signal doit être configuré avec une routine de service d'interruption.
Certains microcontrôleurs permettent d'augmenter la fréquence d'horloge. Cette fréquence modifie la vitesse d'exécution du programme. Si la fréquence des signaux lus est élevée, il peut être nécessaire d'augmenter la fréquence d'horloge pour suivre le rythme. Cependant, il est plus économe en énergie d'utiliser une fréquence d'horloge aussi lente que possible, compte tenu des capacités de l'application.
QUE SE PASSE-T-IL SI LE MICROCONTRÔLEUR N'EST PAS ASSEZ RAPIDE ?
Après avoir pris en compte les considérations précédentes, il arrive que le microcontrôleur ne soit pas assez rapide pour traiter le code principal et suivre les ISR. Dans ce cas, il peut être judicieux d'utiliser un microcontrôleur supplémentaire. Un microcontrôleur peut être utilisé pour exécuter les ISR, lire les données, puis les transmettre à un autre microcontrôleur où le code principal peut être exécuté sans interruption.