Aller au contenu


Photo
- - - - -

Pince Robot


29 réponses à ce sujet

#1 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 26 mai 2010 - 12:53

Bonjour à tous !

J'avoue que j'ai pas mal hésité avant de faire ce sujet parce que quand j'ai vu le niveau des membres en robotique ici je me suis dit que avec mon petit projet j'allais peut être apparaitre un peu décalé, mais je me suis dit "Lance-toi". Alors voila, j'ai un problème pour un projet que je fais pour moi, pour le plaisir et comme on est sur le forum "Robot Passion" je me suis dit, c'est LE forum où poster le problème. Pas vrai ?

Alors voila, j'ai crée une pince robot articulée à deux degrés de libertés avec 5 servomoteurs (1 pour la rotation, 2 pour se pencher en avant, arrière, 2 pour la pince elle même).
Le principe de la pince est simple, avec un fil au +5V je met une patte de PIC au +5V et en fonction de ça, je fais bouger les servos.
Pour le moment je suis sur protoboard, je finirais le projet quand je serais sûr de moi.
Il y a trois interrupteurs, chaque interrupteur commande un degré de liberté. Il y a une position je tourne à gauche, une position je tourne à droite et une position je ne fais rien.

Seulement le problème (eeeeh malheureusement), est que, parfois, quand je met mon fil +5V pour faire bouger un servo, j'en ai d'autres qui ont des soubresauts. Comme si des petites oscillations parasites venaient les faire bouger. C'est assez léger (de l'ordre de 10° quand même). Je fournis les schémas de ma carte en annexe (Schematics et Typon).
Donc, j'ai posé la question sur un autre forum, on m'a dit, mets des condos sur l'alim, et des condos aux bornes des servomoteurs (des petits : 33pF), résultat : néant. C'est presque mieux sans les condos.
Le code est normalement bon. Si jamais vous le voulez je vous le mettrai mais je pense que le problème est ailleurs.

Voila les schémas :

Eagle Schematics
Eagle Board

Je ne sais pas ce que vous en penserez, j'espère ne pas avoir trop fait de trucs faux. En tout cas je vous remercie par avance pour vos réponses et vos conseils.

#2 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE

Posté 26 mai 2010 - 01:27

Salut et Bienvenue ;)

J'avoue que j'ai pas mal hésité avant de faire ce sujet parce que quand j'ai vu le niveau des membres en robotique ici je me suis dit que avec mon petit projet j'allais peut être apparaitre un peu décalé

Sûrement pas ;) je suis content que tu aies posté ici, un passionné de plus quoi :P

Je regarde ton shéma cet aprem ^^

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#3 BET@.M@X

BET@.M@X

    Troll Archiviste

  • Membres
  • PipPip
  • 297 messages
  • Gender:Male
  • Location:FRANCE

Posté 26 mai 2010 - 02:00

Bonjour à tous !
...
Image IPB
Je ne sais pas ce que vous en penserez, j'espère ne pas avoir trop fait de trucs faux. En tout cas je vous remercie par avance pour vos réponses et vos conseils.


Salut à toi XALTAR ,

A première vue, je ne trouve pas d'erreur sur ton schéma électrique ... si ce n'est que les résistances R1 à R6 seraient plutôt des "PULLDOWN" que des "PULLUP", mais c'est un détail sans rapport avec ton problème.
Si on écarte la possibilité d'un effondrement de la tension d'alimentation lors de la rotation d'un servo (les effets en seraient normalement plus spectaculaires) , il reste la possibilité d'un problème logiciel.
Es tu sûr de ta gestion des timers pour la génération des impulsions PWM de contrôle des servos ?

PS : penses a te présenter dans la section appropriée : ça fera encore plus plaisir à Electron ^_^

"L'intelligence artificielle servira de prothèse à la bêtise humaine !!"
"l'être humain est une machine irrationnelle occasionnellement logique ..."


#4 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE

Posté 26 mai 2010 - 07:01

PS : penses a te présenter dans la section appropriée : ça fera encore plus plaisir à Electron ^_^


Oui, ça c'est bien vrai (mère Denis)
Je viens juste d'arriver, je vais regarder aussi, mais je fais confiance à BêtaMax s'il dit que ça paraît normal.

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#5 BET@.M@X

BET@.M@X

    Troll Archiviste

  • Membres
  • PipPip
  • 297 messages
  • Gender:Male
  • Location:FRANCE

Posté 26 mai 2010 - 07:23

...
Je viens juste d'arriver, je vais regarder aussi, mais je fais confiance à BêtaMax s'il dit que ça paraît normal.


... oui, sauf que mon expertise n'allait pas plus loin qu'une vérification de la polarité de la tension d'alimentation :D

Si ça se trouve, Xaltar veut vraiment utiliser des 1N4004 à la place de diodes led et ses servos sont branchés à l'envers ...

Moi, j'ai aucune confiance dans l'analyse de BET@.M@X et je n'hésiterai pas a lui faire savoir :wacko:

Te voila prévenu Xaltar ! (t'aurais pas un lien de parenté avec Zoltar de la bataille des planètes ... :P )

Oui, ça c'est bien vrai (mère Denis)
...


Ca c'est bien vrai Electron !!

Je viens de me rendre compte que le père DenisDenis ne s'est pas présenté non plus :D

Il nous a présenté Mylène ,et du coup on y a plus pensé ... je note !

"L'intelligence artificielle servira de prothèse à la bêtise humaine !!"
"l'être humain est une machine irrationnelle occasionnellement logique ..."


#6 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE

Posté 26 mai 2010 - 08:07

Tes servos ce sont des servos digitaux ?
(Car les Entrées/sorties "RB" du PIC sont digitales et en TTL)

Selon le datasheet :
http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf

Le pic possède un pull-up interne sur chaque entrée/sortie RB.
Lorsque il y a une remise à zéro de l'alim ou coupure (donc VDD certainement sur ton shéma) le pic désactive automatiquement le pull-up interne et met RB0 à RB4 en mode "entrée analogique" et RB5 à RB7 en mode "entrée digitale".

Le pull-up interne est désactivé complètement si la pin RBPU(barre) est à 0 (donc actif avec 1).

De plus, vérifie bien que RB0 à RB4 sont bien configurées en sorties, cela se fait en mettant à 0 le bit TRISB.
En mode "sortie" ce sera du digital et en mode "entée" ce sera du TTL.

Il y a un latch (LATB) mais en anglais j'ai pas trop compris :

The Data Latch register (LATB) is also memory
mapped. Read-modify-write operations on the LATB
register read and write the latched output value for
PORTB.


D'autre part, la doc parle de pull-up donc contraire à ton schéma où tu mets du pull-down.


BêtaMax,
De moi :

je vais regarder aussi,

Mais où tu vas chercher tout ce que tu raconte ? :blink:
C'est raisonné mais en même temps fou, c'est vraiment bizarre et je suis trop fan :P

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#7 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 26 mai 2010 - 09:48

Wow, pas mal de réponses déja :) Merci !

Alors heu, j'ai regardé ce que vous m'avez dit.

Je suis allé me présenter déjà :D

Hum, alors j'ai pas trouvé le symbole pour les DEL, alors j'ai mis des diodes quelconques j'avoue ! Mais normalement elles s'allument quand on change de degré de liberté. C'est pour ca qu'elles s'appellent DDL ou GRIP. C'est pas des 1N4004. Pour les résistances, on m'a dit qu'il fallait les mettre comme ca et que ça s'appelait des PULLUP, donc j'ai mis pullup sur le schéma mais sinon je sais pas ce qu'il serait mieux de faire ?
En fait je sais pas ce que c'est la différence entre pullup et pulldown.

Alors oui, j'ai pas mis les servos à l'envers hein, sinon je pense qu'il ne bougeraient pas ! J'ai bien mis le fil rouge sur le bouton rouge et le fil noir sur le bouton noir :P

Dans le code, je met tout à 0 au début : voila l'image du code que j'ai fait, sous MPLab, en C. Je pense qu'il est correct.
En gros, je teste s'il y'a un 1 sur la patte du pic et je modifie la commande des timers en fonction.

Mon code interruption crée un PWM pour tous les servos les uns après les autres.

Je ne vois pas ce que c'est un servo "digital" j'ai des HS311 deluxe servomotor tout frais de chez Go-Tronic. J'ai jamais vu de mention "digital" ou "analogic" d'ailleurs.
J'ai une petite ligne qui est ADCON1 = 15 qui doit tout mettre en analogique si je me trompe pas non ?

Je vois pas trop ce que c'est du pullup ou du pulldown en fait, la je suis un peu perdu...

#8 BET@.M@X

BET@.M@X

    Troll Archiviste

  • Membres
  • PipPip
  • 297 messages
  • Gender:Male
  • Location:FRANCE

Posté 26 mai 2010 - 10:24

...
Je vois pas trop ce que c'est du pullup ou du pulldown en fait, la je suis un peu perdu...



Ne soit pas effrayé par si peu , car c'est vraiment très simple :
  • la résistance de PULLUP force une entrée logique au niveau HAUT (+5V)
  • le résistance de PULLDOWN force une entrée logique au niveau bas (0V)
Tes six résistances étant reliées à la masse, ce sont par définition des PULLDOWN .

Je vais regarder ton code pour voir ... si j'y comprend quelque chose :P

Au passage, c'est assez original de fournir une image d'un code plutôt que de le copier/coller dans ton message
:D

"L'intelligence artificielle servira de prothèse à la bêtise humaine !!"
"l'être humain est une machine irrationnelle occasionnellement logique ..."


#9 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 26 mai 2010 - 11:27

Je me suis dit aussi un gros pâté de code ca fait un peu bourrin.
C'est bien ce que je veux je crois. Parce que si je force pas la mise à 0, j'ai une patte de PIC en l'air qui à un état indéterminé, et je veux un 0. Sinon, si je vais faire tourner les servos dans les deux sens en même temps, plus rien ne va bouger. Il me faut donc bien un pulldown !

#10 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE

Posté 27 mai 2010 - 11:06

Il me faut donc bien un pulldown !

Comment tu peux mettre un pulldown alors que le datasheet indique que le pic possède un pullUP interne ?

"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#11 Guillaume TDRIS

Guillaume TDRIS

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:Saint Soupplet

Posté 28 mai 2010 - 07:45

Bonjour,

Alors en ce qui concerne ton PCB et ton schéma, je remarque que tu utilises la même alimentation pour le pic que pour les servos, il faudrait mieux les séparer sous peine de voir ton programme redémarrer à chaque changement de plusieurs servomoteurs... (c'est du vécu)

De mémoire les résistances interne de pull up du PIC ne sont disponible que sur le PORT B.

Je dois avoir une vielle lib pour contrôler des servo je vais essayer de la retrouver.

Si tu as des questions n'hésite pas!

#12 Electron

Electron

    Pilier du forum

  • Membres
  • PipPipPipPip
  • 906 messages
  • Gender:Male
  • Location:LABEGE

Posté 29 mai 2010 - 03:06

De mémoire les résistances interne de pull up du PIC ne sont disponible que sur le PORT B.


Tu n'a pas lu tout le sujet mais seulement le dernier post on dirait Guillaume ;)

Selon le datasheet :
http://ww1.microchip...eDoc/39632e.pdf

Le pic possède un pull-up interne sur chaque entrée/sortie RB.
Lorsque il y a une remise à zéro de l'alim ou coupure (donc VDD certainement sur ton shéma) le pic désactive automatiquement le pull-up interne et met RB0 à RB4 en mode "entrée analogique" et RB5 à RB7 en mode "entrée digitale".

Le pull-up interne est désactivé complètement si la pin RBPU(barre) est à 0 (donc actif avec 1).

De plus, vérifie bien que RB0 à RB4 sont bien configurées en sorties, cela se fait en mettant à 0 le bit TRISB.
En mode "sortie" ce sera du digital et en mode "entrée" ce sera du TTL.


"Plus on partage, plus on possède, voilà le miracle". LEONARD NIMOY
"Celui qui se bat peut perdre, celui qui ne se bat pas a déjà tout perdu". BERTOLT BRECHT (1898-1956)
Comment se lancer dans la robotique !
Mince encore un post pour augmenter mon compteur ;)


#13 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 29 mai 2010 - 07:07

Bon, alors suite à vos réponses, j'ai essayé d'enlever le RBPU
Pour cela j'ai rajouté INTCON2 = 0b0000001; pour mettre le bit 7 à 1 et donc désactiver les pull-ups internes sur le port B. Je ne vois pas de changement.
J'ai aussi essayé de changer les servomoteurs de pin, la par contre y'a du changement, le servo ne bouge plus du tout (j'ai bien pensé à modifier son emplacement dans le code pourtant).

C'est vrai que au bout d'une minute d'inactivité le PIC reboot...

Aussi, je tiens à préciser que ce sont les servomoteurs les plus anciens qui sont les plus sujets à des soubresauts bizarres... j'en utilise 3 vieux et 2 neufs pour mes tests pour le moment. Les 2 neufs ont des sauts de 1° à 5° et les vieux de 1° à 15°.

Aussi, quand je bouge un interrupteur à gauche, et qu'il y'a des soubresauts, en général, après, si je le rebouge à droite ou à gauche, les soubresauts disparaissent, ils reviennent dès que je change d'interrupteur.

Je pense encore essayer de changer les servos de port mais je comprend pas pourquoi ils ne bougent plus quand je fais ça.

#14 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 29 mai 2010 - 07:22

Si tu alimentes ton microcontroleur et tes servos avec le même régulateur, alors il faut IMPERATIVEMENT mettre des condos de découplage au plus près des connecteurs des servos.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#15 Guillaume TDRIS

Guillaume TDRIS

    Membre

  • Membres
  • 49 messages
  • Gender:Male
  • Location:Saint Soupplet

Posté 31 mai 2010 - 09:52

Tu n'a pas lu tout le sujet mais seulement le dernier post on dirait Guillaume ;)


Oui dsl... J'avoue j'ai raté un post.

Ton PIC reboot après une minute? Ton watchdog est bien désactivé?

Sinon d'accord avec léon pour un condo de découplage. Je te conseille de ne mettre qu'un servo à la fois, et de tester indépendamment tous les servos avec une consigne fixe, histoire de mieux cibler le problème.

#16 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 31 mai 2010 - 11:42

J'ai mis un condo de 10µF sur les servos et celui de l'alim est de 100µF.

Alors non je n'ai pas enlevé le WDT. Mais j'ai fait un test et le reboot arrive plus tard en fait, vers 1 min et 50 secondes.

Sinon, avant d'arriver à la pince complète j'ai fait pas mal d'essais. Pour apprendre à programmer et à faire la carte vous voyez ?

D'abord un servo avec deux timers, puis un servo avec un timer.
Ensuite j'ai mmis deux servos avec un timer.

Et ensuite 5 servos avec un timer qui fesaient une séquence prédéterminée. Tout allait très très bien. Pas d'interférence, pas de problèmes, l'alim de 500mA tenait bien le choc, j'avais même pas de condo de découplage sur l'alim ni nulle part. Les servos étaient sur les pattes des ports A et E par contre. Mais a part ca pas de problème.
C'est que depuis que je donne une consigne "on the flight" si je puis dire, que ca bug.

Seulement, la avec les interrupteurs, même si je met que deux servos, quand j'en fait bouger un, l'autre à encore des soubresauts.
Parfois aussi ca m'est arrivé, notemment quand j'arrive près de la consigne extrême du servo, il se met à paniquer un peu et gigote dans tous les sens. J'ai mis des consignes extrêmes dans le code, sinon quand j'arrive en butée, la je les perds tous.

#17 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 04 juillet 2010 - 06:56

Bon !!! Je déterre mon topic enfoui dans les profondeurs de ce forum !

J'ai réussi à avoir un montage stable avec des servos neufs et une alim de 2A (j'ai pris celle de ma PSP).

Faut dire que ca m'a pris un mois pour me dire, allez tu peux la faire c'te pince tu vas pas la laisser gagner le match quand même !

Ben je me suis dit que j'allais pas la laisser faire cette petite indisciplinée, alors je lui ai montré qui était le maitre !

Donc, ben ca avance, la seule chose qui pourrait me poser problème est que j'ai à peu près 5 servos et autant de poids en bois à supporter à la base. Sans parler du bras de levier de 20cm. Donc un couple de ouf pour un petit servo, j'espère qu'il va pas me lâcher. Les servos ronflent pas mal mais ca tient pour le moment

Bonne fin de week-end les gens !

#18 Dr.Calvin

Dr.Calvin

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Female

Posté 04 juillet 2010 - 08:51

J'ai réussi à avoir un montage stable avec des servos neufs


Et tu OSES dire après ça, sur un montage programmable de 5 servos, "j'ai pas mal hésité, vu le niveau des membres sur le forum" :o :angry2: :o :blink:

Qu'est-ce que ça fait pas dire comme c... bêtises, la modestie !

Cette intrusion (in)opportune n'avait d'autre but que d'exprimer ma jalousie mon admiration à ce sujet et un bon courage pour la suite de ton projet, dont j'ai hâte d'avoir d'autres nouvelles et des illustrations :)

Robot-passionnément ;)

Dr Calvin

PS : et puis, qui sait, peut-être qu'avec Electron on pourrait réfléchir à un bras avec une main à 5 doigts au lieu des 5 servos, héhéhé

#19 Xaltar

Xaltar

    Membre

  • Membres
  • 16 messages

Posté 05 juillet 2010 - 11:11

Le coup de programmer 5 servos j'ai déja posé la question c'est un truc courant on dirait. Quand j'ai jeté un coup d'oeil au forum ce que j'ai vu était nettement supérieur. Enfin en tous cas j'ai trouvé. T'facon la seule chose que je sais faire c'est programmer des servos c'est tout.

Ce que je voulais c'est trouver pourquoi ca buggait, la solution trouvée est pas si bien puisque elle ne résout pas vraiment le problème...

En tout cas c'est presque fini.

#20 Dr.Calvin

Dr.Calvin

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Female

Posté 06 juillet 2010 - 12:57

T'facon

Ouh....(j'rigole, c't' amusant d' voir ça par écrit :lol: )

il y a tous les niveaux sur le forum, c'est super pour ça, d'ailleurs. Léon et Bernard, par exemple, ils sont super forts :unsure:

En tout cas, j'ai hâte de voir ce que ça donne ;)



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users