Символ повышающего и/или понижающего трансформатора для Circuitikz

Символ повышающего и/или понижающего трансформатора для Circuitikz

Я хочу включить в некоторые из своих рисунков более интуитивно понятный символ для повышающего/понижающего трансформатора, например, такой: введите описание изображения здесь

или версия «милого индуктора»:

введите описание изображения здесь

Я пытался сделать то, чтоэта ссылкапредложил скопировать тип кода, используемый для определения «индуктора» в pgfcircbipoles.tex, т.е. определить «long_inductor» для использования в коде, но мне не ясно, как все это объединить:

\begin{circuitikz}
\draw (1,5) to[short, o-] (2, 5)
to [long_inductor, l = Primary] (2, 0)
to [short, -o](1,0);
\draw (2.3,5) -- (2.3,0);
\draw (2.4,5) -- (2.4,0);
\draw (4,4) to[short, o-] (3,4)
to [inductor,l = Secondary] (3,1)
to [short, -o](4,1);
\end{circuitikz}

Я видел примеры использованияпстрикс,но я только начал изучать tikz и circuitikz, поэтому на данном этапе мне больше интересно узнать, как использовать эти инструменты... включая определение моих собственных форм для использования.

решение1

Количество катушек можно настроить, в том числе и на рисунке:

\begin{circuitikz}[]
\begin{scope}
   \ctikzset{bipoles/cuteinductor/width/.initial=1.2}%default 0.6
   \ctikzset{bipoles/cuteinductor/coils/.initial=10}%default 5
   \draw (0, 0)  to [short, o-] +(1, 0)
      to [cute inductor]  +(0, 3)
      to [short, -o] +(-1, 0);
\end{scope}
%% vertical bare fore the core.  The middle is in y=1.5
\draw[thick] (1.4, 0.5) -- (1.4, 2.5);
\draw[thick] (1.6, 0.5) -- (1.6, 2.5);
%% Secondary
\draw(3, 0)  to [short, o-] +(-1, 0)
  to [cute inductor]  +(0, 3) 
  to [short, -o] +(1, 0);
%%American inductor version(only working using the most recent gitversion!)
\begin{scope}[xshift=4cm]
\begin{scope}
   \ctikzset{bipoles/americaninductor/width/.initial=1.6}%default 0.8
   \ctikzset{bipoles/americaninductor/coils/.initial=8}%default 4
   \draw(0, 0)  to [short, o-] +(1, 0)
    to [inductor]  +(0, 3)
    to [short, -o] +(-1, 0);
\end{scope}
 %% vertical bare fore the core.  The middle is in y=1.5
 \draw[thick] (1.4, 0.5) -- (1.4, 2.5);
 \draw[thick] (1.6, 0.5) -- (1.6, 2.5);
%%Secondary    
\draw (3, 0)  to [short, o-] +(-1, 0)
 to [inductor]  +(0, 3)
 to [short, -o] +(1, 0);
 \end{scope}
\end{circuitikz}

введите описание изображения здесь Во время тестирования я обнаружил ошибку, поэтому код для американского индуктора (не милого/кудрявого)) работает только при использовании последней версии git или при корректировке кода после этого коммита:https://github.com/circuitikz/circuitikz/commit/1dc2ee4cef798bcd8f9a5fabbaf83f66afeaf0f2

С наилучшими пожеланиями, Стефан

решение2

Альтернативой может быть изготовление катушек самостоятельно с использованием декораций. Тогда они будут работать точно так же, как линии, но нарисованные bumpsдля первой и coilдля второй. Я не сравнивал с катушками в circuitikz, что, вероятно, дает некоторые изменения в настройках. Единственное различие между первичной и вторичной обмоткой — это зеркальное отображение. Это также можно сделать, изменив направление линии.

\documentclass[border=1cm]{standalone}
\usepackage{circuitikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{circuitikz}[%
  line width=1pt,
  MyPrimaryBumps/.style={decorate,decoration={bumps,amplitude=10pt,segment length=10mm,mirror}},
  MySecondaryBumps/.style={decorate,decoration={bumps,amplitude=10pt,segment length=10mm}},
  MyPrimaryCoil/.style={decorate,decoration={coil,amplitude=10pt,segment length=4.8mm,mirror}},
  MySecondaryCoil/.style={decorate,decoration={coil,amplitude=10pt,segment length=4.7mm}},
  ]
  \draw[o-] (0,0) -- +(2,0);
  \draw[MyPrimaryBumps] (2,0) -- +(0,3.01);
  \draw[-o] (2,3) -- +(-2,0);
  \draw(2.45,0) -- +(0,3);
  \draw(2.54,0) -- +(0,3);
  \draw[o-] (5,0.5) -- +(-2,0);
  \draw[MySecondaryBumps] (3,0.5) -- +(0,2.01);
  \draw[-o] (3,2.5) -- +(2,0);
  \begin{scope}[xshift=8cm]
    \draw[o-] (0,0) -- +(2,0);
    \draw[MyPrimaryCoil] (2,0) -- +(0,3.01);
    \draw[-o] (2,3) -- +(-2,0);
    \draw(2.45,0) -- +(0,3);
    \draw(2.54,0) -- +(0,3);
    \draw[o-] (5,0.5) -- +(-2,0);
    \draw[MySecondaryCoil] (3,0.5) -- +(0,2.01);
    \draw[-o] (3,2.5) -- +(2,0);
  \end{scope}
\end{circuitikz}
\end{document}

введите описание изображения здесь

решение3

Мое решение — использовать две inductorкатушки и создать большую катушку.

Вот мой MWE:

\documentclass[12pt]{article}
\usepackage[americaninductors]{circuitikz}


\begin{document}

\begin{circuitikz}
  %% left side of the transformer  This has two coils to indicate more
  %% windings.  Use relative coordinates, counting from the startpoint
  %% The horizontal width is from y=0 to y=1
  \draw 
  (0, 0) node[inductor] (P) {} 
  to [short, o-] +(1, 0)
  to [inductor]  +(0, 1.2)
  to [inductor]  +(0, 1.2)
  to [short, -o] +(-1, 0);
  %% vertical bare fore the core.  The middle is in y=1.5
  \draw (1.4, -0.1) -- (1.4, 2.5);
  \draw (1.6, -0.1) -- (1.6, 2.5);

  % %% right side of the transformer, being smaller than the first
  % side.  The width is y=3 to y=2
  \draw
  (3, 0) node[inductor] (S) {}
  to [short, o-] +(-1, 0)
  to [inductor, mirror]  +(0, 2.5)
  to [short, -o] +(1.2, 0);
\end{circuitikz}
\end{document}

И результат

введите описание изображения здесь

Я должен признать, что я использовал опцию mirrorна правом передатчике, чтобы отразить катушки обеих сторон передатчика. Я также пытался использовать опцию mirrorна левой стороне катушек, но это дало уродливые соединения между соединительными линиями. :-(

Связанный контент