3

I write a code for the Voltage and Current Noise Sources, using the "circuit declare symbol". The option works well for the Noise Voltage. I can change the color of the font, circumference and Pattern, because all are based in a primitive figure "circle ee". But I have a problem with the Current Noise Source, I created a "Shortcut" but the solution is not elegant. Because, when I change the dimensions of my circuit, everything fails. I think I need a new symbol, but i don't know how to construct it. The reference for the circuit is INop source.

enter image description here

\documentclass{article} 

\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{color}
\usepackage{colortbl}
\usepackage{graphicx}
\usepackage[european]{circuitikz}
\usepackage{siunitx}

\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{patterns}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.ee}
\usetikzlibrary{circuits.ee.IEC}

\begin{document}


\begin{center}
%\fbox{
\begin{tikzpicture} [
circuit ee IEC,
x=1.2cm,y=0.9cm,
every info/.style={font=\tiny},
font=\scriptsize,
small circuit symbols,
circuit declare symbol=sR, 
       set sR graphic={fill=white,draw,shape=circle,minimum size=5mm
}
    ]
    %--------------------------------------------------------------------Circuit
% Contact Nodes
\foreach \contact/\x in {1/2,2/4}
{
 \node [contact] (L1P\contact) at (\x,0) {};    %L1Px Line 1 Contact Point \x
 \node [contact] (L2P\contact) at (\x,3) {};    %L1Px Line 1 Contact Point \x
}

\draw (5.5,1.5) node [op amp, thick,scale=1] (opamp) {};
\draw (L1P1) node[rground, scale=1] {};

\draw (0,3) to [sV=$Us_i$] (0,0);

\draw (0,0) -- (2,0);

\draw (0,3) to [
    black, sR={black,near start,info={$U_{NRi}$},
            pattern=north west lines,pattern color = black!80,scale=1}, 
    resistor={near end,info=$R_i$,scale=0.9}
    ] (L2P1);

\draw (L2P1) to [
    resistor={near start,info=$R_1$,scale=0.9}, 
    black, sR={black,near end, 
            info=left:{$U_{NR_1}$},pattern=north west lines,
            pattern color = black!80,scale=1}
    ] (L1P1);

\draw (L1P1) to [
    resistor={near start,info=$R_2$,scale=0.9},
    black, sR={near end,info={$U_{NR_2}$},
            pattern=north west lines,pattern color = black!80,scale=1}
    ] (L1P2);
% ----------------------------------------One possibility for the Noise Source.
    % Here my version of the Symbol, but I found very ineffective. Very manual.
\path (L1P2) to [black,sR={black,
           pattern=north west lines,pattern color = blue!80}] (4,2.55);
\path (4,0.45) to [black, sR={black,
           info=left:{\tiny$I_{Nop}$},pattern=north west lines,
           pattern color = blue!80}] (L2P2);

\draw (L1P2) -- (4,1.04); %Disadvantage
\draw (L2P2) -- (4,1.96); %Disadvantage
%--------------------------------------------------------------
\draw (L2P2) to [
black,sR={black,info={$U_{Nop}$},pattern=north west lines,pattern color = black}
] (L2P1);

\draw (L2P2) -- (4.5,3) -- (opamp.-);
\draw (L1P2) -- (4.5,0) -- (opamp.+) (opamp.out) node [ right ] {$Us_{o}$}; 
    %-------------------------------------------------Ende der Schaltung    
    \end{tikzpicture}%}
    \end{center}
    \end{document}
  • 1
    Welcome to TeX.SX! Please add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}. here is important to know which tikz-packages you use ... – Mensch Jul 27 '13 at 14:26
  • Thank you, i made the modification. When I will have 10 points, I will add an Image, because I think it clarify a lot. – Christian Jul 28 '13 at 7:47
3

I found a solution to my problem using geometric concepts, but the code is a little large. I will like to generate something like a function, any help. Here is the Code. You Only need two points and the code draw the Noise Current Source. The First Coordinate always is the point up other left.

\documentclass{article} 
\usepackage{german, ngerman}  
\usepackage[ngerman]{babel}                              
\usepackage{selinput}
\SelectInputMappings{
germandbls={ß},}

\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usepackage{tkzexample}
\usepackage{pgfplots}
\usepackage{color}
\usepackage{colortbl}
\usepackage{graphicx}
\usepackage[european]{circuitikz}
\usepackage{siunitx}

\usetikzlibrary{intersections} 
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{patterns}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.ee}
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{shapes,snakes}  %New Library

\setlength\parindent{0pt}


\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{figure}[h]
\begin{center}
\begin{tikzpicture} [
circuit ee IEC,
x=1cm,y=2cm,
every info/.style={font=\tiny},
font=\scriptsize,
small circuit symbols,
circuit declare symbol=sR, 
     set sR graphic={fill=white,draw,shape=circle,minimum size=5mm}
   ]
   %---------------------------------------------------------------Contact Points
% Contact Nodes
\foreach \contact/\x in {1/1}
{
\node [contact] (L1P\contact) at (\x,0) {};     %L1Px Line 1 Contact Point \x
\node [contact] (L2P\contact) at (\x,3) {};     %L1Px Line 1 Contact Point \x
}
\draw (L1P1) node[rground, scale=1] {};

%%%%%%%% Probando sin Funcion  Codigo Final  %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------------------------------------------- Drawing the Stromrauschquelle
%--------------------------------------------------Coordinate Calculations
\coordinate (A) at (L2P1);
\coordinate (B) at (L1P1);
\coordinate (C) at ($(A)!0.5!B)$);
\node [name path = Circle,opacity=0][sR,scale=2] (P) at (C) {};
    %-------------------------------------------------Intersection Calculations
\path [name path=Line] (A)--(B);
 \path [name intersections={of=Line and Circle}];
\coordinate (D) at (intersection-1);
\coordinate (E) at (intersection-2);
% Calculating the new centers of the circles.
\coordinate (F) at ($(D) !0.30!(C)$);   
\coordinate (G) at ($(C) !0.70!(E)$);      
% Calculating Radio of the circles based on the original circle.
\draw let \p1 = ($(D)-(C)$),
          \n0={veclen(\x1,\y1)}
          in 
          node[draw,name path = Circle1,circle,minimum size = 2*\n0,
          pattern=north west lines,pattern color = blue!80] (P1) at (F) {}
          node[draw,name path = Circle2,circle,minimum size = 2*\n0,
          pattern=north west lines,pattern color = blue!80] (P2) at (G) {};

% Two Path Lines pro calculate the intersection H and I for the lines.
    % This is needed because our figure can rotate.
\draw [name path = Line1, draw=none] (A) -- (D);      
\draw [name path = Line2, draw=none] (B) -- (E);     
 \path [name intersections={of=Line1 and Circle1}];
 \coordinate (H) at (intersection-1);  
\path [name intersections={of=Line2 and Circle2}];
\coordinate (I) at (intersection-1);
% Now  we can choose which line would we want for the lines between A-H and B-I
\draw (A) -- (H);
\draw (B) -- (I);   


    \end{tikzpicture}
    \end{center}
    \caption{Stromquelle Stufe 1}
    \label{Fig:IN01}
    \end{figure}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.