kompass
Deutsch   English   Français   

6. CAPTEUR DE CHAMP MAGNÉTIQUE, BOUSSOLE

 

 

TU APPRENDRAS ICI...

 

comment mesurer le champ magnétique avec le micro:bit et déterminer la direction géographique (l'azimut)..

 

 

ÉTALONNER LE CAPTEUR ET AFFICHER LES VALEURS

 
 


Tu peux utiliser le capteur de champ magnétique comme une boussole pour déterminer l'orientation du micro:bit par rapport au nord.Pour cela, tu utilises la commande compass.heading() qui, lorsque la carte est en position horizontale, renvoie l'azimut en degrés (dans le sens positif vers l'est).

Le capteur est bien visible sur ton micro:bit et porte l'inscription COMPASS.  

Avant de commencer les mesures, tu dois étalonner le capteur avec la commande compass.calibrate(). Après l'appel de cette commande, l'exécution du programme est suspendue et un message apparaît sur l'écran, t'invitant à incliner le micro:bit jusqu'à ce que toutes les LED aient été activées.

L'image HAPPY apparaît alors sur l'écran et le programme reprend son exécution. Dans une boucle infinie, tu affiches l'azimut sous forme d'un nombre entier compris entre 0 et 360.

Comme d'habitude, tu peux interrompre l'affichage dans la fenêtre du terminal avec Ctrl+C.

 


Programme:

from microbit import *

compass.calibrate()
while True:
    print(compass.heading())
    sleep(300)    
►Copy to clipboard

 

 

EXAMPLES

 
Créer une boussole

Comme sur une véritable boussole, une flèche doit apparaître sur l'écran et pointer approximativement vers le nord. Comme tu ne peux afficher que des flèches orientées selon des directions espacées de 45 degrés, tu divises l'azimut en huit secteurs et tu associes à chacun d'eux la flèche qui convient le mieux.Si le capteur n'a pas encore été étalonné, tu dois d'abord effectuer l'étalonnage.

 

En principe, tu devrais également tester l'égalité aux limites des secteurs. Mais comme le capteur ne renvoie que des valeurs entières, tu peux t'en passer.

Programme:

from microbit import *

if not compass.is_calibrated():
    print("Perform calibration please!")
    compass.calibrate()

while True:
    h = compass.heading()
    print(h)
    if h > 22.5 and h < 67.5:
        display.show(Image.ARROW_NW) 
    elif h > 67.5 and h < 112.5:
        display.show(Image.ARROW_W)    
    elif h > 112.5 and h < 157.5:
        display.show(Image.ARROW_SW)    
    elif h > 157.5 and h < 202.5:
        display.show(Image.ARROW_S)    
    elif h > 202.5 and h < 247.5:
        display.show(Image.ARROW_SE) 
    elif h > 247.5 and h < 292.5:
        display.show(Image.ARROW_E)          
    elif h > 292.5 and h < 337.5:
        display.show(Image.ARROW_NE)
    else:
        display.show(Image.ARROW_N)
    sleep(10) 
►Copy to clipboard

 

Rechercher des mines

Place un petit aimant, comme ceux que l'on utilise sur les tableaux magnétiques, sous un couvercle en carton. Tu peux considérer cet aimant comme une mine que tu dois retrouver en utilisant le micro:bit comme détecteur de mines. Dans ton programme, la LED centrale brille d'autant plus intensément que la carte se rapproche de la mine.

Tu utilises la commande compass.get_field_strength()f, qui renvoie l'intensité du champ magnétique.

 

Tu adaptes ensuite cette valeur mesurée afin d'obtenir une intensité lumineuse comprise entre 0 et 9.

Programme:

from microbit import *

while True:
    b = compass.get_field_strength()    
    z = min(9, int(b / 500000)) # brightness
    display.set_pixel(2, 2, z)
    sleep(10)
►Copy to clipboard

 

Mesurer le niveau de l'eau

Ton dispositif expérimental se compose d'un vase à fleurs et d'un aimant fixé sur un bouchon de liège flottant. À l'aide de trois clous, tu peux stabiliser le bouchon de manière à ce que l'aimant se déplace toujours le long de la même ligne verticale lorsque le niveau de l'eau varie.

La fonction get_field_strength() renvoie l'intensité du champ magnétique. Selon la puissance de l'aimant utilisé, tu devras éventuellement adapter les valeurs limites dans le programme.

 

Le plus simple est d'imaginer que le récipient peut se trouver dans trois « états », représentés par la variable state, qui peut prendre les valeurs "high", "ok" et "low".

À partir de la valeur du champ magnétique mise à l'échelle, tu décides si l'état doit changer. En appuyant sur le bouton A, tu peux désactiver les signaux sonores. Si tu ne disposes pas de sortie audio, tu peux également réaliser un autre type de signal d'alarme.

 

 



Programme:

from microbit import *
import music

state = "ok"

while not button_a.was_pressed():
    b = compass.get_field_strength()
    print(b)
    f = int(b / 100000)
    print(f)
    if f >= 15 and state != "high":
        state = "high"
        print("->high")
    elif f >= 8 and f < 15 and state != "ok":
        state = "ok"
        print("->ok")
    elif f < 8 and state != "low":
        state = "low"
        print("->low")
    if state == "high":
        music.pitch(2000, 100)
    elif state == "low":
        music.pitch(500, 100)
    sleep(500)
►Copy to clipboard

 

 

À RETENIR...

 

Le capteur de champ magnétique peut être utilisé pour détecter des aimants ou comme boussole pour déterminer les directions géographiques. Lorsqu'il est utilisé comme boussole, il doit être étalonné avant sa première utilisation.

 

 

EXERCICES À RÉSOUDRE

 

 

1.

Réalise un « compteur de pirouettes » : chaque fois que tu effectues un tour complet sur toi-même en tenant le micro:bit dans la main, une LED supplémentaire doit s'allumer sur l'écran.

Indications : Lorsque le micro:bit tourne, la fonction compass.heading() fournit un signal dont l'évolution est irrégulière.

Pour compter les tours, un seul seuil ne suffit pas. Il faut définir deux seuils. Lorsque le signal dépasse le seuil supérieur, le compteur est augmenté de 1 et le comptage est simultanément désactivé. Ce n'est que lorsque le signal descend en dessous du seuil inférieur que le comptage est réactivé.


2.

Les compteurs de tours sans contact (par exemple pour les roues) utilisent souvent un aimant qui passe devant un capteur de champ magnétique à chaque rotation. Fixe un petit aimant (par exemple provenant d'un tableau magnétique ou d'une fermeture magnétique) sur une roue de vélo et écris un programme qui affiche le nombre de tours dans la fenêtre du terminal.

Comment pourrais-tu utiliser ce dispositif pour réaliser un compteur kilométrique ?

 

 

   
6-1
Remarques didactiques:

On peut écrire ce programme de manière plus élégante en utilisant une liste contenant les 8 flèches et en calculant mathématiquement les plages angulaires à l'aide de l'opérateur modulo. Cette solution est toutefois plus difficile à comprendre pour les élèves.

from microbit import *

if not compass.is_calibrated():
    print("Perform calibration please!")
    compass.calibrate()


while True:
    h = compass.heading()
    print(h)
    h = (h - 22.5) % 360
    i = 7 - int(h / 45)
    display.show(Image.ALL_ARROWS[i])
    sleep(100)