C/C Driver servo moteur DC

Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
  • Auteur de la discussion
  • #1
hello

j'en profite de cette nouvelle section pour y présenté un ancien projet qui ne demande que a mûrir :)

le projet tourne autour d'un arduino nano 8mhz un drivers moteur DC de 4ampere ultra compact (un pont en h tout bete :) ) et un moteur DC de 2.5ampere et sont encodeur 500ppr un "shield" maison avec le régulateur lm7805 pour mettre le nano sous tension et avoir les entrée step dir sur la carte :) (mais on peu controler le moteur via usb !! )

le code a ete repris chez makerbot , et modifier pour mon projet !

le code fonctionne chez moi , mais

la vitesse du moteur est limitée a la vitesse d'éxecution du nano ! (prendre un arduino plus puissant doublerais les perf mais on se retrouve avec plein d'entrée sortie inutile ! )

la résolution est limitée a 1000ppr du au branchement de l'encodeur , un port sert a compté et l'autre a détecter le sens , on peu compté les deux canaux mais les perf en vitesse serais divisée en deux :)

on ne peu géré que un seul axe par carte !


actuellement le pid est manuel ! il se regle via le port console serie ! ou directement en modifiant le code , une lib autotune existe mais je n'ais pas su l'implémeter !


les perf de mon coter sont

alim 20V dc drv 4ampere , moteur résolution 1000ppr vitesse max 2500rpm :)

qui me semble déja pas mal pour une petite cnc ( on peu bien sur avoir de plus gros moteur il faut juste booster le pont en H )

une détection du courant moteur doit encore etre impléméntée dans le code ( electroniquement c'est fait :) )

quelque photo et le code de base :)


ne pas hésité a proposer et a tester , ( avec précaution et adapté le code pour vos drive de puissance :) )
P1040146.jpg
P1040148.jpg
P1040149.jpg
P1040150.jpg
P1040153.jpg
Voir la pièce jointe makerbotservo.pde.txt
 
Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
  • Auteur de la discussion
  • #2
j'oubliais j'ai tester avec encodeur 1000ppr donc résolution 2000ppr cela fonctionne mais on tombe a 1500t/min 1600 ça sacade le nano ne suis plus (code a optimisé peu etre :) ) de plus la rogramation a ete faite avec l'ide arduino , en la codant avec avrdude en code pur on devrais avoir de meilleur perf , le temps de ressortir le matos et je teste cela :)
 
petit_lulu
Compagnon
11 Janvier 2015
645
gers
salut,
avec un encodeur 1000P a 1500t/m ca donne une frequence de (1500/60)*1000=25000 (25KHz)
a priori ton processeur "tourne" a 16MHz soit 16000000 d'instructions par secondes (environ) ce qui donne 16MHz/25KHz=640 instructions entre chaques pas.
a mon avis il y a un probleme, soit ton code est "moisi" (IDE arduino?) soit tu code mal mais la c'est un autre probleme... :) je deconne
perso, je ne connais pas arduino mais plutot du PIC en assembleur et dans mes routines de gestion codeur en quadrature, il y a 20 instructions ce qui donne par exemple a 16MHz du 800KHz soit du 48000t/m !
a cela j'ajoute que c'est du theorique bien sur, derriere cette routine il y a un autre programme qui tourne car cette routine c'est sur interuption comme cela tu ne rate jamais d'impulsions du codeur.
je ne connais pas la communication que tu as derriere tout ca mais je pense que tu dois pouvoir augmenter la vitesse...comment tu rentre la valeur de position dans l'arduino?
 
Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
  • Auteur de la discussion
  • #4
avec le 1000 pppr on décode 2000 :) donc 1500/60*2000 :) donc 50khz

oui le codage via le ide n'est pas top il y as des instruction foireuse je doit le refaire avec avrdude :) et xload pour charger le hex directement :)

sur pic oui j'ai du dspic pour servo non utilisé aussi

mais l'idée c'est de faire un drive servo hyper simple a assemblé et programmé tout en restant peu chere :)

sur les patte de déclenchement timer du nano ! sur les autre entrée c'est trop lent :) , mais y a clairement un truc le code , peu etre j'ai modifier un code tout fait , il doit surement etre optimiser :) je testerais via avrdude :)

si tu as l'occasion d’essayer aussi tu trouveras peu etre un truc que j'ai rater :wink:
 
bipbip30
Compagnon
23 Décembre 2012
2 817
bonjour doctor_itchy, as tu un lien vers les encodeurs dont tu parles . cdlt
 
Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
  • Auteur de la discussion
  • #6
ce sont de simple encodeur AB hp heds mais en fonction de la capture des signaux on as une multiplication de la résolution qui serais de 4x si on exploite les deux signaux A/B sur deux entrée déclanchement timer :) mas actuellement cette solution pompe trop sur le nano ça ne fonctionne pas bien !
 
bipbip30
Compagnon
23 Décembre 2012
2 817
ok merci tu as une contrainte de place que tu ne veuilles pas utiliser autre chose qu'un nano ?
 
Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
  • Auteur de la discussion
  • #8
non pas de contrainte , c'est un projet defis et je voulais un truc compact a proposer , l'idee etait de valider le tiny et de fa-ire un pcb avec tout dessus et hyper mini :) de laisser le projet avec les pcb en open source ! en virant la' couche arduino on devrais avoir de bonne perf :)
 
Doctor_itchy
Compagnon
20 Avril 2007
4 191
Morlanwelz
ben c'est des 328 aussi . mais en 8 ,je vais en commander quelque un poutr tester :)
 
fred250
Compagnon
8 Mai 2007
3 040
Vienne Isére 38
Je ne sais pas comment fonctionnent les Arduino, mais par exemple je me suis mis au picbasic de Comfile vendue par Lextronic, ce sont des pic charger avec un logiciel qui interprète les instruction en basic qui sont utilisé, le Uc et un 20Mhz mais qui n’exécute que maxi 56000 instructions par seconde, si c'est un peut le même fonctionnement avec un Arduino ça peut expliquer la lenteur
Perso j'ai également en projet de faire un driver servo avec un picbasic, pour contourner les limitations et faciliter la programmation par la même occasion, je vais utilisé des circuit intégré dédié au comptage et décodage d'encodeur; HCTL2000 et pour le comptage des impulsions step des 74HC590, ça augmente le prix mais comme ça je n'aurai qu'a relever les compteur, faire mon petit calcul PID, quelques lignes supplémentaire pour divers Controls et sécurités sur lesquelles je ne me suis pas encore penché et basta, enfin le code est encore loin d’être écrit et surtout d’être opérationnel...
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut