如何使用 circuitikz 绘制运算放大器图表?

如何使用 circuitikz 绘制运算放大器图表?

我正在为我所在的学校撰写论文,我需要绘制以下运算放大器配置:

  1. 反相配置
  2. 非反相配置
  3. 差分配置
  4. 反相加法放大器
  5. 非反相加法放大器

到目前为止,我只能使用以下代码绘制第一个配置:

\begin{circuitikz}
\draw (0, 0) node[op amp] (opamp) {}
      (opamp.-) to[short,-*] ++(-1, 0) coordinate(A)
      (opamp.+) -| ++(-1,-1) node[ground](B){}
      (opamp.out) to[short,*-o] ++(1, 0) coordinate(C)
      (A) to[R,l_=$R_1$,-o] ++(-2, 0) -- ++(-1, 0) coordinate(D) to [V<=$v_1$] (D |- B) node[ground]{}
      (A) |- ++(1,1) coordinate[yshift=1ex] (L1) to[R=$R_2$] ++(2,0) -| (opamp.out) to[short,-o] ++(1,0)
;
\end{circuitikz}

这是我得到的结果: 在此处输入图片描述

有人可以帮助我提供其他配置的代码,并保持与我得到的相同风格吗?

提前致谢!塞缪尔。

答案1

好的。让我在这里复制我添加到手册中的新教程。你可以找到它circuitikz在页面上(在 PDF 中您还会发现有关如何重新使用该形状的建议)。

教程:非反相运算放大器

现在让我们尝试绘制一个基于运算放大器的非反相放大器;例如,规范的实现可以是,这是来自“电子教程”显然,绘制电路的风格和形式往往取决于个人喜好,甚至更重要的是,取决于你关注的细节;如果你要绘制非反相放大器,那么绘制非反相放大器的方式会有所不同。解释它是如何工作的或者如果你只是在更复杂的电路中使用它,假设读者熟知其操作。无论如何,最终目标是拥有一个像下面这样的电路,以便于重复使用。

在此处输入图片描述

我们必须从一个通用点开始绘图。考虑到这个想法是拥有一个可重复使用的块,而不是定位运算放大器并围绕它构建,我们将从输入“极点”开始:

\begin{circuitikz}[]
    \draw (0,0) node[above]{$v_i$} to[short, o-] ++(1,0)
    node[op amp, noinv input up, anchor=+](OA){\texttt{OA1}}
    ;
\end{circuitikz}

在此处输入图片描述

在此代码片段中,请注意,唯一的绝对坐标是第一个;这将使我们能够在多个位置“复制和粘贴”电路,或为其创建宏。我们在其上方放置一个文本节点,然后绘制一条带有极点的导线到相对(1,0)坐标:换句话说,我们移动向右移动 1 个单位,画出短路,与导线相同。 的使用to[short...]简化了极点的位置,但请注意,我们也可以这样写:

\draw (0,0) node[above]{$v_i$} node[ocirc]{} -- ++(1,0) ...

结果相同。

第二步是定位运算放大器。我们可以查看手册并查看组件的描述:

在此处输入图片描述

我们注意到组件的类型(它是一个节点类型的组件,所以我们必须使用 node它来定位它)和可用的“锚点”:我们可以用来定位形状或连接的点。并非所有锚点都是明确地打印在描述框中;你应该进一步阅读手册,你会看到一个“”成分锚点”部分包含相关信息。

无论如何,运算放大器必须与+ 锚点连接到我们的输入线,因此我们anchor=+在选项列表中说;这会移动整个元素,以便命名的锚点位于路径的当前位置。此外,通常形状在底部有反相输入,我们希望它反过来,所以我们也在noinv input up定义节点的键中使用。我们也可以使用翻转形状yscale=-1,但在这种情况下,我们应该考虑对锚点和文本的影响;请参阅部分镜像和翻转在手册中。

现在我们可以画电阻了;我们从 R1 开始。我们将从锚点垂直向下画-——我们已将节点命名OAOA.-。我们还需要连接 R2,因此我们执行以下操作:

  • 画一根向下的电线,并标记我们想要连接反馈电阻的点;
  • 然后画出 R1,最后
  • 绘制地面节点。
\begin{circuitikz}[scale=0.8, transform shape]
    \draw (0,0) node[above]{$v_i$} to[short, o-] ++(1,0)
    node[op amp, noinv input up, anchor=+](OA){\texttt{OA1}}
    (OA.-) -- ++(0,-1) coordinate(FB)
    to[R=$R_1$] ++(0,-2) node[ground]{}
    ;
\end{circuitikz}

在此处输入图片描述

现在我们只差反馈电阻了。我们将使用正交坐标, 写作:

\draw (FB) to[R=$R_2$] (FB -| OA.out) -- (OA.out);

其含义如下:

  • 将当前点移动到名为的坐标FB
  • 从这里放置一个电阻器,标签为 R2...
  • 水平方向上的坐标FB和垂直方向上的坐标OA.out-|坐标运算非常容易记忆;
  • 继续绘制OA.out

您可以使用单独的\draw命令,也可以继续您正在写的路径;选择只是个人喜好,但请注意,它可能会影响极点的绘制(如果您注意到奇怪的事情,请参阅手册中的“极点(也称为节点)”部分)。

最后,我们添加输出和几个极点:

\begin{circuitikz}[scale=0.8, transform shape]
    \draw (0,0) node[above]{$v_i$} to[short, o-] ++(1,0)
    node[op amp, noinv input up, anchor=+](OA){\texttt{OA1}}
    (OA.-) -- ++(0,-1) coordinate(FB)
    to[R=$R_1$] ++(0,-2) node[ground]{}
    (FB) to[R=$R_2$, *-] (FB -| OA.out) -- (OA.out)
    to [short, *-o] ++(1,0) node[above]{$v_o$}
    ;
\end{circuitikz}

在此处输入图片描述

获得最终外观的最后一步是添加一些样式。我们希望运算放大器填充浅青色,并且我们希望标签与设备左侧对齐:

\ctikzset{amplifiers/fill=cyan!20, component text=left}
\begin{circuitikz}[scale=0.8, transform shape]
    \draw (0,0) node[above]{$v_i$} to[short, o-] ++(1,0)
    node[op amp, noinv input up, anchor=+](OA){\texttt{OA1}}
    (OA.-) -- ++(0,-1) coordinate(FB)
    to[R=$R_1$] ++(0,-2) node[ground]{}
    (FB) to[R=$R_2$, *-] (FB -| OA.out) -- (OA.out)
    to [short, *-o] ++(1,0) node[above]{$v_o$}
    ;
\end{circuitikz}

在此处输入图片描述

不过,选择样式的命令\ctikzset最好放在序言中。样式应该与整个文档主体保持一致,因此避免在每个电路中都说明样式通常是最佳策略。

相关内容