Fabriquer son servo en analogique
#1
Posté 30 décembre 2012 - 02:59
- prioritairement => voir si c'est possible à faire facilement par un amateur, et là je ne pense pas seulement à l'électronique mais surtout à la partie mécanique, et plus particulièrement au système de potar de recopie sur l'axe moteur.
- pas chers, il en faut une vingtaine, peut-être plus.
- de pouvoir les faire facilement, pour la même raison.
- petite taille, pas d'usine à gaz pour chaque servo, un bipède n'est pas un entrepôt et il faut pouvoir tout caser facilement au final.
- il va falloir être tolérant avec mes travaux, je ne connaissais pas LTspice que j'ai découvert par Black Templar et je passe plus de temps à apprendre et essayer de modéliser correctement mes idées qu'à réfléchir au projet. Tout s'apprend mais il faut le temps au temps.
On verra bien si tout çà aboutit à quelque chose avec le cahier des charges exprimé au dessus.
Je repars de zéro, histoire de me faire mon truc à moi, et que si ça intéresse quelqu'un on puisse tout retrouver du début à la fin dans le même sujet. Je vous invite à exprimer critiques, conseils et nouvelles idées, histoire de faire avancer le truc ^^.
Donc on repose les postulats de départ:
- 0 0 ça ne tourne pas.
- 1 1 ça ne tourne pas.
- 1 0 ça tourne dans un sens.
- 0 1 ça tourne dans l'autre sens.
Pour alimenter un pont en H il faut deux signaux complémentaires, je n'ai travaillé pour le moment que sur un seul. Je ne sais pas si c'est possible de simuler un potentiomètre sur LTSpice, ce sera donc en faisant varier les valeurs de R1 et R2 qui représentent la RV de recopie sur l'axe moteur.
J'aurai pu faire la source PWM mais je ne connais pas les valeurs du rapport cyclique d'un signal PWM Arduino, je le ferai quand j'aurai fais des mesure à l'oscillo sur mon UNO à l'occasion. Pour l'instant je simule le signal PWM intégré par une source de tension.
On a bien les signaux de sortie haut ou bas suivant la valeur de R1/R2 par rapport à l'entrée In+. Ça fonctionne aussi avec d'autres valeurs de "PWM_intégré".
Maintenant il faut voir à partir de cette idée de base si et comment on peut générer une deuxième sortie pour alimenter le pont en H, tout en respectant la table de vérité énoncée plus haut.
Edit: j'ai merdouillé et le sujet est doublé. Désolé, si un modo peut effacer le sujet vide...
#2
Posté 30 décembre 2012 - 05:19
Voila une idée pas trop mal, MAIS (y en as toujours un lol) : comment vas tu faire tenir tout cela? (j'ai pas vue le post de Mike)
As tu deja ouvert un servo moteur? (si non, alors regarde un peut sur internet)
Y a rien de compliquer, faut juste avoir un peut de matos.
mais je vais suivre ce projet et aider du mieux que je pourrait.
Enjoy and appy new year
Ne demande jamais à un robot de faire ce que tu peux faire toi même.
#3
Posté 30 décembre 2012 - 06:52
Oui, depuis peu ma culture en servo-moteur à bien évoluée, j'ai ouvert et bricolé des servos, des MG845 TowerPro, c'est ce qui arrive quand on achète du chinois, j'en ai aussi modifié un pour le passer en 360° et l'ai remis ensuite d'origine ne voyant pas trop l'intéret de transformer un servo en simple moteur.
Et c'est parce que j'ai pu voir ce que valaient en qualité les servos chinois et en euros les bons servos que je m'intéresse de près à la conception d'un servo perso. Je me suis vite rendu compte que 20 servos de bonne qualité tenant plus de 10kg seraient hors de prix, pour ma bourse en tout cas. Et un bipède reste un projet assez onéreux, alors si on sait déjà au départ que le résultat sera médiocre à cause du choix de matos... autant s'abstenir.
Maintenant pour faire tenir tout çà, l'idée serait de placer toutes les électroniques de commande dans le torse du bipède, seul endroit ou il y a assez de place, et juste les moteurs/RV dans les articulations. A voir si c'est réalisable.
Le projet de Mike est ici.
Je viens de le relire encore une fois et je me dis que je suis mal parti dans ma démarche, mais je vais continuer encore un peu dans ce sens.
Et happy new year à toi aussi ^^
#4
Posté 30 décembre 2012 - 08:16
Laisse tomber les servo et utilise des moteurs simple (avec un peu de couple quand même) coupler a différents systèmes d'engrenages.
Tu obtiendra un aussi bon résultat, voir même meilleur.
Tu vas apprendre pas mal de choses sur les engrenage, tu vas appliquer ce que tu apprend et tu vas réussir.
Moi en ce moment je suis dans cet apprentissage, et j'ai compris beaucoup de choses sur les systèmes d'engrenage.
bon, ont va voir par la suite
Ne demande jamais à un robot de faire ce que tu peux faire toi même.
#5
Posté 30 décembre 2012 - 09:56
Je pense que ça n'a pas d'intérêt. Outre l'aspect apprentissage, bien sûr.
Dis-toi que si les servomoteurs coùtent ce prix là, c'est qu'ils le valent. Il y a assez de concurence sur le marché du servomoteurs pour ça.
La différence entre eux et toi, c'est qu'ils amortissent sur la quantité et doivent se faire un peu de marge. Mais au niveau du temps que tu vas passer à développer ton servomoteur et au niveau de l'investissement matériel que ça va représenter, tu n'arriveras jamais à descendre en dessous du prix de servomoteurs équivalents sur le marché.
Après, comme apprentissage, c'est très intéressant. Je pense qu'il y a de quoi faire, très clairement.
Mais tu ne réduiras pas tes coùts, c'est certain.
Un bête exemple : Un L298n (double pont en H) coùte 7€ dans un magasin d'électronique à Bruxelles. (juste le composant)
Sur ebay, tu trouves des circuits complets (comme celui-là, que j'ai utilisé sur un robot) pour moins de 5€... C'est le même composant dessus... Bref. Faire soi-même, c'est classe mais ça paye pas.
Esprit
*Rêve d'en caser un dans un robot*
#6
Posté 30 décembre 2012 - 11:15
Un moteur seul démultiplié ne suffit pas, il faut quand même pouvoir le commander et le stopper précisément, il faut qu'il soit asservi sinon comment donner une bonne position à un membre et la garder ? C'est le but de cette recherche. Et pour ce qui est des engrenages j'envisage d'acheter un plateau diviseur pour pouvoir les usiner moi-même sur ma fraiseuse, mais vu le prix de l'outil ça reste à l'état de projet pour l'instant.
@ Esprit,
"Faire soi-même c'est classe mais ça ne paye pas...", oui je suis d'accord.
"Je pense que çà n'à pas d'intéret", là pas du tout d'accord.
Acheter tout fait n'est pas très passionnant, je ne fais pas partie de la "génération consommation" et ce qui m'amuse et m'intéresse dans la robotique, comme dans quelques autres disciplines ou je traine mes guêtres d'ailleurs, c'est de construire moi-même si c'est dans mes cordes. C'est formateur et bien plus amusant que d'acheter des trucs tous faits et les assembler, ce qu’apparemment font la plupart des roboticiens amateurs.
Et puis surtout, une fois la technique maitrisée il sera facile de construire des servos très puissants hors de prix pour le commun des bidouilleurs, en sur-dimensionnant juste le pont en H et le moteur. Exceptionnellement peut-être, mais rien que pour çà ça vaut le coup d'essayer, et si ça fait touiller un peu mes neurones au passage c'est tant mieux ^^.
Pour ce qui est de réduire les couts j'y ai réfléchi et je suis entièrement d'accord avec toi. Pour les platines L298 c'est ce que j'ai utilisé au départ pour ma CNC et je les ai en effet trouvées à environ 4€ chez le chinois. Maintenant, peut-être qu'en fouinant un peu on doit pouvoir monter des ponts en H pas cher en composants discrets.
#7
Posté 31 décembre 2012 - 06:05
Juste deux trucs à signaler, j'ai appelé la tension de réf de la RV "alim-moteur", le nom est mal choisi, ce n'est évidemment pas celle qui alimentera le moteur. Les 3 sources de voltage à gauche sont un essai pour obtenir un signal PWM qui ne sert pas pour l'instant dans le schéma, donc n'en tenez pas compte.
Uc -> la tension simulée du PWM arduino passé dans un intégrateur.
Umm -> la tension qui sort de la RV de recopie axe moteur (simulée par R1/R2).
Si UC > Umm on a sortieA à 5vcc et sortieB à 0vcc, le pont en H est bien commandé et le moteur tourne dans un sens (du coup dans l'autre sens en inversé).
Si Umm > Uc on a sortieA à 0vcc et sortieB à 5vcc, le pont en H est bien alimenté et le moteur tourne dans l'autre sens (en fait dans l'autre sens une fois inversé ^^).
A un certain moment le moteur arrivera à une position telle que la RV moteur donnera Umm = Uc et là on aura sortieA = sortieB = 1. On voit mal sur l'image mais les deux sorties sont à 1, donc 0 une fois inversées et là on a bon, le pont en H n'est plus commandé -> le moteur est à l’arrêt.
#8
Posté 01 janvier 2013 - 08:26
Je me suis amusé cet après-midi, dites moi si je me trompe mais çà a l'air de coller. Le seul truc c'est qu'il faudrait inverser les sorties mais je n'ai pas réussi à trouver le modèle Spice pour un Cmos CD4009 ou 4049, alors je ne l'ai pas modélisé et on va faire comme si...
Si tu as besoins des signaux inversé tu as juste à appeler ta sortieA sortieB et vice versa car d'après ton montage l'un est l'opposé de l'autre ...
A un certain moment le moteur arrivera à une position telle que la RV moteur donnera Umm = Uc et là on aura sortieA = sortieB = 1.
Là je suis plus d'accord ... sans même regarder les simu : Umm = Uc avec un montage comparateur simple à base d'aop c'est un état normalement indéterminé ... et les sortie A et B sont opposées donc elles ne peuvent normalement jamais être égale en théorie ...
En tout cas là tu proposes le principe d'une régulation en tout ou rien c'est effectivement la première chose que j'avais proposé mais quand j'ai fais les tests en vrai j'ai pas été très satisfait ^^
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#9
Posté 01 janvier 2013 - 12:40
Avec de vrais comparateurs si Uc = Umm a-t'on aussi un état indéterminé ? pas trop d'expérience dans ce domaine.
Pour ta première réponse l'inversion de signaux est juste là pour ne pas avoir 1 et 1 en sortie.
Je pensais au début formater les signaux UC et Umm en 5v avec des AOP et faire le reste en logique CMOS, ce qui permettrait d'avoir des états bien évidents mais pour çà il faut ariver à trouver les bons modèles spice sur le net.
Hormis les servos-moteurs cette étude m'intéresse aussi pour réaliser une commande de rotation d'antenne à distance, pour çà le tout ou rien suffit largement.
Et meilleurs voeux ^^
#10
Posté 01 janvier 2013 - 05:16
Je pensais au début formater les signaux UC et Umm en 5v avec des AOP et faire le reste en logique CMOS, ce qui permettrait d'avoir des états bien évidents mais pour çà il faut ariver à trouver les bons modèles spice sur le net.
Merci pour les bons voeux, de même de ma part à tous les robots makers.
Pour info, sous LTSpice Les circuits logiques sont dispo dans le répertoire DIGITAL; une précaution cependant : les circuits sont en logique 1 V, il te faut les adapter à ta logique (par exemple 5V) selon la métode décrite içi
Dans le montage, il me semble aussi qu'il y a un risque d'oscillation , peut être que rajouter de l'hystérésis dans les comparateurs permettrait d'éviter le pb en créant ainsi une (petite) zone morte.
Pour simuler un potar qui varie, j'utilise une source de tension sinus sur une période sans offset (on peut aussi utiliser les LOADs ce qui revient sensiblement au même) , tu verrais ainsi les basculements
http://hmnrobots.blogspot.fr/
#11
Posté 02 janvier 2013 - 11:23
Edit: ne rien raccorder sur les entrées inutilisées sinon "fumée" ^^ c'est ce qui est stipulé dans ton lien.
#12
Posté 02 janvier 2013 - 12:45
Pour exemple, une simul sur la porte ET ci-dessous, qu'il y ait 0 ou 1 sur toutes les entrées, la sortie reste désespérément à l'état haut. La boule en sortie sert à l'utiliser en NAND et le problème est le même --> état bas permanent. La seule qui fonctionne correctement est l'inverseur.
Je dois surement faire une erreur de config quelque part mais je ne trouve pas.
#13
Posté 02 janvier 2013 - 01:41
Je ne m'en sors pas avec les portes logiques de LTSpice, tous mes essais ont donnés un comportement anarchique. J'ai d'abord voulu utiliser le OU exclusif mais la table de vérité ne correspondait pas à ce qu'elle aurait du être, j'en ai simulée une ensuite en la construisant avec un assemblage de nand et d'inverseurs, même problème les NANDS font n'importe quoi.
Pour exemple, une simul sur la porte ET ci-dessous, qu'il y ait 0 ou 1 sur toutes les entrées, la sortie reste désespérément à l'état haut. La boule en sortie sert à l'utiliser en NAND et le problème est le même --> état bas permanent. La seule qui fonctionne correctement est l'inverseur.
Je dois surement faire une erreur de config quelque part mais je ne trouve pas.
as tu téléchargé le fichier exemple du group yahoo DIGITAL_A_DEVICES_1.ASC ? je viens de le faire et les portes fonctionnent bien mais nécessitent de préciser les paramètres de la porte
http://hmnrobots.blogspot.fr/
#15
Posté 02 janvier 2013 - 03:53
http://hmnrobots.blogspot.fr/
#16
Posté 02 janvier 2013 - 04:20
C'est seulement après que j'ai pensé qu'en fait d'état indéterminé il peut très bien il y avoir un AOP à V+ et l'autre à V-, et dans ce cas ça ne marche plus, le moteur tournera => pas bon, faut chercher autre chose.
J'aimerai bien savoir comment se comporte un vrai comparateur type LM311 quand V+ = V- ?
#17
Posté 02 janvier 2013 - 04:34
490kHzJ'aurai pu faire la source PWM mais je ne connais pas les valeurs du rapport cyclique d'un signal PWM Arduino, je le ferai quand j'aurai fais des mesure à l'oscillo sur mon UNO à l'occasion. Pour l'instant je simule le signal PWM intégré par une source de tension.
Et par pitier, n'utilise pas d'AOP en mode comparateur !
Utilise pour ça un vrai comparateur comme un LM311.
A un certain moment le moteur arrivera à une position telle que la RV moteur donnera Umm = Uc et là on aura sortieA = sortieB = 1. On voit mal sur l'image mais les deux sorties sont à 1, donc 0 une fois inversées et là on a bon, le pont en H n'est plus commandé -> le moteur est à l’arrêt.
L'état ne sera jamais indéterminé en pratique ...Là je suis plus d'accord ... sans même regarder les simu : Umm = Uc avec un montage comparateur simple à base d'aop c'est un état normalement indéterminé ... et les sortie A et B sont opposées donc elles ne peuvent normalement jamais être égale en théorie ...
Le gain d'un AOP (même s'il faut utiliser un comparateur !!!) est de l'ordre de 10^5, voir plus. Une simple différence de 1mV sur les entrée entraine un écart de plus de 10V sur les sorties. Tu seras donc toujours saturé à l'état haut ou à l'état bas.
Pire même, si tu as du bruit sur tes entrées et que e+ oscille autour de e-, alors ta sortie oscillera entre 0 et 5V !!!
Pour contrer ce phénomène, il suffit de monter ton comparateur en trigger de schmitt afin que les seuils de déclenchements soient différents !
Justement, ça oscillera entre 0 et 5V.Ok, le simulateur me les donne à 1 mais ça reste un simulateur, si tu me dis que c'est indéterminé je te fais confiance
++
Black Templar
Mon site internet : http://ferdinandpiette.com/
#18
Posté 02 janvier 2013 - 07:31
c'est un peu beaucoup 490 KHZ?490kHz
http://hmnrobots.blogspot.fr/
#19
Posté 02 janvier 2013 - 07:50
De toutes façons j'ai retourné le pbm dans tous les sens et je pense qu'il faut repartir de zéro et repenser différemment.
Pour le PWM de l'arduino, J'ai lu à plusieurs endroits que c'était du 20ms, donc du 50Hz avec des créneaux d'une largeur comprise entre 0,5ms(0°) et 2ms (180°). Ce qui une fois intégré doit faire une tension vraiment faible.
#20
Posté 02 janvier 2013 - 07:53
Ooops, erreur de frappe, 490Hz et pas kHzc'est un peu beaucoup 490 KHZ?
Non, ça c'est pour le signal de la bibliothèque servo. Un servo est commandé par un signal entre 1 et 2ms répété tous les 20ms.Pour le PWM de l'arduino, J'ai lu à plusieurs endroits que c'était du 20ms, donc du 50Hz avec des créneaux d'une largeur comprise entre 0,5ms(0°) et 2ms (180°).
Mon site internet : http://ferdinandpiette.com/
Répondre à ce sujet
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users