Esquemático de circuito

Acerca de los esquemáticos de circuito

Un esquemático de circuito es la representación gráfica estándar de un circuito electrónico — componentes dibujados como símbolos estandarizados, conectados por cables, con suficiente información para construir o simular el circuito. Los ingenieros electrónicos los usan a lo largo del ciclo de vida del producto: desde el concepto inicial hasta la revisión del layout PCB y la documentación de hojas de datos. Schematex sigue IEEE Std 315-1975 / ANSI Y32.2 e IEC 60617 para los símbolos de los componentes.

El DSL tiene dos modos. El modo netlist (recomendado) es al estilo SPICE: se listan los componentes y los nodos a los que se conectan, y el motor dispone todo automáticamente — cada línea es autónoma, sin estado espacial que rastrear. El modo posicional es para dibujo manual: los componentes se encadenan en una dirección como en Schemdraw. Ambos producen el mismo SVG. Para diagramas generados (por ejemplo, por un LLM), use siempre el modo netlist — tiene con mucho la menor superficie de error.

circuit·§ IEEE 315
↘ preview
100%
CE Amp (netlist) Circuit schematic with 6 components CE Amp (netlist) +V19VRc2.2kRb100kQ1Re1k
UTF-8 · LF · 6 lines · 97 chars✓ parsed·0.4 ms·5.0 KB SVG

1. Un circuito mínimo (modo netlist — recomendado)

El circuito útil más pequeño: una fuente de tensión, una resistencia y un condensador a tierra — un filtro pasa-bajos RC.

circuit·§ IEEE 315
↘ preview
100%
RC Low-Pass Circuit schematic with 4 components RC Low-Pass +V15VR11kC1100n
UTF-8 · LF · 4 lines · 67 chars✓ parsed·0.3 ms·3.9 KB SVG

Tres reglas cubren aproximadamente el 90% del uso de netlist:

  1. Empiece con circuit "Título" netlist (la palabra clave netlist activa este modo).
  2. Cada línea es componenteId nodoA nodoB valor — un componente, los dos (o más) nodos con nombre a los que se conecta, y luego su valor.
  3. Dos componentes que comparten un nombre de nodo están cableados entre sí. 0, gnd o GND es el nodo de tierra (se dibuja un símbolo de tierra automáticamente).

El prefijo del identificador de componente establece el símbolo: R*→resistencia, C*→condensador, L*→inductor, V*→fuente de tensión, D*→diodo, Q*→BJT. Cuando el prefijo es ambiguo, añada type= (por ejemplo, X1 a b type=opamp). Nunca se calculan coordenadas — el motor deduce la posición a partir de la conectividad.

Los comentarios deben comenzar con # en su propia línea.


2. Componentes

2.1 Sintaxis del modo netlist

Una línea netlist tiene la forma:

componentId node... [value] [type=…] [label="…"]

Los nodos posicionales van primero; un token al final que no parece un nodo se convierte en el valor. Ejemplo — un transistor (4 nodos) y una resistencia:

Q1 c b e npn        # collector, base, emitter nodes + model
Rc vcc c 2.2k       # two nodes + value

Indicación de orientación opcional. El motor orienta automáticamente los símbolos según su función (fuentes hacia arriba, tierra hacia abajo, el resto horizontal). Para ajustar un símbolo individual, añada dir=right|left|up|down — la conectividad no cambia, solo rota la orientación del símbolo:

C1 out 0 100n dir=down    # draw C1 as a shunt cap hanging to ground

Esta es la capa de control de layout ligero (como la orientación por componente de Lcapy): la conectividad netlist hace el trabajo pesado, dir= solo refina la apariencia. Para control geométrico completo, use el modo posicional que se describe más abajo.

2.2 Sintaxis del modo posicional (dibujo manual)

El modo posicional es para disponer manualmente un esquemático de forma geométrica. Prefiera el modo netlist para la salida generada — el modo posicional requiere rastrear un "cursor" en movimiento entre líneas, lo que es propenso a errores para los LLMs.

Una línea de componente con nombre tiene la forma:

id: type direction [value="…"] [label="…"]

Un componente anónimo omite el prefijo id: — el parser asigna un ID automático.

R1: resistor right value="4.7k" label="R1"
capacitor down value="100n"

La dirección es una de right (predeterminado), left, up, down. Controla hacia dónde se extiende el componente desde la posición actual del cursor.

2.3 Componentes pasivos

Tipo DSLDescripción
resistorZigzag (ANSI) o rectángulo (IEC)
potentiometerResistencia + flecha de cursor, 3 pines
rheostatResistencia variable de 2 pines
thermistor_ntcTermistor NTC (también: therm, ntc)
thermistor_ptcTermistor PTC (también: ptc)
ldrResistencia dependiente de la luz
varistorResistencia dependiente de la tensión
fuseFusible estándar
fuse_slowFusible de acción lenta (designación T)
capacitorCondensador no polar
electrolytic_capCondensador polar/electrolítico (también: ecap)
variable_capCondensador variable
inductorInductor de núcleo de aire
inductor_ironInductor de núcleo de hierro
inductor_ferriteInductor de núcleo de ferrita
variable_inductorInductor variable
ferrite_beadPerla de ferrita EMI
crystalOscilador de cristal de cuarzo (también: xtal)
transformerBobinas acopladas (también: xfmr)
circuit·§ IEEE 315
↘ preview
100%
Passive components gallery Circuit schematic with 11 components Passive components gallery 1k100n10u
UTF-8 · LF · 15 lines · 335 chars✓ parsed·0.4 ms·3.8 KB SVG

2.4 Fuentes y alimentación

Tipo DSLDescripción
voltage_sourceCírculo + polaridad (también: vsource)
current_sourceCírculo + flecha (también: isource)
ac_sourceCírculo + símbolo sinusoidal (también: acsource)
batteryLíneas terminales largas/cortas alternas
vccFlecha de rail de alimentación (apuntando hacia arriba)
groundTierra de red — 3 líneas decrecientes (también: gnd)
gnd_signalTierra de señal — triángulo sólido
gnd_chassisTierra de chasis
gnd_digitalTierra digital
circuit·§ IEEE 315
↘ preview
100%
Sources and power gallery Circuit schematic with 18 components Sources and power gallery +5V9V120V
UTF-8 · LF · 26 lines · 381 chars✓ parsed·0.3 ms·5.1 KB SVG

2.5 Semiconductores — diodos

Tipo DSLDescripción
diodeTriángulo + barra de cátodo
zenerDiodo + barra de cátodo doblada
schottkyDiodo + barra en S
ledDiodo + flechas de emisión hacia afuera
photodiodeDiodo + flechas de luz hacia adentro
varactorDiodo + condensador variable
tvs_diodeTVS bidireccional (dos barras dobladas)
bridge_rectifierPuente de 4 diodos, 4 pines
circuit·§ IEEE 315
↘ preview
100%
Diode types gallery Circuit schematic with 13 components Diode types gallery
UTF-8 · LF · 15 lines · 207 chars✓ parsed·0.2 ms·4.6 KB SVG

2.6 Semiconductores — transistores

Tipo DSLDescripción
npnBJT NPN (también: transistor, bjt_npn)
pnpBJT PNP (también: bjt_pnp)
darlington_npnPar Darlington NPN
darlington_pnpPar Darlington PNP
nmosMOSFET de enriquecimiento canal N (también: mosfet_n)
pmosMOSFET de enriquecimiento canal P (también: mosfet_p)
nmos_depletionMOSFET de agotamiento canal N
jfet_nJFET canal N
jfet_pJFET canal P
igbtIGBT
scrSCR / tiristor
triacTRIAC
diacDIAC
phototransistorNPN con flechas de luz
optocouplerLED + fototransistor en caja de aislamiento
circuit·§ IEEE 315
↘ preview
100%
Transistor types gallery Circuit schematic with 10 components Transistor types gallery
UTF-8 · LF · 15 lines · 216 chars✓ parsed·0.2 ms·4.6 KB SVG

2.7 ICs analógicos y amplificadores operacionales

Tipo DSLDescripción
opampTriángulo: entradas +/−, salida
comparatorMisma forma, salida de colector abierto
schmitt_bufferBuffer + símbolo de histéresis
tri_state_bufferBuffer + pin de habilitación
instrumentation_ampBloque INA de tres op-amps
generic_icRectángulo configurable con pines etiquetados (también: ic)
voltage_regulatorBloque de 3 terminales: IN/GND/OUT (también: reg)
dc_dc_converterBloque de 2 puertos con etiqueta DC/DC
555_timerBloque de patillaje del 555 de 8 pines (también: timer555)
circuit·§ IEEE 315
↘ preview
100%
Analog IC gallery Circuit schematic with 10 components Analog IC gallery ++IC12348765
UTF-8 · LF · 14 lines · 227 chars✓ parsed·0.2 ms·3.8 KB SVG

2.8 Interruptores y relés

Tipo DSLDescripción
switch_spstUn polo, un tiro
switch_spdtUn polo, dos tiros
switch_dpdtDos polos, dos tiros
push_noPulsador normalmente abierto
push_ncPulsador normalmente cerrado
relay_coilBobina de relé (rectángulo de 2 pines)
relay_noContacto de relé normalmente abierto
relay_ncContacto de relé normalmente cerrado
circuit·§ IEEE 315
↘ preview
100%
Switch and relay gallery Circuit schematic with 12 components Switch and relay gallery
UTF-8 · LF · 17 lines · 297 chars✓ parsed·0.2 ms·4.2 KB SVG

2.9 Electromecánicos y medición

Tipo DSLDescripción
motorCírculo + M
speakerCono + caja
microphoneSímbolo de cápsula
buzzerZumbador piezoeléctrico
ammeterCírculo + A
voltmeterCírculo + V
wattmeterCírculo + W
oscilloscopeCírculo + forma de onda

2.10 Conectores y anotaciones

Tipo DSLDescripción
wireSegmento de cable simple
dotPunto de unión (marcador de unión en T)
labelEtiqueta de red / bandera
portPuerto con nombre (círculo hueco)
test_pointMarcador TP
no_connectX — pin intencionalmente no conectado
antennaStub de antena
circuit·§ IEEE 315
↘ preview
100%
Passive components Circuit schematic with 7 components Passive components R11kC1100n9V
UTF-8 · LF · 9 lines · 183 chars✓ parsed·0.3 ms·3.4 KB SVG

3. Cableado y ramificación

3.1 Segmentos de cable

wire direction [N] dibuja un cable desde el cursor actual en la dirección indicada. Un número opcional establece la longitud en píxeles.

wire right
wire down 40
wire left 20

3.2 Salto del cursor con at:

at: id.end mueve el cursor a un ancla con nombre sin dibujar nada. Úselo para ramificar desde un componente colocado previamente.

R1: resistor right value="10k"
at: R1.end
C1: capacitor down value="100n"

Sufijos de ancla con nombre: end, start. Los componentes conservan su ID en todo el diagrama, por lo que puede volver a cualquier componente colocado previamente.

3.3 Puntos de unión

Coloque un dot (o use net NAME: dot) para marcar una unión en T — un punto donde se encuentran tres o más cables. Sin un punto, los cables cruzados se dibujan como un cruce (sin conexión).

R1: resistor right
dot
wire right           # continues from R1.end
at: R1.end
C1: capacitor down   # branches down from the same point

3.4 Redes con nombre

net NAME declara una red con nombre. net NAME: dot declara la red y coloca un punto de unión en el cursor actual, recordando esa ubicación. Posteriormente, at: NAME vuelve al ancla de esa red.

net VOUT: dot
R2: resistor right value="10k"
at: VOUT
C1: capacitor down value="470n"

3.5 Etiquetas de red

label "text" direction? coloca una etiqueta de texto en la posición actual del cursor. Las etiquetas no avanzan el cursor. Son útiles para nombrar rails de alimentación o conexiones entre hojas.

label "VCC" up
label "GND" down
circuit·§ IEEE 315
↘ preview
100%
RC filter Circuit schematic with 9 components RC filter +5VR11kVoutC1100n
UTF-8 · LF · 11 lines · 217 chars✓ parsed·0.3 ms·3.4 KB SVG

4. Modo netlist

Añada netlist después del título en la línea de encabezado para cambiar al análisis de netlist al estilo SPICE. El motor de auto-layout calcula las posiciones de los componentes a partir de la conectividad de la red.

circuit "Low-pass filter" netlist

4.1 Formato de línea netlist

Cada línea es: ID net1 net2 [net3…] [value] [key=value…]

  • ID — identificador de componente. La primera letra determina el tipo predeterminado (convención de prefijo SPICE).
  • net1, net2, … — nombres de red a los que se conectan los pines. Los nombres de red que coinciden con 0, gnd, ground, earth, pe, agnd, dgnd, gnda, gndd, vss o com (sin distinción de mayúsculas/minúsculas, con sufijo _<palabra> o numérico opcional — por ejemplo, gnd_ref, AGND_DIG, EARTH1) se canonicalizan todos a la red de tierra.
  • value (token simple opcional) — valor del componente o nombre del modelo.
  • key=value (opcional) — anulaciones de label=, value=, type=.

4.2 Prefijo SPICE → tipo de componente

PrefijoTipo predeterminadoOrden de pines
Rresistorp1, p2
Ccapacitorp1, p2
Linductorp1, p2
Ddiodeánodo (inicio), cátodo (fin)
Vvoltage_sourcemás, menos
Icurrent_sourcemás, menos
Qnpnc, b, e
Mnmosd, g, s
Jjfet_nd, g, s
Sswitch_spstp1, p2
Ffusep1, p2
Bbatterymás, menos
Krelay_coilp1, p2
U, Xgeneric_icpersonalizado mediante pins=
Wwireinicio, fin
Tterminal_blockpersonalizado mediante pins= (también type=junction_box)

Alcance: el circuito de Schematex cubre únicamente esquemáticos eléctricos (IEEE 315 / IEC 60617). Los esquemáticos hidráulicos y neumáticos (ISO 1219) utilizan una gramática visual fundamentalmente diferente — envolventes de válvulas direccionales, símbolos de cilindros, estilos de línea para presión/retorno/drenaje — y no son compatibles con este motor. Los prefijos hidráulicos como EV* (electroválvula), BOMBA* (bomba), TANK*, DIPOSIT* serán rechazados con un error de "no se puede inferir el tipo".

4.3 Anulación del modelo de transistor

Para las líneas Q, un nombre de modelo al final anula el tipo:

Q1 c b e npn      # NPN BJT
Q2 c b e pnp      # PNP BJT
M1 d g s nmos     # N-channel MOSFET
M2 d g s pmos     # P-channel MOSFET

Para las líneas D, de manera similar:

D1 anode cathode zener
D2 anode cathode led
D3 anode cathode schottky
D4 anode cathode photodiode

4.4 Ejemplo de netlist

circuit·§ IEEE 315
↘ preview
100%
CE Amp (netlist) Circuit schematic with 6 components CE Amp (netlist) +V19VRc2.2kRb100kQ1Re1k
UTF-8 · LF · 6 lines · 97 chars✓ parsed·0.4 ms·5.0 KB SVG

5. Atributos

Tanto el modo posicional como el modo netlist aceptan estos atributos clave=valor:

AtributoAceptado porEfecto
label="…"todos los componentesEtiqueta de visualización (designador de referencia)
value="…"todos los componentesAnotación de valor (1kΩ, 100nF, 5V)
at=id.endcomponentes posicionalesInicia este componente en un ancla con nombre
length=Nwire, algunos pasivosLongitud en píxeles

En modo posicional, at= dentro de la línea del componente equivale a una línea at: precedente:

C1: capacitor down at=R1.end value="100n"

6. Etiquetas y comentarios

  • Título del diagrama: circuit "RC Filter" — solo en la primera línea.
  • Etiqueta del componente: atributo label="R1" — designador de referencia que aparece junto al símbolo.
  • Anotación de valor: value="4.7k" — se muestra junto o debajo del componente.
  • Etiqueta de red: label "VOUT" right — bandera de red independiente en el cursor actual.
  • Comentarios: # al inicio de una línea (después de los espacios iniciales).

7. Palabras reservadas y escape

Reservadas al inicio de línea (posicional): circuit (encabezado), at:, net, wire, label.

Reservadas en modo netlist: se aplican las mismas reglas de encabezado; todas las demás líneas son líneas de componentes SPICE.

Alias de red de tierra (solo netlist): 0, gnd, GND, Gnd, ground, Ground — todos tratados como el mismo nodo.

Los IDs de componentes deben coincidir con [a-zA-Z_][a-zA-Z0-9_]*. Los espacios en los valores deben ir entre comillas: value="10 kΩ".


8. Errores comunes

Usted escribióEl parser diceSolución
resistor right 1k (valor sin value=)1k se analiza como un indicador de atributo desconocido y se ignoraUse value="1k": resistor right value="1k"
at: R1.centercenter no es un sufijo de ancla reconocido — el cursor permanece en la posición actualUse at: R1.end o at: R1.start
wire 40 (sin dirección)La dirección toma el valor predeterminado right; la longitud 40 se aceptaSe recomienda la dirección explícita: wire right 40
R1 vcc out 10k en modo posicionalLa línea coincide con el patrón de tipo simple; R1 se lee como nombre de tipo y falla la búsquedaEn modo posicional, use R1: resistor right value="10k"
Q1 c b e (netlist, sin modelo)El tipo toma el valor predeterminado npn del prefijo Q — correctoOK; añada npn explícitamente para mayor claridad
net OUT y luego at: OUT sin net OUT: dotLa red OUT existe pero no tiene ancla; el salto no tiene destinoUse net OUT: dot para registrar la posición del cursor
label VCC up (etiqueta sin comillas)VCC se analiza como un token de dirección, luego up — el texto de la etiqueta se pierdePonga el texto entre comillas: label "VCC" up

9. Gramática (EBNF)

document        = header statement*

-- Positional mode --
header          = "circuit" ( WS quoted-string )? NEWLINE
statement       = blank | comment | component | wire | at | net-decl | label-stmt

component       = ( id ":" WS )? type WS direction? attrs* NEWLINE
wire            = "wire" ( WS direction )? ( WS integer )? NEWLINE
at              = "at:" WS anchor NEWLINE
anchor          = id "." ( "start" | "end" )
                | id                          // net name anchor

net-decl        = "net" WS id NEWLINE         // declare net only
                | "net" WS id ":" WS "dot" NEWLINE  // declare + place dot

label-stmt      = "label" WS quoted-string ( WS direction )? NEWLINE

component-attr  = "value=" quoted-string
                | "label=" quoted-string
                | "at=" anchor
                | "length=" integer

direction       = "right" | "left" | "up" | "down"
type            = // any value from §2 component tables

-- Netlist mode --
netlist-header  = "circuit" ( WS quoted-string )? WS "netlist" NEWLINE
netlist-stmt    = id WS net-ref+ ( WS kv-pair )* NEWLINE
                | comment
net-ref         = id | "0"                    // net name or ground alias
kv-pair         = id "=" ( quoted-string | bare-value )

id              = [a-zA-Z_] [a-zA-Z0-9_]*
integer         = [0-9]+
quoted-string   = '"' any-char-but-quote* '"'
comment         = "#" any NEWLINE

Fuente autorizada: src/diagrams/circuit/parser.ts y src/diagrams/circuit/netlist.ts. Si esto diverge del parser, el parser tiene precedencia — por favor, abra un issue.


10. Conformidad con estándares

Los esquemáticos de circuito de Schematex siguen IEEE Std 315-1975 / ANSI Y32.2 para las formas de los símbolos de componentes e IEC 60617 para las variantes internacionales. La sintaxis netlist sigue las convenciones de prefijo de SPICE (Berkeley SPICE3 / LTspice / ngspice).

Lo que está implementado hoy:

  • ✅ Conjunto completo de componentes pasivos: variantes de resistencias, condensadores, inductores, cristal, transformador
  • ✅ Fuentes y alimentación: fuente de tensión, fuente de corriente, fuente AC, batería, VCC, cuatro estilos de tierra
  • ✅ Familia de diodos: diodo, zener, schottky, LED, fotodiodo, varactor, TVS, puente rectificador
  • ✅ BJTs: NPN, PNP, Darlington NPN/PNP
  • ✅ FETs: NMOS/PMOS de enriquecimiento, NMOS de agotamiento, JFET canal N/P
  • ✅ Semiconductores de potencia: IGBT, SCR, TRIAC, DIAC
  • ✅ Optoelectrónica: fototransistor, optoacoplador
  • ✅ ICs analógicos: op-amp, comparador, buffer Schmitt, buffer tri-state, INA, IC genérico, regulador de tensión, convertidor DC-DC, temporizador 555
  • ✅ Interruptores: SPST, SPDT, DPDT, pulsador-NA, pulsador-NC
  • ✅ Relés: bobina, contacto NA, contacto NC
  • ✅ Electromecánicos: motor, altavoz, micrófono, zumbador
  • ✅ Medición: amperímetro, voltímetro, vatímetro, osciloscopio
  • ✅ Anotaciones: cable, punto, etiqueta, puerto, punto de prueba, sin-conexión, antena
  • ✅ DSL posicional: encadenamiento de direcciones, ramificación at:, declaraciones net
  • ✅ DSL netlist: mapeo de prefijos SPICE, anulaciones de modelos, síntesis automática de tierra
  • at: a nivel de pin para pines con nombre en BJT/FET/op-amp (base, colector, más, menos, salida)
  • ⏳ Cables con enrutado automático en modo posicional (enrutamiento alrededor de los símbolos colocados)
  • ⏳ Cables de bus con anotación de ancho de bit (barra /8)

Referencias:

  • IEEE Std 315-1975 (ANSI Y32.2): Graphic Symbols for Electrical and Electronics Diagrams
  • IEC 60617: Graphical symbols for diagrams
  • SPICE3 User's Manual, UC Berkeley — convenciones de formato de línea netlist

11. Ejemplos relacionados


12. Hoja de ruta

Planificado — aún no analizable. No use estos elementos en DSL generado hoy; el parser los rechazará o ignorará.

  • Anclas de pin con nombre para componentes multipínat: Q1.base, at: U1.out, at: U1.plus para que los bucles de retroalimentación de op-amp y BJT puedan cablearse sin largos desvíos de wire.
  • Cable de buswire right bus=8 que dibuja un cable grueso con una anotación de barra de ancho de bit /8.
  • Cables con enrutado automáticoconnect R1.end U1.minus que permite al motor enrutar el cable alrededor de los símbolos colocados.
  • Atributos flip y reverse — refleja o invierte la polaridad/orientación de un componente a lo largo del eje de dirección.
  • Estilo de cable dashed — línea discontinua para blindajes RF, agrupaciones de cables o conexiones virtuales.
  • Hojas jerárquicasmodule "name" { … } agrupando de manera análoga a los módulos de puertas lógicas, para documentar esquemáticos de varias hojas.

Haga seguimiento en los issues de GitHub si necesita alguno de estos antes.

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.