Aller au contenu


Photo
- - - - -

Capteur de Choc AntiRebond???


5 réponses à ce sujet

#1 Jojo86

Jojo86

    Membre occasionnel

  • Membres
  • Pip
  • 101 messages

Posté 02 mai 2010 - 10:03

Bonjour,

Je met en oeuvre sur mon robot des capteurs de chocs.

J'ai monté mes interrupteurs de cette manière :
Contacteurs

J'utilise cette commande pour detecter le changement de niveau logique:
on int(16) = 0 gosub 20

20 SOUND 8,400,20
Delay 1000
Return

Lorsque le contacteur est actionné, j'ai bien mon bip, mais lorsque je le relache, j'ai aussi un bip...
Je pense que le contact n'est pas net et il doit y avoir des rebonds.
Pensez vous qu'en mettant un condo de 100N sur les contacts de l'interrupteur, je viendrais filtrer les rebonds?
Sinon comment puis-je faire?

Autre question, j'ai deux contacts de chocs avant (un droit un gauche). Est-ce que je peux utiliser deux fois la commande on int() par exemple :
on int(16) = 0 gosub 20
on int(17)= 0 gosub 25


Merci à vous tous.

Jojo

#2 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 02 mai 2010 - 10:47

Oui, mais la valeur du condensateur de filtrage va dépendre de la résistance de pull-up (ou pull down) que tu as mis. L'ensemble résistance + condo constitue un filtre (passe bas du premier ordre).
Il faut que l'ensemble corresponde à la constante de temps du filtre (Tau) que tu veux obtenir. Tau = R x C. Pour un bouton ou autre contact mécanique, un filtrage entre 10 et 100ms convient en général. A tester...

Par exemple, tu peux obtenir 10ms (0.01s) avec R=100kOhm et C=100nF.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#3 Jojo86

Jojo86

    Membre occasionnel

  • Membres
  • Pip
  • 101 messages

Posté 02 mai 2010 - 11:16

Merci de ta réponse, écoute je viens d'essayer avec un 100nano appecable !
Par contre, et là je n'ai pas pigé la documentation du Picbasic...
Voici le lien vers la doc (pour ceux qui voudront m'aider) :
Doc PicBasic (fichier dispo sur Lextronic)
Page 88

J'ai mes deux contacts qui sont reliés à mon Pic, l'un sur l'entrée 16 et l'autre sur l'entrée 17 (je parle bien d'entrées I/O et non de broches).
En rapport avec la commande On INT, la doc précise qu'il y a des entrées particulières notamment les entrées 16 et 24 qui permettent des Interruptions sur fronts montant/descendant

Je n'ai pas bien saisi les informations de la documentation...

D'autre part, il est précisé qu'il ne faut utiliser la commande On Int qu’une seul fois au début du programme, donc je ne peux pas faire ce que je voulais :

on int(16) = 0 gosub 20
on int(17)= 0 gosub 25


Dans cette configuration, j'ai fais un test et il n'y a que l'entrée 17 qui est prise en compte. Si je mets 17 avant 16, c'est 16 qui est interprétée par le Pic.

Si c'était le cas, je pensais utiliser une porte logique OU en connectant mes interrupteurs à la fois sur les entrées de la porte logique et sur deux entrées du PIC (une pour chaque inter). La sortie du OU serait reliée sur une Broche de mon PIC. Lorsqu’un ou deux interrupteurs sont actionnés, le OU envoi un 1 logique au PIC qui servira à actionner la commande ON INT. Etant donné que mes interrupteurs sont aussi reliés sur le PIC, il suffit par programmation de venir regarder quelle broche est à 1 et de programmer en fonction…

Cette méthode est un peut plus compliquée et prendre 3 pates de mon PIC au lieu de 2... Peut être avez vous une meilleur idée?

Merci d'avance pour vos explications et vos conseils.

#4 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 02 mai 2010 - 11:42

Attention, la broche 16 et les autres n'ont pas le même comportement avec l'instruction ON INT(X).
Avec la broche 16, l'interruption sera déclenchée sur un FRONT du signal. Si le signal passe à l'état bas (tu as écris =0), puis y reste, la redirection n'aura lieu qu'une fois. Avec toutes les autres broches, tu sera systématiquement redirigé, tant que la broche est dans le même état. Il faut donc privilégier la broche 16.

Pour le reste, ça ne m'étonnerai pas qu'un microcontroleur aussi peu puissant que le PIC 16Fxxx ne sache gérer qu'une seule interruption. Ca n'est peut être pas expliqué clairement dans la notice, mais tu peux regarder dans la doc du PIC si tu veux confirmation.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#5 Jojo86

Jojo86

    Membre occasionnel

  • Membres
  • Pip
  • 101 messages

Posté 02 mai 2010 - 11:46

Ok je te remerci, donc j'opte pour l'entrée 16.

Par contre, pour mon OU je vais le faire à diode avec une resistance.
Je pensais mettre des 1N4148 c'est bon? et la resistance, je ne sais pas comment calculer sa valeur... Je pensais à 150ohms (au pif)
Je ne sais pas comment m'y prendre pour trouver la valeur de la resistance, même si tu m'as di que je devais regarder la consomation et calculer une chute de tension de 100mV...

Merci de ton soutient !

Jojo.

#6 Jojo86

Jojo86

    Membre occasionnel

  • Membres
  • Pip
  • 101 messages

Posté 03 mai 2010 - 06:51

Bonjour,

J'ai fais comme pour les capteurs odometrique, j'ai essayé plusieurs conbinaisons de resistances ! je vais essayer d'ajuster un peu aujourd'hui.



Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users