Aller au contenu


Photo
- - - - -

"Classique" robot détecteur d'obstacle


24 réponses à ce sujet

#1 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 26 septembre 2010 - 08:39

Salut,
Je reviens sur le forum après plusieurs mois d'inactivité (présentation).
Cette année, je suis en première S et j'ai décidé d'enfin réaliser mon projet en choisissant de construire un robot détecteur d'obstacles dans le cadre du TPE, ce qui nous donne (deux amis et moi) 5 mois pour le construire.
Je vais donc ici présenter l'avancement de notre projet pour recevoir vos commentaires et poser des questions lorsqu'on bloque, le but étant de faire le maximum nous même et de comprendre ce que l'on fait.

Le robot sera donc doté d'un système de détection infrarouge tel que celui expliqué dans le tuto de Neo. En fonction du temps qu'il nous restera, on aimerait rajouter une paire de microrupteurs (comme le robot cocotix) et à la rigueur deux capteurs IR dirigés vers le sol à l'avant pour détecter des vides.

Nos deux premiers objectifs sont :

-Déterminer les composants principaux pour s'attaquer à la création du schéma électronique (qui je pense va être le plus gros obstacle)

On a donc déjà trouvé les deux motoréducteurs, la commande moteur (L293D (+ radiateur ?)), le PIC (16F88, qui est moins cher que 16f84, et, ayant un oscillateur interne (moins précis mais je pense suffisant), a donc deux broches libres en plus), et pour les capteurs IR, on prendra je pense les mêmes que ceux dans le tuto IRbot.

-Trouver le moyen de programmer le PIC (qui sera le deuxième gros obstacle...).
Nous pensons utiliser le logiciel Flowcode qui, je pense, nous simplifiera bien la tâche.
Pour le programmeur, nous pensons utiliser un programmeur intégré comme celui de neo, ou le PICkit2 starter kit (environ 30€).

Voilà !

#2 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 02 octobre 2010 - 06:30

Salut,

J'ai vu qu'il existe deux méthodes pour donner une fréquence de 38kHz aux DEL ir :
- Utiliser le PIC et son programme et brancher chaque DEL à une broche du PIC (comme pour l'Irbot)
- ou utiliser un composant spécifique (quelque chose 555)

Je préférerai la première solution mais j'ai des questions :

Je m'entraîne à faire de petits programmes sur une version démo de Flowcode. Il y a un simulateur qui permet de visualiser l'état des broches avec des DEL. Sur ce logiciel, il faut que j'allume et que j'éteigne les DEL une fois en 1/38000 seconde pendant quelques millisecondes, c'est ça ?

Et puis je n'ai pas réussi à trouver dans la datasheet quelles sont les caractéristiques du courant qui sort ou qui rentre dans les broches (pour avoir un 1). Si c'est suffisant, je pourrai mettre un potentiomètre pour faire varier l'intensité des DEL et donc la distance de détection.

Merci

#3 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 05 octobre 2010 - 04:28

Il y a encore une question que je me pose à propos de la programmation :

Lors de la création de l'algorythme, je dis d'abord, en gros, (allumer, pause, éteindre, pause) x N et ensuite je dis "si TSOP envoie un 1 vers le PIC, tourner, sinon continuer". Mais lors de cette condition, la LED ne clignotera plus donc le TSOP ne recevra de toute façon pas de lumière donc le robot ne tournera jamais...

Est-ce que quelqu'un aurait une solution à mon problème ? Comment vous y prendriez-vous ?

#4 Prinz metal ex-neo

Prinz metal ex-neo

    > Membre d'honneur <

  • Membres
  • PipPipPip
  • 463 messages
  • Gender:Male
  • Location:Algérie

Posté 05 octobre 2010 - 09:20

Salut

Relis le tutoriel tout est expliqué
Et pour plus d infos y a cette réalisation qui est nettement mieux que la mienne :D

a+ neo

#5 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 06 octobre 2010 - 02:05

Merci pour le lien. Par contre j'ai pas trouvé la réponse à la dernière question.
Peut-être que le mieux, c'est que je le teste dès que j'aurai tout ce qu'il faut.

#6 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 07 octobre 2010 - 08:14

Merci pour le lien. Par contre j'ai pas trouvé la réponse à la dernière question.
Peut-être que le mieux, c'est que je le teste dès que j'aurai tout ce qu'il faut.

Je ne sais pas si tu vas arriver à produire ta fréquence avec le pic programmé en Flowcode.
Mais si tu y arrives et que tu laisses générer pendant environ 600µs, ton TSOP sera saturé et le restera encore pendant un petit temps après coupure du signal.
Donc tu pourras détecter le niveau bas sur le TSOP.

Mais il est plus simple d'utiliser un générateur en discret.
Si tu possèdes Flowcode avec une licence ou si tu programmes avec un autre compilateur, tu peux utiliser la ressource interne PWM pour générer facilement ta fréquence.
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]

#7 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 07 octobre 2010 - 07:03

Je ne sais pas si tu vas arriver à produire ta fréquence avec le pic programmé en Flowcode.
Mais si tu y arrives et que tu laisses générer pendant environ 600µs, ton TSOP sera saturé et le restera encore pendant un petit temps après coupure du signal.
Donc tu pourras détecter le niveau bas sur le TSOP.


Très bonne nouvelle ! Merci !

Pour générer la fréquence, j'ai vu qu'il y avait un icône PMW mais je ne sais pas m'en servir. Je vais simplement faire une boucle 50x (environ) avec allumer pendant 1/76000s puis éteindre pendant 1/76000s. Je pourais vérifier le fréquence effective avec le matos du lycée et ajuster si besoin.

#8 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 12 octobre 2010 - 11:38

Salut,
Je me lance dans le schéma électronique. Voici la première ébauche: Fichier joint  Shéma électronique1.bmp   3,41 Mo   335 téléchargement(s)
Je ne connais pas grand chose en électronique alors j'ai un peu de mal avec les intermédiaires entre les composants principaux (résistances et surtout les condensateurs).
Qu'en pensez-vous ? Que feriez vous pour avoir 5V ? Et comment choisit-on la valeur d'un condensateur (j'ai fais pas mal de recherche mais j'ai du mal à comprendre) ?
Merci !

#9 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 14 octobre 2010 - 06:30

Salut,
J'ai vu qu'il faut mettre un circuit RC avec un interrupteur comme système anti-rebond mais j'ai trouvé plusieurs schéma, ils sont équivalents ? Fichier joint  Circuit RC.bmp   409,82 Ko   281 téléchargement(s)

Le schéma se précise Fichier joint  Copie de Shéma électronique1.bmp   3,76 Mo   360 téléchargement(s) mais j'ai encore des questions :

J'ai vu aussi ici qu'il fallait mettre un condensateur aux bornes du moteur pour limiter les parasites. Est-ce que cela ne perturbe pas les signaux PMW ? Quelle doit être sa capacité ?

Dois-je lisser le courant à la sortie du TSOP ?

A quoi sert le MCLR ?

Si vous avez des remarques à propos du schéma n'hésitez pas !

Merci

#10 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 17 octobre 2010 - 11:40

Regardes sur mon site la carte Picky.
Ça c'est une vrai carte robotique.
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]

#11 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 28 octobre 2010 - 08:50

Salut,

Quelques infos sur l'avancement du projet :

Les composants sont commandés (et le lycée a même payé la moitié :D ). Il me manquera sûrement quelques trucs que j'achèterai en boutique.

Pour le capteur de vide, on va essayer d'utiliser deux CNY70 : la puissance des LED sera réglé à l'aide d'un potentiomètre, et grâce à cela + un ampli op avec un autre potentiomètre, je pourrai régler le distance de détection (ou au moins l'optimiser). J'espère juste que le système ne sera pas trop perturbé par le lumière IR parasite.
On fera de toute façon plein de tests dès que la commande arrive.

Je pense que la sortie du microrupteur et celle du CNY70 du même côté du robot seront réunies en une patte. Cela délivre 2 pattes que je vais utiliser pour donner 3 niveaux de puissance aux LED et donc trois distances de détection grâce aux explications de Leon.

J'ai jeté un coup d'oeil à la partie alimentation du robot et j'ai vu que je l'avais largement négligé...un accu 9V 175mAh ne durerait pas longtemps... Cette accu + un régulateur sera utilisé pour l'électronique et le moteur sera alimenté par 4 ou 6 accus 1.2V 2500mAh + un potentiomètre.


Côté programmation :

Je vais utiliser ce programmateur. (bas de la page)
Je ne me suis pas encore penché sur la question du bootloader (je crois qu'ils en parlent sur le lien et sur le site que me conseille Yoda)

J'ai déjà écrit un programme entier (qui marche, selon le simulateur) mais il va falloir que j'ajuste la durée des pauses et il y aura sûrement d'autres modifications à faire.
Je n'arrive toujours pas à me servir du PMW sur Flowcode, alors je vais bidouiller le programme et faire des tests avec un logiciel du lycée (Latis Pro).
Par contre si quelqu'un a le bout de programme en C qui permet de faire ça je suis preneur, car je peux insérer des bouts de programme en C sur Flowcode.

Voilà ! J'espère que la commande arrive bientôt et qu'il n'y aura pas trop d'imprévus lors des tests.
Je pense qu'on aura encore besoin de vous pour mettre le programme sur le PIC.

Merci !

#12 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 29 octobre 2010 - 07:54

Salut,
Je me pose quelques questions :

L'installation d'un bootloader sur le PIC est-il obligatoire ? A quoi sert-il ? Y a-t-il d'autre "préprogrammes" à installer ou je peux directement le mettre sur le µC ?

Je commence a comprendre comment utiliser la fonction PWM sur FLowcode, mais on ne peut pas voir les LEDs qui clignotent quand on simule.
Si je l'utilise normalement, le signal PWM sera envoyé par la patte RB0 lorsque celle-ci devra envoyer un 1, c'est bien cela ?
J'aimerais deux signaux PWM...comment faire ?

Merci !

#13 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 30 octobre 2010 - 09:06

Salut,
Je me pose quelques questions :

L'installation d'un bootloader sur le PIC est-il obligatoire ? A quoi sert-il ? Y a-t-il d'autre "préprogrammes" à installer ou je peux directement le mettre sur le µC ?

Je commence a comprendre comment utiliser la fonction PWM sur FLowcode, mais on ne peut pas voir les LEDs qui clignotent quand on simule.

Si je l'utilise normalement, le signal PWM sera envoyé par la patte RB0 lorsque celle-ci devra envoyer un 1, c'est bien cela ?

J'aimerais deux signaux PWM...comment faire ?

Merci !


L'installation d'un bootloader n'est pas obligatoire. Son principal intérêt est de ne plus utiliser de programmateur. Dans le même temps, il permet de programmer plus rapidement qu'un programmateur classique. Et si on utilise Tinybootloader, il est possible, dans la foulée, de dialoguer avec le PIC pour debugger ou plus simplement tester des fonctions.
Non, c'est le seul "préprogramme".

Non, il n'est pas possible de voir la Del relié à la ligne affectée par le PWM. Mais on peut voir la simulation de la ligne PWM, c'est déjà bien !!!

Effectivement, la broche RB0 passera à 1 et à 0 comme sur la simulation.

Pour avoir 2 signaux PWM, il faut sélectionner un composant qui en a deux, comme papa. :D
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]

#14 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 30 octobre 2010 - 09:18

Ah d'accord.
Pour le PWM, je peux donc laisser tomber pour commander la vitesse des moteurs de cette façon avec un 16F88. J'ai vu qu'on pouvait utiliser les interruptions avec Flowcode mais je ne sais pas comment faire.

Je viens de découvrir qu'on pouvait interrompre le programme n'importe où lorsqu'on passe de 0 à 1 (ou inversement) sur B0. C'est beaucoup plus pratique que d'"interroger" chaque entrée ! Par contre j'ai pas trouvé le moyen de l'appliquer à d'autres pattes que B0...quelqu'un sait comment faire ? (EDIT : j'ai trouvé, c'est pas possible)

Pour le Tinybootloader, d'après ce que j'ai compris, il fait que le 16F88 utilise son horloge interne. Si je veux utiliser un horloge externe de 20MHz, comment dois-je faire ?

#15 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 01 novembre 2010 - 10:26

Je me pose encore quelques questions :

J'ai cru comprendre qu'une sortie en haute impédance sur un µC n'envoie ni un 0 ni un 1, donc ni 0V, ni 5V (2.5V?).
Donc si je veux donner 2 niveaux de puissance aux LEDs (branchées chacune à une seule patte du 16F88), je peux utiliser ce troisième état logique (0 = éteinte, haute impédance = allumée +, 1 = allumée +++).
Par contre je ne sais pas du tout comment faire pour programmer cela... Quelqu'un peut m'aider ?

Le PIC peut délivrer 50mA maximum à ses sorties, or, la LED que j'utilise en consomme 100 pour 1.3V : faut-il que je la branche avec une résistance absorbant les 3.7V en trop ou dois-je mettre une plus grosse résistance pour que la LED ne consomme que 50mA ? (Autrement dit, si la LED demande plus que les 50mA max., sera-t-elle "bridée" à 50mA par le µC ou faut-il que je le fasse avec une résistance ?

Merci !

#16 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 02 novembre 2010 - 10:15

Je me pose encore quelques questions :

J'ai cru comprendre qu'une sortie en haute impédance sur un µC n'envoie ni un 0 ni un 1, donc ni 0V, ni 5V (2.5V?).
Donc si je veux donner 2 niveaux de puissance aux LEDs (branchées chacune à une seule patte du 16F88), je peux utiliser ce troisième état logique (0 = éteinte, haute impédance = allumée +, 1 = allumée +++).
Par contre je ne sais pas du tout comment faire pour programmer cela... Quelqu'un peut m'aider ?

Le PIC peut délivrer 50mA maximum à ses sorties, or, la LED que j'utilise en consomme 100 pour 1.3V : faut-il que je la branche avec une résistance absorbant les 3.7V en trop ou dois-je mettre une plus grosse résistance pour que la LED ne consomme que 50mA ? (Autrement dit, si la LED demande plus que les 50mA max., sera-t-elle "bridée" à 50mA par le µC ou faut-il que je le fasse avec une résistance ?

Merci !


Non et non, faut-il que je trisse ?

Alors pour faire tourner le PIC à 20MHz, il faut programmer un bootloader à 20MHz en horloge externe.

Ensuite, le mode haute Z correspond à une broche en l'air. Donc elle ne fournit, ni ne reçoit du courant. résultat le Del sera éteinte.

Et pour finir, concernant le courant maximal en sortie fourni par une ligne du PIC, il ne faut pas dépasser 10mA, 15mA.
Tu dois donc utiliser un transistor pour amplifier le courant. Et tu "brideras", en bon électronicien, on dit "limiter" le courant à 100mA avec une résistance en série.

Au boulot,
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]

#17 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 02 novembre 2010 - 02:03

Ensuite, le mode haute Z correspond à une broche en l'air. Donc elle ne fournit, ni ne reçoit du courant. résultat le Del sera éteinte.

Et pour finir, concernant le courant maximal en sortie fourni par une ligne du PIC, il ne faut pas dépasser 10mA, 15mA.
Tu dois donc utiliser un transistor pour amplifier le courant. Et tu "brideras", en bon électronicien, on dit "limiter" le courant à 100mA avec une résistance en série.


Ok ok je passe aux tests dès que je retourne au lycée...
Mais je comprends pas tout niveau programmation :

Alors pour faire tourner le PIC à 20MHz, il faut programmer un bootloader à 20MHz en horloge externe.


Où puis-je trouver ce bootloader ? (20MHz, MLI sur B3)

Je vais devoir utiliser les pattes B2 et B5 pour la programmation : si ces pattes sont branchées à d'autres choses en même temps (L293D, capteur), ce n'est pas gênant ?

#18 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 11 novembre 2010 - 10:28

Où puis-je trouver ce bootloader ? (20MHz, MLI sur B3)

Je vais devoir utiliser les pattes B2 et B5 pour la programmation : si ces pattes sont branchées à d'autres choses en même temps (L293D, capteur), ce n'est pas gênant ?
[/quote]

Le bootloader doit être programmé sous Mplab

Je peux vous programmer ce fichier.

Et effectivement, cela sous entend de ne plus utiliser ces deux lignes.
En fait, si ces deux lignes sont utilisées, il faut qu'elles sont affectées en sortie vers des fonctions secondaires, du type Del, ou sens de rotation du moteur. mais pas en entrée ou sur des commandes moteur de type MLI.
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]

#19 Alex68

Alex68

    Membre

  • Membres
  • 54 messages

Posté 11 novembre 2010 - 06:50

Le bootloader doit être programmé sous Mplab

Je peux vous programmer ce fichier.


C'est-à-dire ? Vous pouvez m'envoyer le fichier .hex ?

#20 _Yoda

_Yoda

    Habitué

  • Membres
  • PipPip
  • 152 messages
  • Gender:Male
  • Interests:http:/www.perso.iut-nimes.fr/fgiamarchi

Posté 11 novembre 2010 - 10:36

C'est-à-dire ? Vous pouvez m'envoyer le fichier .hex ?


Tout a fait, Thierry
[url="http://www.robot-sumo.fr/"]Site Officiel du Tournoi de Robots Sumo
[/url]



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users