Example: Phasor diagram

Published 2010-01-30 | Author: Urs Zellweger

Download as: [PDF] [TEX]

Phasor diagram

Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de. En français: TeXnique.fr.

%& -shell-escape
% Phasor diagram
% Author: Urs Zellweger (urs@zellweger.li)
% GNUPLOT required
\documentclass[11pt]{article}
\usepackage{ifthen}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{pgffor}
\usepgfmodule{shapes}
\usepgfmodule{plot}
\usetikzlibrary{decorations}
\usetikzlibrary{arrows}
\usetikzlibrary{snakes}
\newcommand{\Gitter}[4]{
\draw[very thin,color=gray] (#1,#3) grid (#2,#4);
}
\newcommand{\Koordinatenkreuz}[6]{
\draw[->, >=latex, color=green!50!black] (#1,0) -- (#2,0) node[right] {#5};
\draw[->, >=latex, color=green!50!black] (0,#3) -- (0,#4) node[left] {#6};
}
\newcommand{\KoordinatenkreuzOhneLabelsVerschobenKeinPfeil}[5]{
\draw[-] (#1,0) -- (#2,0);
\draw[-] (#5,#3) -- (#5,#4);
}
\newcommand{\ZeigerdiagrammText}[4]{
\begin{tikzpicture}[scale=.72, samples=100, >=latex]
\def\Alpha{#1}
\def\Phase{#2}
\def\AmplitudeSpannung{#3}
\def\AmplitudeStrom{#4}
\def\SpannungsWert{{\AmplitudeSpannung*sin(\Alpha)}}
\def\StromWert{{\AmplitudeStrom*sin(\Alpha+\Phase)}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\FarbeSpannung{blue!90!white}
\def\FarbeStrom{red!90!white}
\def\FarbeWinkelZeichnung{green}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\Beta{\Alpha+\Phase}
\def\AlphaRad{\Alpha*3.141592654/180}
\def\PhaseRad{\Phase*3.141592654/180}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Gitter{-.1}{7.1}{-3.1}{3.1}
\Koordinatenkreuz{-.2}{7.3}{-3.2}{3.3}{$\omega t$}{}
\draw (1.570795,0) node[below]{$\frac{\pi}{2}$};
\draw (3.14159,0) node[below]{${\pi}$};
\draw (4.71238898,0) node[below]{$\frac{3\pi}{2}$};
\draw (6.283185307,0) node[below]{${2\pi}$};
\draw (-4,0) circle (3cm);
\KoordinatenkreuzOhneLabelsVerschobenKeinPfeil{-7.2}{-.8}{-3.6}{3.6}{-4}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% voltage
\draw[color=\FarbeSpannung, very thick] plot[id=voltage, domain=0:7] function{\AmplitudeSpannung*sin(x)} node[right] {$U(t)$};
% voltage circle
\draw[color=\FarbeSpannung, loosely dashed] (-4,0) circle (\AmplitudeSpannung cm);
% angle
\draw[color=\FarbeWinkelZeichnung!50!black, thick] (\AlphaRad, \SpannungsWert)--(\AlphaRad,\StromWert) node[below=18pt] {$\alpha$};
% angle in the circle
\filldraw[fill=\FarbeWinkelZeichnung!20,draw=\FarbeWinkelZeichnung!50!black] (-4,0) -- (-3,0) arc (0:\Alpha:1) -- cycle node[right] {$\alpha$};
% voltage pointer
\draw[<-,color=\FarbeSpannung, very thick] (\Alpha:\AmplitudeSpannung)++(-4,0) --(-4,0);
\draw[color=\FarbeSpannung, dashed] (\Alpha:\AmplitudeSpannung)++(-4,0) -- (\AlphaRad,\SpannungsWert);
% current
\draw[color=\FarbeStrom, very thick] plot[id=current, domain=0:7] function{\AmplitudeStrom*sin(x+\PhaseRad)} node[right] {$I(t)$};
% current circle
\draw[color=\FarbeStrom, loosely dashed] (-4,0) circle (\AmplitudeStrom cm);
% current pointer
\draw[<-,color=\FarbeStrom, very thick] (\Beta:\AmplitudeStrom)++(-4,0) --(-4,0);
\draw[color=\FarbeStrom, dashed](\Beta:\AmplitudeStrom)++(-4,0) -- (\AlphaRad,\StromWert);
% phase difference
\ifthenelse{\Phase<0}{
\draw[snake=brace] (pi/2 ,3.3)--(pi/2-\PhaseRad ,3.3) node[above=7pt, left=10pt] {$\phi$};
}
{
\draw[snake=brace] (pi/2-\PhaseRad ,3.3)--(pi/2 ,3.3) node[above=7pt, left=10pt] {$\phi$};
}
% angular velocity \omega
\draw[->, xshift=-4cm] (120:2.4cm) arc (120:170:2) node[below] {$\omega$};
\end{tikzpicture}
}
% % % % % % % % % % % % % % % % % % % % % % % % % % %
\begin{document}
% usage: {alpha}{phasedifferenceUI}{voltage}{current}{Ualpha}{Ialpha}
% resistor
\ZeigerdiagrammText{60}{0}{2.7}{1.8}
% inductivity / coil
\ZeigerdiagrammText{60}{-90}{2.7}{1.8}
% capacity / conductor
\ZeigerdiagrammText{60}{90}{2.7}{1.8}
\end{document}
 
 

Comments

  • #1 Arpad Horvath, June 3, 2010 at 7:14 p.m.

    After each run of the \ZeigerdiagrammText should run the gnuplot, otherwise the sinuses of the last \ZeigerdiagrammText will be on each diagrams. How can do the right way? Arpad

  • #2 Vesa Linja-aho, September 2, 2010 at 11:27 p.m.

    Is there any way to omit using Gnuplot?

  • #3 None, July 24, 2012 at 4:23 p.m.

    No. There is no way to draw these graphics without using gnuplot.

Adding comments is currently not enabled.