Asservissement PI sur PIC16f876A
Répondre à la discussion
Affichage des résultats 1 à 29 sur 29

Asservissement PI sur PIC16f876A



  1. #1
    invite5ac2b493

    Asservissement PI sur PIC16f876A


    ------

    Bonjour,
    je suis étudiant et mon projet consiste à effectuer un asservissement de vitesse sur un moteur à courant continu. La moteur devant être alimenter en 30v je décide de commander un transistor (qui supporte la puissance du moteur) par le PWM du PIC. Le capteur du moteur me renvoi une fréquence image de la vitesse de rotation du moteur.

    Maintenant reste à faire le plus dur, le code d'asservissement. J'ai trouvé quelques codes (notamment celui ci http://fribotte.free.fr/bdtech/PidSurPic/PidSurPic.html ) sur internet qui s'apparente à mon problème mais ceux ci sont terriblement compliqués. J'espère qu'il existe des solution moins complexe pour asservir mon moteur car je ne dispose pas de beaucoup de temps.

    Un asservissement PI semble le plus adapté mais je ne sais pas trop comment modéliser celui ci dans mon programme C.

    Si quelqu'un pouvait me donner un coup de main pour donner un semblant d'architecture à mon programme (Grandes lignes du programme, objectifs des fonctions principales...) ça m'aiderai beaucoup. Tout autre remarque est la bienvenue. Je vous remercie par avance.

    -----

  2. #2
    gcortex

    Re : Asservissement PI sur PIC16f876A

    l'intégrale se calcule par une infinité d'additions des erreurs de vitesse

  3. #3
    stefjm

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par Djimbo Voir le message
    Un asservissement PI semble le plus adapté mais je ne sais pas trop comment modéliser celui ci dans mon programme C.
    PI :
    Discrétisation du PI :
    Te période d'échantillonnage
    D'où l'équation de récurrence de la commande, en écrivant qu'une multiplication par correspond à l'échantillon au coup précédent.
    Moi ignare et moi pas comprendre langage avec «hasard», «réalité» et «existe».

  4. #4
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Bonjour,

    Je suis aussi en projet durant lequel je dois gérer un chauffage en TOR (Tout Ou Rien), et bien sur la gestion d'un asservissement PI.

    Est ce que tu pourrais m'aider à ce propos ? Comment as tu finalement coder la formule du PI ?

    Et ton moteur, tu le commandais comment ? Si j'ai bien compris, c'est un peu comme moi, avec un relais (donc soit allumé, soit éteint) pour allumer ton moteur en TOR, soit à fond, soit éteint ?

    Si tu peux m'aider, et pourquoi pas me passer tes calculs, ou bien les parties de ton code qui vont bien, je t'en serais très reconnaissant !
    Je m'arrache les cheveux à essayer de comprendre comment gérer le PI et surtout la puissance de mon chauffage en TOR...


    Merci beaucoup !

    P.S : J'ai vu que cela date de 2008, j’espère que tu pourra tout de même m'aider !

  5. A voir en vidéo sur Futura
  6. #5
    gcortex

    Re : Asservissement PI sur PIC16f876A

    Un gradateur à train d'onde donne déjà de bons résultats.
    http://fr.wikipedia.org/wiki/Gradateur

    Un système thermique a un retard pur, et il est difficile de faire une correction numérique.

  7. #6
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Mercide ta réponse, mais le soucis c'est qu'll m'est imposé d'utiliser cet asservissement, et je devrais par la suite, gérer le P et le I automatique..

  8. #7
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Justement, le train d'onde, c'est du TOR. Tu varies le rapport cyclique en fonction de l'écart et des paramètres PI.

  9. #8
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Oui, d'accord, en gros si je fait 1 impulsion pour mon chauffage, je l'allume tout le temps : puissance de 150W.

    Si je fait deux impulsions, le chauffage sera donc allumé la moitié du temps, donc 75W (150/2).

    Etc ... Mais je peux difficilement gérer plus "finement", passer de 150 à 75 c'est une bonne différence, mais cela devrait suffir pour ma régulation.


    Dans la formule que j'ai marqué, je récupere le resultat dans U. MA GRANDE interrogation, c'est comment gérer la puissance de chauffe en fonction de ce "u". Il peut varier entre 0 et ce que l'utilisateur aura entré comme valeurs dans P et I ... S'il rentre 0.6 ça ira, s'il rentre 1000 ça fait une grosse amplitude... Et je ne vois pas comment commender un chauffage TOR en fonction de U ..

  10. #9
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Si tu génères des créneaux de 500ms avec une durée d'impulsion en fonction de la demande ?
    Si demande forte : impulsion = 450ms
    Si demande faible : impulsion = 50ms

    Ce sont des exemples, il faut que le régulateurs calcule en fonction de l'écart et des paramètres P et I.
    Avec une commande de ce type, tu ne génères pas les parasites qu'occasionne le découpage de phase.

    Ce n'est pas à l'utilisateur de régler les paramètres P et I mais au technicien.
    L'utilisateur règle la consigne.
    Dernière modification par Gérard ; 30/01/2014 à 15h38.

  11. #10
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Merci, je vais essayer de voir si j'arriver à coder un truc du genre...

    Pour être certain de bien comprendre, pourrais-tu me donner un exemple d'algo simplifié avec la gestion du P et I ?

    Par exemple,
    1* Lancement du prog, demande de la température de consigne (ex : 20),
    2* Demande des coeficients P puis I (Par exemple 1 et 2),
    3* Relevé de la température réel (mesure),
    4* Calcul de l'erreur avec les coeficients ... Si la température mesuré est de 16°, que vais-je récupérer ?
    5* Suivant l'erreur, je génère un assez grande impulsion, dans mon exemple, 500ms/500ms afin de chauffer rapidement, puis suivant les autres relevés, je diminue l'impulsion ?
    6* Après la commande de mon relais, retour à l'étape 3 (sans passer par la case départ :P )

    C'est ça à peu près d'après toi ?

    Merci encore

  12. #11
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Je cherche ce soir dans mes DD. Ca doit trainer quelque part.

  13. #12
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Merci

    J'attend avec impatience

  14. #13
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par flexbrane Voir le message
    Merci

    J'attend avec impatience
    Je viens de t'envoyer un MP.

  15. #14
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Négatif, je n'ai pas reçu de message :-/

    Seulement le message d'un admin me disant qu'une de mes conversation a été déplacée ...

    Tu ne veux pas ré essayer ? Ou sinon je peux te donner mon adresse privée !

  16. #15
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par flexbrane Voir le message
    Négatif, je n'ai pas reçu de message :-/

    Seulement le message d'un admin me disant qu'une de mes conversation a été déplacée ...

    Tu ne veux pas ré essayer ? Ou sinon je peux te donner mon adresse privée !

    Mais tu as raison.

    Il y a eu un loupé.
    Donne moi ton mail en MP.

  17. #16
    Gérard

    Re : Asservissement PI sur PIC16f876A

    C'est dans ta boite.

  18. #17
    invite66c1ab93

    Re : Asservissement PI sur PIC16f876A

    Bonsoir,

    Citation Envoyé par Djimbo Voir le message
    Bonjour,
    je suis étudiant et mon projet consiste à effectuer un asservissement de vitesse sur un moteur à courant continu. La moteur devant être alimenter en 30v je décide de commander un transistor (qui supporte la puissance du moteur) par le PWM du PIC. Le capteur du moteur me renvoi une fréquence image de la vitesse de rotation du moteur.
    C'est un simple moteur à courant continu qui tourne à vide ou tu dois entrainer quelque chose ?
    Sur quel PIC travailles tu ?
    Programmes tu en C ?

  19. #18
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par MiKL.66 Voir le message
    Bonsoir,


    C'est un simple moteur à courant continu qui tourne à vide ou tu dois entrainer quelque chose ?
    Sur quel PIC travailles tu ?
    Programmes tu en C ?
    Ce Mr à posté un seul post en 2008. Je ne suis pas sûr qu'il te lira.

  20. #19
    invite66c1ab93

    Re : Asservissement PI sur PIC16f876A

    C'est ça quand on lit qu'à moitié !
    Merci Gérard !

  21. #20
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par MiKL.66 Voir le message
    C'est ça quand on lit qu'à moitié !
    Merci Gérard !
    Pas grave, tu partais d'un bon sentiment.

  22. #21
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Merci, tu m'as bien aidé, même si je m'attendais à un langage un peu plus ... récent !

  23. #22
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par flexbrane Voir le message
    Merci, tu m'as bien aidé, même si je m'attendais à un langage un peu plus ... récent !
    Je dois comprendre comment ?

  24. #23
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Le basic, d'après ce que j'ai pu lire à été inventé et utilisé vers les années 70 !

    Certes, j'ai pas cherché bien loin, juste wikipedia, je l'avoue !

    Mais cela m'a permis de découvrir un autre langage ^^ Et surtout de mieux comprendre le comment du pourqoi avec la fameuse formule.

    Tu programmais sur quoi avec du basic ?

  25. #24
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Le Basic me permet de faire ce que je souhaite, je laisse le C aux pros.
    D'ailleurs, C est aussi des années 70 : http://fr.wikipedia.org/wiki/C_(langage)

    Je programme toujours en basic des µC PIC.
    Dernière modification par Gérard ; 06/02/2014 à 10h15.

  26. #25
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Oui je comprend mieux !

    Mais je ne suis pas un pro, bien loin de ça ! Et encore il faudrait programmer en C++ ! Mais j'ai plus de mal !

  27. #26
    paulfjujo

    Re : Asservissement PI sur PIC16f876A

    bonjour,


    Citation Envoyé par flexbrane Voir le message
    Le basic, d'après ce que j'ai pu lire à été inventé et utilisé vers les années 70 !
    Oui, mais il a aussi beaucoup evolué ..
    voir par exemple le RFO Basic qui tourne sur plateforme Android..
    gestion des socket, du bluetooth,liaison internet, du son, images.. et accessoires comme le GPS ,
    et que l'on peut compiler en *.apk installable sur toute tablette ou portable.

    ...meme si je me sers du C pour les PIC..

  28. #27
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Oui, je me disais bien que les PIC sont plutôt programmés en C, enfin, si je me base sur mon année de Terminale pendant laquelle on programmais des PIC avec flowcode qui se chargait de compiler/transformer en C !

    J'imagine qu'il a évolué oui, mais le plus utilisé sous Android reste la programmation Orienté Objet comme le JAVA ou le C++.. Des langages avec lesquels je suis un peu fâché pour le moment :P

  29. #28
    Gérard

    Re : Asservissement PI sur PIC16f876A

    Citation Envoyé par flexbrane Voir le message
    Oui, je me disais bien que les PIC sont plutôt programmés en C
    C'est écrit où ?
    http://www.protonbasic.co.uk/forum.php
    Va donc leurs expliquer que le C c'est mieux.


    Citation Envoyé par flexbrane Voir le message
    enfin, si je me base sur mon année de Terminale pendant laquelle on programmais des PIC avec flowcode qui se chargait de compiler/transformer en C !
    Faut pas faire d'amalgame, Flowcode n'est pas du C, c'est un langage graphique qui est compilé pour faire du C.


    [/QUOTE]

  30. #29
    invite1b27b305

    Re : Asservissement PI sur PIC16f876A

    Oula, pardon, je me suis mal exprimé, comme tu me l'as fait remarqué !

    En effet, Flowcode est de la programmation graphique, qui peut compiler en C, mais si je me souviens bien, ce n'est pas le seul langage ? Enfin quoi qu'il en soit, je n'ai jamais mis en doute le fait que tu utilises du basic !

    De mon point de vu, en tant que, disons débutant dans la programmation, c'est qu'un code soit fonctionnel, peu importe comme il est fait. Après bien sur, cela dépend du projet ! Cela s'applique quand c'est un projet personnel !

    Evidemment que pour du pro c'est autre chose ! (Sauf pour Windows ah ah !).

    Et donc, effectivement, pour la programmation des PIC, j'ai juste écrit par rapport à ce dont je me souvenais de mes anciens cours ! Surement qu'ils ne sont pas programmés en C, ou peut etre bien que si, ou pas seulement !

    En tout cas, je te remercie quand même de m'apprendre et me faire remarquer mes petites lacunes Et merci encore pour ton code !

Discussions similaires

  1. Asservissement vitesse sur PIC
    Par invitedda0dbac dans le forum Électronique
    Réponses: 15
    Dernier message: 13/04/2008, 15h13
  2. ICD sur PIC16F876A
    Par invite820b5138 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/02/2008, 22h29
  3. Asservissement en vitesse sur PIC
    Par invitedda0dbac dans le forum Électronique
    Réponses: 1
    Dernier message: 10/05/2007, 23h24
  4. [Brun] tete asservissement + audio sur vhs
    Par marc.lsdl dans le forum Dépannage
    Réponses: 2
    Dernier message: 27/01/2007, 13h54
  5. [Brun] reglage tete auto asservissement sur vhs
    Par marc.lsdl dans le forum Dépannage
    Réponses: 2
    Dernier message: 17/01/2007, 15h57
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...