Aller au contenu


Photo
- - - - -

nombreux problèmes dans la réalisation d'un gros robot


18 réponses à ce sujet

#1 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 13 avril 2017 - 04:35

Salutations!

 

Comme je l'ai indiqué dans ma présentation, je suis entrain de construire un robot et je suis face à quelques problèmes. Ils sont de nature diverses, j'aurai pu faire plusieurs sujets pour chaque problème dans au moins trois catégories différentes; j'espère qu'il est donc judicieux de faire un sujet ici les réunissant tous.

 

Mon robot est constitué de:

- Un socle chenillé, motorisé par deux servomoteurs à rotation continue

- Deux pates uniquement décoratives - sauf si le tout faible couple des servos est suffisant pour soulever le robot de plusieurs kilos, ce dont je doute - constituées de deux servo MG90

- Une tête comprenant quatre LED tricolores et d'un RADAR arrochée sur l'équivalent d'un cou constitué de trois servomoteurs MG90

- Un gros bras robotique de près de quarante centimètres (quatre servos MG996R et un MG90)

 

Pour mettre tout ça en mouvement, j'utilise une arduino mega et deux batteries 6V - 2500mAh branchées en parallèle. Si mes calculs sont exact, les batteries doivent être suffisantes pour faire tourner au moins la moitié des servos en même temps. Mon premier problème est lié à l'alimentation de tous ces servos et composants. J'ai branché la plupart des servos sur le rail d'alimentation( c'est comme ça qu'on dit en Français ? ) de ma breadboard, en parallèle donc, mais quand j'ai branché la batterie, le fil la reliant au rail, et le rail lui-même est devenu brûlant en quelques secondes.  Je me demande donc quel serait le meilleur moyen d'alimenter tous ces servos. Existe-t-il un équivalent de ce rail d'alimentation pouvant supporter tant de courant? Je pourrais débourser un peu pour mettre ma main dessus; mais je préfère autant que possible ne rien acheter et faire à la main. Si vous avez des suggestions, je suis preneur.

 

Mon projet initial était de faire un robot chenillé autonome, qui peut plus ou moins se repérer dans l'espace et qui sait quand aller se recharger, et où. J'imagine donc une petite station de recharge branchée sur le secteur, posé sur le sol, sur laquelle le robot pourrait venir se recharger, le tout sans la moindre intervention de ma part. Est-il possible de faire simplement une telle station, et aurait-elle besoin de matériel supplémentaire et de circuits spéciaux que ce soit du côté du robot ou du côté de la station de recharge?

 

J'ai déjà commencé la programmation de l'intelligence artificielle du robot , qui pour l'instant doit lui permettre de se repérer dans l'espace en utilisant uniquement un simple radar, mais je compte l'améliorer autant que possible; et déjà maintenant, le simple code source de l'IA est trop lourd pour être stocké dans l'arduino mega. Je songe à acheter un raspberry pi ou un équivalent chinois, le orange pi. Quelqu'un a des avis sur ce dernier? Une raspberry pi zero serait-elle suffisante pour une intelligence artificielle élaborée? Je me suis très peu renseigné sur ce sujet, mais j'imagine qu'il est possible de programmer la Pi pour faire tous les calculs complexes et envoyer quelques informations très basiques à l'arduino, peut-être via les broches de communication?

 

Le robot est mu par des chenilles, elles-mêmes mises en mouvement par des servomoteurs. Mais les chenilles et les roues motrices sont imparfaites , et je ne pense pas qu'il sera possible de déterminer précisément la distance parcourue en utilisant uniquement la rotation des servos. Je pensais démonter une vieille sourie pour pouvoir obtenir un système permettant de calculer précisément la distance parcourue. Mais peut-être existe-t-il de meilleurs façons de résoudre ce problème?

 

Enfin, est-ce que vous avez des solutions pour éviter qu'il n'y ait des fils électriques de partout?

 

Je pense avoir fait le tour de ce qui m'empêche d'avancer pour l'instant. Je vous prie d'excuser mon manque de vocabulaire, ou l'imprécision de mes propos, je suis encore un grand débutant. J'aurai bien posté quelques photos du projet, mais avec tous les fils dans tous les sens, je ne pense pas que ce serait d'une grande utilité.

 

 



#2 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 13 avril 2017 - 07:09

Tu pourrais mettre des photos de ton projet , :D

 

Je pense que la station de recharge pour robot autonome est possible mais tout dépend de ce que tu entends par "simplement" il y a eu plusieurs projet sur le forum, je ne sais pas si l'un d'eux a aboutit mais il y a des idées à prendre.

 

Oui, il est possible de programmer la RPi pour les calculs complexes et communiquer avec l'arduino.

 

Pour les fils partout c'est difficile à voir sans photo :D .


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#3 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 13 avril 2017 - 07:56

Oui, ce serait bien des images voire un schéma du câblage.

Pour ton rail qui chauffe, tu as peut-être un court circuit.



#4 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 766 messages
  • Gender:Male

Posté 13 avril 2017 - 08:51

Le coup de la souris comme capteur, c'est génial ! D'ailleurs, j'y avais pensée.
J'ai l'impression que ton char est prévu pour l'intérieur.
Si c'est bien le cas, compter les mouvements des servos pour déterminer sa position, je n'y crois pas.
D'une manière ou d'une autre, je pense qu'il doit cartographier son environment et reconnaître sa position en se situant par exemple avec des mesures de distances.
Par exemple, supposons que cet environnement contienne plusieurs pièces, il doit déterminer dans quelle pièce il se situe en mesurant la pièce avec un télémètre.

#5 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 14 avril 2017 - 10:53

Bonjour!

Puisque vous insistez, je vais mettre des photos :)

On voit bien sur chaque photo la surabondance de fils ... Toutes les solutions auxquelles je pense pour pas qu'il n'y en ai de partout nécessite du soudage, et j'ai une tremblote pas possible donc c'est compromis...

 

Je vais acheter un petit raspberry pi, on pourra en reparler quand je la recevrai.

 

Pour le rail qui chauffe, et la possibilité de court circuit, c'est possible mais j'ai débranché pas mal de fils et on ne le saura jamais; j'ai essayé de mesurer la résistance entre le rail positif et le rail négatif, et mon multimètre m'indique 1, comme quand les touches sont en l'air.

 

Quant à la souris comme capteur, j'y pensais comme un plan B: si le servo ne fait pas systématiquement bouger les chenilles, il est impossible de mesurer la distance parcourue en connaissant juste les mouvements du servo; mais je pense que mes chenilles ne vont pas patiner sur le sol. Si je rajoute une roue convenablement dentée dans la trajectoire des deux chenilles, et que j'y rajoute un système permettant de mesurer les rotations effectuées, je pourrais calculer presque exactement la distance parcourue par chaque chenille et donc le robot. Du moins, c'est une théorie. Si elle est judicieuse, alors il faut maintenant savoir comment mesurer les rotations des roues dentées, j'ai quelques encodeurs rotatifs EC11, peut-être feront-ils l'affaire ?

 

Sur la photo 3, on voit les 23 fils qui sortent de la "tête" du robot ( 4 pour chacune des 4 LED RGB, 4 pour le RADAR, 3 pour le thermomètre/hygromètre) . j'ai pris les fils les plus fins que je pouvais trouver chez moi (fils d'un vieux câble téléphonique) mais ils opposent toujours une grande résistance mécanique, tellement que j'ai peur que les petits servos ne galèrent à lever la tête ( ils ont un couple d'un kilo, le cou fait environ 10 cm de long, la tête sans les fils fait environ 60g ) .

 

j'ai joint le schéma du cablage, dans lequel je n'ai mis que quatre servo, et ni le RADAR ni le thermomètre. Si vous voulez que je mette les 14 servos sur le schéma, dites le moi :) Je ne pense pas avoir fait d'erreur sur ce schéma, et il reproduit à l'identique ce que j'ai fait dans la réalité. Je précise que pour chacune des LED je ne compte jamais allumer le plus d'une couleur à la fois.

 

EDIT : sur la dernière photo on voit un rail plus petit, n'y sont branchés que deux servos ( ceux servant à propulser le robot), l'arduino et les batteries.

Image(s) jointe(s)

  • photo1.JPG
  • photo2.JPG
  • photo3.JPG
  • photo4.JPG
  • photo5.JPG
  • schema.png


#6 arobasseb

arobasseb

    Membre chevronné

  • Administrateur
  • PipPipPipPip
  • 737 messages
  • Gender:Male
  • Location:BORDEAUX (33)

Posté 14 avril 2017 - 11:23

pour réduire les fils je vois 2 solutions : mettre un petit module arduino dans la tête qui communiquerai avec l'autre arduino (ce qui fera 4 fils (+,-, 2 fils I2C))

ou déjà tu peux réduire le nombre de fil pour les 4 LED de 16 (4*4) à 7 (3 fil RGB + 1 fil par led) et dans ton code tu les allume alternativement et avec la persistence rétinienne ça ne se voit pas. après pour le radar je ne connais pas la connectique.



#7 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 14 avril 2017 - 12:56

Placer une arduino dans la tête pour contrôler ce qu'il y a dedans, j'y avais déjà pensé. J'ai donc acheté une arduino nano... que j'ai grillé à la première utilisation :) mais je pense que ca reste la meilleure solution pour limiter le nombre de fils. Si je ne me trompe pas, il faut deux fils pour faire communiquer deux arduino ensemble, plus deux fils pour l'alimentation, soit quatre, ce qui est un gain considérable comparé au 23 initiaux !

l'autre solution que tu m'a présentée parait réalisable mais beaucoup plus complexe que la première.

 

Concernant le RADAR, deux fils pour l'alimentation, deux pour le signal.



#8 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 14 avril 2017 - 07:56

Sais-tu pourquoi ta nano a grillé ? ce n'est pas seulement parce qu'elle était dans la tête, donc si tu connaissais la cause tu pourrais peut-être corriger le problème pour une nouvelle nano.

 

Je m'avance peut-être mais il doit exister un composant pour les LED qui se commande par l'I2C et si le radar et le capteur de température utilise l'I2C il n'y aurait plus 4 fils pour la tête (2 pour l'I2C et 2 pour l'alim).

 

Tu peux aussi utiliser des gaines spirales ou autres pour rassembler tes fils c'est plus ordonné.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#9 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 14 avril 2017 - 08:56

J'ai grillé mon ancienne nano alors qu'elle était alimentée via usb et que le seul fil attaché était le signal d'un servo - il était alimenté via une batterie externe. Peut-être que mon pc lui a envoyé trop de courant (il me semble que c'est un port usb pour recharge rapide, mais je n'ai pas d'autres ports sur ce pc). Je vais être plus prudent avec la nouvelle. Je ne connais pas ce que tu propose, et peut-être la solution que tu propose pourrait être plus simple à mettre en œuvre, mais j'ai déjà le matériel pour brancher de façon classique les LED, le radar et le thermomètre sur une arduino nano(dans la tête, il y a juste la place) qui sera asservie à l'arduino méga.

 

j'ai fait une petite commande de matériel divers qui devrait m'aider à mieux ordonner mes fils (entre autre) , je ne pourrais implémenter les changements que dans au moins deux semaines ( examens de fin d'année universitaire ... En avril :D )

 

Il me reste un ou deux mètres de gaine spirale, je compte l'utiliser quand j'aurai terminé les branchements.



#10 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée

Posté 14 avril 2017 - 09:29

Déjà si je comprends bien tes posts, tu avais un mauvais branchement : la masse des servos devait être reliée à la masse de l'Arduino sinon tu a un problème de différence de potentiel mais je ne peux pas en dire plus (mes cours d'élec sont trop loin :D )

 

Le port USB de ton PC n'a pas envoyé trop de courant, il n'envoie pas plus de courant que la nano lui demande.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#11 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 20 mai 2017 - 10:32

Bonjour

 

J'ai terminé mes examens il y a quelques jours, et j'ai profité de tout le temps que les vacances m'offrent pour travailler sur ce projet. Après moult recherches, je me tourne une fois de plus vers vous pour m'aider à comprendre certaines choses. 

 

Pour alimenter ma RPI (requiert une alimentation de 5v)  j'ai récupéré un régulateur de tension 7805, il est dit que le voltage d'entrée doit être au moins supérieur à 5+2 = 7v, mais j'ai essayé de l'utiliser avec un voltage d'entrée de 6v, et il donne bien 5v en sortie. Comment se fait-il que le 7805 fonctionne? Est-ce que je peux l'utiliser pour alimenter ma RPI sans avoir peur de l'endommager ? 

 

Si ce n'est pas le cas, je devrais peut-être utiliser mes deux batteries de 6v, 2500mAh en série pour avoir du 12v, mais j'utilise déjà ces deux mêmes batteries en parallèle pour alimenter le reste du robot en 6v; je me demande s'il est possible d'utiliser deux batteries en série et en dérivation en même temps 

 

En dessous du "7805" sur le régulateur, il est également écrit "JR 01", qu'est-ce que ça signifie ? ( bien que cette information ne semble pas très importante ... )

 

Enfin, je me demande, avant d'imprimer la dernière pièce de ce qui servira entre autre à abriter la RPI, si elle va dégager trop de chaleur et si je dois prévoir un système de refroidissement. Peut-être quelqu'un ici a déjà utilisé une RPI zero 1.3 et pourrait m'éclairer ? 



#12 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 20 mai 2017 - 01:56

Salut

Pour ton problème de chauffe du rail d'alimentation, c'est normal. Tous ces servos ensemble tirent bien plus de 2A à mon avis, et déjà, 1A dans une breadboard c'est limite.Si tu n'as pas la possibilité de faire un circuit imprimé, je te conseillerais de les relier avec des fils et des connecteurs, avec un diamètre correct. Pour les fils qui chauffent, si c'est des fils que tu as ajouté, c'est qu'ils sont probablement trop fins, par contre si c'est ceux de la batterie, il y a surement un problème quelque part (un court circuit par exemple).

 

Ensuite, la station de recharge c'est possible. C'est assez simple avec des batteries au nickel ou au plomb, un peu plus compliqué avec des batteries au lithium. 

 

La orange pi, j'en ai une, ça marche correctement, mais le support logiciel de la part du fabricant est un peu pourri. Heureusement il y à ARMbian, qui fonctionne parfaitement dessus. En revanche, je ne la conseillerais pas à quelqu'un qui ne s'y connait pas du tout en linux embarqué, car toutes les ressources liées à la raspberry (tutos / vidéos) ne fonctionneront pas forcément. Pour les débutants, j'aurais vraiment plus tendance à conseiller raspberry.

Tu peux les faire communiquer avec arduino par port série, I2C, ou SPI.

 

Les capteurs de souris, c'est une bonne idée, mais il me semble qu'un seul n'est pas suffisant car tu ne peux pas connaitre l'orientation du robot (mais je peux me tromper). Aussi, ton robot devra toujours frôler le sol, il décolle d'1cm, ou passe au dessus d'un trou, et il ne sait plus ou il est. Sinon, tu as aussi les codeurs, que tu peux mettre directement sur l'arbre moteur, à condition de ne pas glisser, et d'autres solutions.

 

Une solution pour limiter les fils, utiliser des bus type I2C ou SPI, quitte à mettre plus de microcontroleurs (ou arduino), mais la meilleure reste de faire un circuit imprimé, même si tout le monde ne peux pas le faire chez soi, il est toujours possible d'utiliser de la plaque à trous, ou de faire graver ses cartes en chine (chez seeedstudio qui te fait 10 cartes pour 5€ en double face si elles font moins de 10cm x 10cm par exemple).

 

Pour le 7805, tant mieux si il fonctionne, il ne devrait pas avoir de problème avec une tension plus basse, car c'est un régulateur linéaire. Il dissipe donc l'électricité en chaleur pour abaisser la tension. Donc moins de tension à dissiper = moins de chaleur. Je pense que c'est surtout une histoire de tolérence, pour celui là ça marche, mais peut être qu'un autre 7805 n'aurait pas marché.

 

Pour la raspberry, prévois des trous dans la pièce, laisse un peu d'espace (2/3cm), et ça devrait être bon.

 

Enfin, pour avoir vu pas mal d'arduino cramer, soit ton cablâge était mauvais et du 6V de la batterie est arrivé je ne sais pas comment dans la duino, soit tu as tiré trop de courant dessus.



#13 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 24 mai 2017 - 02:55

Merci beaucoup pour tes réponses, et pardon pour le temps que je met à poster la mienne! j'ai beaucoup travaillé sur tout ça ces quatre derniers jours, à tel point que je n'ai même pas trouvé le temps de poster poster un message ici :)

 

J'ai refait la tête du robot, elle inclut maintenant une arduino nano commandant un télémètre et quatre LED, et une raspberry pi qui doit commander par voie série toutes les arduino du robot, et se repérer dans son environnement en utilisant le télémètre et une caméra. J'ai recueilli plein de documentation concernant la RPI, linux, et openCV, je vais m'y pencher dans les prochaines semaines. 

 

Si tu n'as pas la possibilité de faire un circuit imprimé,

 

Comment est-ce que je devrais utiliser des circuits imprimés pour alimenter une dizaine de servo ? la couche de cuivre ne peut pas être assez épaisse pour supporter plusieurs ampères, si ?

 



#14 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 24 mai 2017 - 03:16

Sur un circuit imprime, meme si le cuivre n'est pas epais, tu peux faire une piste hyper large, tu peux aussi separer ta piste sur les deux faces, ou encore etamer ta piste avec une bonne grosse couche d'etain (c'est ce qui est fait dans certains amplis ou dans des alims de PC par exemple) pour pouvoir faire passer plusieurs amperes. Tu peux egalement utiliser des straps (fils soudes) de gros diametre (ca aussi on le voit dans les alims de PC).

 

(Desole pour le manque d'accents propres a notre langue, j'ecris depuis un QWERTY).



#15 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 24 mai 2017 - 03:46

D'ailleurs, d'apres le calculateur de KiCad, si tu prends du 35um d'epaisseur de cuivre (le moins cher), tu peux faire passer pas loin de 8A dans une piste de 5mm de large et 10cm de long avec une elevation de temperature d'a peine 10 degres.



#16 la.couenne

la.couenne

    Membre

  • Membres
  • 22 messages

Posté 25 mai 2017 - 08:54

 

 

Comment est-ce que je devrais utiliser des circuits imprimés pour alimenter une dizaine de servo ? la couche de cuivre ne peut pas être assez épaisse pour supporter plusieurs ampères, si?

 

 

Hello, 

 

Pourquoi t'embêter avec des circuits imprimés pour commander les servo?

tu peux utiliser des module tout fait, exemple celui d'adafuit: https://www.adafruit.com/product/815

De cette façon tu peux commander 15 servo facilement (sauf ceux à rotation continue que je n'ai jamais été capable de faire tourner :D )



#17 dedalion

dedalion

    Membre

  • Membres
  • 11 messages

Posté 25 mai 2017 - 01:41

J'aurai pu utiliser ce module, et c'est sans doute ce que j'aurai fait si je n'avais pas eu à faire des pcb pour un autre aspect du robot, soit la station de recharge, et je vais faire d'une PCB deux coups : (corrigez moi si je me trompe quelque part)

 

La station comportera un chargeur pour batterie NiMH 6v 1a, branché sur le secteur, avec ses deux fils reliés à des pièces de métal qui viendront faire contact avec des pièces semblables sur le robot. 

 

Une arduino nano commande l'alimentation du robot, selon le schéma joint. on peut y voir que le robot en lui même est alimenté lorsque un transistor est "activé" (?) par la nano, quand celle-ci sait que le robot n'est pas à la charge.

Quand le robot est devant la station de recharge, un rupteur indique à la nano qu'il est prêt à être chargé, la nano envoie par voie série au RPI l'information selon laquelle il faut qu'elle s'éteigne, quand c'est le cas elle envoie à la nano l'ordre de couper le courant pour l'ensemble du robot, sauf elle;

à ce moment-là elle active deux transistor qui permettent au courant de charge de passer et de recharger les batteries.

Une LED tricolore change de couleur selon que le robot se trouve en charge(Rouge), en attente de l'extinction de la RPI(Bleu), en fonctionnement normal(Vert); elle est allumée uniquement quand un interrupteur le permet ( pour éviter que la LED ne consomme en permanence du courant). 

 

Le schéma ci-joint permet-il de réaliser tout cela correctement ? 

 

Je ne connais pas les conventions pour réaliser des schémas électriques, pardonnez le manque de rigueur :)

 

Image(s) jointe(s)

  • schéma.png


#18 maximusk

maximusk

    Membre passionné

  • Membres
  • PipPipPip
  • 304 messages
  • Gender:Male
  • Location:Le Mans

Posté 25 mai 2017 - 02:51

Je ne suis pas sur pour tes transistors (je suis plus MOSFET que biplolaire), mais il me semble qu'il te faut une résistance sur la base.

 

Sinon, pour répondre à la question pouquoi t'embêter avec des circuits imprimés :

1) C'est fun a faire (pas pour tout le monde, mais moi, ça m'éclate)

2) Tu fais ton circuit comme tu veux. Si tu as besoin de 4 servos, tu en mets 4, si il t'en faut 42, tu en mets 42.

3) Celui d'adafruit est à mon avis mal foutu si tu utilises des gros servos (pas des petits 9g), la piste sera trop fine pour supporter le courant, donc tu ne peux pas utiliser les 15 servos, car certains d'entre eux doivent être utilisés pour alimenter le bouzin.

4) Un truc que je n'aime pas dans les robots, c'est voir un gros tas de fils. Une raspberry connectée a 4 arduinos avec 2 drivers de moteurs, 1 driver de servos, 4 capteurs, 10 servos, 2 moteurs..., je préfère avoir toutes les connexions sur une seule carte. Vu que c'est en ce moment, on voit que certaines équipes en difficulté à la coupe de france le sont à cause de fils (type I2C ou autre) branchés et pistocollés en suivant la norme ISO1664.



#19 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 25 mai 2017 - 03:40

ISO1664 ... excellent !! :D





Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users