Esquemático de circuito

Sobre esquemáticos de circuito

Um esquemático de circuito é a representação gráfica padrão de um circuito eletrônico — componentes desenhados como símbolos padronizados, conectados por fios, com informação suficiente para construir ou simular o circuito. Engenheiros de eletrônica os usam ao longo de todo o ciclo de vida do produto: do conceito inicial à revisão de layout de PCB e à documentação de datasheet. O Schematex segue IEEE Std 315-1975 / ANSI Y32.2 e IEC 60617 para os símbolos dos componentes.

O DSL tem dois modos. Modo netlist (recomendado) é estilo SPICE: você lista os componentes e os nós aos quais eles se conectam, e o motor organiza tudo automaticamente — cada linha é autocontida, sem estado espacial para rastrear. Modo posicional é para desenho manual: os componentes encadeiam em uma direção como o Schemdraw. Ambos produzem o mesmo SVG. Para diagramas gerados (por exemplo, por um LLM), sempre use o modo netlist — ele tem uma superfície de erro muito menor.

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·8.4 ms·5.0 KB SVG

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

O menor circuito útil: uma fonte de tensão, um resistor e um capacitor para o terra — um filtro RC passa-baixa.

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.8 ms·3.9 KB SVG

Três regras cobrem ~90% do uso de netlist:

  1. Comece com circuit "Título" netlist (a palavra-chave netlist ativa este modo).
  2. Cada linha é componentId nóA nóB valor — um componente, os dois (ou mais) nós nomeados aos quais ele se conecta, depois seu valor.
  3. Dois componentes que compartilham um nome de nó são conectados entre si. 0, gnd ou GND é a rede de terra (um símbolo de terra é desenhado automaticamente).

O prefixo do ID de componente define o símbolo: R*→resistor, C*→capacitor, L*→indutor, V*→fonte de tensão, D*→diodo, Q*→BJT. Quando o prefixo for ambíguo, adicione type= (ex.: X1 a b type=opamp). Você nunca calcula coordenadas — o motor deriva o posicionamento a partir da conectividade.

Comentários devem começar com # em sua própria linha.


2. Componentes

2.1 Sintaxe do modo netlist

Uma linha de netlist tem a forma:

componentId nó... [valor] [type=…] [label="…"]

Os nós posicionais vêm primeiro; um token final que não parece um nó se torna o valor. Exemplo — um transistor (4 nós) e um resistor:

Q1 c b e npn        # coletor, base, emissor + modelo
Rc vcc c 2.2k       # dois nós + valor

Dica de orientação opcional. O motor orienta automaticamente os símbolos por função (fontes acima, terra abaixo, o restante horizontal). Para ajustar um único símbolo, adicione dir=right|left|up|down — a conectividade não muda, apenas a direção do símbolo gira:

C1 out 0 100n dir=down    # desenha C1 como capacitor shunt pendurado ao terra

Esta é a camada leve de controle de layout (como a orientação por componente do Lcapy): a conectividade do netlist faz o trabalho pesado; dir= apenas refina a aparência. Para controle geométrico completo, use o modo posicional abaixo.

2.2 Sintaxe do modo posicional (desenho manual)

O modo posicional é para posicionar um esquemático geometricamente de forma manual. Prefira o modo netlist para saída gerada — o modo posicional exige rastrear um "cursor" em movimento entre linhas, o que é propenso a erros para LLMs.

Uma linha de componente nomeado tem a forma:

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

Um componente anônimo omite o prefixo id: — o parser atribui um ID automático.

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

Direção é uma de right (padrão), left, up, down. Ela controla para qual lado o componente se estende a partir da posição atual do cursor.

2.3 Componentes passivos

Tipo DSLDescrição
resistorZigzag (ANSI) ou retângulo (IEC)
potentiometerResistor + seta de cursor, 3 pinos
rheostatResistor variável de 2 pinos
thermistor_ntcTermistor NTC (também: therm, ntc)
thermistor_ptcTermistor PTC (também: ptc)
ldrResistor dependente de luz
varistorResistor dependente de tensão
fuseFusível padrão
fuse_slowFusível de atuação lenta (designação T)
capacitorCapacitor não polarizado
electrolytic_capCapacitor polar/eletrolítico (também: ecap)
variable_capCapacitor variável
inductorIndutor de núcleo de ar
inductor_ironIndutor de núcleo de ferro
inductor_ferriteIndutor de núcleo de ferrite
variable_inductorIndutor variável
ferrite_beadFerrite bead para EMI
crystalOscilador de cristal de quartzo (também: xtal)
transformerBobinas acopladas (também: 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·2.8 ms·3.8 KB SVG

2.4 Fontes e alimentação

Tipo DSLDescrição
voltage_sourceCírculo + polaridade (também: vsource)
current_sourceCírculo + seta (também: isource)
ac_sourceCírculo + símbolo de seno (também: acsource)
batteryLinhas terminais longas/curtas alternadas
vccSeta de trilho de alimentação (apontando para cima)
groundTerra — 3 linhas decrescentes (também: gnd)
gnd_signalTerra de sinal — triângulo sólido
gnd_chassisTerra de chassi
gnd_digitalTerra 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.8 ms·5.1 KB SVG

2.5 Semicondutores — diodos

Tipo DSLDescrição
diodeTriângulo + barra de cátodo
zenerDiodo + barra de cátodo curva
schottkyDiodo + barra em S
ledDiodo + setas de emissão para fora
photodiodeDiodo + setas de luz para dentro
varactorDiodo + capacitor variável
tvs_diodeTVS bidirecional (duas barras curvas)
bridge_rectifierPonte de 4 diodos, 4 pinos
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.5 ms·4.6 KB SVG

2.6 Semicondutores — transistores

Tipo DSLDescrição
npnBJT NPN (também: transistor, bjt_npn)
pnpBJT PNP (também: bjt_pnp)
darlington_npnPar Darlington NPN
darlington_pnpPar Darlington PNP
nmosMOSFET de canal N por enriquecimento (também: mosfet_n)
pmosMOSFET de canal P por enriquecimento (também: mosfet_p)
nmos_depletionMOSFET de canal N por depleção
jfet_nJFET de canal N
jfet_pJFET de canal P
igbtIGBT
scrSCR / tiristor
triacTRIAC
diacDIAC
phototransistorNPN com setas de luz
optocouplerLED + fototransistor em caixa de isolamento
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.4 ms·4.6 KB SVG

2.7 CIs analógicos e amplificadores operacionais

Tipo DSLDescrição
opampTriângulo: entradas +/−, saída
comparatorMesma forma, saída de coletor aberto
schmitt_bufferBuffer + símbolo de histerese
tri_state_bufferBuffer + pino de enable
instrumentation_ampBloco INA de três op-amps
generic_icRetângulo configurável com pinos rotulados (também: ic)
voltage_regulatorBloco de 3 terminais: IN/GND/OUT (também: reg)
dc_dc_converterBloco de 2 portas com rótulo DC/DC
555_timerBloco de pinagem do 555 de 8 pinos (também: 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.5 ms·3.8 KB SVG

2.8 Chaves e relés

Tipo DSLDescrição
switch_spstChave de polo único e posição única
switch_spdtChave de polo único e dupla posição
switch_dpdtChave de duplo polo e dupla posição
push_noBotão de pressão normalmente aberto
push_ncBotão de pressão normalmente fechado
relay_coilBobina do relé (retângulo de 2 pinos)
relay_noContato do relé normalmente aberto
relay_ncContato do relé normalmente fechado
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.4 ms·4.2 KB SVG

2.9 Eletromecânicos e medição

Tipo DSLDescrição
motorCírculo + M
speakerCone + caixa
microphoneSímbolo de cápsula
buzzerBuzzer piezoelétrico
ammeterCírculo + A
voltmeterCírculo + V
wattmeterCírculo + W
oscilloscopeCírculo + forma de onda

2.10 Conectores e anotações

Tipo DSLDescrição
wireSegmento de fio simples
dotPonto de junção (marcador de junção T)
labelRótulo / flag de rede
portPorta nomeada (círculo vazio)
test_pointMarcador TP
no_connectX — pino intencionalmente desconectado
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.4 ms·3.4 KB SVG

3. Fiação e ramificação

3.1 Segmentos de fio

wire direction [N] desenha um fio simples a partir do cursor atual na direção indicada. Um número opcional define o comprimento em pixels.

wire right
wire down 40
wire left 20

3.2 Movendo o cursor com at:

at: id.end move o cursor para uma âncora nomeada sem desenhar nada. Use para ramificar a partir de um componente posicionado anteriormente.

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

Sufixos de âncora nomeada: end, start. Os componentes mantêm seu ID em todo o diagrama, então você pode pular de volta para qualquer componente posicionado anteriormente.

3.3 Pontos de junção

Coloque um dot (ou use net NAME: dot) para marcar uma junção em T — um ponto onde três ou mais fios se encontram. Sem um ponto, fios cruzados são desenhados como um cruzamento (sem conexão).

R1: resistor right
dot
wire right           # continua a partir de R1.end
at: R1.end
C1: capacitor down   # ramifica para baixo a partir do mesmo ponto

3.4 Redes nomeadas

net NAME declara uma rede nomeada. net NAME: dot declara a rede e coloca um ponto de junção no cursor atual, lembrando aquela localização. Posteriormente, at: NAME salta de volta para a âncora dessa rede.

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

3.5 Rótulos de rede

label "texto" direction? coloca um rótulo de texto na posição atual do cursor. Os rótulos não avançam o cursor. São úteis para nomear trilhos de alimentação ou conexões entre folhas.

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.5 ms·3.4 KB SVG

4. Modo netlist

Adicione netlist após o título na linha de cabeçalho para mudar para análise de netlist no estilo SPICE. O motor de auto-layout calcula as posições dos componentes a partir da conectividade da rede.

circuit "Low-pass filter" netlist

4.1 Formato de linha netlist

Cada linha é: ID rede1 rede2 [rede3…] [valor] [chave=valor…]

  • ID — identificador do componente. A primeira letra determina o tipo padrão (convenção de prefixo SPICE).
  • rede1, rede2, … — nomes de rede aos quais os pinos se conectam. Nomes de rede que correspondem a 0, gnd, ground, earth, pe, agnd, dgnd, gnda, gndd, vss ou com (sem distinção de maiúsculas/minúsculas, com sufixo opcional _<palavra> ou numérico — ex.: gnd_ref, AGND_DIG, EARTH1) são todos canonicalizados para a rede de terra.
  • valor (token simples opcional) — valor do componente ou nome do modelo.
  • chave=valor (opcional) — substituições label=, value=, type=.

4.2 Prefixo SPICE → tipo de componente

PrefixoTipo padrãoOrdem dos pinos
Rresistorp1, p2
Ccapacitorp1, p2
Linductorp1, p2
Ddiodeânodo (início), cátodo (fim)
Vvoltage_sourcemais, menos
Icurrent_sourcemais, menos
Qnpnc, b, e
Mnmosd, g, s
Jjfet_nd, g, s
Sswitch_spstp1, p2
Ffusep1, p2
Bbatterymais, menos
Krelay_coilp1, p2
U, Xgeneric_icpersonalizado via pins=
Wwireinício, fim
Tterminal_blockpersonalizado via pins= (também type=junction_box)

Escopo: o circuito schematex cobre apenas esquemáticos elétricos (IEEE 315 / IEC 60617). Esquemáticos hidráulicos e pneumáticos (ISO 1219) usam uma gramática visual fundamentalmente diferente — envelopes de válvulas direcionais, símbolos de cilindros, estilos de linha para pressão/retorno/drenagem — e não são suportados por este motor. Prefixos hidráulicos como EV* (eletroválvula), BOMBA* (bomba), TANK*, DIPOSIT* serão rejeitados com um erro "não é possível inferir o tipo".

4.3 Substituição de modelo de transistor

Para linhas Q, um nome de modelo no final substitui o tipo:

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

Para linhas D, similarmente:

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

4.4 Exemplo 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.6 ms·5.0 KB SVG

5. Atributos

Ambos os modos posicional e netlist aceitam estes atributos chave=valor:

AtributoAceito porEfeito
label="…"todos os componentesRótulo de exibição (designador de referência)
value="…"todos os componentesAnotação de valor (1kΩ, 100nF, 5V)
at=id.endcomponentes posicionaisInicia este componente em uma âncora nomeada
length=Nwire, alguns passivosComprimento em pixels

No modo posicional, at= dentro da linha do componente é equivalente a uma linha at: anterior:

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

6. Rótulos e comentários

  • Título do diagrama: circuit "RC Filter" — apenas na primeira linha.
  • Rótulo do componente: atributo label="R1" — designador de referência mostrado ao lado do símbolo.
  • Anotação de valor: value="4.7k" — mostrado ao lado ou abaixo do componente.
  • Rótulo de rede: label "VOUT" right — flag de rede independente na posição atual do cursor.
  • Comentários: # no início de uma linha (após espaço em branco inicial).

7. Palavras reservadas e escape

Reservadas no início de linha (posicional): circuit (cabeçalho), at:, net, wire, label.

Reservadas no modo netlist: as mesmas regras de cabeçalho se aplicam; todas as outras linhas são linhas de componente SPICE.

Aliases de rede de terra (apenas netlist): 0, gnd, GND, Gnd, ground, Ground — todos tratados como o mesmo nó.

IDs de componente devem corresponder a [a-zA-Z_][a-zA-Z0-9_]*. Espaços em valores devem ser colocados entre aspas: value="10 kΩ".


8. Erros comuns

Você escreveuO parser dizCorreção
resistor right 1k (valor simples sem value=)1k é interpretado como um flag de atributo desconhecido e ignoradoUse value="1k": resistor right value="1k"
at: R1.centercenter não é um sufixo de âncora reconhecido — o cursor permanece na posição atualUse at: R1.end ou at: R1.start
wire 40 (sem direção)A direção padrão é right; o comprimento 40 é aceitoDireção explícita recomendada: wire right 40
R1 vcc out 10k no modo posicionalA linha corresponde ao padrão de tipo simples; R1 é lido como nome de tipo, falha na buscaNo modo posicional, use R1: resistor right value="10k"
Q1 c b e (netlist, sem modelo)O tipo padrão é npn pelo prefixo Q — corretoOK; adicione npn explicitamente para clareza
net OUT então at: OUT sem net OUT: dotA rede OUT existe mas não tem âncora; o salto não tem destinoUse net OUT: dot para registrar a posição do cursor
label VCC up (rótulo sem aspas)VCC é interpretado como um token de direção, depois up — o texto do rótulo é perdidoColoque o texto entre aspas: label "VCC" up

9. Gramática (EBNF)

document        = header statement*

-- Modo posicional --
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                          // âncora de nome de rede

net-decl        = "net" WS id NEWLINE         // apenas declara rede
                | "net" WS id ":" WS "dot" NEWLINE  // declara + coloca ponto

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            = // qualquer valor das tabelas de componentes §2

-- Modo netlist --
netlist-header  = "circuit" ( WS quoted-string )? WS "netlist" NEWLINE
netlist-stmt    = id WS net-ref+ ( WS kv-pair )* NEWLINE
                | comment
net-ref         = id | "0"                    // nome de rede ou alias de terra
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

Fonte autoritativa: src/diagrams/circuit/parser.ts e src/diagrams/circuit/netlist.ts. Se isso divergir do parser, o parser vence — por favor, abra um issue.


10. Conformidade com padrões

Os esquemáticos de circuito do Schematex seguem IEEE Std 315-1975 / ANSI Y32.2 para formas de símbolos de componentes e IEC 60617 para variantes internacionais. A sintaxe de netlist segue as convenções de prefixo SPICE (Berkeley SPICE3 / LTspice / ngspice).

O que está implementado hoje:

  • ✅ Conjunto completo de componentes passivos: variantes de resistor, capacitor, indutor, cristal, transformador
  • ✅ Fontes e alimentação: fonte de tensão, fonte de corrente, fonte AC, bateria, VCC, quatro estilos de terra
  • ✅ Família de diodos: diodo, zener, schottky, LED, fotodiodo, varactor, TVS, ponte retificadora
  • ✅ BJTs: NPN, PNP, Darlington NPN/PNP
  • ✅ FETs: NMOS/PMOS por enriquecimento, NMOS por depleção, JFET de canal N/P
  • ✅ Semicondutores de potência: IGBT, SCR, TRIAC, DIAC
  • ✅ Optoeletrônica: fototransistor, optoacoplador
  • ✅ CIs analógicos: op-amp, comparador, buffer Schmitt, buffer tri-state, INA, CI genérico, regulador de tensão, conversor DC-DC, timer 555
  • ✅ Chaves: SPST, SPDT, DPDT, push-NA, push-NF
  • ✅ Relés: bobina, contato NA, contato NF
  • ✅ Eletromecânicos: motor, alto-falante, microfone, buzzer
  • ✅ Medição: amperímetro, voltímetro, wattímetro, osciloscópio
  • ✅ Anotações: fio, ponto, rótulo, porta, ponto de teste, sem conexão, antena
  • ✅ DSL posicional: encadeamento de direção, ramificação at:, declarações net
  • ✅ DSL netlist: mapeamento de prefixo SPICE, substituições de modelo, síntese automática de terra
  • at: em nível de pino para pinos nomeados de BJT/FET/op-amp (base, coletor, mais, menos, out)
  • ⏳ Fios auto-roteados no modo posicional (roteamento em torno de símbolos posicionados)
  • ⏳ Fios de barramento com anotação de largura de bit (barra /8)

Referências:

  • 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 — convenções de formato de linha de netlist

11. Exemplos relacionados


12. Roadmap

Planejado — ainda não analisável. Não use estes no DSL gerado hoje; o parser irá rejeitar ou ignorar.

  • Âncoras de pino nomeado para componentes de múltiplos pinosat: Q1.base, at: U1.out, at: U1.plus para que loops de feedback de op-amp e BJT possam ser conectados sem longos desvios de wire.
  • Fio de barramentowire right bus=8 desenhando um fio grosso com uma anotação de barra /8 de largura de bit.
  • Fios auto-roteadosconnect R1.end U1.minus deixando o motor rotear o fio em torno de símbolos posicionados.
  • Atributos flip e reverse — espelha ou reverte a polaridade/orientação de um componente ao longo do eixo de direção.
  • Estilo de fio dashed — linha tracejada para blindagens RF, feixes de cabos ou conexões virtuais.
  • Folhas hierárquicas — agrupamento module "nome" { … } análogo a módulos de porta lógica, para documentar esquemáticos de múltiplas folhas.

Acompanhe nos issues do GitHub se precisar de algum deles com mais urgência.

Found this useful?

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