Projet Robotek

Accueil  Nouvelles  Téléchargements  Liens  Forum
Capteur de contact

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_1.jpgbouton_poussoir_2.jpgmicro_switch.jpg
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)
schema_bp1.gif
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)

circuit_microswitch.gifR1 = 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.
schema_bp2.gif

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.

circuit_pare-choc.gif
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...).
Date de création : 08/11/2007 @ 20:52
Dernière modification : 14/11/2007 @ 15:51
Catégorie : Capteurs
Page lue 18010 fois

up Haut up


Site propulsé par GuppY - © 2004-2007 - Licence Libre CeCILL