Carte Servos à dsPIC

  • Auteur de la discussion MaX-MoD
  • Date de début
M

MaX-MoD

Compagnon
essaye avec ca.
si ca passe pas c'est un pb de configuration.

le "implicit declaration" de tes fct veut dire que le linker ne trouve pas les prototypes des fonctions que tu appelle.
ca vient d'un pb d'inclusion, le fichier init.c n'est pas inclus.

PS: la pb de PSV ca a un rapport avec les sauvegardes des ragistres effectués lors des interruptions.
il y a des registres fantôme dans lesquels sont sauvegardés les registres de la pile, les accumulateurs W1 à 4 etc.
si deux interruptions interviennent l'une ds l'autre (en fait une interruption d'une priorité supérieure à celle de l'interruption en cours), les registres fantôme seront de nouveau écrits. au final quant le prog revient où il en était avant d'être interrompu, les accumulateurs et registres sys seron changés. Le programme risque de crasher ou même d'endommager le PIC.

il faut dc utiliser la RAM pour sauvegarder ces régistres mais si toutes les int on la même priorité pas besoin de faire cette manip.Voir la pièce jointe Test33F_2.zipPour les 33F
 
M

MaX-MoD

Compagnon
bon pour la diode SF18 ou SF11. 600V 1A 0.3€
pour le condenso de bootstrap, il faut un condo avec faible résistance série 600V 100nF.
dans le genre il y a conrad qui en vend dans la série MKP10 (mais en pas de 22mm) pour la coquette somme de 2€ pce ici

cependant je serais curieux de savoir ce que ca fait avec des condenso moins chers genre ici, ici ou même un électrochimique comme un de ceul là
 
M

MaX-MoD

Compagnon
j'ai dit nimporte quoi pour le condenso.
25V suffisent. au pirent il recoivt le tension d'alim, pas plus.
pour la diode de chez ST par contre, la tension opposée de 40V c'est assez loin des 600V

bon alors Fred8, ca compile?
 
F

Fred8

Compagnon
MaX-MoD a dit:
bon alors Fred8, ca compile?

Non, çà tond la pelouse, çà coupe les haies, çà fait un bisou à sa fille, çà va à la déchetterie, et après çà va peindre les plaques OSB du plancher du garage, pour accueillir la Super X3 d'ici qq semaines...

Ca compilera ce soir !
 
F

Fred8

Compagnon
MaX-MoD a dit:
j'ai dit nimporte quoi pour le condenso.
25V suffisent. au pirent il recoivt le tension d'alim, pas plus.
pour la diode de chez ST par contre, la tension opposée de 40V c'est assez loin des 600V

T'as raison, j'étais resté sur "Schottky"...et qui dit Schottky dit basse tension !
 
M

MaX-MoD

Compagnon
moi aussi je me suis fait avoir
j'ai pas pensé aux shottky

le condo 25V 100nF céramique sera amplement suffisant, même pour des MOS un peu poussifs avec une grosse capa à la grille.
ca se trouve facilement (même en CMS) pour un prix dérisoire.

Au fait FRED8, t'as toujours des warnings ou ca compile bien mintenant?
 
F

Fred8

Compagnon
Max, regarde cette copie d'écran, j'ai encore essayé plein de choses, j'ai vérifié que C30 avait les bons répertoires pour les include et autres, j'ai ajouté des includes, etc...

http://fred8aude.free.fr/Usinage/Fraise ... sPIC02.JPG

J'ai toujours les mêmes ennuis avec init.c.
Il reconnait bien init.c, mais ne voit pas les variables associées...
Un peu marre du C là...même pas commencé et déjà buggé...
Je suis preneur de tes idées...
 
M

MaX-MoD

Compagnon
j'ai du te filer la version non finie
sorry j'ai du me tromper entre ma clé USB et mon DD, car j'ai bossé ca à la fac aussi... du coup t'as cherché un problème qui venait de ta config alors qu'il venait de moi


voila la maj du test 2, 1e version du test 3.
les projets sont dedans, tu n'a qu'à les ouvrir (s'ils sont dans le bon répertoire)


pour les 1ers warnings que tu obtiens, pas de pb, que la config soit écrite en binaire, hexa ou décimal ca change rien malgrès que C30 nous casse les bombons.

aussi tu inclus trop de trucs à ton projet, ca fait une -mauvaise- double inclusion de fichiers.
vire le header et init.c
tu peux quant même les ouvrir dans MPLAB, Fichier->ouvrir...

PS:[/color] pas besoin de <p33f12lm...h> il est inclus pas le biais de <p33hxxxx.h>

sinon, change dans ta config:

-configure->settings->onglet "project" décoche "halt build on first failure"
-project->build option->project-> onglet "MPLAB C30" coche additionnal warnings"

voila à quoi ca ressemble chez moiVoir la pièce jointe examples.zipjette le tout dans C:\Program Files\Microchip\MPLAB C30\examples et compile!
 
M

MaX-MoD

Compagnon
En fait, dès qu'on inclus des fichiers source ou headers dans le projet, on doit redéfinir, POUR CHAQUE FICHIER QUI LES UTILISE les fonction, variables, constantes en extern déclaration
on perd donc une grande lisibilité des fichers source...

si on ne charge pas les fichiers dans le projet, alors à chaque #include fichier le compilo va ajouter le contenu de fichier à l'endroit où est placé le #include...

c'est vraiment un linker chiant... en C on a besoin de faire ça qu'avec les librairies déjà compilées (et les dll si je me souviens bien), c'est pas aussi lourd!
 
C

coredump

Compagnon

Heu c'est le fonctionnement normal du préprocesseur C ça, je vois pas ce que ca a de bizarre...
 
M

MaX-MoD

Compagnon
je me suis mal exprimé je pense...

le pb c'est MPLAB qui rajoute les fichiers du projet dans la liste du linker, mais d'une telle manière que le mode de fonctionnement 'simple' (remplace #include par le contenu bla blabla...) n'est plus valide, on a droit à une belle double définiton, sans pour autant pouvoir résoudre la pb en enlevant les #include, non non non!
il faut alors déclarer les variables, fonctions.. en extern machin... et quant y'a bcp de varialbes ca devient bordélique
 
F

Fred8

Compagnon
A y est, çà compile...quelle chianlie la configuration de C30...En plus, il ne garde pas les chemins en mémoire d'un projet à l'autre, c'est lourd de tout reconfigurer à chaque fois.

sinon, c'est quoi cette histoire de IOLOCK que C30 ne trouve pas à la compilation?
Pour que le Test33F_2 soit compilé sans erreur, j'avais dû le mettre en commentaire aussi...

Prochaine étape : commande d'un kit de développement, et des gros progrès à faire en C.

A+
Fred8
 
M

MaX-MoD

Compagnon
fred8 a dit:
A y est, çà compile...


Fred8 a dit:
quelle chianlie la configuration de C30...En plus, il ne garde pas les chemins en mémoire d'un projet à l'autre, c'est lourd de tout reconfigurer à chaque fois
on s'y fait... pas

Fred8 a dit:
sinon, c'est quoi cette histoire de IOLOCK que C30 ne trouve pas à la compilation?
Pour que le Test33F_2 soit compilé sans erreur, j'avais dû le mettre en commentaire aussi...

IOLOCK fait partie du registre OSCCON, on peut l'utiliser comme OSCCONbits.IOLOCK ou le symbole _IOLOCK.
petite erreur de compréhension de la datasheet de ma part...

ceci dit, je n'ai toujours pas compris pourquoi ca ne fonctionne pas... ca n'empèche pas toute modification ultérieure du mappage des pins RPx, mais ca les desactive

mais vu que ce n'est pas urgent j'ai continué les tests avec l'UART.


Fred8 a dit:
Prochaine étape : commande d'un kit de développement, et des gros progrès à faire en C.
pour le kit de développement, soit tu fais comme moi, une bonne vieille planche à pain, une alim 3.3V un chtit sample et hop!
sinon microchip vends ses kits pas chers, pour 50€ (fdp out malheureusement) t'as déjà pas mal de possibilités.
l'ICD2 chez eux est assez chère, dans les 120€ mais si tu ne comptes que programmer, il existe le pic kit qui programme en USB (mais pas directement depuis MPLAB d'après ce que j'ai compris) la majorité des PIC et dsPIC à ce jour. vérifie quant même mais c'est ce que j'ai retenu d'un rapide survolage de leur forum.


un truc super ici, c'est que printf() peut écrire directement du texte via RS232
bon ca ne veut pas dire que la config est évidente non plus

j'ai réussi à lui faire envoyer des caractères à hyperterminal.
seul problème, c'est que tous ces caractères sont des << ~ >>
donc, je creuse toujours...
 
F

Fred8

Compagnon
J'ai l'ICD2 depuis déjà 4 ans...je suis très bien équipé pour développer mon hardware. Là où j'ai toujours pêché, c'est sur le soft. Je me suis mis à l'ASM il y a 5 ans, et aujourd'hui je passe au C.
A y réfléchir, Je pense me faire rapidement une carte avec un PIC 28 broches, un connecteur RJ11, et les capa de découplage. Ca va me prendre un peu de temps, mais ce sera moins cher et plus applicatif que le kit MCP !

A+.
 
M

MaX-MoD

Compagnon
t'as raison!

ah et n'oublie pas un tantale de 1 à 10µF entre VDDCORE et VSS pour le découplage de l'alim 2.5V du coeur (et oui, c'est même pas à 3.3V qu'il tourne celui là^^)

tu verra que pour le C il faut avoir le déclic. je te conseille quelques tutos pour t'y mettre "proprement", il doit y en avoir sur microchipc.com.

mais si les exemples que je donne peuvent t'aider tant mieux!
mais si y'a une partie que tu comprends pas ou que je n'ai pas bien détaillée dis le moi
 
D

Doctor_itchy

Compagnon
bon alors ça en est ou tout ça !

j'ai besion d'un controleur pour mes berger lahr moi !!

^^

non serieux je rataque le projet big cnc et je vais avoir besoin de 3 controleur 3phase stepper + encodeur !
 
M

MaX-MoD

Compagnon
pour l'instant les DC c'est pas encore fait, les premiers tests se feront dès que j'aurais mes MOS 75A 60V et les contrôleurs qui vont bien^^

après les 3p encodeurs, hmm c'est plus complexe mais surtout y'a les partiels qui arrivent eux aussi

mais si tu veux un contrôle simple en pas entiers avec correction en cas de perte de pas c'est plus simple et peut être que je pourrais le faire en quelques semaines.

si t'en a besoin pour faire des tests je peux faire un prog rapide et t'envoyer l'µC puis t'en renvoyer un une fois le bootloader intégré (pour faire les mises à jour directement par le port série).
et comme c'est des échantillons gratuits ça te coutera le prx de la lettre^^

par contre pour la partie puissance, je serais trop short niveau temps
ou alors tu trouves les IGBT qui vont bien (double l'intensité max et rajoute 20% de tension max, prends avec une durée d'allumage et extinction le plus bas possible (1µs pour 100KHz max) je dois aussi avoir des contrôleurs IGBT 600V qui doivent aller, et je peux ptet voir en fonction du temps que j'ai pour te faire une carte (là je n'aurais pas le temps de tester par contre...) ou un shemas.
 
D

Doctor_itchy

Compagnon
ok bien que je viens de choper 3 gros moteur DC 24V 6ampere je vais recuperer les encodeur des pas a pas et les mettre sur les DC et faire 3 carte UHU ou acheter 3 module G320 geko

et revendre les moteur pas a pas 3phase avec le controleur , suffisament pour pouvoir acheter les 3 module geko+ les frais de port donc 500€ le tout minimum mais sans les encodeur que je garde lol
 
M

MaX-MoD

Compagnon
je dois bien avouer que ce sera plus rapide comme ça pour toi...
et c'est vrais que 500 de budjet en plus c'est pas mal, ça permet de passer au niveau sup question VAB par exemple.
pour les encodeurs ils sont peut être ajustés précisément par rapport aux pas du moteur
ou ça se règle avec le contrôleur?

vu le prix des encodeurs ce sera ptet un gros plus de vendre un système complet sur eBay (ou autre) que sans encodeurs.

et les Gecko sont lents il parrait avec des encodeurs > 500pps.
enfin j'en sais pas plus, à toi de voir

Ah, et faudra que tu me dises où tu as acheté ces pap (à 10€ si je me souviens bien à la brocante?) que j'y fasse un tour^^


La fac m'aurais pas pris autant de temps (pour des cours qui me gonflent au final ) ce serait fini depuis longtemps, et même les pap 3 ou 5 phases

je regrette de plus en plus de en pas avoir fait mécatronique directement à bruxelles au moins ça m'aurais plu, et je serais pas paumé à clermont
 
D

Doctor_itchy

Compagnon
trop tard c'est demonter

de toute façon se genre de moteur se vend en version standart , les encodeur c'est une option ^^

donc je demonte proprement ^^

et oui pour du pas a pas la roue est reglee sur les pas du moteur , ici moteur 1000pas par tour et roue de 1000impulse par tour

j'ai regarder les geko il sont fort chere , j'ai trouver moins chere et plus perf en tout fait mais aussi en diy , je pense que je vais me faire 3 carte UHU ça me reviendrais a +- 35€ la carte se qui est vraiment donner a coter des geko ^^

donc je vais vendre les bergher lahr et avec ses sous la je fini ma graveuse puis j'attaque la grosse cnc ( me faut la graveuse pour faire les pcb , j'ai un gros stock de pcb double et simple face alors je vais pas faire faire des pcb qui vont me couter 20€ par pcb ! )
 
M

MaX-MoD

Compagnon
Des News...

j'ai trouvé ceci

c'est un projet du même genre mais seulement voila, l'entrée PC est en quadrature, et l'étage puissance est basée sur un AOP 8A assez cher et difficile à trouver: 14€ pce chez digikey

Donc je vais modifier ça pour jouer un peu, et puis je vais finir mon prog.
En effet, je ne pense pas au même genre d'architechture de programme.
De plus il sera question d'une limitation de courant sur les pont en H sur ma version, et d'utiliser l'architechture DSP du 30F4012 (ou 33fxxxx) pour un calcul plus rapide du PID.

j'ai déjà changé l'entrée en Step/Dir, demain vient les sorties pont H (sans limitation de courant)

Et nous avons déjà deux béta-testeur: le Doc et moi.

Bonne soirée
 
A

alex68

Apprenti
tiens nous au jus !!
moi aussi j ai quelques moteurs qui attende leurs drivers !!
merci !

ET BONNE CHANCE
 
F

fred250

Compagnon
moi aussi ça m'intereese beaucoup tout ça!!!!!!!!!
j'aimerais bien faire quelques testes avec mes fameux moteurs universel alimenté en 300v histoire de savoir si c'est viable avant que la cnc soient fini histoire d'avoir le temp de trouvé une solution de replie a temps en cas de problémes
par contre quel courant et voltage on peut faire passé et quel résolution d'encodeurs est pris en charge ?
tiens nous au courant des résultat , si ont peut plus avoir les controleurs d'uli t'est notre seul éspoire
 
M

MaX-MoD

Compagnon
la seule limitation sur l'encodeur c'est moins la fréquence du module quadrature du pic (+4MHz) mais c'est plus l'entrée PC (certainement dans les 500KHz voir 1MHz) qui est un peu plus lente.
Il n'y a aucune limitation de résolution.


pour la partie puissance si tu trouves les IGBT qui vont bien 1KA 1KV le contrôleur s'en accomodera sans problèmes.
 
F

fred250

Compagnon
des mosfet ça va vraiment pas pour de la cnc avec ce voltage et courant ? ( 4a6A en fonctionnement normal ) car j'ai deux trois irfp450 ( http://www.datasheetcatalog.net/datasheets_pdf/I/R/F/P/IRFP450.shtml )sous le coude au pire pour faire des testes
sinon t'a des valeurs dans lequel il faut resté pour choisirs les mosfet qui vont bien ?
EDIT : je vient de voir ce que tu avait dit a itchy pour le choix des igbt , a part ça y'a d'autres paramétres important ?
 
P

phil916

Compagnon
Au delà de 200-250V nominal les IGBT ont bien moins de pertes que les MOSFET et sont tout aussi rapide.

Mais çà ne veux pas dire que des MOS 500V ne fonctionneront pas, juste que les pertes seront alors plus élevés qu'avec des IGBT équivalent (pour simplifier le moteur verra moins de volt qu'avec des IGBT)

Donc oui tu peux essayer tes MOS si leur tension maxi est suffisante (compte 1/3 de marge en + du requis)
 
M

MaX-MoD

Compagnon
il est vrai que c'est pas évident pour tout le monde de choisir quels sont les bons composants à utiliser, et encore moins à l'aveuglette.
Mais même pour quelqu'un qui sait ce dont il a besoin ça peut être hard!


POUR LE CHOIX DE VOS MOS/IGBT:

  • 1. Il faut qu'ils aient une vitesse d'allumage/extinction faible, moins d'1µs ça parait idéal. Dans le cas des IGBT, ça peut parfois être dur à trouver, car ils sont en général plus lents (en général, j'en ai vu à 50 ns); dans ce cas on prend le plus faible temps d'a/e et en général on cherche ailleurs si on arrive près des 10µs

  • 2. La capacité de la grille ("input capacitance" ou "gate capacitance") doit être faible quant on utilise des drivers à composants discrets, qui en général ne peuvent pas fournir plus de 50-100mA.
    pour l'application qui nous intéresse (on travaillera à une fréquence d'environ 20KHz), une capa de grille (ou d'entrée) de 2-4 nF (2k-4k pF) avec un driver permettant de débiter 1A (donc un driver fait pour), et 200-400 pF pour un driver "fait maison" capable de débiter 100mA. si on se trouve dans cette fourchette de capa, on choisira de préférence un transistor un peu plus cher mais plus performant, sinon c'est bon

  • 3. La tension Drain-Source maximale: on prendra 10-20% de rab par rapport à la tension d'alimentation du contrôleur

  • 4. La tension d'allumage ("Gate Threshold Voltage") en général n'aura que peu d'influence. il faut qu'elle reste en dessous de la demi de l'alimentation du driver: un driver a généralement une alimentation séparée à lui tout seul, différente de l'alimentation pour la logique (5v) et de l'alim moteur, par exemple 12V. Dans ces ca, la tension d'allumage doit être inférieure à 6V.

  • 5. La tension Grille-Source maximale ("Gate−to−Source Voltage") dois être supérieure d'au moins 10% à l'alimentation du driver (dans le cas précédent 12V), et ce 'des deux cotée': en + et en -

  • 6. La résistance Drain-Source ("Drain−to−Source On−Resistance") doit être elle aussi faible. plus elle l'est, mieux c'est. en effet les pertes ohmiques (P = R*I*I) diminuent avec celle ci

  • 7. L'intensité max du transistor devra être 20% plus élevée que l'intensité maximale en PIC que pourra supporter le driver.

  • 8. La dissipation thermique: TRES IMPORTANT!
    Si on reste dans les valeurs que j'ai indiqué précédemment, j'ai calculé qu'au maximum la puissance dissipée était éqale à deux fois la puissance ohmique (aux alentours de 20KHz). lorsqu'on fait les calculs on trouve nettement moins, mais en général on oublie ce qu'on ne peut pas calculer: les pertes dues à l'allumage/extinction. Donc j'ai majoré.
    le boitier devra bien sûr être capable de dissiper bien plus d'énergie au maximum: la dissipation totale ("Total Power Dissipation") est calculée en général à 25°C. pour avoir la dissipation max à 100°C par exemple, on fait Ptot = [Pmax - (100°C - 25°C)*Z] où Z est est le "Derate above 25°C" exprimé en W/°C.
    pour exemple, le MOS dont j'ai joint le pdf a Z=1.4W/°C, donc Ptot = 109W. Là encore les 100°C accordent une merge de sécurité, et correspondent à la température max atteinte par les bords du boilier (la languette des TO220 par exemple), atteinte si le radiateur attaché évacue assez de chaleur pour que le boitier reste à 100°C
    Allez, un petit complément sur les radialeurs:
    En gros, la caractéristique des rads (appelons la X) est donnée en °C/W. donc un rad dont X = 1°C/W qui doit dissiper 100W maintiendra la température du transistor à 100°C de plus que la température ambiante (122°C si vous êtes dans le garage, 112° si vous êtres dans le garage )

  • 8. Le transistor doit être équipé d'une diode de roue libre (free wheeling diode). en général on ne trouve pas ses caratéristiques car elles sont dimentionnées correctement: pas de risques de voir le MOS partir en fumée à cause de sa diode. (du moins sur les MOS récents, je ne sias pas de quoi il en retournait au début)

Tout ici a été surdimentionné, pour vous permettre des petites erreures, ou en général pour que vous soyez tranquille.
Ce surdimentionnement a un côut, mais très faible car il existe des tonnes de références dont les caractéristiques nous intéressent, à des prix très variés.
pour l'exemple que je donne, ce MOS 75A 60V coute dans les 1$ pce 'par 1000), et s'occupera tranquille sans stress un moteur 50V 50A tandis que certains MOS plus 'justes' niveau perfs seront plus chers!

mais si vous avez un doute, donnez moi un lien vers la datasheet, les caractéristiques du moteur etc

à props de tes transistors Fred, je les réserverais plustôt pour une alim à découpage qui travaille dans les 1MHz^^
à 20KHz aucun problèmes pour en tirer 10A. ils leur faudra un radiateur dans les 1°C/W pour rester en refroidissement passif, ou un ventirad style PC qui coute qqs € (ceux qu'on trouve dans les boites de pross par exemple)
c'est aussi le genre de MOS que j'aurais conseillé à Ichy pour ses steppers.

voili voilouVoir la pièce jointe NTP45N06-D.pdf
 
M

MaX-MoD

Compagnon
Ca a avancé:

J'ai modifié le code de Lawrence Glaister, d'une part pour avoir une entrée en step/dir, dautre part pour avoir une sortie pour un pont en H.

ça semble bien fonctionner.

Je dis bien ça semble bien fonctionner car je me suis malheureusement trompé dans le choix de mes IGBT (c'est fou ce qu'1 chiffre peut avoir d'influence ), et ces derniers sont tellement lents que même au max le dead time control du PIC est insuffisant (20µs), et ils rentrent en conduction croisée.
j'ai particulièrement apprécié le fait d'avoir utilisé une alim PC pour alimenter de bouzin, car elle s'est mise en protection avec que les carrés de plastique ne s'éparpillent dans toute la pièce!

mais quant je connecte des leds aux sorties, le fonctionnement en P, et I est conforme à la théorie.

J'ai aussi intégré le bootloader d' Ingenia
Ce qui veut dire que toutes les évolutions du programme pouront être mises à jour via le port série également utilisé pour la configuration.
Vous n'aurez donc pas besoin de programmateur de PIC pour upgrader votre contrôleur.
D'ailleurs c'est bigrement plus rapide
le temps de prog passe de 45s à 4s


concernant les performances, elles sont faible par rapport aux possibilité des dsPIC!
ains la boucle PID est... 100 fois trop lente.
Cela dit, ne crachons pas dans la soupe car c'est peut être suffisant, je ne sais pas, et en tout cas ça permet d'évaluer le zinzin!

je vais essayer de monter un autre pont en H (il doit me rester qqs MOS 10A) ou alors utiliser un ptit AOP 2*6W de récup, afin de tester comme il faut.

Et concernant ces fameux PIC, j'en recois encore 3 dans qqs temps, 2 seront dispo pour ceux qui veulent tester.

Je commence aussi une carte complète à base de MOS.
lesquels je ne sais pas encore, mais vu qu'ils ont tous ou presque le même brochage c'est pas trop un problème.

N'attendez pas non plus que je torche ça en 3j, je (re)commence sérieusement les révisions!
 

Sujets similaires

L
Réponses
4
Affichages
557
Remyje66
R
U
Réponses
15
Affichages
1 037
usmiste
U
Réponses
12
Affichages
1 043
El Zorro
Réponses
7
Affichages
814
grandioso
M
Réponses
4
Affichages
848
MakerJoGa
M
Réponses
9
Affichages
1 018
Poyon
P