Schéma de circuit électronique

À propos des schémas de circuits électroniques

Un schéma de circuit est la représentation graphique standard d'un circuit électronique — des composants dessinés sous forme de symboles normalisés, reliés par des fils, avec suffisamment d'informations pour construire ou simuler le circuit. Les ingénieurs électroniciens les utilisent tout au long du cycle de vie du produit : de la conception initiale à la revue de disposition PCB et à la documentation des fiches techniques. Schematex suit IEEE Std 315-1975 / ANSI Y32.2 et IEC 60617 pour les symboles de composants.

Le DSL dispose de deux modes. Le mode netlist (recommandé) est de style SPICE : vous listez les composants et les nœuds auxquels ils se connectent, et le moteur dispose tout automatiquement — chaque ligne est autonome, sans état spatial à suivre. Le mode positionnel est pour le dessin manuel : les composants s'enchaînent dans une direction comme Schemdraw. Les deux produisent le même SVG. Pour les diagrammes générés (par exemple par un LLM), utilisez toujours le mode netlist — il présente de loin la plus faible surface d'erreur.

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

1. Un circuit minimal (mode netlist — recommandé)

Le circuit utile minimal : une source de tension, une résistance et un condensateur vers la masse — un filtre passe-bas 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.7 ms·3.9 KB SVG

Trois règles couvrent environ 90 % de l'usage en netlist :

  1. Commencez par circuit "Titre" netlist (le mot-clé netlist active ce mode).
  2. Chaque ligne est componentId nodeA nodeB value — un composant, les deux (ou plus) nœuds nommés auxquels il se connecte, puis sa valeur.
  3. Deux composants qui partagent un nom de nœud sont câblés ensemble. 0, gnd ou GND est le réseau de masse (un symbole de masse est dessiné automatiquement).

Le préfixe de l'identifiant de composant détermine le symbole : R*→résistance, C*→condensateur, L*→inductance, V*→source de tension, D*→diode, Q*→BJT. Lorsque le préfixe est ambigu, ajoutez type= (ex. X1 a b type=opamp). Vous ne calculez jamais de coordonnées — le moteur déduit le placement à partir de la connectivité.

Les commentaires doivent commencer par # sur leur propre ligne.


2. Composants

2.1 Syntaxe du mode netlist

Une ligne de netlist a la forme :

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

Les nœuds positionnels viennent en premier ; un jeton final qui ne ressemble pas à un nœud devient la valeur. Exemple — un transistor (4 nœuds) et une résistance :

Q1 c b e npn        # collecteur, base, émetteur + modèle
Rc vcc c 2.2k       # deux nœuds + valeur

Indication d'orientation optionnelle. Le moteur oriente automatiquement les symboles par rôle (sources vers le haut, masse vers le bas, le reste horizontal). Pour ajuster un seul symbole, ajoutez dir=right|left|up|down — la connectivité est inchangée, seule l'orientation du symbole tourne :

C1 out 0 100n dir=down    # dessiner C1 comme un condensateur shunt suspendu vers la masse

C'est la couche légère de contrôle de disposition (comme l'orientation par composant de Lcapy) : la connectivité netlist fait le travail principal, dir= ne fait qu'affiner l'apparence. Pour un contrôle géométrique complet, utilisez le mode positionnel ci-dessous.

2.2 Syntaxe du mode positionnel (dessin manuel)

Le mode positionnel est destiné à disposer manuellement un schéma géométriquement. Préférez le mode netlist pour la génération automatique — le mode positionnel nécessite de suivre un « curseur » mobile d'une ligne à l'autre, ce qui est source d'erreurs pour les LLM.

Une ligne de composant nommé a la forme :

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

Un composant anonyme omet le préfixe id: — l'analyseur lui attribue un identifiant automatique.

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

La direction est l'une des suivantes : right (par défaut), left, up, down. Elle contrôle la direction dans laquelle le composant s'étend depuis la position actuelle du curseur.

2.3 Composants passifs

Type DSLDescription
resistorZigzag (ANSI) ou rectangle (IEC)
potentiometerRésistance + flèche de curseur, 3 broches
rheostatRésistance variable à 2 broches
thermistor_ntcThermistance NTC (aussi : therm, ntc)
thermistor_ptcThermistance PTC (aussi : ptc)
ldrRésistance dépendante de la lumière
varistorRésistance dépendante de la tension
fuseFusible standard
fuse_slowFusible à fusion lente (désignation T)
capacitorCondensateur non polarisé
electrolytic_capCondensateur polarisé/électrolytique (aussi : ecap)
variable_capCondensateur variable
inductorInductance à noyau d'air
inductor_ironInductance à noyau de fer
inductor_ferriteInductance à noyau de ferrite
variable_inductorInductance variable
ferrite_beadPerle de ferrite antiparasite
crystalOscillateur à quartz (aussi : xtal)
transformerBobines couplées (aussi : 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.5 ms·3.8 KB SVG

2.4 Sources et alimentation

Type DSLDescription
voltage_sourceCercle + polarité (aussi : vsource)
current_sourceCercle + flèche (aussi : isource)
ac_sourceCercle + symbole sinusoïdal (aussi : acsource)
batteryAlternance de lignes longues/courtes aux bornes
vccFlèche de rail d'alimentation (pointant vers le haut)
groundMasse à la terre — 3 lignes décroissantes (aussi : gnd)
gnd_signalMasse signal — triangle plein
gnd_chassisMasse châssis
gnd_digitalMasse numérique
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·1.2 ms·5.1 KB SVG

2.5 Semi-conducteurs — diodes

Type DSLDescription
diodeTriangle + barre cathode
zenerDiode + barre cathode courbée
schottkyDiode + barre en S
ledDiode + flèches d'émission vers l'extérieur
photodiodeDiode + flèches lumineuses vers l'intérieur
varactorDiode + condensateur variable
tvs_diodeTVS bidirectionnel (deux barres courbées)
bridge_rectifierPont de 4 diodes, 4 broches
circuit·§ IEEE 315
↘ preview
100%
Diode types gallery Circuit schematic with 13 components Diode types gallery
UTF-8 · LF · 15 lines · 207 chars✓ parsed·1.0 ms·4.6 KB SVG

2.6 Semi-conducteurs — transistors

Type DSLDescription
npnBJT NPN (aussi : transistor, bjt_npn)
pnpBJT PNP (aussi : bjt_pnp)
darlington_npnPaire Darlington NPN
darlington_pnpPaire Darlington PNP
nmosMOSFET à canal N en mode enrichissement (aussi : mosfet_n)
pmosMOSFET à canal P en mode enrichissement (aussi : mosfet_p)
nmos_depletionMOSFET à canal N en mode déplétion
jfet_nJFET à canal N
jfet_pJFET à canal P
igbtIGBT
scrSCR / thyristor
triacTRIAC
diacDIAC
phototransistorNPN avec flèches lumineuses
optocouplerLED + phototransistor dans un boîtier d'isolation
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.5 ms·4.6 KB SVG

2.7 Circuits intégrés analogiques et amplificateurs opérationnels

Type DSLDescription
opampTriangle : entrées +/−, sortie
comparatorMême forme, sortie à collecteur ouvert
schmitt_bufferBuffer + symbole d'hystérésis
tri_state_bufferBuffer + broche d'activation
instrumentation_ampBloc INA à trois amplificateurs opérationnels
generic_icRectangle configurable avec broches étiquetées (aussi : ic)
voltage_regulatorBloc à 3 bornes : IN/GND/OUT (aussi : reg)
dc_dc_converterBloc 2 ports avec étiquette DC/DC
555_timerBloc de brochage 555 à 8 broches (aussi : 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·1.1 ms·3.8 KB SVG

2.8 Interrupteurs et relais

Type DSLDescription
switch_spstUnipolaire unidirectionnel
switch_spdtUnipolaire bidirectionnel
switch_dpdtBipolaire bidirectionnel
push_noBouton-poussoir normalement ouvert
push_ncBouton-poussoir normalement fermé
relay_coilBobine de relais (rectangle à 2 broches)
relay_noContact de relais normalement ouvert
relay_ncContact de relais normalement fermé
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.7 ms·4.2 KB SVG

2.9 Électromécanique et mesure

Type DSLDescription
motorCercle + M
speakerCône + boîtier
microphoneSymbole de capsule
buzzerBuzzer piézo
ammeterCercle + A
voltmeterCercle + V
wattmeterCercle + W
oscilloscopeCercle + forme d'onde

2.10 Connecteurs et annotations

Type DSLDescription
wireSegment de fil simple
dotPoint de jonction (marqueur de jonction en T)
labelÉtiquette de réseau / drapeau
portPort nommé (cercle creux)
test_pointMarqueur TP
no_connectX — broche intentionnellement non connectée
antennaAntenne
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. Câblage et branchements

3.1 Segments de fil

wire direction [N] dessine un fil nu depuis le curseur actuel dans la direction donnée. Un nombre optionnel fixe la longueur en pixels.

wire right
wire down 40
wire left 20

3.2 Déplacement du curseur avec at:

at: id.end déplace le curseur vers une ancre nommée sans rien dessiner. Utilisez-le pour brancher depuis un composant placé précédemment.

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

Suffixes d'ancre nommée : end, start. Les composants conservent leur identifiant dans tout le diagramme, vous pouvez donc revenir à n'importe quel composant placé précédemment.

3.3 Points de jonction

Placez un dot (ou utilisez net NAME: dot) pour marquer une jonction en T — un point où trois fils ou plus se rejoignent. Sans point, les fils croisés sont dessinés comme un croisement (pas de connexion).

R1: resistor right
dot
wire right           # continue depuis R1.end
at: R1.end
C1: capacitor down   # branche vers le bas depuis le même point

3.4 Réseaux nommés

net NAME déclare un réseau nommé. net NAME: dot déclare le réseau et place un point de jonction au curseur actuel, mémorisant cet emplacement. Plus tard, at: NAME revient à l'ancre de ce réseau.

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

3.5 Étiquettes de réseau

label "texte" direction? place une étiquette de texte à la position actuelle du curseur. Les étiquettes n'avancent pas le curseur. Elles sont utiles pour nommer les rails d'alimentation ou les connexions inter-feuilles.

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

4. Mode netlist

Ajoutez netlist après le titre sur la ligne d'en-tête pour passer à l'analyse de netlist de style SPICE. Le moteur de disposition automatique calcule les positions des composants à partir de la connectivité du réseau.

circuit "Low-pass filter" netlist

4.1 Format de ligne netlist

Chaque ligne est : ID net1 net2 [net3…] [value] [key=value…]

  • ID — identifiant de composant. La première lettre détermine le type par défaut (convention de préfixe SPICE).
  • net1, net2, … — noms de réseaux auxquels les broches se connectent. Les noms de réseau correspondant à 0, gnd, ground, earth, pe, agnd, dgnd, gnda, gndd, vss ou com (insensible à la casse, avec suffixe optionnel _<mot> ou numérique — ex. gnd_ref, AGND_DIG, EARTH1) se canonicalisent tous vers le réseau de masse.
  • value (jeton optionnel) — valeur du composant ou nom de modèle.
  • key=value (optionnel) — surcharges label=, value=, type=.

4.2 Préfixe SPICE → type de composant

PréfixeType par défautOrdre des broches
Rresistorp1, p2
Ccapacitorp1, p2
Linductorp1, p2
Ddiodeanode (début), cathode (fin)
Vvoltage_sourceplus, moins
Icurrent_sourceplus, moins
Qnpnc, b, e
Mnmosd, g, s
Jjfet_nd, g, s
Sswitch_spstp1, p2
Ffusep1, p2
Bbatteryplus, moins
Krelay_coilp1, p2
U, Xgeneric_icpersonnalisé via pins=
Wwiredébut, fin
Tterminal_blockpersonnalisé via pins= (aussi type=junction_box)

Périmètre : le circuit Schematex couvre uniquement les schémas électriques (IEEE 315 / IEC 60617). Les schémas hydrauliques et pneumatiques (ISO 1219) utilisent une grammaire visuelle fondamentalement différente — enveloppes de distributeur, symboles de vérins, styles de lignes pour pression/retour/drain — et ne sont pas pris en charge par ce moteur. Les préfixes hydrauliques tels que EV* (électrovanne), BOMBA* (pompe), TANK*, DIPOSIT* seront rejetés avec une erreur « cannot infer type ».

4.3 Substitution de modèle de transistor

Pour les lignes Q, un nom de modèle final remplace le type :

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

Pour les lignes D, de même :

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

4.4 Exemple 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.8 ms·5.0 KB SVG

5. Attributs

Les modes positionnel et netlist acceptent tous deux ces attributs clé=valeur :

AttributAccepté parEffet
label="…"tous les composantsÉtiquette d'affichage (référence de désignation)
value="…"tous les composantsAnnotation de valeur (1kΩ, 100nF, 5V)
at=id.endcomposants positionnelsDémarrer ce composant à une ancre nommée
length=Nwire, certains passifsLongueur en pixels

En mode positionnel, at= dans la ligne de composant équivaut à une ligne at: précédente :

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

6. Étiquettes et commentaires

  • Titre du diagramme : circuit "RC Filter" — première ligne uniquement.
  • Étiquette de composant : attribut label="R1" — référence de désignation affichée à côté du symbole.
  • Annotation de valeur : value="4.7k" — affichée à côté ou en dessous du composant.
  • Étiquette de réseau : label "VOUT" right — drapeau de réseau autonome au curseur actuel.
  • Commentaires : # au début d'une ligne (après les espaces initiaux).

7. Mots réservés et échappement

Réservés en début de ligne (positionnel) : circuit (en-tête), at:, net, wire, label.

Réservés en mode netlist : les mêmes règles d'en-tête s'appliquent ; toutes les autres lignes sont des lignes de composants SPICE.

Alias de réseau de masse (netlist uniquement) : 0, gnd, GND, Gnd, ground, Ground — tous traités comme le même nœud.

Les identifiants de composants doivent correspondre à [a-zA-Z_][a-zA-Z0-9_]*. Les espaces dans les valeurs doivent être entre guillemets : value="10 kΩ".


8. Erreurs courantes

Ce que vous avez écritCe que dit l'analyseurCorrection
resistor right 1k (valeur nue sans value=)1k est analysé comme un indicateur d'attribut inconnu et ignoréUtilisez value="1k" : resistor right value="1k"
at: R1.centercenter n'est pas un suffixe d'ancre reconnu — le curseur reste à sa position actuelleUtilisez at: R1.end ou at: R1.start
wire 40 (sans direction)La direction par défaut est right ; la longueur 40 est acceptéeDirection explicite recommandée : wire right 40
R1 vcc out 10k en mode positionnelLa ligne correspond au schéma de type nu ; R1 est lu comme un nom de type, la recherche échoueEn mode positionnel, utilisez R1: resistor right value="10k"
Q1 c b e (netlist, sans modèle)Le type par défaut est npn à partir du préfixe Q — correctOK ; ajoutez npn explicitement pour plus de clarté
net OUT puis at: OUT sans net OUT: dotLe réseau OUT existe mais n'a pas d'ancre ; le saut n'a pas de destinationUtilisez net OUT: dot pour enregistrer la position du curseur
label VCC up (étiquette sans guillemets)VCC est analysé comme un jeton de direction, puis up — le texte de l'étiquette est perduMettez le texte entre guillemets : label "VCC" up

9. Grammaire (EBNF)

document        = header statement*

-- Mode positionnel --
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                          // ancre de nom de réseau

net-decl        = "net" WS id NEWLINE         // déclarer le réseau uniquement
                | "net" WS id ":" WS "dot" NEWLINE  // déclarer + placer le point

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            = // toute valeur des tableaux de composants §2

-- Mode 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"                    // nom de réseau ou alias de masse
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

Source faisant autorité : src/diagrams/circuit/parser.ts et src/diagrams/circuit/netlist.ts. En cas de divergence avec l'analyseur, l'analyseur l'emporte — veuillez ouvrir un ticket.


10. Conformité aux normes

Les schémas de circuits Schematex suivent IEEE Std 315-1975 / ANSI Y32.2 pour les formes des symboles de composants et IEC 60617 pour les variantes internationales. La syntaxe de netlist suit les conventions de préfixe SPICE (Berkeley SPICE3 / LTspice / ngspice).

Ce qui est implémenté aujourd'hui :

  • ✅ Jeu complet de composants passifs : variantes de résistances, de condensateurs, d'inductances, cristal, transformateur
  • ✅ Sources et alimentation : source de tension, source de courant, source AC, batterie, VCC, quatre styles de masse
  • ✅ Famille des diodes : diode, zener, schottky, LED, photodiode, varactor, TVS, pont redresseur
  • ✅ BJT : NPN, PNP, Darlington NPN/PNP
  • ✅ FET : NMOS/PMOS en mode enrichissement, NMOS en mode déplétion, JFET à canal N/P
  • ✅ Semi-conducteurs de puissance : IGBT, SCR, TRIAC, DIAC
  • ✅ Optoélectronique : phototransistor, optocoupleur
  • ✅ Circuits intégrés analogiques : amplificateur opérationnel, comparateur, buffer Schmitt, buffer tri-état, INA, CI générique, régulateur de tension, convertisseur DC-DC, minuterie 555
  • ✅ Interrupteurs : SPST, SPDT, DPDT, poussoir-NO, poussoir-NC
  • ✅ Relais : bobine, contact NO, contact NC
  • ✅ Électromécanique : moteur, haut-parleur, microphone, buzzer
  • ✅ Mesure : ampèremètre, voltmètre, wattmètre, oscilloscope
  • ✅ Annotations : fil, point, étiquette, port, point de test, non-connecté, antenne
  • ✅ DSL positionnel : chaînage de direction, branchement at:, déclarations net
  • ✅ DSL netlist : correspondance de préfixe SPICE, substitutions de modèle, synthèse automatique de masse
  • at: au niveau de la broche pour les broches nommées des BJT/FET/amplificateurs opérationnels (base, collecteur, plus, moins, sortie)
  • ⏳ Fils routés automatiquement en mode positionnel (routage autour des symboles placés)
  • ⏳ Fils de bus avec annotation de largeur de bit (slash /8)

Références :

  • 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 — conventions de format de ligne netlist

11. Exemples associés


12. Feuille de route

Prévu — pas encore analysable. Ne l'utilisez pas dans le DSL généré aujourd'hui ; l'analyseur le rejettera ou l'ignorera.

  • Ancres de broches nommées pour les composants à broches multiplesat: Q1.base, at: U1.out, at: U1.plus pour que les boucles de rétroaction des amplificateurs opérationnels et des BJT puissent être câblées sans longs détours en wire.
  • Fil de buswire right bus=8 dessinant un fil épais avec une annotation de largeur de bit /8.
  • Fils routés automatiquementconnect R1.end U1.minus laissant le moteur router le fil autour des symboles placés.
  • Attributs flip et reverse — miroir ou inversion de la polarité/orientation d'un composant le long de l'axe de direction.
  • Style de fil dashed — ligne pointillée pour les blindages RF, les faisceaux de câbles ou les connexions virtuelles.
  • Feuilles hiérarchiquesmodule "nom" { … } regroupant de manière analogue aux modules de portes logiques, pour documenter des schémas sur plusieurs feuilles.

Suivez dans les tickets GitHub si vous avez besoin de l'une de ces fonctionnalités plus tôt.

Found this useful?

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