Les capteurs à effet Hall font partie des options de Rétroaction que nous proposons dans nos vérins 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 version 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. Lorsqu’il est associé à un circuit de détection de seuil de tension, un signal à deux états peut être produit. 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 : activé ou désactivé. Ces deux signaux montent et descendent au fur et à mesure que le moteur électrique tourne, avec un déphasage de 90° entre eux, comme illustré ci-dessous. La fréquence de ces impulsions, en lien avec la variation de position dans l’actionneur, dépend de leur résolution globale et varie selon nos différents actionneurs.
COMMENT LIRE CES SIGNAUX À EFFET HALL ?
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 (polling) et les interruptions. L’interrogation est une méthode programmée selon laquelle un microcontrôleur vérifie périodiquement l’état d’une entrée pour voir s’il y a eu un changement. Les interruptions, quant à elles, sont un mécanisme matériel qui redirige immédiatement l’exécution du programme du microcontrôleur lorsque le signal change sur une entrée. Chacune de ces méthodes a ses avantages et ses inconvénients, et chacune convient mieux à certains cas d’usage. Dans notre cas, nous voulons connaître l’instant précis où un signal change d’état, nous utiliserons donc des interruptions. Pour utiliser un capteur à effet Hall avec des microcontrôleurs Arduino, on recourt à une interruption. En créant une ISR (Interrupt Service Routine, ou routine de service d’interruption), l’Arduino peut exécuter immédiatement une section de code lorsqu’un changement défini est détecté sur une entrée spécifiée. Un exemple d’ISR pour un Arduino est présenté ci-dessous ; une version modifiée orientant les signaux détectés vers des LED est une manière de tester un capteur à effet Hall.
Programmer un Arduino pour lire des capteurs à effet Hall - méthode par interruption
|
// des variables volatiles globales sont nécessaires pour passer des données entre le // programme principal et les ISR volatile byte signalA; // les broches utilisables avec des interruptions dépendent de la carte que vous // utilisez // détectera un front montant ou descendant // à l’opposé de l’état actuel signalA = !signalA; |
QUELS ASPECTS FAUT-IL PRENDRE EN COMPTE DANS L’APPLICATION ?
Comme les signaux que nous lisons seront de haute fréquence, quelques points doivent être pris en compte. Premièrement, combien de temps le programme mettra-t-il à exécuter le code dans l’ISR ? Combien de signaux distincts doivent disposer d’une ISR ? À quelle vitesse fonctionne l’horloge du microcontrôleur ?
Un problème possible avec une ISR longue est qu’elle se déclenche à nouveau avant d’avoir terminé le code lancé précédemment. Il est recommandé de ne garder que le minimum de code nécessaire dans une ISR pour éviter cela.
Dans l’exemple de code ci-dessus, deux signaux sont configurés avec des interruptions distinctes. Les deux signaux sont nécessaires pour détecter le sens de déplacement du vérin linéaire ; on vérifie pour cela quel signal passe de bas à haut avant l’autre. L’inconvénient d’activer des interruptions sur les deux signaux est que deux fois plus de code d’ISR sera exécuté. Dans les applications où le sens de déplacement de l’actionneur n’est pas nécessaire ou est déjà connu du 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 pour aller plus vite. La fréquence d’horloge détermine 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. Cependant, il est plus économe en énergie d’utiliser la fréquence la plus basse que l’application permet.
QUE SE PASSE-T-IL SI LE MICROCONTRÔLEUR N’EST PAS ASSEZ RAPIDE ?
Après ces considérations, il arrive que le microcontrôleur ne soit tout simplement pas assez rapide pour exécuter le code principal tout en suivant les ISR. Dans ce cas, vous pouvez utiliser un microcontrôleur supplémentaire. Un microcontrôleur peut exécuter les ISR, lire les données, puis transmettre les données nécessaires à un autre microcontrôleur où le code principal pourra s’exécuter sans interruption.