Détecteur de contact
Détecter un contact est certainement la première chose que vous allez demander à votre robot afin qu'il soit capable de réagir lorsqu'il rencontrera un obstacle. Pour cela, il y a plusieurs façons de s'y prendre mais la démarche reste la même : lire le port d'entrée du microcontrôleur sur lequel se trouve le capteur et agir en fonction de son changement d'état.
Détection simple
Pour détecter un contact, vous pouvez utiliser un bouton-poussoir, un microrupteur à levier (microswitch ou microrupteur) ou tout simplement 2 fils dénudés.
| | |
Bouton poussoir à souder sur CI | Bouton Poussoir à souder sur fils | Microswitch (microrupteur) à souder sur CI |
Le schéma ci-dessous vous montre comment câbler le capteur au BASIC Stamp I. Le fonctionnement est simple :
* Le port du microcontrôleur est configuré en entrée, c'est-à-dire qu'il va lire une information. * Tant que le bouton poussoir n'est pas actionné, le port est relié au 5V et le microcontrôleur lit un état haut (1). * Dès que l'on actionne le bouton poussoir, le port est relié au 0V et le microcontrôleur lit un état bas (0) | |
Pour progammer une réaction du robot en fonction du changement d'état, il suffit d'écrire le programme suivant :
INPUT 0
lecture: IF PIN0=0 THEN message GOTO lecture
message: DEBUG «bouton poussoir appuyé» GOTO lecture | =>
=> =>
=>
=> =>
=> | configure le port 0 en entrée (pour la lecture)
sous-programme lecture si le port 0 est à l'état bas (0) alors va au sous-programme message sinon va au sous-programme lecture
sous-programme message affiche à l'écran le message "bouton poussoir appuyé"
va au sous-programme lecture |
L'intérêt de ce système réside dans le fait que vous pouvez utiliser différents types de boutons-poussoir ou d'interrupteurs ou bien les remplacer par des fils dénudés pour détecter un objet métallique par exemple.
Vous avez tout intérêt à fabriquer un circuit imprimé pour ce capteur, même si vous utilisez un bouton-poussoir sur fils, afin de faciliter le câblage avec le microcontrôleur. Vous trouverez ci-dessous un exemple de circuit pour microswitch ainsi que le fichier à télécharger réalisé avec
TCI 3.0 (logiciel gratuit télécharger)
| R1 = 10 kOhms (Marron Noir Orange) SW = Microswitch à levier à souder sur CI
Prévoir 3 fils de couleurs différentes pour P, 0V et 5V |
Détection double
Plus complexe dans son fonctionnement, mais très pratique parce qu'elle n'utilise qu'un port du microcontrôleur, cette méthode permet de détecter 2 contacts en même temps. Comme pour le circuit précédent, vous pouvez utiliser différents types de composants pour assurer la détection du contact.
Voici le schéma du circuit et son fonctionnement :
Le port du microcontrôleur est utilisé en entrée analogique, c'est-à-dire qu'au lieu de lire 2 états (0 ou 1) comme précédemment, il peut lire des valeurs comprises entre 0 et 255.
Lorsqu'aucun des poussoirs n'est enfoncé le microcontrôleur mesure le temps de décharge du condensateur au travers des 3 résistances et convertit cette mesure en une valeur comprise entre 0 et 255.
Si l'un des poussoirs est enfoncé, la somme des résistances diminue ainsi que le temps de décharge. La valeur convertie sera modifiée en conséquence. | |
Pour que le robot réagisse en fonction de ces valeurs, il suffit d'écrire le programme suivant :
SYMBOL val=b0
SYMBOL ech=33
detecte: POT 0,ech,val IF val<210 AND val>200 then msg1 IF val<130 AND val>120 then msg2 IF val<60 then msg3 GOTO detecte
msg1: DEBUG «bouton 1 pressé» GOTO detecte
msg2: DEBUG «bouton 2 pressé» GOTO detecte
msg3: DEBUG «2 boutons pressés» GOTO detecte | =>
=>
=> => => => => =>
=> => =>
=> => =>
=> => => | réserve un espace en mémoire pour stocker les valeurs lues
déclare que la variable "ech" contient 33 (valeur de l'échelle de lecture à étalonner avant de lancer le programme, voir plus bas)
sous-programme detecte lit sur le port 0 et stocke la valeur dans "val" si la valeur est comprise entre 200 et 210 alors va à msg1 si la valeur est comprise entre 120 et 130 alors va à msg2 si la valeur est inférieure à 60 alors va à msg3 sinon va au sous-programme detecte
sous-programme msg1 affiche à l'écran le message "bouton 1 pressé" va au sous-programme detecte
sous-programme msg2 affiche à l'écran le message "bouton 2 pressé" va au sous-programme detecte
sous-programme msg3 affiche à l'écran le message "2 boutons pressés" va au sous-programme detecte |
Le circuit ci-dessous est un exemple de pare-choc réalisé avec ce système de détection et 2 microswitch à levier. Placé à l'avant du robot, il indique à celui-ci la présence d'un obstacle qui le fait réagir en fonction des sous-programmes écrits (recule, tourne à gauche,etc...). Le fichier réalisé avec
TCI 3.0 (logiciel gratuit à télécharger) est disponible en téléchargement.
|
R1 = 6,8 kOhms (Bleu, Gris, Rouge) R2 = 10 kOhms (Marron, Noir, Orange) R3 = 22 kOhms (Rouge, Rouge, Orange) C1 = Condo polyester 100 nF SW1, SW2 = Microswitch à levier Prévoir 2 fils de couleurs différentes pour P et 0V |
Etalonnage du port lors d'une lecture analogique
La valeur “ECH” est définie à l’étalonnage du montage.
Pour cela, reliez votre capteur au microcontrôleur, connectez celui-ci au PC grâce au câble de liaison, lancez l’éditeur BASIC (stamp.exe) et appuyez ALT+P et sélectionnez le port connecté au capteur.
Dans la fenêtre qui apparaît, vous devez voir une valeur SCALE. Si vous le pouvez, réglez votre montage pour que cette valeur soit la plus basse possible. Appuyez ensuite sur la barre espace, agissez sur votre montage et regardez le chiffre VALUE changer suivant vos actions. Ce sont ces valeurs que vous devez utiliser dans votre programme pour créer vos conditions (IF...THEN...).