Bonjour à tous, j'aimerais pouvoir accordé le signal de charge et décharge d'une capacité sur un signal rectangulaire périodique mais je ne sais pas trop comment faire... En fait, à la deuxième boucle FOR, lorsque je calcule y1, au lieux de mettre dans la formule '-t(i)', il faudrait que mes 'i' soient en fait les valeurs contenues dans le vecteur t1 défini plus haut (qui correspond à une demi période...). Je ne sais pas si ce que j'explique est très clair...
voici mon code:
Merci d'avance pour votre aide!
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 %% Signal carré d'amplitude 9V avec la charge/décharge %% de la capacité de l'oscillateur de référence. % Valeur de la résistance variable (en Ohms) R_var = 2.835e4; % Valeur de la résistance fixe (en Ohms) R_1 = 1e3; % Valeur de la capacité (en Farads) C = 1e-10; % Amplitude des signaux A = 9; % Constante de temps pour la charge de la % capacité (en secondes) tau_1 = C*(R_1+R_var); % Constante de temps pour la décharge de la % capacité (en secondes) tau_2 = C*R_var; % Rapport cyclique D = R_var/(R_1+2*R_var); % Intervalle de temps (en secondes) t = 0:5e-8:20e-6; t1 = 0: 5e-8:2e-6; % une demi période % Fréquence du signal (en Hertz) f = 250000; % Equation du signal carré y2 = A.*square(2*pi*f*t,100*D); for i=1:length(t) if y2(i)<0 y2(i)=0; end; end; % Charge et décharge de la capacité for i = 1:length(t) if y2(i) == A y1(i) = (4/3)*A-A.*exp(-t(i)./tau_1); % Equation de charge else y1(i) = A.*exp(-t(i)./tau_2)-(1/3)*A; % Equation de décharge end end plot (t,y2,'xb-',t,y1,'r-'); xlabel('Temps(s)'); ylabel('Tension (V)'); title('Signal provenant de l''oscillateur de référence et de sa capacité'); grid;
Partager