Drawing a 3 phase transformer with TikZ
Here you have a starting point.
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle (7,5);
\draw (1,1) rectangle (3,4);
\draw (4,1) rectangle (6,4);
\foreach \i in {0,3,6}{
\begin{scope}[xshift=\i{}cm]
\path[fill] (-0.3,3.5) circle (2pt);
\draw[thick] (-0.3,3.5) -- (1,3.5) arc [start angle=0, delta angle =-180, radius=.5mm, rotate=90];
\draw[thick] (0,3.4) arc [start angle=0, delta angle =180, radius=.5mm, rotate=90] -- (1,3.3) arc [start angle=0, delta angle =-180, radius=.5mm, rotate=90];
\draw[thick] (0,3.2) arc [start angle=0, delta angle =180, radius=.5mm, rotate=90] -- (1.3,3.1);
\path[fill] (1.3,3.1) circle (2pt);
\end{scope}}
\end{tikzpicture}
\end{document}
Update
Just for fun I've thought it was a good example for practising with pics
and quotes
. You need TiKZ 3.0.0 which is going to CTAN
The new code is:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{quotes,arrows.meta}
\begin{document}
\tikzset{
terminal_a/.pic = {%
\coordinate (-in) at (-3mm,0);
\coordinate (-out) at (-3mm,-4.5mm);
\path[fill] (-in) circle (2pt);
\draw[thick] (-in)--(0,0)--++(0:1cm) arc[start angle=90, delta angle=-180, radius=.75mm];
\draw[thick] (0,-1.5mm) arc[start angle=90, delta angle=180, radius=.75mm]--++(0:1cm) arc[start angle=90, delta angle=-180, radius=.75mm];
\fill (-out) circle (2pt);
\draw[thick] (-out) -- ++(0:3mm);
},
terminal_b/.pic = {%
\coordinate (-in) at (-3mm,0);
\coordinate (-out) at (-3mm,-7.5mm);
\path[fill] (-in) circle (2pt);
\draw[thick] (-in)--(0,0)--++(0:1cm) arc[start angle=90, delta angle=-180, radius=.75mm];
\draw[thick] (0,-1.5mm) arc[start angle=90, delta angle=180, radius=.75mm]--++(0:1cm) arc[start angle=90, delta angle=-180, radius=.75mm];
\draw[thick] (0,-4.5mm) arc[start angle=90, delta angle=180, radius=.75mm]--++(0:1cm) arc[start angle=90, delta angle=-180, radius=.75mm];
\fill (-out) circle (2pt);
\draw[thick] (-out) -- ++(0:3mm);
},
field/.pic = {
\draw[thick,-Stealth] (0,0) -- (90:7mm) node[above] {\tikzpictext};
}
}
\begin{tikzpicture}
\draw (0,0) rectangle (7,5);
\draw (1,1) rectangle (3,4);
\draw (4,1) rectangle (6,4);
\foreach \i/\j in {0/A,3/B,6/C}{
\pic (upper-\j) at (\i,3.8) {terminal_a};
\pic (lower-\j) at (\i,2) {terminal_b};
\pic["$\Psi_\j$"] at ([xshift=5mm]\i,2.2) {field};
}
\node[left] at (upper-A-in) {A};
\draw[red] (upper-A-out) to [bend right] (lower-A-in);
\end{tikzpicture}
\end{document}
and the result is
If a PSTricks solution is an option, you can use the following:
\documentclass{article}
\usepackage[margin = 3cm]{geometry}
\usepackage{pstricks-add}
\let\Name\MakeUppercase
%%% values needed (automatically calculated)
\usepackage{xfp}
% picture frame
\newcommand*\DiagramHorizontalStart{
\fpeval{-\WindingRadius-5080/7227}% (5080/7227)mm = 2pt = \psdot diameter (if I am not mistaken)
}
\newcommand*\DiagramHorizontalEnd{
\fpeval{3*\CoreThickness+2*\CoreholeHorizontal+\WindingRadius
+\ElectroamgnetComponentDistance+3*\ComponentThickness
+2*\ComponentsHorizontalDistance+0.1}
}
\newcommand*\DiagramVerticalEnd{
\fpeval{2*\CoreThickness+\CoreholeVertical}
}
% intermediate functions
\newcommand*\WirePosition[1]{%
\fpeval{(#1)*\WindingRadius}
}
\newcommand*\WindingsPositionX[1]{%
\fpeval{(#1-1)*(\CoreThickness+\CoreholeHorizontal)}
}
\newcommand*\LabelPositionX[1]{%
\fpeval{\CoreThickness/2+\WindingsPositionX{#1}}
}
\newcommand*\LabelPositionY{%
\fpeval{(\CoreholeVertical+\WirePosition{4*\NumberOfWindingsBottom+2}
-\WirePosition{4*\NumberOfWindingsTop+2})/2+\CoreThickness}
}
\newcommand*\ComponentStart{%
\fpeval{3*\CoreThickness+2*\CoreholeHorizontal+\WindingRadius
+\ElectroamgnetComponentDistance}
}
\newcommand*\ComponentHeight{%
\fpeval{\CoreThickness+\CoreholeVertical/2-2*\ComponentEndHeight
-\ComponentsVerticalDistance/2}
}
\newcommand*\ComponentNumber[1]{%
\fpeval{(#1-1)*(\ComponentsHorizontalDistance+\ComponentThickness)}
}
\newcommand*\ComponentNoteX[1]{%
\fpeval{\ComponentStart+\ComponentNumber{#1}}
}
% core
\newcommand*\Core{
% `outer frame'
\psframe(0,0)%
(\fpeval{3*\CoreThickness+2*\CoreholeHorizontal},
\fpeval{2*\CoreThickness+\CoreholeVertical})
% first hole
\psframe(\CoreThickness,\CoreThickness)%
(\fpeval{\CoreThickness+\CoreholeHorizontal},
\fpeval{\CoreThickness+\CoreholeVertical})
% second hole
\psframe(\fpeval{2*\CoreThickness+\CoreholeHorizontal},\CoreThickness)%
(\fpeval{2*(\CoreThickness+\CoreholeHorizontal)},
\fpeval{\CoreThickness+\CoreholeVertical})%
}
% single winding
\newcommand*\Loop[1]{%
\psarc(0,\WirePosition{4*#1-1}){\WindingRadius}{90}{270}
\psline(0,\WirePosition{4*#1-2})(\CoreThickness,\WirePosition{4*#1-2})
\psarc(\CoreThickness,\WirePosition{4*#1-3}){\WindingRadius}{270}{90}%
}
% collection of windings
\newcommand*\WireFull[1]{%
\psline{*-}(-\WireEndLength,\WirePosition{4*#1+2})%
(\CoreThickness,\WirePosition{4*#1+2})
\psarc(\CoreThickness,\WirePosition{4*#1+1}){\WindingRadius}{270}{90}
\multido{\iA = 1+1}{#1}{\Loop{\iA}}
\psline{-*}(0,0)(-\WireEndLength,0)%
}
% label
\newcommand*\Label[2]{%
\def\displacement{0.2}
\def\LabelSeparation{1pt}
\uput{\LabelSeparation}[90]%
(\LabelPositionX{#1},\fpeval{\LabelPositionY+\displacement})%
{$\Psi_{\scriptscriptstyle \Name{#2}}$}
\uput{\LabelSeparation}[270]%
(\LabelPositionX{#1},\LabelPositionY)%
{\psline{->}(0,\fpeval{-1+\displacement})(0,\displacement)}%
}
% windings and label combined
\newcommand*\Column[2]{%
% top windings
\rput(\WindingsPositionX{#1},
\fpeval{(\CoreThickness+\CoreholeVertical)
-(\WirePosition{4*\NumberOfWindingsTop+2}
+\WindingsCoreCornerDistance)})%
{\WireFull{\NumberOfWindingsTop}}
% label
\Label{#1}{#2}
% bottom windings
\rput(\WindingsPositionX{#1},
\fpeval{\CoreThickness+\WindingsCoreCornerDistance})%
{\WireFull{\NumberOfWindingsBottom}}%
}
% black component
\newcommand*\BlackComponent[3]{%
% nodes
\pnodes%
(\ComponentNoteX{#1},
0){P1}%
(\ComponentNoteX{#1},
\ComponentEndHeight){P2}%
(\fpeval{\ComponentStart-\ComponentThickness/2+\ComponentNumber{#1}},
\ComponentEndHeight){P3}%
(\fpeval{\ComponentStart+\ComponentThickness/2+\ComponentNumber{#1}},
\fpeval{\ComponentEndHeight+\ComponentHeight}){P4}%
(\ComponentNoteX{#1},
\fpeval{\ComponentEndHeight+\ComponentHeight}){P5}%
(\ComponentNoteX{#1},
\fpeval{2*\ComponentEndHeight+\ComponentHeight}){P6}
% bottom wire
\psline{*-}(P1)(P2)
% component
\psframe[
fillstyle = solid,
fillcolor = black
](P3)(P4)
% top wire
\psline{-*}(P5)(P6)
% labels
\uput[20](P1){$#2$}
\uput[340](P6){$#3$}%
}
% black component, gathered
\newcommand*\Component[3]{%
\rput(0,\fpeval{1016/7227}){\BlackComponent{#1}{#2}{#3}}
\rput(0,\fpeval{\CoreThickness+\CoreholeVertical/2
+\ComponentsVerticalDistance/2-1016/7227})%
{\BlackComponent{#1}{\Name{#2}}{\Name{#3}}}%
}
%%% parameters %%%
% core placement
\newcommand*\CoreThickness{2}
\newcommand*\CoreholeHorizontal{5}
\newcommand*\CoreholeVertical{8}
% wire placement
\newcommand*\WindingsCoreCornerDistance{0.5}
\newcommand*\WireEndLength{0.7}
\newcommand*\WindingRadius{0.15}
% number of windings
\newcommand*\NumberOfWindingsTop{2}
\newcommand*\NumberOfWindingsBottom{3}
% electromagnet--components distance
\newcommand*\ElectroamgnetComponentDistance{4}
% black components
\newcommand*\ComponentEndHeight{0.8}
\newcommand*\ComponentThickness{1}
\newcommand*\ComponentsHorizontalDistance{3}
\newcommand*\ComponentsVerticalDistance{2}
\pagestyle{empty}
\begin{document}
\begin{center}
\psset{unit = 0.5}
\begin{pspicture}%
(\DiagramHorizontalStart,0)%
(\DiagramHorizontalEnd,\DiagramVerticalEnd)
%%% electromagnet
% core
\Core
% wires and labels
\Column{1}{a}
\Column{2}{b}
\Column{3}{c}
%%% components
\Component{1}{a}{x}
\Component{2}{b}{y}
\Component{3}{c}{z}
\end{pspicture}
\end{center}
\end{document}
Notice that the drawing is 'automated'; you choose the values of all the parameters yourself and the drawing will be adjusted accordingly.