Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Signal
Signal Forum d'entraide sur le traitement du signal en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/10/2012, 09h14   #1
mika47
Invité de passage
 
Homme
Inscription : 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,
mika47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 12h15   #2
Cheetor
Nouveau Membre du Club
 
Inscription : juillet 2012
Messages : 31
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2012
Messages : 31
Points : 39
Points : 39
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.
Cheetor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 15h12   #3
mika47
Invité de passage
 
Homme
Inscription : septembre 2012
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2012
Messages : 12
Points : 0
Points : 0
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
mika47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 15h19   #4
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 175
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 175
Points : 12 665
Points : 12 665
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 ?
__________________
Débutant en MATLAB ? Vous voulez faire une Interface Graphique ? Les Tutoriels et la FAQ sont là pour vous aider
Une erreur ? FAQ : Messages d'erreur et avertissements
"Ça ne marche pas" n'est pas une réponse acceptable Expliquez clairement votre problème (erreurs, résultats non attendus...).
Citation:
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
Pas de question technique par MP, Merci
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 16h09   #5
mika47
Invité de passage
 
Homme
Inscription : septembre 2012
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2012
Messages : 12
Points : 0
Points : 0
Super, je vous remercie !
mika47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h37.


 
 
 
 
Partenaires

Hébergement Web