%% $Id: pst-am.sty 166 2009-12-08 14:48:53Z herbert $ %% %% This is file `pst-am.sty', %% %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN archives %% in directory macros/latex/base/lppl.txt. %% %% Manuel Luque <Mluque5130 _at_ aol.com> (France) %% Herbert Voss <hvoss _at_ tug.org (Germany) %% %% 2009/12/08 %% %% DESCRIPTION: %% `pst-am' is a package intended for the representation %% of the amplitude modulation of the radio waves % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pst-am} [2009/12/00 v1.01 Modulation of radio waves (ml,hv)] \RequirePackage{pstricks} \RequirePackage{pst-plot} \RequirePackage{pst-node} \RequirePackage{pst-xkey} \RequirePackage{numprint} \RequirePackage{multido} \pst@addfams{pst-am} \SpecialCoor \definecolor{Bleu}{cmyk}{1,1,0,0.3} \newpsstyle{cadre}{framearc=0.05,linecolor=black} \newpsstyle{screen}{fillstyle=solid,fillcolor=yellow!70!white!30} \newpsstyle{signalModulant}{plotpoints=1000,linecolor=green,linewidth=2\pslinewidth} \newpsstyle{signalPorteuse}{plotpoints=2000,linecolor=blue} \newpsstyle{signalRedresse}{plotpoints=2000,linecolor=Bleu} \newpsstyle{signalDemodule}{plotpoints=4000,linecolor=red} \newpsstyle{signalModule}{plotpoints=4000,linecolor=blue} \newpsstyle{XY}{plotpoints=4000,linecolor=blue} % \define@key[psset]{pst-am}{title}{\def\psk@title{#1}} \define@key[psset]{pst-am}{frequencePorteuse}[2e4]{\def\psk@frequencePorteuse{#1}} \define@key[psset]{pst-am}{frequenceAudio}[1e3]{\def\psk@frequenceAudio{#1}} \psset[pst-am]{title={},%{Luc\'e Auguste Fresnel}, frequencePorteuse=2e4,frequenceAudio=1e3} % les fr�quences % \define@key[psset]{pst-am}{R}[3300]{\def\psk@resistor{#1}} \define@key[psset]{pst-am}{C}[3.9e-8]{\def\psk@capacitor{#1}} \psset[pst-am]{R=3300,C=3.9e-8} % \define@key[psset]{pst-am}{U0}[2]{\def\psk@offset{#1}} \psset[pst-am]{U0=2} % \define@key[psset]{pst-am}{Up}[3.5]{\def\psk@Up{#1}} \define@key[psset]{pst-am}{Um}[1]{\def\psk@Um{#1}} \psset[pst-am]{Up=3.5,Um=1} % \define@key[psset]{pst-am}{k}[0.1]{\def\psk@k{#1}} \psset[pst-am]{k=0.1} % coefficient multiplicateur % \define@key[psset]{pst-am}{timeDiv}[2e-4]{\def\psk@timeDiv{#1}} \define@key[psset]{pst-am}{voltDivY1}[1]{\def\psk@voltDivA{#1}} % coeff d'amplitude vertical curve Y1 \define@key[psset]{pst-am}{voltDivY2}[1]{\def\psk@voltDivB{#1}} % coeff d'amplitude vertical curve Y2 \psset[pst-am]{timeDiv=2e-4,voltDivY1=1,voltDivY2=1} % \define@boolkey[psset]{pst-am}[Pst@]{Centering}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalModule}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalPorteuse}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalRedresse}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalDemodule}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalModulant}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalModule}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{SignalFinal}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{enveloppe}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{XY}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{traceU}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{UMandUm}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{values}[true]{} \define@boolkey[psset]{pst-am}[Pst@]{BW}[true]{} \psset[pst-am]{Centering=false} % \def\psAM{\pst@object{psAM}} \def\psAM@i{{% \pst@killglue \use@par \pnode(!% 1 setlinejoin /PI 3.14159 def /Tp {1 \psk@frequencePorteuse\space div} bind def % p�riode du signal modul�s /Ap \psk@Up\space def % amplitude porteuse /Fm \psk@frequenceAudio\space def % frequence signa modulant /Tm {1 Fm div} bind def % periode du signal modulant /Am \psk@Um\space def % amplitude signal modulant /U0 \psk@offset\space def % decalage /k \psk@k\space def /R \psk@resistor\space def /C \psk@capacitor\space def /m {Am U0 div} bind def /Umin {k Ap mul U0 mul 1 m sub mul} bind def /Umax {k Ap mul U0 mul 1 m add mul} bind def /composanteContinue {Umax Umin add 2 div} bind def /Tau {R C mul} bind def /TimeDiv \psk@timeDiv\space def % base de temps /VoltDivY1 \psk@voltDivA\space def % amplitude verticale curve Y1 /VoltDivY2 \psk@voltDivB\space def % amplitude verticale curve Y2 /DecalageTemps 0 def 0 0){MEM}% \ifPst@BW \newpsstyle{signalModulant}{plotpoints=1000,linewidth=2\pslinewidth} \newpsstyle{signalPorteuse}{plotpoints=2000} \newpsstyle{signalRedresse}{plotpoints=2000} \newpsstyle{signalDemodule}{plotpoints=4000} \newpsstyle{signalModule}{plotpoints=4000} \newpsstyle{XY}{plotpoints=4000} \fi \ifPst@Centering\centering\fi \pspicture(0,-5)(10,5) \psframe[style=cadre](-0.1,-4.5)(10.1,4.5) \psframe[style=screen](0,-4)(10,4) \rput(5,4.25){\textsf{\large Modulation-Demodulation}} \rput(5,-4.25){\psk@title} \rput*(2.5,-3.5){\textsf{\large timeDiv:\numprint{\psk@timeDiv} s/div}} \uput*[0](6,-3.7){\textsf{\large curve 2:\psk@voltDivB V/div}} \uput*[0](6,-3.3){\textsf{\large curve 1:\psk@voltDivA V/div}} \psclip{\psframe[linestyle=none](0,-4)(10,4)} \ifPst@XY \parametricplot[style=XY]{0}{10}{% duree /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def /SignalModule FonctionPorteuse SignalModulant mul k mul def SignalModulant VoltDivY1 div 5 add SignalModule VoltDivY2 div} \else \ifPst@SignalModule \parametricplot[style=signalModule]{0}{10}{% duree /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def /SignalModule FonctionPorteuse SignalModulant mul k mul def t SignalModule VoltDivY2 div } \ifPst@enveloppe \parametricplot[style=signalModulant]{0}{10}{% /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /enveloppeSup Ap SignalModulant mul k mul def t enveloppeSup VoltDivY2 div } \parametricplot[style=signalModulant]{0}{10}{% /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /enveloppeInf Ap SignalModulant mul k mul neg def t enveloppeInf VoltDivY2 div } \fi \fi \ifPst@SignalRedresse \parametricplot[style=signalRedresse]{0}{10}{% duree /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def /SignalModule FonctionPorteuse SignalModulant mul k mul def SignalModule 0 le {/SignalRedresse 0 def} {/SignalRedresse SignalModule def} ifelse t SignalRedresse VoltDivY2 div } \fi \ifPst@SignalDemodule \parametricplot[style=signalDemodule]{0}{10}{% /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def /SignalModule FonctionPorteuse SignalModulant mul k mul def SignalModule 0 le {/SignalRedresse 0 def} {/SignalRedresse SignalModule def} ifelse /Uc U0 Ap mul 1 m DecalageTemps 360 mul Tm div cos mul add mul 2.718 temps DecalageTemps sub Tau div neg exp mul k mul def Uc SignalRedresse ge {/SignalDemodule Uc def} % si condition realisee {/SignalDemodule SignalRedresse def /DecalageTemps temps Tp div floor Tp mul def} ifelse t SignalDemodule VoltDivY2 div } \fi \ifPst@SignalModulant% \parametricplot[style=signalModulant]{0}{10}{% % 1 div=0.2 ms /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def t SignalModulant VoltDivY1 div } \fi \ifPst@SignalPorteuse \parametricplot[style=signalPorteuse]{0}{10}{% dur�e /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def t FonctionPorteuse VoltDivY1 div } \fi \fi \ifPst@SignalFinal \parametricplot[style=signalDemodule]{0}{10}{% /temps t TimeDiv mul def % t est en s /SignalModulant temps Fm mul 360 mul cos Am mul U0 add def /FonctionPorteuse Ap 360 Tp div temps mul cos mul def /SignalModule FonctionPorteuse SignalModulant mul k mul def SignalModule 0 le {/SignalRedresse 0 def} {/SignalRedresse SignalModule def} ifelse /Uc U0 Ap mul 1 m DecalageTemps 360 mul Tm div cos mul add mul 2.718 temps DecalageTemps sub Tau div neg exp mul k mul def Uc SignalRedresse ge {/SignalDemodule Uc def} % si condition r�alis�e {/SignalDemodule SignalRedresse def /DecalageTemps temps Tp div floor Tp mul def} ifelse t SignalDemodule composanteContinue sub VoltDivY2 div } \fi \pnode(! 0 Umax VoltDivY2 div){UM1} \pnode(! 10 Umax VoltDivY2 div){UM2} \pnode(! 0 Umin VoltDivY2 div){Um1} \pnode(! 10 Umin VoltDivY2 div){Um2} \pnode(! 0 U0 VoltDivY1 div){U01} \pnode(! 10 U0 VoltDivY1 div){U02} \endpsclip \psgrid[gridlabels=0,subgriddiv=0,gridwidth=0.5\pslinewidth,subgridwidth=0.2\pslinewidth,gridcolor=black,subgridcolor=black](0,-4)(10,4) \psline[linestyle=dotted,linecolor=black](0,2.5)(10,2.5) \psline[linestyle=dotted,linecolor=black](0,-2.5)(10,-2.5) \multido{\nxDiv=0.0+0.2}{50}{% \psline[linecolor=black,linewidth=0.5\pslinewidth](\nxDiv,-.1)(\nxDiv,0.1)} % ajout 29 janvier 2003 \multido{\nxDiv=0.0+0.2}{50}{% \psline[linecolor=black,linewidth=0.5\pslinewidth](\nxDiv,-2.05)(\nxDiv,-1.95)} \multido{\nxDiv=0.0+0.2}{50}{% \psline[linecolor=black,linewidth=0.5\pslinewidth](\nxDiv,2.05)(\nxDiv,1.95)} % \multido{\nyDiv=-4.0+0.2}{40}{% \psline[linecolor=black,linewidth=0.5\pslinewidth](4.9,\nyDiv)(5.1,\nyDiv)} \ifPst@traceU0 \psline[linecolor=green,linestyle=dashed](U01)(U02) \uput[l](U01){$U_0$} \fi \ifPst@UMandUm% \psline[linecolor=blue,linestyle=dashed](UM1)(UM2) \psline[linecolor=blue,linestyle=dashed](Um1)(Um2) \uput[l](Um1){$U_m$} \uput[l](UM1){$U_M$} \fi \endpspicture% \ifPst@values \tabular{@{} r l @{}}\hline Amplitude porteuse & \numprint{\psk@Up}\ V \\ Amplitude audio & \numprint{\psk@Um}\ V \\ Frequence porteuse & \numprint{\psk@frequencePorteuse}\ Hz \\ Frequence audio & \numprint{\psk@frequenceAudio}\ Hz\\ Decalage($U_0$) & \numprint{\psk@offset}\ V\\ \hline R & \numprint{\psk@resistor}\ $\Omega$ \\ C & \numprint{\psk@capacitor}\ F \\ \hline \endtabular \fi \ifPst@Centering\par\fi }} % \endinput