IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Générer un PWM


Sujet :

Signal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Points : 8
    Points
    8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    Déjà, tu as une erreur d'indice à la ligne 11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Points : 8
    Points
    8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Invité
    Invité(e)
    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 ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Super, je vous remercie !

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

Discussions similaires

  1. Générer un PWM sur un DSPIC30F en C
    Par vniversum dans le forum C
    Réponses: 2
    Dernier message: 19/06/2010, 21h49
  2. Réponses: 2
    Dernier message: 31/08/2002, 14h00
  3. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30
  4. [CR][VB] comment générer un état ?
    Par ndi dans le forum SDK
    Réponses: 3
    Dernier message: 22/08/2002, 13h13
  5. Réponses: 5
    Dernier message: 08/07/2002, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo