Monome2018-7 : Différence entre versions

De Wiki de bureau d'études PeiP
(Plaque imprimée)
(Limites pratiques du robot)
 
(19 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
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é.
+
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.
 +
 
 +
[[Fichier:robot_andrei1.jpg|thumbnail]]
  
  
Ligne 98 : Ligne 100 :
  
 
[[Fichier:BE_IMA_PCB.png|700px]]
 
[[Fichier:BE_IMA_PCB.png|700px]]
 +
 +
[[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.
 +
 +
<gallery mode = "slideshow">
 +
Fichier:Decoupe_gros.png | ''La pièce formant la base du robot''
 +
Fichier:Decoupe_moyen.png | ''Le "shield" du robot''
 +
Fichier:Decoupe_petits.png | ''Les pièces de soutien''
 +
</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.''
 +
 +
<gallery mode="nolines">
 +
Fichier:robot_andrei1.jpg
 +
Fichier:robot_andrei2.jpg
 +
Fichier:robot_andrei3.jpg
 +
</gallery>
  
 
=Remarques=
 
=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.
 
*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==
+
==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[https://i.stack.imgur.com/fyUIE.png]. Je n'obtiendrai donc pas forcément un signal continu, à moins de :
 
* 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[https://i.stack.imgur.com/fyUIE.png]. Je n'obtiendrai donc pas forcément un signal continu, à moins de :
 
** 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 ?)
: Je me rabatterai sur la première solution.
+
* 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).

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.

Robot andrei1.jpg


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

BE IMA PCB.png

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).