Finalisation de cartes de contrôle de robot

De Wiki d'activités IMA

Cahier des charges

Présentation générale du projet

Reprendre la carte du stage Plateforme robotique pour l'enseignement secondaire.

Ajouter les mini-cartes pour les capteurs ultra-son et les capteurs de lignes. La mini-carte pour le capteur ultra-son comprend un connecteur RJ11 pour connexion à la carte mère, un émetteur et un récepteur ultra son, de préférence de surface.

La mini-carte détecteur de ligne comprend un connecteur RJ11 et 3 détecteurs de lignes réalisés avec des phototransitors et des LEDs infrarouges de préférence de surface. Pour cette dernière carte un système de cache pour chaque détecteur doit être prévu de manière à occulter la lumière extérieure. Il faut aussi prévoir un dispositif mécanique pour que les caches soient constamment plaqués au sol.

Ajouter une mini-carte par moteur permettant de connecter un moteur et un odomètre à la carte mère. Cette mini-carte comporte évidemment un connecteur RJ11.


Ecrire les fonctions permettant de gérer les moteurs, en particulier en ligne droite en utilisant les odomètres. Ecrire aussi les fonctions permettant de gérer capteurs de ligne et capteur ultra-son. Ces fonctions seront écrites en C pour avr-gcc.

Créer un châssis unique pour les deux motorisations avec des fixations propres sans utilisation de fil de fer.

[Modification 10/07] L'idée est de baisser le coût du sonar (ce qui sera probablement difficile) ou d'augmenter la distance de détection, ce qui pourrait être plus facile à réaliser. Il n'y a pas de programme et la carte mère n'a pas été testée. Il faut donc vérifier le PCB. Clairement il y a déjà un bug avec le contrôleur de moteurs les pattes de puissance devraient être groupées par deux.

Liste de matériel

Carte capteur de ligne

Quantité Description Vendeur N° Produit URL
3 QRE1113GR Capteur Optique Réfléchissant RS-Online 761-3984 http://fr.rs-online.com/web/p/capteurs-optiques-reflechissants/7613984/
3 220Ohm résistance de surface +/-5% 0.1W RS-Online 832-3152 http://fr.rs-online.com/web/p/resistances-cms/8323152/
3 10kOhm résistance de surface +/-5% 3/4W RS-Online 9045144 http://fr.rs-online.com/web/p/resistances-cms/9045144/
1 Connecteur RJ11 embase femelle Conrad 716124 - 62 http://www.conrad.fr/ce/fr/product/716124/Embase-femelle-modulaire-ASSMANN-WSW-A-20040-noir-Conditionnement-1-pcs

Carte capteur ultrason (en cours)

Quantité Description Vendeur N° Produit URL
Partie Emmetteur
1 Emetteur US 40kHz GoTronic 05395 http://www.gotronic.fr/art-emetteur-a-ultrasons-tr4010t-18335.htm
1 Récepteur US 40kHz GoTronic 0395 http://www.gotronic.fr/art-recepteur-a-ultrasons-tr4010r-18336.htm
1 Connecteur RJ11 embase femelle Conrad 716124 - 62 http://www.conrad.fr/ce/fr/product/716124/Embase-femelle-modulaire-ASSMANN-WSW-A-20040-noir-Conditionnement-1-pcs
2 Resistance de surface 270Ohm +/-1% 0.2W RS-Online 722-1046 http://fr.rs-online.com/web/p/resistances-cms/7221046/
6 Résistance de surface 2kOhm +/-1% 0,25W RS-Online 862-6824 http://fr.rs-online.com/web/p/resistances-cms/8626824/
3 Transistor NPN SOT23 MMBT3904 RS-Online 739-0303 http://fr.rs-online.com/web/p/transistors-bipolaires/7390303/
3 Transistor PNP SOT23 MMBT3906 RS-Online 739-0388 http://fr.rs-online.com/web/p/transistors-bipolaires/7390388/
Partie Récepteur
1 Amplificateur Opérationnel Quadruple 4MHz TS924 Farnell 1094392 http://fr.farnell.com/stmicroelectronics/ts924id/ampli-op-quad-e-s-rail-rail-soic14/dp/1094392
2 Résistance 100kOhm
6 Résistance 10kOhm
1 Résistance 680Ohm
1 Condensateur 1nF
2 Condensateur 10pF
2 Condensateur 820nF Farnell 1759390 http://fr.farnell.com/multicomp/mc0603x824k6r3ct/condensateur-mlcc-x5r-820nf-6/dp/1759390
1 Diode Farnell 1466524 http://fr.farnell.com/multicomp/1n4148ws/diode-haute-rapidite-sod-323/dp/1466524
1 Potentiomètre 500kOhm Farnell 2329302 http://fr.farnell.com/bourns/3364w-1-504e/potentiom-trimmer-500k-25-1-tour/dp/2329302

Carte Odomètre (en cours)

Quantité Description Vendeur N° Produit URL
2 Interrupteur Optique KTIR0221DS GoTronic 03502 http://www.gotronic.fr/art-interrupteur-optique-ktir0221ds-2326.htm
2 2kOmh Resistance de surface 0.1W +/-1% RS-Online 740-8836 http://fr.rs-online.com/web/p/resistances-cms/7408836/
2 200Ohm Resistance de surface 0.25W +/-5% RS-Online 862-6815 http://fr.rs-online.com/web/p/resistances-cms/8626815/
1 Connecteur RJ11 embase femelle Conrad 716124 - 62 http://www.conrad.fr/ce/fr/product/716124/Embase-femelle-modulaire-ASSMANN-WSW-A-20040-noir-Conditionnement-1-pcs
2 Bornier (Optionnel) Fanrell 2527545 http://fr.farnell.com/camdenboss/ctbp3051-2/tb-fil-a-carte-2-voies-24-18awg/dp/2527545

Livrables

Avancement du Projet

Avancement du Projet

Carte capteur Ultrason


La carte ultrason permet d'évaluer la distance libre face au robot. Grâce à un système émetteur/récepteur ultrason, nous serons en mesure de détecter un obstacle ainsi que la distance le séparant de notre robot. La réalisation de la carte ultrason se décompose en 2 étapes, la partie émettrice et la partie réceptrice.
La partie émettrice comme son nom l'indique se compose de l’émetteur ultrason. La technologie piezo-électrique transforme un signal électrique en vibration acoustique. En me basant sur les différents produits disponibles dans le commerce, un émetteur de fréquence 40 kHZ sera utilisé. Le piezo fonctionne comme un haut parleur, il faut lui fournir une tension alternative qu'il puisse créer une pression/dépression et ainsi formé un vibration acoustique.
Différente manière de procéder sont possibles, on pourrait utiliser un multivibrateur NE555 avec un jeu de portes logiques afin d'obtenir la fréquence désirée. Or, l'Atmega328 dispose de broche PWM permettant de générer des signaux carrés de fréquence désirée grâce au mode Fast PWM or la conception de la carte mère a été fait autrement. Il faudra utiliser une sortie sortie classique que l'on fera commutera "manuellement" de 0 à 5V à une fréquence de 40kHz. Avec un système de pont en H, réalisé avec des transistors, il est tout à fait possible de créer un courant alternatif aux bornes de la charge. les resistances on été choisis afin de faire circuler un courant de 20mA dans ledit pont ainsi qu'un courant de commande de 2 mA.

Dans un second temps, la partie réceptrice se charge de faire l'inverse. Elle transforme un signal acoustique en signal électrique. Il est évident qu'il faudra filtrer et amplifier le signal afin qu'il soit exploitable par le micro contrôleur. En effet, l'onde acoustique généré par l'émetteur vient rebondir sur l'obstacle et est ensuite capté par le récepteur. La vitesse de propagation d'une onde acoustique est d'environ 340m/s, on déterminera la distance grâce à la formule \textstyle {d=\frac{v}{t}}. Sachant que nous ressortirons la valeur totale de déplacement de l'onde (aller/retour), on prendra soin de divisé par 2 cette mesure. La partie réception se décompose en 3 étages, un filtre passe bande centré en 40kHz composé de 2 AOP montés en inverseur, un redresseur de tension composé d'une diode, et d'un couple capacité-résistance permettant un signal à état haut toute la durée de la réception et vu que j'utilise un AOP quadruple je me servirai d'un 3eme étage en commutation pour avoir un 5v effectif en sortie.

Recepteur ultrason hand.jpg

Ci-dessus la première version du récepteur.


Et voici la deuxième

Recepteur us v2.png


F1-F1Bis

La fonction utilise 1/4 TS924, c'est un montage dit "Passe-Bande".

  • Le couple C1,R1 détermine la fréquence de coupure basse Fc1 = 1/(2*pi*1.5*10^-9*3300) = 32152Hz.
  • Le couple C2,R2 détermine la fréquence de coupure haute Fc2 = 1/(2*pi*1*10^-12*316000) = 50365Hz.
  • Le couple R1,R2 détermine le gain max (x95) pour la fréquence centrale Fr = sqrt(Fc1*Fc2) = 40240Hz.

[Modification 31/07] Après discussion avec mon tuteur, le gain de x1000 est trop important. En comparant différente sources, un gain de (400-500) semble suffisant , un test avant montage semble nécessaire. Un gain réglable est une meilleure solution, cela permettra de régler la distance de détection.

En effet, la tension du récepteur variera de façon croissante en fonction de la distance que l'onde sonore parcourra.
Les filtres doivent être redimensionner, ils sont du premier ordre (20dB/décade ~ 6dB/Octave) le gain max se situe :

  • Filtre passe haut : f>2Fc
  • Filtre passe bas : f<1/2Fc


[V2]

  • Le filtrage ne s'effectue pas sur deux mais un seul AOP.
  • Utilisation de résistance en fonction de la commande de composants. Plus large bande de filtrage. 20k~80kHz
  • Ajout d'un potentiomètre servant à régler la distance de détection.

F2

La fonction représenté ici est un démodulateur d'amplitude. Il permet un maintiens de la tension.

  • La diode supprime les alternances négatives.
  • Le temps de décharge du condensateur ne doit être ni trop lent, ni trop rapide. La résistance R5 et la capacité C5 représente un temps de décharge de 2*10^-5s, idéal pour un signal de fréquence 40kHz.

[Modification 31/07] La constante tau = 1/(2*pi*C*R) = 2*10^-5 semble trop faible. Ayant revu les cours de démodulation, je pense envoyer 8 salves (8 passages état-haut, état-bas), ce qui a priori je retrouverai en réception. La constante de temps sera donc plus adapté si elle est comprise entre 1/40000 et 8/40000. Soit une valeur moyenne de 1.125*10^-4. La commande de matériel déjà passé je pense utiliser une résistance de 10kOhm en replacement de celle de 20kOhm.

[V2]

  • Utilisation d'un AOP supplémentaire pour la démodulation d'amplitude.


F3

L'étage F3 sert à obtenir un signal logique:

  • L'AOP est monté en mode commutation avec comme tension de seuil 0.318V.
  • Une capacité de découplage pourrait être utilisé pour supprimer, une possible tension continue résiduelle.
  • Ce dernier étage pourrait être supprimé vu que nous somme relié à une entrée analogique de l'ATMGEGA328.

F4

Pour alimenter le TS294, j'utilise une alimentation simple 5V. Lorsqu'on utilise une alimentation simple, il faut créer une masse virtuel de VCC/2.

  • Utilisation de 2 résistance de 3.3kOhm servant comme diviseur de tension. La valeur des résistances est choisis pour que V+=V-.
  • Possible utilisation d'une capacité de découplage servant à "neutraliser" les variations de tensions, bruits résiduels.

Carte suiveur ligne

Afin de réduire le nombre de composant, mon choix s'est porter vers un système comprenant les à la fois l'émetteur et le récepteur infrarouge. Le brochage utilisé sur la carte mère indique l'utilisation de pin analogique, le QRE1113 est donc adapté. Il peut être configuré en acquisition numérique ou analogique. Une résistance de 220 Ohm est à prévoir par diode pour l'alimentation ainsi qu'une résistance de 10kOhm brancher en pull-up pour la sortie du photo transistor. On récupérera donc une valeur analogique qui en fonction de la distance et de la réflectance de la ligne, variera entre 0 et 5V.


Carte moteur

Pour la création de la carte moteur, il est indiqué dans le projet de stage que l'on devra utiliser un KTIR0221DS comme interrupteur optique. Pour ce, une résistance 2kOhm en série sur la diode ainsi qu'une résistance de 200Omh sur le phototransistor. Cela permettra d'obtenir un courant de 2mA sur la diode. Le transistor quant à lui est un modèle dit de "Darlington", il possède donc un gain conséquent (env. 600%), le courant Ic qui en découlera sera d'environ 20mA. Pour ce qui est de la fréquence de commutation de l'interrupteur, la vitesse nominal du moteur est de 130tr/min. Sachant cela, nous savons également que le disque dispose de 20 "branches", l'interrupteur sera sollicité environ 43 fois par seconde. Valeur largement supporter si on décide d'utiliser le µC en "PC-Interrupution" (environ 1/86s). Nous serons donc capable de déterminer :

  • La vitesse de rotation
  • La distance parcouru grâce au diamètre de la roue.

Carte suiveur ligne

Afin de réduire le nombre de composant, mon choix s'est porter vers un système comprenant les à la fois l'émetteur et le récepteur infrarouge. Le brochage utilisé sur la carte mère indique l'utilisation de pin analogique, le QRE1113 est donc adapté. Il peut être configuré en acquisition numérique ou analogique. Une résistance de 220 Ohm est à prévoir par diode pour l'alimentation ainsi qu'une résistance de 10kOhm brancher en pull-up pour la sortie du photo transistor. On récupérera donc une valeur analogique qui en fonction de la distance et de la réflectance de la ligne, variera entre 0 et 5V.


Carte moteur

Pour la création de la carte moteur, il est indiqué dans le projet de stage que l'on devra utiliser un KTIR0221DS comme interrupteur optique. Pour ce, une résistance 2kOhm en série sur la diode ainsi qu'une résistance de 200Omh sur le phototransistor. Cela permettra d'obtenir un courant de 2mA sur la diode. Le transistor quant à lui est un modèle dit de "Darlington", il possède donc un gain conséquent (env. 600%), le courant Ic qui en découlera sera d'environ 20mA. Pour ce qui est de la fréquence de commutation de l'interrupteur, la vitesse nominal du moteur est de 130tr/min. Sachant cela, nous savons également que le disque dispose de 20 "branches", l'interrupteur sera sollicité environ 43 fois par seconde. Valeur largement supporter si on décide d'utiliser le µC en "PC-Interrupution" (environ 1/86s). Nous serons donc capable de déterminer :

  • La vitesse de rotation
  • La distance parcouru grâce au diamètre de la roue.


Semaine 36

Quelque modifications on dût être faites sur le PCB de la carte mère existante, les leds été placées dans le mauvais sens, les condensateurs autour du quartz été surévalués. Les connecteurs RJ11 sont faussés entre le schematique et le PCB de la carte mère il a donc fallu re-router les connexions de mes cartes filles.

D'après mon tuteur je pourrais quand même utiliser la carte mère, pour cela il faudra se servir d'un arduino afin de charger le bootloader dans la nouvelle carte et ainsi charger le programme de gestion des moteurs.

Bilan

Durant ces deux dernières semaines j'ai pu faire imprimer mes cartes de suiveur de ligne ainsi que les cartes de contrôle de moteurs(+ Odomètre). Les cartes sont fonctionnelles et interagissait bien avec la carte mère. Une fois les branchements faits, et le premier programme installé sur la cartes mère, les moteurs fonctionnaient correctement. Une fois cette étape réalisé, j'ai modifié le programme afin de me servir des fourches optiques comme correcteur de trajectoire. J'ai essuyé plusieurs bug et n'arrivant pas au résultat escompté, j'ai revérifier les connexions ainsi que les différents voltages. C'est la que je me suis rendu compte qu'une de mes fourches optiques est inutilisable en vue de la brûlure que le fer à souder lui a fait subir. Je n'ai pas à ma disposition de composant de rechange, mais si cela avait été le cas, il y a de forte chance que mes cartes auraient fonctionné comme elles devaient.

Livrables

Schématique

Carte capteur de ligne

Carte diode.png

Carte Moteur

Carte moteur.png (Attente de validation)

Carte Ultrason (Partie Émission)

Emission ultrason eagle.png J'ai rajouté une résistance pull-down qui relie le transistor PNP Q3 à la masse afin de garantir le bon fonctionnement.

Carte Ultrason (Partie Réception) V1

Reception ultrason eagle annotate.png

Voici le montage des différents AOP servant au filtrage ainsi qu'a la commutation de la sortie du capteur. Un descriptif détaillé de chaque étage est en cours.

Le montage est encore avec le circuit intégré, TL084 hors il sera remplacé par un TS924.

Liste de composants

Programme C

Afin de programmer efficacement le micro processeur, je vais essentiellement utilisé des interruptions.

L'état des capteurs QRE1113GR sera géré via les PCINT. Des qu'un changement d'état est détecté on testera quel est l'état en cours et on viendra le sauvegarder dans une variable globale.

Si le capteur centrale détecte une ligne droite, la marche doit être droite.

  • Si elle ne détecte plus de ligne on continue la marche droite
  • Le capteur latéral qui détectera le plus tôt une ligne indiquera au programme qu'il faut se diriger du coté opposé au capteur jusqu’à ce que le capteur centrale détecte de nouveau la ligne.

En fonction du capteur actif/inactif, la routine principale déclenchera une fonction permettant de se repositionner sur la ligne.

Pour les cartes moteur, l'idée est de se servir d'un Timer (Le timer 2 de l'atmega) qui servira de chronomètre. Chaque fourche est câblée sur une broche PCINT. Afin de s'assurer que le robot roule droit, on fera la comparaison du rapport de "nombre d'impulsion / seconde" de chaque fourche, je serais capable de déterminer quel roue tourne plus vite que l'autre et donc de moduler la PWM qui gère les deux moteurs. Ce système sera bien évidemment désactiver lorsque qu'on ne désire plus aller tout droit.

En utilisant le mode Phase Correct PWM de l'atmega, on détermine précisément le pourcentage du "Duty Cycle" en reneignant une valeur comprise entre 0 et 1024 dans le registre approprié. Lors d'un écart entre les fréquences d'impulsion, on incrementera le registre du moteur "trop lent" et décrémentera celui du moteur "trop rapide". Si la routine est parcouru rapidement, la vitesse devrait se réguler de façon transparente.

Carte électronique

Carte Suiveur de ligne

Pcb diode.png

Carte Moteur

Pcb moteur.png

Carte Mère Modifié

Carte mere pcb.png