我正在为我所在的学校撰写论文,我需要绘制以下运算放大器配置:
- 反相配置
- 非反相配置
- 差分配置
- 反相加法放大器
- 非反相加法放大器
到目前为止,我只能使用以下代码绘制第一个配置:
\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 开始。我们将从锚点垂直向下画-
——我们已将节点命名OA
为OA.-
。我们还需要连接 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
最好放在序言中。样式应该与整个文档主体保持一致,因此避免在每个电路中都说明样式通常是最佳策略。