redressement simple alternance, tension de sortie

Wolfhard Larass décrit cette méthode dans le chapitre « Gleichrichterschaltungen mit Ladekondensator » dans le livre « Stromversorgungen » de Siegfried W. Wagner.

Il y bien des années de cela, j’avais écrit un minuscule programme se basant sur cette méthode. Le but était de m’en servir comme outil personnel. Mais je l’avais mis à la disposition de mes camarades, en précisant bien que je ne connaissait pas les limites de la précision. J’étais restée septique. Mais ces camarades m’avaient précisé que ce petit programme leur a toujours donné satisfaction. Bien qu’ayant cherché longuement, je n’ai pas pu retrouver ce programme. Il s’est probablement trouvé sur l’une des bandes magnétiques dont je me suis séparée. J’ai essayé de le reconstituer, me servant simplement de GNU octave. Ça marcherait probablement de même avec matlab.

Un point important est de trouver l’inverse de tan (theta) - theta. J’ai choisi la solution de la facilité en utilisant une méthode itérative très simple, vu que cela converge bien vite. Les matheux vont se moquer de moi, mais je n’ai pas pris le temps de développer une solution plus élégante. Par exemple, en partant de la série correspondant à tan. D’autres, plus matheux que moi, pourront se défouler.

Je vais copier ce petit programme en bas. À la fin, je calcule les valeurs lambda2, alpha et beta, correspondant à ces grandeurs dans l’article de Waiderlich, afin de pouvoir comparer. Bien entendu, ce n’est pas nécessaire pour le reste.

J’ai essayé de reprendre le même nom des variables. Je n’ai peut-être pas réussi partout. Mais enfin, je reste à votre disposition pour les questions concernant la programmation. Ce n’est pas un programme productif, vous l’aurez remarqué. C’est pour jouer avec la méthode, simplement.

Malgré sa relative simplicité, cette méthode semble donner de bons résultats. À vous d’essayer, si le cœur vous en dit.

Douces salutations programmables !

function result = tanmx (x)
tmptheta = pi * 0.25 ;
thetainc = tmptheta * 0.5 ;
limit = 300 ;

do
tmpx = tan (tmptheta) - tmptheta ;
if ( tmpx > x)
 tmptheta -= thetainc ;
else
 tmptheta += thetainc ;
endif 
 limit -= 1 ;
 if ( limit < 0 )
  error ("Cannot converge") ;
 endif
 thetainc *= 0.5 ;
until ((abs (tmpx - x) / x) < 1.e-3) 
 result = tmptheta ;

 endfunction
 
# Needed: f, n, Rs, Rl, C, Vpk
Omega = 2 * pi * f
theta = tanmx (Rs * pi / (n * Rl))
# when C is needed and when XXX is half RelPpRipple, then
# Alpha = asin ((XXX / sin (theta)))
# C = ((1 - theta * cot (theta)) * (1 - n * theta / pi)) / (tan (Alpha) * Rs * Omega)
Alpha = atan (((1 - theta * cot (theta)) * (1 - n * theta / pi)) / (Omega * C * Rs))
V0 = Vpk * cos (theta) * cos (Alpha)
PpRipple = 2. * Vpk * sin (theta) * sin (Alpha)
RelRpRipple = PpRipple / V0
Ipk = (pi * V0) / (theta * Rl * n)
Ipksingle = Vpk / Rs
#
lambda2 = atan (Omega * C * Rl)
Walpha = (pi - theta) * 0.5 - Alpha
Wbeta  = (pi + theta) * 0.5 - Alpha