19 votos

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

¿Existe una forma mejor que no sea escribiendo archivos netlist. algo así 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:

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

5 votos

Por cierto, tu código de ejemplo me parece un netlist. Sólo define un par de partes (con presumiblemente una biblioteca que le dice a la herramienta cuántos terminales tiene cada una) y luego dice qué terminales están conectados entre sí. Si lo utilizas un poco, puede que incluso encuentres que es más fácil poder nombrar los nodos y conectar los terminales a los nodos en lugar de a otros terminales.

0 votos

¿Puedes editar tu pregunta para aclarar si te refieres a esquemas legibles por humanos? Si es así, sospecho que la respuesta es "no". Parte de la alegría de los buenos esquemas es que el dibujante ha presentado el dibujo en un formato lógico y legible.

3 votos

Hay un gran abismo entre "es posible" y "es útil", para muchos temas.

30voto

bcmcfc Puntos 346

Si está familiarizado con \$\LaTeX\$ puede utilizar circuitikz para dibujar bonitos circuitos escribiendo código.

enter image description here

Ejemplo .
Más ejemplos

4 votos

Además, como ya se ha dicho, dibujar un buen esquema requiere cierta intuición humana. Sin embargo, si estás dibujando muchos circuitos similares, el uso de laTeX y circuitikz te permitirá construir una plantilla de diseño y personalizarla con detalles específicos.

2 votos

El espacio que falta entre el número y la unidad queda fatal.

0 votos

@Loong Siempre puedes poner espacio entre los números y las unidades si quieres. \ o \, puede añadir espacio en el entorno matemático de latex

15voto

Potato Monster Puntos 6

Consulte SKiDL ( https://github.com/xesscorp/skidl ), esto va en la línea que estás pensando.

Editar (como se requiere): SKiDL permite la descripción procedimental de todos los circuitos (en lugar de sólo los digitales), en lugar de introducir gráficamente su esquema. La salida de la lista de redes puede ser importada en el software de diseño. También realiza comprobaciones ERC, y es extensible. Esto significa, por ejemplo, que puedes 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 conlleva.

0 votos

Se ha añadido un poco más de información.

0 votos

Otras opciones de dibujo esquemático de Python son SchemDraw y lcapy .

13voto

RWH Puntos 21

Muchos programas pueden dibujar un esquema. Ninguno que yo conozca puede dibujar un buen esquema: Uno que enfatice la información más importante, y organice el circuito de forma clara y fácil de entender.

Si sólo busca un lenguaje de descripción de hardware (sin salida de esquema gráfico), VHDL y Verilog se utilizan ampliamente para definir circuitos (digitales) que se implementan en circuitos integrados, y también pueden utilizarse para el diseño a nivel de placa.

0 votos

Verilog-A también puede utilizarse para describir y modelar/simular circuitos analógicos, aunque no conozco ningún simulador no comercial.

0 votos

He diseñado algunas placas en las que era más fácil describir las interconexiones de forma programada que con un esquema; utilizaba un programa para generar una lista de redes y luego la cargaba en el software de PCB. Si un editor de esquemas pudiera importar una lista de redes y mostrar un ratsnest para las conexiones que aún no han tenido cables "reales" o etiquetas de red explícitas dibujadas, eso podría ser útil en esos casos, al menos para las partes del esquema donde los cables reales tenían más sentido que los "cables de aire".

0 votos

@Shamtam, he utilizado Veriolog A, pero sólo como lenguaje de simulación. ¿Hay sistemas que puedan sintetizar un circuito a partir de una descripción de Verilog A?

9voto

SitWalkStand Puntos 620

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

Un ejemplo que utiliza 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 se puede generar un esquema a partir del modelo, normalmente se hace en una GUI que anota los componentes con información de posición y orientación.

4voto

Pwnna Puntos 126

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

Puede utilizarse junto con circuitikz que fue sugerido por nidhin . circuitikz utiliza el más moderno pgf/TikZ sistema gráfico. La comunidad stackexchange ha usuarios muy activos de cirkuitikz pero hay más soluciones en TeX .

Source: https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/quick.png

Imagen de https://ece.uwaterloo.ca/~aplevich/Circuit_macros/html/examples.html .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X