Monome2018-7

De Wiki de bureau d'études PeiP
Révision datée du 9 mai 2019 à 13:38 par Aflorea (discussion | contributions) (Chassis)

Dans ce TP j'ai voulu créer un robot prédateur, mais ce sans utiliser de microcontrôleur. Le comportement du robot est donc contrôlé intégralement grâce à son circuit imprimé.


Circuit

Le circuit est la partie la plus importante de ce robot.

Fonctionnement

Logique

Logiquement, le robot a 3 entrées et 3 sorties :

Entrées Sorties
  • Capteur TSOP Frontal ("Cf")
  • Capteur TSOP Droit ("Cd")
  • Capteur Ultrason ("S" comme Sonar)
  • Moteur Droit ("Md")
  • Moteur Gauche ("Mg")
  • LED d'Attaque ("A")
  • Les TSOP sont actifs bas, c'est à dire que leur tension tombe à 0V sur le pin "Out" lorsqu'ils captent un signal(*). On utilise donc "¬C" (la négation de "C") pour représenter le moment où les capteurs captent effectivement quelque chose.
  • "S" correspond à "il y a quelque chose à moins de 8 cm". Or, le sonar n'est pas fait pour détecter si la cible est à 8cm; plutôt, il envoie un signal électrique dont la durée est égale au temps que met l'onde pour parcourir l'aller retour entre l'émetteur/récepteur et la cible. Normalement, ce signal est décodé par un Arduino pour trouver la distance exacte. Pusique je ne souhaite pas utiliser d'Arduino, il me faut donc créer un circuit permettant de détecter si la durée t du signal est supérieure à t ≈ 475µs correspondant à une distance de 8cm.
  • La LED d'attaque représente l'attaque du robot lorsqu'il estime que la proie est assez proche.

Le robot est également équipé d'une LED Erreur ("Err") qui s'active en cas de situation "impossible" (cette LED ne devrait donc normalement pas s'allumer).


Table de vérité
¬Cf ¬Cd S Mg Md A
0 0 0 0 0 0
0 0 1 Erreur
0 1 0 1 0 0
0 1 1 Erreur
1 0 0 1 1 0
1 0 1 1 1 1
1 1 0 1 0 0
1 1 1 1 1 1
=>
Equations :
Mg = ¬Cf + ¬Cd
Md = ¬Cf.(Cd+S)
A = ¬Cf.S
Err = Cf.S

Réalisation de la logique du sonar :

Diagramme temporel de la logique de S

Comme énoncé précedemment, le sonar envoie un signal dont la durée est égale au temps que met l'ultrason pour parcourir l'aller-retour entre l'émetteur/récepteur et la cible, donc t = 2d/v. Mais je désire obtenir un signal qui :

  • est haut lorsqu'il y a un objet à moins de 8cm (soit t < 2*(8cm)/v ≈ 475µs).
  • est bas sinon (t > 2*(8cm)/v)


Pour ce faire :

  • un 555 astable (nommé "PULSE") sert à produire des impulsions négatives toutes les 47 ms.
  • ce signal est inversé afin d'obtenir des impulsions positives.
  • ces impulsions sont envoyées au pin "TRIGGER" du sonar, ce qui déclenche l'acquisition.
  • l'acquisition provoque une mise à 5V du pin "ECHO" du sonar.
  • le signal du pin "ECHO" est inversé et :
    • est fourni en entrée d'un 555 monostable qui produit un pic positif pendant ~475µs.
    • est comparé à la sortie du 555 susnomé à l'aide d'une porte logique ET.
  • la comparaison est enfin transmise à un dernier 555 monostable qui produit alors le signal désiré.

Schéma final

Au final, le schéma éléctrique est le suivant :

Schéma global du circuit

Malheureusement, à cause des puces permettant la miniaturisation des portes logiques, le schéma est assez illisble.

Plaque imprimée

Schéma de production :

BE IMA PCB.png

Fichier:BE IMA AF.zip

Chassis

Le chassis du robot est composé d'une plaque en plexi d'épaisseur 4 mm à la base, une plaque de plexi 3mm en tant que "bouclier" et de quelques morceaux de plexi afin de stabiliser le tout. Le plexi a été déoupé au laser selon des fichiers svg que j'ai produit.

Note : j'ai du limer quelques petites parties du chassis ; un trou était trop serré pour laisser passer l'interrupteur, et les supports empêchaient le passage du moteur.

Remarques

  • Il n'y a pas besoin de capteur TSOP à gauche; en effet, le robot tourne à gauche tant qu'il ne détecte pas de proie à droite ou devant lui, il n'y a donc pas besoin de vérifier si il y a une proie ou pas à gauche.

Limites du robot

  • Les capteurs TSOP transforment le signal infra-rouge reçu en un signal electrique. Un problème surgit alors à cause du fait que les émetteurs infrarouges des autres robots ne transmettent pas un signal continu, mais plutôt des données[1]. Je n'obtiendrai donc pas forcément un signal continu, à moins de :
    • demander gentiment aux copains de modifier le code de leur émetteur
    • essayer d'allonger la durée d'une impulsion (avec un filtre et un comparateur peut-être ?)
Je me rabatterai sur la première solution.