Monome2018-7 : Différence entre versions
(→Limites pratiques du robot) |
|||
(2 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 116 : | Ligne 116 : | ||
</gallery> | </gallery> | ||
''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.'' | ''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.'' | ||
+ | |||
+ | <gallery mode="nolines"> | ||
+ | Fichier:robot_andrei1.jpg | ||
+ | Fichier:robot_andrei2.jpg | ||
+ | Fichier:robot_andrei3.jpg | ||
+ | </gallery> | ||
=Remarques= | =Remarques= | ||
Ligne 124 : | Ligne 130 : | ||
** demander gentiment aux copains de modifier le code de leur émetteur | ** 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 ?) | ** essayer d'allonger la durée d'une impulsion (avec un filtre et un comparateur peut-être ?) | ||
− | |||
* J'a appris après coup que le régulateur de tension que j'utilise pour passer de 9V à 5V est très inefficace et donc peu adapté à l'utilisation sur une batterie. | * J'a appris après coup que le régulateur de tension que j'utilise pour passer de 9V à 5V est très inefficace et donc peu adapté à l'utilisation sur une batterie. | ||
Ligne 132 : | Ligne 137 : | ||
J'ai réalisé plusieurs tests afin d'essayer de déterminer ce qui n'allait pas: | J'ai réalisé plusieurs tests afin d'essayer de déterminer ce qui n'allait pas: | ||
− | *La résistance entre la sortie du régulateur de tension et la masse est >>0Ω : le court-circuit n'est donc pas très évident. Néanmoins, en branchant à une alimentation extérieure cette partie logique, j'obtenais un courant de ~350mA pour.. quelques millivolts de tension. | + | *La résistance entre la sortie du régulateur de tension et la masse est >>0Ω : le court-circuit n'est donc pas très évident ; j'ai bien vérifié que toutes mes diodes et mes condensateurs soient dans le bon sens. Néanmoins, en branchant à une alimentation extérieure cette partie logique, j'obtenais un courant de ~350mA pour.. quelques millivolts de tension. |
*Par la suite, j'ai trouvé un certain nombre d'endroits sont en contact direct avec la masse (alors qu'ils ne devraient pas l'être), nottament les pins 4,5,6,7 du NE555 "U6" (en haut sur le PCB). | *Par la suite, j'ai trouvé un certain nombre d'endroits sont en contact direct avec la masse (alors qu'ils ne devraient pas l'être), nottament les pins 4,5,6,7 du NE555 "U6" (en haut sur le PCB). |
Version actuelle datée du 25 mai 2019 à 12:08
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é, et il n'y a pas de code.
Sommaire
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 |
---|---|
|
|
- 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 :
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 :
Malheureusement, à cause des puces permettant la miniaturisation des portes logiques, le schéma est assez illisble.
Plaque imprimée
Fichier:BE IMA AF.zip
Note : Lors de la création du plan de masse, Fritzing a décidé de le relier à deux résistances; j'ai donc dû gratter le cuivre autour des contacts des deux résistances.
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 théoriques 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 ?)
- J'a appris après coup que le régulateur de tension que j'utilise pour passer de 9V à 5V est très inefficace et donc peu adapté à l'utilisation sur une batterie.
Limites pratiques du robot
Le robot ne fonctionne tout simplement pas; il y a un court-circuit quelque part dans la partie logique.
J'ai réalisé plusieurs tests afin d'essayer de déterminer ce qui n'allait pas:
- La résistance entre la sortie du régulateur de tension et la masse est >>0Ω : le court-circuit n'est donc pas très évident ; j'ai bien vérifié que toutes mes diodes et mes condensateurs soient dans le bon sens. Néanmoins, en branchant à une alimentation extérieure cette partie logique, j'obtenais un courant de ~350mA pour.. quelques millivolts de tension.
- Par la suite, j'ai trouvé un certain nombre d'endroits sont en contact direct avec la masse (alors qu'ils ne devraient pas l'être), nottament les pins 4,5,6,7 du NE555 "U6" (en haut sur le PCB).