1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

C/C Driver servo moteur DC

Discussion dans 'Arduino' créé par Doctor_itchy, 14 Juillet 2016.

  1. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Driver servo moteur DC
    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
     
  2. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Driver servo moteur DC
    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 :)
     
  3. petit_lulu

    petit_lulu Apprenti

    Messages:
    104
    Inscrit:
    11 Janvier 2015
    Localité:
    gers
    Département:
    32
    Driver servo moteur DC
    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?
     
  4. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Driver servo moteur DC
    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:
     
  5. bipbip30

    bipbip30 Compagnon

    Messages:
    2 388
    Inscrit:
    23 Décembre 2012
    Projets:
    H130 De Vallière en cours
    Département:
    30
  6. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Driver servo moteur DC
    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 !
     
  7. bipbip30

    bipbip30 Compagnon

    Messages:
    2 388
    Inscrit:
    23 Décembre 2012
    Projets:
    H130 De Vallière en cours
    Département:
    30
  8. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Driver servo moteur DC
    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 :)
     
  9. jjdu33

    jjdu33 Compagnon

    Messages:
    1 057
    Inscrit:
    2 Janvier 2013
    Localité:
    F-33
  10. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
  11. jjdu33

    jjdu33 Compagnon

    Messages:
    1 057
    Inscrit:
    2 Janvier 2013
    Localité:
    F-33
  12. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
  13. fred250

    fred250 Compagnon

    Messages:
    2 904
    Inscrit:
    8 Mai 2007
    Localité:
    Vienne Isére 38
    Driver servo moteur DC
    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...
     
Chargement...
Articles en relation
  1. jicer
    Réponses:
    15
    Affichages:
    1 056

Partager cette page