¿Es posible dibujar circuitos a través del código?

16

Hay una mejor manera de no escribir archivos de lista de redes. algo como:

Define Battery1 As a Battery
Define Resistor1 As a Resistor

Connect Battery1 First Terminal to Resistor1 Second Terminal
Connect Resistor1 First Terminal to Battery1 Second Terminal

EDITAR:

Encuentro las respuestas bastante útiles. Será genial si hay una manera de simular el circuito producido por el código.

    
pregunta user37421

7 respuestas

27

Si está familiarizado con \ $ \ LaTeX \ $, puede usar circuitikz para dibujar buenos circuitos escribiendo un código .

Ejemplo .
Más ejemplos

    
respondido por el nidhin
14

Echa un vistazo a SKiDL ( enlace ), esto está en la línea que estás pensando.

Editar (según sea necesario): SKiDL permite la descripción del procedimiento de todos los circuitos (en lugar de solo digital), en lugar de ingresar gráficamente su esquema. La salida de la lista de redes se puede importar al software de diseño. También realizará verificaciones de ERC, y es extensible. Esto significa, por ejemplo, que podría escribir un filtro una vez y luego reutilizarlo en diferentes proyectos en lugar de dibujar cada vez. Escrito en Python, con todo el apoyo que viene con eso.

    
respondido por el awjlogan
13

Muchos programas pueden dibujar un esquema. Ninguno de los que conozco puede dibujar un buen esquema: uno que enfatice la información más importante y organice el circuito de manera clara y fácil de entender.

Si solo está buscando un lenguaje de descripción de hardware (sin salida esquemática gráfica), VHDL y Verilog se usan ampliamente para definir circuitos (digitales) que se implementarán en los circuitos integrados, y también se pueden usar para el diseño a nivel de placa.

    
respondido por el The Photon
9

Su ejemplo se parece mucho a modelica , un lenguaje orientado a objetos para simulación basado en la creación de bloques y la conexión de puertos entre los bloques.

Un ejemplo utilizando la biblioteca de componentes eléctricos (de maplesoft.com ),

encapsulated model ChuaCircuit "Chua's circuit, ns, V, A"
  import Modelica.Electrical.Analog.Basic;
  import Modelica.Electrical.Analog.Examples.Utilities;
  import Modelica.Icons;
  extends Icons.Example;

  Basic.Inductor L(L=18);
  Basic.Resistor Ro(R=12.5e-3);
  Basic.Conductor G(G=0.565);
  Basic.Capacitor C1(C=10, v(start=4));
  Basic.Capacitor C2(C=100);
  Utilities.NonlinearResistor Nr(
    Ga(min=-1) = -0.757576,
    Gb(min=-1) = -0.409091,
    Ve=1);
  Basic.Ground Gnd;
equation 
  connect(L.p, G.p);
  connect(G.n, Nr.p);
  connect(Nr.n, Gnd.p);
  connect(C1.p, G.n);
  connect(L.n, Ro.p);
  connect(G.p, C2.p);
  connect(C1.n, Gnd.p);
  connect(C2.n, Gnd.p);
  connect(Ro.n, Gnd.p);
end ChuaCircuit;

Aunque puede generar un esquema del modelo, normalmente esto se hace en una GUI que anota los componentes con información de posición y orientación.

    
respondido por el Pete Kirkham
4

Cirkuit es un editor para convertir un descripción de texto simple a un diagrama de circuito. Proporciona un conjunto de macros M4 para símbolos eléctricos.

Se puede utilizar junto con circuitikz que fue sugerido por nidhin . circuitikz utiliza el más moderno pgf / TikZ . La comunidad stackexchange tiene usuarios muy activos de cirkuitikz , pero hay más soluciones en TeX .

Imagende enlace .

    
respondido por el Jonas Stein
2

PSTricks es otra biblioteca para usuarios de TeX. Incluso puede realizar cálculos matemáticos complicados, como ecuaciones diferenciales.

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl,pst-circ}
\psset
{
    dipolestyle=zigzag,
    labelangle=0,
    labeloffset=-.9,
    intensitylabeloffset=-.4,
    tensionstyle=pm,
    tensionoffset=.9,
    tensionlabeloffset=.9,
    %tensioncolor=red,
    %tensionlabelcolor=blue,
}
\begin{document}
\begin{pspicture}[showgrid=none](12,-12)
	\pstGeonode[PosAngle={135,90,45,0,-45,-90,-135,180,45}]
		(2,-2){A}
		(6,-2){B}
		(10,-2){C}
		(10,-6){D}
		(10,-10){E}
		(6,-10){F}
		(2,-10){G}
		(2,-6){H}
		(6,-6){I}
	%
	\resistor[intensitylabel=$i_1$,tensionlabel=$V_{HA}$](H)(A){$R_1$}
	\resistor[tensionlabel=$V_{AB}$](A)(B){$R_2$}
	\vdc[tensionlabel=$V_{BC}$](B)(C){$E_1$}
	\resistor[tensionlabel=$V_{CB}$](C)(D){$R_3$}
	%
	\resistor[intensitylabel=$i_2$,tensionlabel=$V_{HI}$](H)(I){$R_4$}
	\vdc[tensionlabel=$V_{ID}$](I)(D){$E_2$}
	%
	\resistor[intensitylabel=$i_3$,tensionlabel=$V_{HG}$](H)(G){$R_5$}
	\newSwitch[ison=true,tensionlabel=$V_{GF}$](G)(F){$S_2$}
	\wire(F)(E)
	\resistor[tensionlabel=$V_{DE}$,dipoleconvention=generator](E)(D){$R_6$}
	%
	\vdc[tensionlabel=$V_{FI}$,dipoleconvention=generator](I)(F){$E_3$}
	\newSwitch[intensitylabel=$i_4$,tensionlabel=$V_{BI}$,ison=false](B)(I){$S_1$}	
\end{pspicture}
\end{document}

    
respondido por el God Must Be Crazy
1

Sí. Puedes usar HDL para describir tu circuito a través del código. Puedes usar el verilador, Xilinx o cualquier otro software o puedes usar el enlace (que funciona en línea sin tener que instalar nada en tu PC).

    
respondido por el Shunya

Lea otras preguntas en las etiquetas