Problème génération signaux PWM PIC 18F2331
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Problème génération signaux PWM PIC 18F2331



  1. #1
    invite2b709f90

    Angry Problème génération signaux PWM PIC 18F2331


    ------

    Bonjour à tous,

    J'essaye depuis quelque temps de générer 6 signaux PWM en sortie de mon PIC 18F2331 mais cela ne fonctionne pas comme je voudrais. En effet, j'aimerais avoir en sortie de mon PIC une commande MLI triphasée à 120° afin de commander un onduleur triphasé, j'utilise donc pour cela le registre qui permet d'effectuer la superposition des signaux PWM, mon programme me semble correcte mais pourtant je n'obtiens pas la même chose que sur la datasheet du composant. Je voudrais obtenir ceci :

    Nom : plop.jpg
Affichages : 153
Taille : 25,0 Ko

    Voici mon programme (j'utilise MPLAB avec le compilateur CC8E) :

    // Génération commande MLI triphasée

    void delay_250us (char microsec)
    {
    T0CON = 0b11000111; // prescaler divide by 8
    do
    {
    TMR0L=0;
    while (TMR0L<5); // 5us * 51 =255us
    }
    while (-- microsec>0);
    }

    void main(void)
    {
    TRISB=0xFF; // On choisit RB0 en tant que sortie
    PWMCON0=0x57; // Les sorties PWM sont activées et sont indépendantes l'une de l'autre
    PWMCON1=0x01; // Bits de PWMCON1 à 1 (1:1 postscale)
    PTCON0=0x00; // Base de temps Fosc/16
    PTCON1=0x80; // Activation de la base de temps
    FLTCONFIG=0x33; // Configuration du registre de défaut (mode cycle par cycle)
    SEVTCMPH=0x00;
    SEVTCMPL=0x00;
    PTPERL=0x00; // Registre contenant le période de la base de temps
    PTPERH=0x0F;
    /*PTMRL=0x00; // Base de temps égal à 0F00h
    PTMRH=0x00;*/
    /*PDC0L=0x00;
    PDC0H=0x00;
    PDC1L=0x00;
    PDC1H=0x00;
    PDC2L=0x00;
    PDC2H=0X00;*/
    OVDCOND=0b00000000; // Les sorties PWM sont controlées par la valeur du rapport cyclique et de la base du temps

    while(1)
    {

    OVDCONS=0b00100100; // use override control to switch pwm pins
    //delay_250us(1); // 500uS @ 20MHz
    OVDCONS=0b00100001;
    //delay_250us(1);
    OVDCONS=0b00001001;
    //delay_250us(1);
    OVDCONS=0b00011000;
    //delay_250us(1);
    OVDCONS=0b00010010;
    //delay_250us(1);
    OVDCONS=0b00000110;
    //delay_250us(1);
    }
    }

    J'ai mis certaines lignes de code en commentaire car à priori elles n'ont pas d'influence sur mes signaux PWM en sortie.

    Merci pour votre aide.[/img]

    -----

  2. #2
    RISC

    Re : Problème génération signaux PWM PIC 18F2331

    Salut,

    Pourquoi utilises-tu CC8E ??? Tu peux télécharger la version gratuite du C18 (version Lite) ici : http://www.microchip.com/compilers
    Il existe des exemples de code pour le C18 ici : http://www.microchip.com/codeexamples

    Tu peux trouver pas mal de notes d'applications pour les PIC18 dédiés au controle moteur :
    * http://www.microchip.com/stellent/id...cName=en024213
    * http://www.microchip.com/appnotes

    a+

  3. #3
    invite2b709f90

    Re : Problème génération signaux PWM PIC 18F2331

    J'utilise CC8E car il est très facile de programmer avec et il permet d'écrire des commandes qui ne sont pas reconnus avec les compilateurs de Microchip, qui en plus sont bourrés de bugs je trouve... Enfin bon c'est un détail le compilateur

    J'ai déjà cherché dans de nombreuses notes d'applications de Microchip mais aucune ne correspond vraiment à ce que je veux faire. Je pense qu'il doit y avoir juste un truc de rien du tout à modifier dans mon programme pour que cela fonctionne mais je ne trouve pas, et ça fait des semaines que je suis dessus.

    Si quelqu'un avait du temps pour se pencher dessus, ca serait vraiment très sympa!

  4. #4
    jojo150393

    Re : Problème génération signaux PWM PIC 18F2331

    salut!
    désolé je peux pas trop t'aider, par contre je te conseille vraiment de mettre tes valeurs en binaires et non en héxa car pour débuger ton code sa sera beaucoup beaucoup plus simple pour voir quelle bit ou non est actif. (et ça nous évitera de faire toutes les conversions...)
    bonne chance !

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

    Re : Problème génération signaux PWM PIC 18F2331

    je viens de voir ça dans la doc :

    bit 7-0 POVD<7:0>: PWM Output Override bits
    1 = Output on PWM I/O pin is controlled by the value in the Duty Cycle register and the PWM time base
    or toi tu a mis tous a 0.

    Je regarde encore voir si je trouve autre chose.

  7. #6
    invite2b709f90

    Re : Problème génération signaux PWM PIC 18F2331

    Oui justement j'ai mis des 0 partout pour que le registre OVDCOND soit contrôlé par la valeur du registre OVDCONS

  8. #7
    invite2b709f90

    Re : Problème génération signaux PWM PIC 18F2331

    Je pense que c'est le commentaire que j'ai mis à côté du registre OVDCOND qui t'as induit en erreur mais c'est fait exprès qu'il soit à 0, faut pas trop se fier aux commentaires que j'ai mis parce que des fois je modifie les lignes de code sans changer les commentaires.

  9. #8
    umfred

    Re : Problème génération signaux PWM PIC 18F2331

    As-tu essayé de remettre à 0 le registre OVDCOND à chaque modification du registre OVDCONS ?
    Sinon tu as quoi comme signaux ?

  10. #9
    invite2b709f90

    Re : Problème génération signaux PWM PIC 18F2331

    Oui j'ai déjà essayé de remettre le registre OVDCOND à 0 à chaque fois mais sans succès, ou alors je m'y suis mal pris je ne sais pas.
    Voila les signaux que j'obtiens actuellement :

    Nom : test.jpg
Affichages : 133
Taille : 203,0 Ko

  11. #10
    umfred

    Re : Problème génération signaux PWM PIC 18F2331

    Essai en définissant un temps de base, période et rapport cyclique de manière à avoir:
    - une période qui dure les 6*T (T étant le temps de chaque état 1 à 6 de la courbe du 1er post)
    - un rapport cycle de 2/6 de la période

    et pour faire la mise à jour de OVDCONS, attend le passage à 0 du registre PTMR comme indiqué (si je me goure pas) dans le paragraphe 17.10.2 OVERRIDE SYNCHRONIZATION de la doc du PIC (plutôt que d'attendre un temps défini par un delay) .

Discussions similaires

  1. Problème avec un programme de génération du signal PWM
    Par invite9226517e dans le forum Électronique
    Réponses: 4
    Dernier message: 22/03/2012, 14h40
  2. PIC: générer 12 signaux PWM à 100kHz
    Par invite359f3846 dans le forum Électronique
    Réponses: 21
    Dernier message: 13/04/2009, 16h00
  3. probleme avec le pic16f877 generation de signaux dalarme et morse
    Par invite028440e5 dans le forum Électronique
    Réponses: 1
    Dernier message: 26/01/2007, 09h21
  4. probleme de generation de signal à partir d'un PIC
    Par invitedf0aab05 dans le forum Électronique
    Réponses: 4
    Dernier message: 22/08/2004, 19h00
  5. Probleme génération signaux inversés..
    Par invitef0dd4a99 dans le forum Électronique
    Réponses: 8
    Dernier message: 17/08/2004, 21h55
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...