Hallo zusammen,
jetzt hatte ich Euch ja schon angefixt ... aber jetzt liefere ich.
Im Rahmen meines -> ATMEGA-Projekts <- hatte ich mir vorgenommen, ein PCB mal selbst zu erstellen und fertigen zu lassen.
Mit Hilfe von Tutorials, Unterstützung durch u.a. Euch und penetrantem Nachfragen habe ich mich jetzt so weit durch eagle durchgewühlt, dass ich den gesamten Prozess selbstständig durchführen kann.
Nach der gefühlten sechsundzwölften Version meiner ATMEGA Platine habe ich mich dann entschlossen mein neu erworbenes, gaballtes (Halb-)Wissen mit Euch zu teilen.
Das Ergebnis ist ein zweiteilige Crash-Kurs für eagle.
Im ersten Teil "von der Idee zum Schaltplan", also diesem hier, versuche ich Euch zu vermitteln, worauf ihr beim Erstellen eines Schaltplans achten solltet, damit später das Erzeugen des Boards nicht zum Horrortrip wird.
Im zweiten Teil "-> vom Schaltplan zum PCB <-" erfahrt ihr dann, wie aus dem Schaltbild ein Board erzeugt wird. Der folgt allerdings erst in ein paar Tagen.
Bitte beachten:: diese Anleitung dient nicht dazu Elektronik-Grundlagen zu vermitteln.
Ich beziehe mich hier auf die kostenlose Lite-Edition von eagle, Version 7.5.0, 32 Bit für Linux, die ich unter Ubuntu einsetze. Abweichungen zur Windows-Version oder anderen eagle-Versionen sind deshalb durchaus möglich, halten sich aber hoffentlich in Grenzen.
Als Grundlage dient mein Projekt -> ATMEGA128 als Arduino <-.
Sowohl dieser Beitrag als auch die Themen "vom Schaltplan zum PCB" und "-> ATMEGA128 als Arduino <-" werden parallel zu den laufenden Projekt erstellt. Dadurch kann es zu Verzögerungen kommen.
Änderungen und neue Features dieses Themas werden hier in diesem, dem ersten Beitrag, dokumentiert. Evtl. Aktualisierungen könnt ihr der History am Ende des Beitrags entnehmen. Behaltet sie also im Auge, dann seid ihr immer auf dem aktuellsten Stand.
about eagle:
Spoiler anzeigen
Wer, wie ich, eagle bisher ausschließlich zum Erstellen von Schaltplänen verwendet hat, wird vielleicht feststellen, dass die bisherige "Denke" eher suboptimal war.
Beim Erstellen eines Schaltplans ging es mir leidglich um die Verwendung der richtigen Symbole.
Wenn als Endergebnis ein Board entstehen soll, funktioniert das so nicht mehr.
Denn jetzt geht es nicht nur um die Darstellung irgendwelcher Symbole. Jetzt müssen die richtigen Bauteile ausgewählt werden, damit ihre physikalischen Eigenschaften zur Berechnung der Positionen von Bauteilen, Bohrungen, ... herangezogen werden können.
Das hört sich zunächst schlimmer an, als es ist. So ganz korrekt ist o.g. Aussage zudem auch nicht, denn es geht nicht darum genau das später verbaute Bauteil zu verwenden (was natürlich optimal wäre, allein schon wegen der Stückliste). Es reicht, wenn die Gehäuseform und die Lage der Anschlüsse übereinstimmen.
Gerade bei den Standard-Bauteilen gibt es in eagle ellenlange Listen mit Bauteilen verschiedenster Hersteller.
Hier reicht es z.B. irgendeinen Widerstand in der Bauform 1206 auszuwählen.
Tipp: möglichst die später real verwendeten, zumindest aber bauform- und pin-kompatible Bauteile auswählen.
Machen wir das jetzt mal ganz ausführlich.
Beginnen wir mit der Schaltung für die Spannungsversorgung. Dazu benötigen wir folgende Teile:
DC-Buchse aus con-jack: JACK-PLUG1 (JACK-PLUG)
1117 Spannungsregler aus v-reg: LD117AS12TR (LD117A?*)
1N4004 Diode aus diode: 1N4004
LED (rot oder grün) aus SparkFun-LED: LED1206 (LED)
Vorwiderstand 2k2 aus resistor: R-EU_R1206 (R-EU_)
Tantal-Kondensator 22uF aus cap-pan40: C-PR-SMD-TE-C (C-PR)
Keramik-Kondensator 100nF aus SparkFun-Capacitors: CAP1206 (CAP)
Fügen wir also diese Teile mal in den Schaltplan ein.
screenshots:
Spoiler anzeigen
Die Kondensatoren jeweils nur einmal, die kopieren wir später, dann sparen wir uns einmal das Editieren ;).
Dann verbinden wir die Bauteile untereinander und ändern deren Werte.
Die Buchse ist eh schon links oben in der Ecke, da brauchen wir jetzt nur den Wert nach "DC JACK" ändern.
screenshots:
Spoiler anzeigen
Dann ziehen wir die Diode nach oben und klinken sie an Pin 3 der Buchse an. Dabei auf die Durchlassrichtung achten!
Spoiler anzeigen
Als nächstes ziehen wir den Tantal hoch, drehen ihn und ändern den Wert nach 22uF. Wo wir schon mal dabei sind ziehen wir den KerKo neben den Tantal und ändern den Wert auf 100nF.
Jetzt ist der Spannungsregler dran. Den setzen wir neben den KerKo.
Fehlen noch die beiden Kondensatoren. Also den KerKo kopieren, neben den Spannungsregler setzen, den Tantal kopieren und neben den KerKo setzen.
Spoiler anzeigen
Den Vorwiderstand drehen, mit OUT des Spanungsreglers verbinden und den Wert nach 2k2 ändern.
Jetzt noch die LED drehen, mit dem anderen Ende des Vorwiderstands verbinden und den Wert auf z.B. gruen ändern.
So weit mal die Platzierung der ersten Bauteile.
Die Werkzeuge sind übrigens auch über das Menü (Bearbeiten) erreichbar.
Machen wir uns also ans Verdrahten.
screenshot:
Spoiler anzeigen
Update 22.02.:
Von jar wurde hier angemerkt, dass zum Verbinden der Bauteile das NET-Kommando besser geeignet sei.
Spoiler anzeigen
Solange wir es mit kleinen, überschaubaren Schaltungen zu tun haben, ist es meiner Meinung nach vollkomen egal, was ihr verwendet.
Ansonsten hat jat vollkommen recht, denn das NET-Kommando findet sicher alle Anschlusspunkte in einem Fangradius, während man mit WIRE auch mal eine Luftverbindung ziehen kann.
Die Anwendung von NET ist identisch zu der von WIRE ... so gesehen, um es von Anfang an richtig zu machen, verwendet ihr am besten NET.
Also los: D1 nach C2 nach C1 nach IN des LM1117. Junctions bei C2 und C1 nicht vergessen (drei "Draht-Enden").
Spoiler anzeigen
Dann von OUT des LM1117 nach C3 nach C4. Wieder auf die junctions achten (bei C4 auch eine machen - da komme ich später noch drauf zu sprechen).
Weiter mit Pin 1 des DC Jack nach C2 nach C1 nach ADJ des LM1117 nach C3 nach C4. Auch hier wieder junctions setzen und auch eine bei C4 (s.o.).
Das wäre jetzt mal so weit erledigt.
Als nächstes basteln wir den Schwingkreis. Einen KerKo aus SparkFun-Capacitors->CAP1206 (CAP) und den Quarz aus crystal->CRYSTALHC49U-V (CRYSTAL) holen. Unter der Spannungsversorgung jetzt den Schwingkreis (2 x 22pF + Quarz)aufbauen.
Nun bauen wir uns noch die Grundschaltung für den Reset-Taster aus einem KerKo (20nF), einem 10 kOhm pullup und dem Taster aus switch-omron->10-XX auf.
Was jetzt noch fehlt ist der Prozessor, der ISP-Header und die Wannenstecker für die Ports.
Den ISP-Header holen wir aus con-ml->ML6. Den Namen setzen wir auf ISP. Den Header lassen wir vorerst unbeschaltet.
Für die Port-Anschlüsse holen wir uns das Bauteil ML10, ebefalls aus con-ml und setzen den Namen auf PORTG. Auch den lassen wir zunächst unbeschaltet.
Suchen wir noch unsere MCU ( device MEGA128-A (MEGA128) aus der lib atmel ) raus und setzen sie in den Schaltplan.
Tipp: Bauteile zu Funktionsgruppen zusammenfassen und diese auf dem Schaltplan verteilen, damit er übersichtlich bleibt.
Jetzt widmen wir uns erst mal dem ISP-Header und den Ports.
Am ISP-Header setzen wir zunächst an jeden Pin (ausser #8 und #10) eine junction. Danach werden diese folgendermassen benannt: #1->PB3, #3->PB1, #5->RESET, #2->VCC, #4->PB2 und #6->GND.
Den Header für Port G kopieren wir zunächst mal und nennen die Kopie PORTA. Schiebt die Kopie am besten irgendwo über die MCU wo Platz ist.
Dann die Pins umbenennen: #1->VCC, #3->PG0, #5->PG2, #7->PG4, #9->PEN, #2->GND, #4->PG1, #6->PG3. Die Pins #8 und #10 werden später nicht benötigt und daher auch nicht umbenannt.
Bei VCC und GND erscheint ein Dialog-Fenster und eagle fragt nach, ob z.B. "N$1 mit VCC" verbunden werden soll. Bestätigt diese Abfrage jeweils mi OK/Ja.
screenshot:
Spoiler anzeigen
eagle verbindet Anschlüsse mit gleichen Namen und das machen wir uns zunutze indem wir einen Schaltplan in kleine, funktionell zusammengehörige Blöcke einteilen. Diese wiederum können wir nun auf dem Schaltplan verteilen der dadurch übersichtlich bleibt, weil wir keine Leiterbahnen kreuz und quer darin verlegen müssen.
Tipp: eagle fasst automatisch Verbindungen mit gleichem Namen zusammen.
Damit wir später noch wissen, welcher Pin was ist, versehen wir diese jetzt mit Labeln.
screenshot:
Spoiler anzeigen
Dazu gibts jetzt nichts weiter zu sagen. Sind wir mit dem ISP- und dem PORTG-Header durch zoomen wir mal etwas raus damit alles sichtbar ist. sieht das doch schon richtig professionell aus, oder?
An dieser Stelle noch ein Hinweis auf zwei weitere, wichtige Werkzeuge: SHOW und INFO ...
Mit Info werden der Name, der Wert, die zugehörige Bauteil-Library usw. angezeigt:
Spoiler anzeigen
SHOW hingegen zeigt alle Verbindungsliniene, die zu einem Pin oder einem Knotenpunkt gehören, an:
Spoiler anzeigen
Doch weiter ...
Gerade das Aufteilen macht schon eine Menge aus. Diese Einteilung ist unter anderem auch deshalb möglich, weil in eagle die Position der Bauteile im Schaltplan keinen direkten Einfluss auf die spätere Position und Lage der Bauteile auf der Platine hat. Es gibt da zwar Ausnahmen und eine davon lernen wir im zweiten Teil kennen, aber das lassen wir erst einmal aussen vor.
Und jetzt hätte ich fast etwas vergessen. Es fehlt nämlich noch die Schaltplan-Beschreibung. Dazu brauchen wir die frames.lbr. Die holen wir uns jetzt über den Menüpunkt "Bibliothek->Benutzen".
screenshot:
Spoiler anzeigen
Anschliessend suchen wir z.B. den frame DINA4_L aus und setzen ihn in unseren Schaltplan ein.
screenshots:
Spoiler anzeigen
Jetzt zoomen wir so weit raus bis unten rechts (oder links ...) ein gestricheltes Kreuz sichtbar wird. Nun gruppieren wir unsere bisherige Arbeit inkl. dem frame und verschieben das Ganze bis die linke, untere Ecke des Formulars in der rechten oberen Ecke des gestrichelten Keuz liegt.
screenshots:
Spoiler anzeigen
Ich bin mir nicht sicher ob der letzte Schritt notwendig ist, aber ich denke mal es kann zumindest nicht schaden. Wird sich zeigen ...
Dummerweise wird beim zoomen jetzt ein Teil der Zeichnung nicht mehr angezeigt. Das habe ich so gelöst, indem ich im Menü unter "Ansicht->Ausschnitt wählen" die Auswahl entsprechend auf die gesamte Zeichnung gelegt habe.
Tipp: Die Position der Bauteile im Schaltplan hat keinen direkten Einfluß auf die spätere Position und Lage auf der Platine.
Widmen wir uns noch mal der Spannungsversorgung, dem Schwingkreis und der RESET-Logik. Hier fehlen noch ein paar wichtige Symbole, Verbindungen und Label.
In der Spannungsversorgung fügen wir das Bezugs-Potential (supply1->GND) hinzu und zwar einmal am zweiten Anschluss der LED und einmal z.B. am Minus-Pol des Tantals C9.
screenshot:
Spoiler anzeigen
Den Verbindungsdialog wieder bestätigen.
Die junction vom Plus-Pol des Tantal C11 verbinden wir jetzt noch mit einem VCC des AVR.
Und wo wir schon dabei sind verdrahten wir die Pins AREF, AVCC und VCC des ATMEL-Käfers, nachdem wir ihnen jeweils eine junction spendiert haben, so wie aus dem screenshot ersichtlich
Achtung! Möglicherweise haben die Kondensatoren bei Euch andere Namen. Nehmt also unbedingt den screenshot als Vorlage für die Verbindungen der Spannungsversorgung.
screenshots:
Spoiler anzeigen
Die GND-Pins der MCU bekommen nur eine junction, werden zu GND umbenannt und gelabelt.
Bingo ... Spannungs-Versorgung schon mal fertig verschaltet.
Die "linke" (dem Quarz gegenüberliegende) Seite des Schwingkreises bekommt ein Bezugs-Potential verpasst, auf der anderen "Seite" setzen wir jeweils eine junction auf die beiden Endpunkte des Quarz. Die MCU-Pins XTAL1 und XTAL2 bekommen ebenfalls jeweils eine junction mit passendem Namen ( XTAL1 bzw. XTAL2 ... logisch ... ) und eine Verbindung von den junctions am oberen bzw. unteren Ende des Quarz.
Jetzt noch ein GND-Anschluss an den 20 nF der RESET-Logik, einen weiteren GND an die Pins #3 und/oder #4 des Tasters und VCC an den Pullup derselben. Der RESET-Pin erhält eine junction mit Namen RESET und eine Verbindung zu Pin #1 des Tasters.
Das Fertigstellen der Port-Anschlüsse erfolgt analog zu Port G. Zunächst kopieren wir unseren PORTA-Header nach PORTB, PORTC, PORTD, PORTE und PORTF. Die Kopien setzen wir am besten rechts neben der MCU untereinander. Dort sollte genügend Platz sein.
PORTA versehen wir dann mit junctions an jedem Pin, benennen sie um (#1->VCC, #3->PA0, #5->PA2, #7->PA4, #9->PA6, #2->GND, #4->PA1, #6->PA3, #8->PA5 und #10->PA7) und versehen sie mit einem Label.
Bei den Abfragen wegen der Verbindung von VCC und GND wieder mit OK/Ja bestätigen.
Nach demselben Schema jetzt für Port B, C, D, E und F verfahren. Dadurch stellen wir später den Bezug zu den Pins der MCU her.
Sehen ja schon mal sehr gut aus die Ports ... aber irgendwas fehlt noch. Genau: Abblock-Kondensatoren. Die Wannenstecker haben ja zwei Anschlüsse mehr als der AVR I/Os pro Port hat - nämlich VCC und GND. Es erscheint mir sinnvoll diese beiden Pins auch auf den Wannensteckern verfügbar zu machen, weil ich damit dann einen Testaufbau gleich mitversorgen oder eben die Spannungsversorgung des PCBs über einen externen Testaufbau realisieren kann.
Deshalb schalten wir an jedem Port einen KerKo mit 10 nF zwischen VCC und GND. Behaltet das mal im Hinterkopf, denn das ist die Ausnahme von der Regel "Die Position der Bauteile im Schaltplan ..." zu der ich aber im zweiten Teil erst was sagen möchte.
Tipp: Abblock-Kondensatoren nicht vergessen!
Letztlich noch die restlichen Pins der MCU mit jeweils einer junction versehen, diese zum Pin-Namen der MCU umbenennen und labeln.
Und jetzt macht das doch schon was her, oder?
Dann wollen wir mal sehen ob sich Fehler eingeschlichen haben.
Zum Abschluss unbedingt mit ERC auf Fehler prüfen und diese korrigieren.
eagle ist da sehr komfortabel und zeigt zu jeder Fehlermeldung oder Warnung die genaue Position im Schaltplan an.
screenshot:
Spoiler anzeigen
Am Schluss sollten nur noch ein paar Warnungen wegen PORTA ... übrig sein.
screenshot:
Spoiler anzeigen
Tipp: nach jeder Änderung des Schaltplans diesen mit ERC auf Fehler prüfen und diese korrigieren.
Und so sollte der Schaltplan jetzt aussehen:
Spoiler anzeigen
So, das war's erst mal mit dem Schaltplan. Wir treffen uns dann im zweiten Teil des Crashkurs ("vom Schaltplan zum PCB") und beschäftigen uns dann hauptsächlich mit dem Board-Editor.
Ich hab' mich in das "erweiterte Handling" von eagle erst kürzlich eingelesen. Es kann also gut sein, dass mir da noch der eine oder andere Fehler unterlaufen ist.
Tipps und Verbesserungs-Vorschläge sind, wie immer, willkommen und eventuell hat ja jemand von Euch die Windows-Version im Einsatz und mag die Unterschiede, falls vorhanden, mal in einem Kommentar hier zusammenfassen.
TODO Liste:
NET statt WIREBauteile am Raster ausrichtenShow- und Info-Knopf kurz erklären
History:
19.02.2016 - erste Version online gestellt
22.02.2016 - Kleinere Korrekturen, ZIP-Datei mit Schaltplan angehängt
Jetzt erst mal viel Spass und Erfolg bei Euren Schaltplänen ...
-ds-