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

Carte Servos à dsPIC

Discussion dans 'Electronique spécifique CNC' créé par MaX-MoD, 18 Septembre 2007.

  1. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    YAPSC


    YAPSC est l'acronyme de "Yet Another dsPic Servo Controller"
    Cette carte permet de contrôler un servomoteur doté d'un encodeur quadrature. Il est entièrement libre, sous licence GPL, vous pouvez donc l'adapter à vos besoins, et en distribuer la version originale ou modifiée sous les mêmes conditions.
    YAPSC est construit autour du dspic30F4012, microcontrôleur 16bits à coeur DSP de chez Microchip. Le code (une modification du code de dspic-servo par Lawrence Glaister) est compilé avec MPLAB C30, le compilateur C de Microchip.
    Il existe deux versions de YAPSC: une version avec une partie puissance pour une servomoteur DC, et l'autre pour attaquer une amplificateur à entrée analogique +-10V[/b]

    Ci dessous vous trouverez le manuel d'utilisation, le code source actuel, ainsi que le projet KiCAD du PCB et (bientôt) le manuel d'assemblage:




    En Détail : V1



    Le design de cette carte permet une grande flexibilité. En effet, selon les références des composants que l'on choisira, on peut contrôler des servomoteurs de 1 à 1000V et de 1 à 50A.

    L'étage de puissance est construit autour de drivers de MOSFET classiques. J'utilise des NCP5106 mais ils possèdent une empreinte compatible avec la plus part des drivers de chez International Rectifier, plus courants.

    Les entrées PC sont optocouplées pour un maximum de sécurité.

    Les transistors MOSFET sont de canal N (ici IRF540N sur mon proto), avec diodes de protection internes. Ils sont choisis pour cette application avec soin.
    Les MOSFET ont une empreinte pour boitier TO220, mais une version pour des boitiers plus gros (TO247) est aussi disponible.

    NOUVEAU
    Le PCB a été revu récemment, voici donc la carte montée dans sa version 1.4.
    En parallèle le firmware (code source) a évolué, il est bien plus stable et YTT est opérationnel.

    => http://www.max-mod-shop.com/yapscv1

    Le PCB a été dessiné avec KiCAD.
    Le projet entier de la carte (TO220 et TO-247) est dans /schema_pcb/

    pour ceux qui souhaiteraient modifier le code source pour l'adapter à leur besoin, le code source est disponible dans /firmware/

    Un bootloader est intégré dans le zip. il est dans /bootloader/.
    Il faut juste programmer le fichier HEX contenu dans /bootloader/code dans le PIC, on utilise la clé de configuration série pour flasher le PIC.

    La clé de configuration est dans /ProgKey/
    Une version USB et une version RS232 (MAX232) sont dispo, toutes deux optocouplées.

    NOTE:
    les optocoupleurs de la carte V1 doivent être remplacés. Pour une fréquence d'entrée max de 25KHz, prenez des 4N35 (pas de changement de PCB)
    Au delà, jusqu'à ~500KHz, il faut changer de boitier, et prendre des 6N136 ou 6N137.[/color]

    Manuel d'utilisateur:
    Manuel de montage:
    Schémas, PCB, code et bootloader:

    si vous avez un doute sur une référence de remplacement, contactez moi.





    En Détail : 10V





    Cette carte a pour but de commander des amplificateurs de servomoteurs commandés en +-10V. La carte YAPSC:10V ne contient donc pas de partie puissance, en revanche elle permet de fournir ce signal analogique à partir d'une entrée PC STEP/DIR et d'un retour de position par l'encodeur en quadrature. Vous aurez les caractéristiques détaillées dans le manuel.
    [​IMG]
    [​IMG]
    la page dédiée sur mon site
    Projet KICAD, avec Gerber, ps et code mis à jour
    Manuel en Anglais
    Manuel en Français:

    Max-Mod n'étant plus présent sur le forum et son site dédié à ses cartes n'étant plus disponible, j'éditerais ce premier message pour rajouter des éléments importants.

    001.PNG

    002.PNG

    003.PNG Voir la pièce jointe YAPSC-Manuel.pdf Voir la pièce jointe YAPSC-Manuel_montage.pdf Voir la pièce jointe YAPSC.V1.zip Voir la pièce jointe man_10V_FR.pdf
     
  2. elliott

    elliott Compagnon

    Messages:
    905
    Inscrit:
    5 Novembre 2006
    Carte Servos à dsPIC
    Salut MaX-MoD

    Je dois reconnaître que celà m'interesse au plus
    haut point...........

    Lorsque tu auras un peu de temps su tu pouvais développer
    le sujet et peut-être communiquer l'algo de la PID afin que
    les personnes désireuses puissent l'adapter à leur chip
    et à leur compilo :wink:
     
  3. alex68

    alex68 Apprenti

    Messages:
    107
    Inscrit:
    17 Décembre 2006
    Localité:
    Alsace
    Carte Servos à dsPIC
    Moi aussi j suis méga intéressé par le sujet...
    J ai hate d avoir des nouvelles...
    Bonne chane et a biento..
    A+
     
  4. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
    Carte Servos à dsPIC
    je suis interesser par le model 3phase pas a pas avec entree encodeur de 1000pas par tour :D

    tu pourras venir chez moi tester ton proto sur mes moteur :lol:


    moi pas le temp pour developer une carte de controle :(
     
  5. Fred8

    Fred8 Compagnon

    Messages:
    793
    Inscrit:
    18 Mai 2007
    Localité:
    45 - Orléans (Ingré)
    Carte Servos à dsPIC
    Tu as quoi comme compilateur? MPLAB C30 ?
    Tu as un ICD2 pour développer? ou mieux ?

    Les projets que j'ai eu à faire jusque là utilisait des PIC et avaient besoin de respecter des temps très précis et très courts, ce qui fait que je ne me suis jamais mis au C pour PIC, et çà me manque beaucoup aujourd'hui...
    Lorsque tu auras ecrit un bout de code qui tourne bien, tu pourrais le diffuser? (même si c'est tout petit bout, histoire de voir comment sont faites les initialisations, les déclarations de fonctions, etc...).

    Merci bcp.
    A+
     
  6. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    oula! vives réaction en peu de temps!

    Oui, le code sera diffusé (je pense en licence GPL, peut-être aussi sur sourceforge) gratuitement, libre à ceux qui le veulent de l'adapter à leur chip et compilo.
    la portabilité du code C est aisée puisque C30 est ANSI (d'après ce qu'on m'a dit sur jenesaisplusquelforum)

    Héhé si je passe dans le coin pq pas ^^
    les steppers 3p c'est pour un peu plus tard, c'est dans les cartons mais ca viendra une fois que le contrôle des DC BLDC et AC 'traditionnaux'

    mais tkt si j'ai besoin d'un béta-tester pour les step 3p je te le ferais savoir :wink:


    MPLAB C30 et ICD2, les émulateurs sont encore un peu trop chers pour mon budjet (ou mon budjet encore trop petit)^^

    en ce qui concerne la vitesse d'un prog en C ou ASM sur les dsPIC, ben le C à de nouveau largement l'avantage, contrairement aux PIC 12 14 16 etc.
    c'est aussi du à leur architechture optimisée C.
    il faut même plus passer par l'asm pour certaines opération comme la division / multiplication qui, ici, est faite en un cycle horloge.

    pour le code, j'essaye de le faire propre et bien commenté avant de le diffuser, et j'utilise un max les interruptions des dsPIC qui sont très utiles et performantes. ce sera certainement ce qui nécessitera le plus d'adaptation pour passer à un autre µC.


    plus d'infos sur les possibilités:
    • entrée encodeur 100KHz (6000trs/min pour tes 3phases Ichy!) et pas de max de divisions
    • fréquence PWM de 40KHz avec une résolution de 10bits, 160KHz avec 8b
    • régulation de l'intensité dans les bobines (pap, détection court circuit...)
    • Fréquence d'entrée d'au moins 50KHz, à vue de nez 100KHz possible, idem pour le calcul PID
    ...
    la suite plus tard je me fais virer de la salle info :???:
     
  7. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
  8. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    :mrgreen:

    Tkt, même 20KV 1KA c'est possible, faut juste trouver les IGBT^^

    vu que j'aurais à commander des DC et BLDC et ptet des 3p ben je publierai les shemas etc. pour des interfaces puissance jusqu'à 300V 10A ou un truc dans le genre.

    après, du momment que tu trouves les IGBT, les drivers de chez ON par exemple vont jusqu'à 1.2KV... y'a de la marge.


    Bon la suite des caractéristiques:

    • Protection contre les surintensités des moteurs AC DC par logiciel (lecture de I par convertisseur AN) OU PAR HARDWARE, ce qui garanti une protection maximale des servos et de leur alim. en effet, si l'µC 'freeze' il risque d'appliquer du 200-300V DC aux bobines du pauvre moteur AC qui sera détruit en quelques secondes :???:
      un simples AOP et un shunt pourra assurer une protection supplémentaire, quoique dans la plus part des cas un fusible rapide bien dimentionné fera l'affaire.
    • Réglage par le port série via nimporte quelle console RS232 (ce qui règle le pb d'OS, puisque ce genre de log est gratuit et existe pour Win (même 3.1^^) linux mac, etc. etc.
      De plus le firmware pourra évidemment être mis à jours (bootloader). là par contre il faudra étudier la possibilité d'utiliser le protocole de transmission de fichiers 'brut' via la console RS232 pour assurer la compatibilité avec un max d'OS (quoique une librairie, GTK, permet de développer des applis graphiques pour win, unix et aparemment mac).
      dans les cartons également une fonction de réglage auto des paramètres PID, avec retour des temps de réponse, bande passante, nombre de pseudo-oscillations, stabilité etc. qui caractérisent le couple servo-mécanisme.

    bref pas mal de boulot!
    la seule limite des possibilités c'est... mon imagination^^

    :!: d'ailleurs si il vous vient à l'idée une fonction qui pourrait être intéressante, faites-le moi savoir :!:

    vos idées et remarques m'intéressent :wink:

    au passage, l'un de vous aurait un servo DC avec encodeur quadrature (ou ss mais avec un axe en 6.35mm) qui tourne sous environ 12V :?:
    j'ai comme qui dirait pas la foi de creuser eBay à la fac... et je n'aurais internet que dans 15j- 3 semaines :cry:
    à vendre (ou mieux à prèter :wink: ), faites une offre!

    en ce qui concerne le code, ca avance, mais je pense que je vais ouvrir un vouveau sujet sur l'avancement du projet, un peu comme un worklog, et discuter ici des tests, améliorations à faire etc.

    A+
     
  9. Doctor_itchy

    Doctor_itchy Modérateur

    Messages:
    3 554
    Inscrit:
    20 Avril 2007
  10. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    tss, overkill le 256e de pas :mrgreen:

    mais si ca te fait plaisir, ben je note!
    le µpas c'est pour moi à intégere d'office pour le controle des pap, spa compliqué de faire du N µpas!


    Ah, autre fonction à laquelle je pensais:
    le controle des BLDC sans avoir recours à des capteurs à effet hall, avec soit détection de courant nul, soit utilisation de l'encodeur quadra.
    mais avec l'encodeur quadra, le pb c'est que qu'il faut réétalonner le système à chaque coupure de courant :???:

    enfin bon, je me fais encore virer :/

    A+
     
  11. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    Salut,

    j'ai créé des "projets vides" pour développer une appli PID (ou autre) sur 30F2010 et 33F12jmc202, et pour tester tout ca j'ai fait un petit prog qui utilise entrée quadra, PWM et boucles de calcul de sinus décalés de 2PI/3.
    en mettant une led tricolore sur les sorties PWM ca me donne une led qui change de couleur en tournant mon encodeur, c'est joli, mais ca ne fonctionne qu'en mode debug (donc connecté au pc via ICD2), mais dès que je programme le pic en release, ben... les boucles infinie deviennent finies, donc ca ne fonctionne plus >_<

    j'ai d'ailleurs passé une demi journée à essayer de trouver l'erreur que j'ai pu faire... sans résultats.
    ca pose donc un sacré problème quant à l'utilisation de C30 comme compilo.
    il se peut qu'il soit instable... rien ne garantira le fonctionnement du contrôleur même si <<il à l'air de marcher>>.

    si tel est le cas, il faut soit
    -attendre que C30 devienne stable
    -changer de compilo pour un compile cher ~$$$-$$$$

    j'espère pouvoir régler le pb sinon je vais devoir me mettre à l'assembleur (dans ce cas attendez le contrôleur pour 1-2ans :p ) ou casser ma tirelire pour un compilo de HI-TECH (1200$ pouir la version 16b si je me souviens bien)
     
  12. Fred8

    Fred8 Compagnon

    Messages:
    793
    Inscrit:
    18 Mai 2007
    Localité:
    45 - Orléans (Ingré)
    Carte Servos à dsPIC
    Max-Mod, j'ai déjà rencontré ce genre de pb, même si je n'ai jamais utilisé C30. Je ne pense pas du tout que C30 soit la cause de tout cela, c'est un programme largement diffusé et éprouvé dans l'industrie.

    Lorsque tu utilises l'ICD2, certains paramètres comme les bits de configuration de l'horloge sont inactivés (ou plutôt "overdrived").
    Avec l'ICD2, tu as une horloge commandée, ralentie (on ne fait pas de temps réel avec un ICD2, on peut juste mettre 2 points d'arrêt).
    Sans ICD2, tu n'as plus d'horloge...

    Combien de fois je me suis laissé avoir aussi par mon résonateur qui nécéssitait le gain maxi de l'ampli...

    Idem en utilisant des conditions de debuggage dans mes programmes :
    "If Debug = 1
    Programme asm (boucle de tempo par ex);
    Endif"

    Super pratique en débug, mais si tu oublie de mettre la variable Debug à 0 en mode "Alone µC", tu shuntes toutes tes tempos, et rien ne marche...

    Autre point : où as-tu eu ton DsPIC? J'ai eu un gros souci un jour sur des samples qui n'étaient pas fonctionnels à 100%, un PIC18F8720. Une fois ils marchaient, la fois d'après, non. Incapable de trouver une logique à l'histoire. Quelques semaines plus tard, je vais sur le site de Microchip, et là, un Errata est apparu, le PIC a un problème hard, il est déconseillé de l'utiliser, le remplacer par un 18F8722...

    Voilà, tiens-nous au courant, et quand tu auras l'occas, je suis preneur de ton petit soft pour apprendre sur C30.

    Fred8
     
  13. elliott

    elliott Compagnon

    Messages:
    905
    Inscrit:
    5 Novembre 2006
  14. MaX-MoD

    MaX-MoD Compagnon

    Messages:
    2 306
    Inscrit:
    17 Avril 2007
    Localité:
    Annecy (74)
    Carte Servos à dsPIC
    j'avais compris que ICD2 changait certains bits d'option :wink:

    du coup j'ai essayé plusieurs configs différentes, rien n'y fait :cry:

    l'oscillateur fonctionne. il n'y a pas d'erreurs mathématiques, d'adressage ou quoi que ce soit (voir le fichier traps.c).

    en y repensant, je me demade si le Watchdog n'est pas activé, malgrès que je l'ai configuré éteint... je vais vérifier ca ce soir.

    si ca vous intéresse, voila un petit test... on tourne l'ecodeur, on a un champ rotatif (enfin courant triphasé) sur les sorties basses PWM.
    je dois encore améliorer certaines choses (commentaires code etc.) mais ca peut servir de base à un programme C30 pour 30F2010 (va falloir aussi que je me penche sur les #ifdefined __dsPIC30F... #define pour assurer la compatibilité avec les autres dsPIC30F.
    les 33F auront leur projet à eux, ils sont plus complexes à utiliser (il faut -on peut enfin!!!- définir quelles pins seront assignées à quel module, plus de pièges à erreurs HW, interruptions légèrement différentes...) je l'ai un peu entamé, surtout pour savoir si mon 'bug' venait du 30F2010 (en sample :wink: ) et tester sur le 33F12jmc202 (il est quant même plus chiant en 3v3, faut faire une alim séparée etc. mais il a l'air d'en valoir la peine)

    aussi j'ai regardé l'errata du 30F2010.
    aparemment pas d'erreur connue...


    NOTA:
    le projet contient des adresses absolues.
    rajouter le dossier h dans "include search directory", fenêtre project options.
    il n'est pas nécessaire de rajouter le dossier c, car main.c se trouve dedans.

    pour les bits de config, pas de WDT, après ca dépend de vôtre HW.

    A+ Voir la pièce jointe Test2.zip
     
  15. elliott

    elliott Compagnon

    Messages:
    905
    Inscrit:
    5 Novembre 2006
    Carte Servos à dsPIC
    Interessant mais pas encore équipé pour bosser sur DsPic :sad:
    donc pas de test possible,cependant je suivrais celà avec intérêt :!:
     
Chargement...

Partager cette page