Ontwerpen
Schemata schrijven
Onderdelen, nets en klassen met agentee edit, batches van commando's, bladen voor grote ontwerpen, en de signaalniveaucheque die delers tussen VIL en VIH vangt.
Een schema in agentee is een lijst van onderdelen en een lijst van nets. Een net is een naam, een klasse en de pinnen die het verbindt. Draden worden voor je getekend wanneer het schema wordt gerenderd, dus niets over de schakeling hangt af van waar een lijn is versleept.
name = "lna"
board = "lna"
[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8]
rotation = 90
fields = { mpn = "Qorvo SPF5189Z" }
[[nets]]
name = "RF_OUT"
class = "RF"
pins = ["C2.2", "J2.1", "L3.1"]board noemt de printplaat-specificatie, waar de netklassen vandaan komen. Stel dit eerst in.
Bewerken met commando's
agentee edit sch schrijft het bestand voor je, behoudt de commentaar en het layout, en controleert wat het heeft gewijzigd. Het weigert een pin, symbool of klasse die niet bestaat voordat het iets schrijft, zodat een typefout nooit een nieuw net wordt.
agentee edit sch NAME add R1 R 10k --footprint R_0402_1005Metric --at 25.4,25.4
agentee edit sch NAME net VBUS C1.1 U1.7 --class Power
agentee edit sch NAME connect R1.2 FB
agentee edit sch NAME nc U2.3
agentee edit sch NAME note "FB divider sets 3.3 V"
agentee edit sch NAME --list
agentee edit sch helpDe commando's zijn add, remove, move, set, net, connect, disconnect, nc, unnc en note. Een pin is REF.PIN, per nummer (U1.3) of per unieke pinnaam (U1.VCC). Een naam die meerdere pinnen delen, zoals GND op een regelaar met twee grondpinnen, is een fout die de nummers opsomt. Een pin een net geven waar hij al op zit, verplaatst hem naar het nieuwe net.
add plaatst een onderdeel rechts van alles wat er al is, op het raster van 1,27 mm. --at X,Y plaatst het ergens anders en past het aan het raster aan. --list toont de onderdelen en nets als JSON, en --json op elk commando geeft de opgeloste pinnen en coördinaten.
Batches
Meer dan één onderdeel of net tegelijk, schrijf de commando's als een lijst. Eén load, één controle aan het einde, zodat de halve staten ertussen nooit worden gerapporteerd:
agentee edit sch - <<'EOF'
add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5
add C1 C 1u --footprint C_0402_1005Metric
add C2 C 1u --footprint C_0402_1005Metric
net VBUS U1.VIN U1.EN C1.1 --class Power
net 3V3 U1.VOUT C2.1 --class Power
net GND U1.GND C1.2 C2.2 --class Ground --style power
note "LDO, 600 mA"
EOFadded U1 (AP2112K-3.3)
added C1 (C)
added C2 (C)
VBUS now joins U1.1, U1.3, C1.1
3V3 now joins U1.5, C2.1
GND now joins U1.2, C1.2, C2.2
noted: LDO, 600 mA
warning: ./power.sch.toml: power part U1: body overlaps C1 (parts[1])
0 errors, 1 warnings in the files this touchedDe pinnamen opgelost naar nummers, en de uitvoer zegt welke. Het derde argument van add is de waarde; een symbool zonder standaardwaarde heeft er een nodig.
agentee edit sch build.txt doet hetzelfde vanuit een bestand. Batches werken op het ene schema dat het project heeft. Met meerdere, voer elk commando af op zijn eigen en noem het schema: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.
Klassen op elk net
Elk net krijgt een class van de printplaat. Een net in Default is een waarschuwing, of het nu geen klasse noemt of Default noemt, omdat de klasse de breedte, afstand, vias en routevolgorde op de printplaat bepaalt. Houd een klasse per soort net: Signal, Power, Ground, Clock, RF, elk paar.
--style power tekent een net met grond- of voedingssymbolen in plaats van draden, en --style label met netlabels.
Open pinnen
Een pin die uit elk net is gelaten, wordt gemeld. Pinnen die opzettelijk open zijn, gaan in no_connect:
agentee edit sch NAME nc U2.7 U2.8Rails en de signaalniveaucheque
Geef logica- en MCU-symbolen een [levels]-tabel uit de datasheet (zie Onderdelen), en het schema een rails-tabel:
rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] }
analog = ["U1.13"]De controle berekent daarna de spanning die elke ingang met niveaus ziet, bij de slechtste hoek van de rails en de toleranties van de weerstanden (1% tenzij het onderdeel een tolerance-veld heeft), door schakelaars in elke staat, open collector-uitgangen uit en laag, interne pull-ups en -pull-downs en inlekkage van ingangen. Het is een fout als een ingang:
- tussen VIL en VIH kan zitten, zoals een deler die in het midden landt,
- drijft met niets dat hem aan een rail bindt,
- uit een geldig niveau wordt geduwd door lekstroom door een te zwakke pull,
- buiten zijn
minofmaxkan gaan.
Binnen 100 mV van een drempel is een waarschuwing. Ingangen die in analog staan, worden door een ADC gelezen, dus gelden alleen hun grenzen. Een net met erop iets wat de controle niet kan modelleren, zoals een uitgang of een connector, wordt overgeslagen in plaats van geraden.
Bladen
Na een paar tientallen onderdelen, geef elk deel zijn eigen schema en lijst ze op in een bovenliggend schema. Het layout plaatst het bovenliggende schema.
name = "sdr"
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]Elk blad is een gewone schema-bestand. Netten sluiten aan over bladen via naam, dus 3V3 op elk blad is één net. De pinnen van een net moeten op het blad staan dat ze vermeldt, referenties zijn uniek over het hele ontwerp, en een net dat over bladen gaat, heeft overal dezelfde klasse als het er een noemt. Een blad op zichzelf slaat de waarschuwingen voor één pin en de Default-klasse over, omdat de rest van het net elders kan zitten; het top-schema voert elke controle uit op het samengevoegde ontwerp.
Handgetekende draden
Laat wires weg en agentee routeert ze. Als je een bepaalde tekening wilt, geef het net zijn eigen wires = [[[x, y], [x, y]], ...], en de controle verifieert dat ze elke pin bereiken en geen ander net raken.
Kijk ernaar
agentee render sch:NAME -o sch.png
agentee show sch:NAMEshow toont de positie van elke pin, wat een agent nodig heeft om een onderdeel naast een ander te plaatsen.
Wat de controle rapporteert
Pinnen in twee nets, pinnen in geen net, nets met één pin, meerdere uitgangen op één net, handdraden die een pin missen of een ander net raken, overlappende onderdelen, footprints waarvan de pads de pinnen van het symbool niet dekken, nets in Default, en de signaalniveaus wanneer rails is ingesteld.