Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2012
    Messages : 12
    Points : 0
    Points
    0

    Par défaut Générer un PWM

    Bonjour à tous, je viens à vous car je cherche à générer un signal PWM avec la comparaison de deux signaux : une porteuse (signal triangulaire) à une certaine fréquence comparé à un sinus de fréquence 50HZ.
    Je génère bien ce deux signaux que j'affiche sur le même graphe. A la fréquence de coupure de ces deux signaux génère un signal carré qui deviendra mon signal PWM. J'ai un soucis pour le générer...

    Voici mon code :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    A=5;%Amplitude du signal 
    t=0:1/1000:0.15
    i=A.*sawtooth(100*2*pi*t);%signal triangle 
    s=0.75*A.*sin(2*pi*50*t);
    
    
    for k=1:length(s)
        if (i(k)>abs(s(k)))
            pwm(k)=1;
        else
            pwm(z)=0;
        end
    end
    
    subplot(3,2,1)
    plot(t,pwm,'g')
    
    
    subplot(3,1,1)
    [AX,H1,H2] = plotyy(t,i,t,s,'plot');
    grid on
    
    set(AX(1),'ylim',[-6 6],'ytick',-6:2:6)
    set(AX(2),'ylim',[-6 6],'ytick',-6:2:6)
    axes(AX(1))
    axes(AX(2))
    Merci d'avance pour vos réponses,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    juillet 2012
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2012
    Messages : 77
    Points : 122
    Points
    122

    Par défaut

    Déjà, tu as une erreur d'indice à la ligne 11
    Code :
    1
    2
    3
    4
            
          pwm(k)=1;
    else
          pwm(z)=0;
    Tu as mis z or il n'est pas déclaré.

    Ensuite au niveau des subplots :
    Les deux premiers nombres permettent de dire combien tu as de mini-figures au niveau des lignes et des colonnes. Par exemple ici, tu auras 3 figures par ligne et 2 figures par colonne soit 6 figures au total.
    Le dernier numéro indique l'emplacement où tu veux dessiner ta figure courante. Comme tu utilises deux fois l'indice 1, cela dessine tes mini-figures au même endroit.

    En espérant que ça "débloque" ton problème.

  3. #3
    Invité de passage
    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2012
    Messages : 12
    Points : 0
    Points
    0

    Par défaut

    Merci j'ai pris en considération tes remarques qu'on l'on va citer d'"étourderies",J'ai en soit modifier le programme mais lorsque je modifie les valeurs du vecteur t, j'ai une erreur de ce style :

    ??? Error using ==> plot
    Vectors must be the same lengths.

    Error in ==> signal_tri at 22
    plot(t,pwm,'r')


    Voici le code modifié :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    clc;
    clear all;
    A=5;%Amplitude du signal 
    frequ_ech=100000;%fréquence d'échantillonage 
    t=0:1/frequ_ech:0.02% échelle de temps 
    i=A.*sawtooth(200*2*pi*t);%signal triangle (porteuse) 
    s=0.75*A.*sin(2*pi*50*t);%signal sinus (consigne)
    
    pwm=0; %initialisation du PWM
    
    for k=1:length(s)
        if (s(k)<=i(k)&&s(k)>0)
            pwm(k)=1;
       
        elseif (s(k)<=i(k)&&s(k)<0)
            pwm(k)=-1;
        end
    
    end
    
    subplot(3,1,1)
    plot(t,pwm,'r')
    set(gca,'ytick',-6:0.1:6);
    
    subplot(3,1,2)
    [AX,H1,H2] = plotyy(t,i,t,s,'plot');
    grid on
    
    set(AX(1),'ylim',[-6 6],'ytick',-6:2:6)
    set(AX(2),'ylim',[-6 6],'ytick',-6:2:6)
    axes(AX(1))
    axes(AX(2))
    
    subplot(3,1,3)
    [AXy,H3,H4] = plotyy(t,pwm,t,s,'plot');
    %grid on
    
    set(AXy(1),'ylim',[-1.5 1.5],'ytick',-1.5:.2:1.5)
    set(AXy(2),'ylim',[-6 6],'ytick',-6:2:6)
    axes(AXy(1))
    axes(AXy(2))
    Merci d'avance

  4. #4
    Responsable FAQ C++
    Avatar de Winjerome
    Homme Profil pro Jérôme
    Inscrit en
    septembre 2009
    Messages
    7 853
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : septembre 2009
    Messages : 7 853
    Points : 28 937
    Points
    28 937

    Par défaut

    Bonjour,

    Le message d'erreur est plutôt clair : tes vecteurs t et pwm doivent être de la même longueur.

    Je te conseille de regarder la Qu'est-ce que la préallocation de mémoire ?
    Avant de poser votre question : FAQ, Tutoriels et recherche sur le forum
    Une erreur ? Messages d'erreur et avertissements
    "Ça ne marche pas" n'apporte aucune information utile permettant de vous aider. Expliquez clairement votre problème (erreurs entières, résultat souhaité vs obtenu...).

    En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche. - Jacques Rouxel
    L'expérience, c'est le nom que chacun donne à ses erreurs - Oscar Wilde
    Retrouvez-moi en soirée sur le chat de developpez.com - Pas de question technique par MP, Merci

  5. #5
    Invité de passage
    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : septembre 2012
    Messages : 12
    Points : 0
    Points
    0

    Par défaut

    Super, je vous remercie !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •