zurück zum Artikel

Anleitung: Autodesk Circuits

Florian Schäffer
Screenshot Autodesk 123D Circuit Electronic Lab

Simulation eines Arduino mit HD44780 Display und PWM-Signal

Mit Autodesk Circuits alias Circuits.io oder auch 123D Circuits kann man elektronische Schaltungen, aber auch Sourcecode im Arduino kostenlos und online simulieren. Wir zeigen in einer kurzen Einführung, welche Möglichkeiten es gibt, welche Probleme es zu umschiffen gilt und wie Sie die ersten Schritte meistern.

Wenn es um die Simulation elektrischer Schaltungen geht, denken viele gleich an SPICE [1] (Simulation Program with Integrated Circuit Emphasis) oder dessen Vorgänger CANCER (Computer Analysis of Nonlinear Circuits Excluding Radiation) und dessen Derivate wie LTspice [2]. Damit sind auch komplexe Simulationen und Analysen hochfrequenter Schaltungen möglich. Allerdings ist die Handhabung nicht so benutzerfreundlich, wie es heutzutage eigentlich dem Stand der Technik entspräche.

Diese Lücke könnte Autodesk mit seinem kostenlosen Web-Angebot 123D Circuits [3] und dem Electronic Lab schließen. Neben diesem bietet Autodesk noch drei weitere Plattformen an (so genannte "Hubs") – unter anderem zum Entwerfen von Platinen. Direkt im Browser können Sie Ihre Schaltung aus Standard-Bauteilen auf einem simulierten Breadboard aufbauen und dann gefahrlos testen. Die Darstellung wird vielen Anwendern vertraut erscheinen, da sie stark an das bekannte Tool Fritzing [4] erinnert.

Der besondere Clou ist aber, dass Sie in Electronic Lab auch AVR-Mikrocontroller vom Typ Atmega328 oder ATtiny virtuell programmieren können. Dazu stehen Ihnen ein Arduino Uno und ein Arduino Micro zur Verfügung, sowie eine Entwicklungsumgebung, die an die Arduino IDE (integrated development environment) angelehnt ist und deren sämtliche Standard-Bibliotheken kennt. Sie können dadurch in Electronic Lab einfach den Arduino mit der externen Elektronik in Form von einigen vorbereiteten Shields oder individueller Elektronik verbinden, Programmcode schreiben und alles online simulieren und ausgiebig testen. So können Sie prüfen, ob Ihre Schaltung funktioniert, bevor Sie zum Lötkolben greifen. Auch für Schulungen und erste Gehversuche ist die Simulation praktisch, da keine Kosten entstehen und keine Elektronik beschädigt werden kann.

Natürlich ist eine Simulation immer nur der Versuch, die Realität möglichst originalgetreu nachzubilden. Autodesks Online-Service kommt dabei auch schnell an einige Grenzen. Fast gar nicht möglich ist die Simulation analoger Schaltungen mit höheren Frequenzen, sehr kleinen Spannungen oder von physikalischen Phänomenen. Allein schon die Simulation eines astabilen Multivibrators [5] mit zwei Transistoren gelingt nicht. Werden die üblichen Elektrolytkondensatoren eingefügt, signalisiert die Software einen Defekt aufgrund der Umladung, die aber ganz normal und harmlos ist.

Die Standard-Kippstufe lässt sich nicht simulieren.

Die Standard-Kippstufe lässt sich nicht simulieren.

Auch lässt sich am vorhandenen Signalgenerator [6] keine Spannung kleiner als 0,001 Volt einstellen und die virtuellen Oszilloskope haben schon bei dieser Spannung Probleme, die Signalkurve korrekt anzuzeigen. Einfache analoge Schaltungen, Logikgatter oder eben Experimente mit dem Arduino sind aber kein Problem, machen Spaß und verführen aufgrund der spielerischen Nutzung zu weiteren Experimenten.

Kleine Spannungen werden nicht korrekt simuliert.

Kleine Spannungen werden nicht korrekt dargestellt.

Starten Sie auf der Webseite von 123D Circuit und registrieren Sie sich bei Ihrem ersten Besuch (Sign up) oder melden Sie sich mit Sign in an.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Es gibt verschiedene Hilfsmittel, die Sie durch Anklicken des Menü-Symbols in der linken oberen Ecke der Webseite am linken Fensterrand einblenden können. Wechseln Sie zu Electronic Lab und klicken Sie dann auf die grüne Schaltfläche New Electronic Lab. Wenn Sie schon Projekte erstellt haben, werden diese aufgelistet, damit Sie diese weiter bearbeiten können. Um alle Ihre Projekte zu sehen, klicken Sie am Ende der Liste auf Show all my designs.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Nachdem das neue Projekt angelegt wurde, ist es empfehlenswert, einen sinnvollen Namen zu vergeben. Klicken Sie dazu oben rechts auf das Zahnrad-Symbol, um die Einstellungen zu öffnen. Bei Name tragen Sie einen passenden Namen ein. Da alle Projekte auf der Webseite von Autodesk veröffentlicht werden, passen Sie die Lizenz für Ihr Projekt noch an, falls Sie nicht CC-BY-SA [7] benutzen wollen.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Wechseln Sie dann zur Breadboard-Ansicht, in dem Sie oben rechts auf das Symbol mit dem IC-Gehäuse klicken. Sie brauchen Ihre Arbeit nie zu speichern – das wird automatisch bei jeder Änderung erledigt. Mit der rechten Maustaste verschieben Sie den Fensterausschnitt und mit dem Mausrad können Sie zoomen.

Wenn Sie sich bereits mit Fritzing auskennen, wird die Bearbeitung Ihnen vertraut sein. Um ein Bauteil hinzuzufügen, öffnen Sie durch Klick auf Components die Bauteilbibliothek am unteren Fensterrand. In der Ansicht All Component List stehen teilweise noch ein paar Zusatzinfos zu den einzelnen Bauteilen. Wählen Sie ein Bauteil durch Anklicken aus und klicken Sie dann im Bereich des Breadboards, um das Bauteil dort abzulegen. Wir beginnen zur Übung mit einem NPN-Transistor.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

In der Breadboard [8]-Ansicht können Sie ein Bauteil einfach greifen und verschieben. Ist das Bauteil ausgewählt (mit einem Rand markiert), dann kann es mit <Entf> gelöscht werden. Bauteile können hier nur in 45-Grad-Schritten im Uhrzeigersinn gedreht und nicht gespiegelt werden. Fehler lassen sich mit den bekannten Funktionen Undo und Redo jederzeit korrigieren.

Platzieren Sie die benötigten Bauteile auf dem Breadboard, wie in der nächsten Abbildung gezeigt. Achten Sie darauf, dass in diesem Beispiel die Halbleiter (Diode, LED, Transistor) alle um 180 Grad gedreht wurden, der Widerstand hingegen um 90 Grad.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Um einen Bauteilwert zu ändern (beispielsweise den Widerstandswert oder die Farbe der LED), klicken Sie das Bauteil an, um es zu markieren. Anschließend können Sie im rechten oberen Bereich die passenden Angaben eintragen oder auswählen. Bei Widerständen (in dem Fall werden 330 Ω benötigt), ändert sich auch die Farbe der Kennringe analog zum Wert. Für das Netzteil stellen Sie eine Ausgangsspannung von 12 V ein.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Um eine Drahtbrücke oder Verbindung einzusetzen, ziehen Sie einfach eine Verbindungslinie zwischen dem Start- und dem Endpunkt. Dabei kann es sich um einen Bauteilanschluss oder ein Buchsenfeld auf dem Breadboard handeln. Bei einigen Bauteilen wird Ihnen angezeigt, um was für einen Anschluss es sich handelt (so zum Beispiel beim Transistor für Basis, Emitter und Kollektor). Auch die Farbe der Verbindungen kann wie gewohnt über die Eigenschaften verändert werden.

Um den Anfangs- oder Endpunkt einer Linie zu versetzen, muss zuerst die Linie angeklickt werden, dann kann man die Punkte greifen. Durch Doppelklick auf die Linie fügen Sie Zwischenpunkte ein. So lassen sich auch geknickte Leitungen verlegen. Um die abgerundeten Knicke symmetrisch auszurichten, erscheinen Fang- und Hilfslinien, wenn man den Zwischenpunkt verschiebt und dann auf einer waagerechten oder senkrechten Linie landet, wie hier zu sehen ist:

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Zeichnen Sie alle Verbindungen ein, wie sie in der Abbildung zu sehen sind.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Haben Sie alles fertig verdrahtet, klicken Sie auf Start Simulation. Wenn kein virtueller Aufbaufehler vorliegt, sollte jetzt die Glühbirne leuchten. Sie wird vom Netzteil mit 12 V über das Relais versorgt. Drücken Sie mit der Maus auf den Taster, leuchtet die LED auf und die Glühlampe erlischt. Der Transistor wird durch den Taster an der Basis angesteuert und schaltet durch. Dadurch kann der Batteriestrom durch die Relaisspule über die Kollektor-Emitter-Strecke des Transistors fließen und das Relais schaltet um, was in diesem Fall dazu führt, dass der Last-Stromkreis geöffnet wird. Das Symbol des Relais zeigt den Umschaltvorgang auch an. Um die Simulation anzuhalten, klicken Sie auf Stop Simulation.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Neben der Breadboard-Ansicht gibt es auch noch je eine Ansicht für den Schaltplan, zum Gestalten von Platinen sowie die Bauteileliste. Wir wollen nur einen kurzen Blick auf den Schaltplan werfen. Meistens sieht dieser katastrophal aus: Alle Bauteile wurden einfach übereinander geschichtet.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Um hier ein wenig Übersicht zu bekommen, müssen zuerst alle Teile etwas auseinander geschoben werden. Leider kann man dabei nicht auch die Verbindungslinien verschieben. So bleibt nur eine sinnvolle Platzierung der Bauteile, um die Darstellung aufzuräumen. Die Bauteile kann man in der Schaltplanansicht aber immerhin zusätzlich spiegeln.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Das von der Redaktion erstellte Beispielprojekt [9] können Sie natürlich auch bei Autodesk öffnen.

Im zweiten Beispiel [10] soll ein Arduino Uno ein Standard-LC-Display vom Typ HD44780 [11] ansteuern. Zusätzlich wird ein Taster genutzt, um die Frequenz für ein PWM-Signal zu verändern. Mit diesem Signal wird die Helligkeit einer LED beeinflusst. Ein Oszilloskop soll verdeutlichen, dass es sich dabei nicht um ein analoges Signal handelt, wie im Zusammenhang mit den Arduinos leider immer wieder zu lesen ist.

Zuerst bauen wir nur das LCD zusammen mit dem Arduino auf. Der Arduino R3 wird automatisch über die symbolisierte USB-Verbindung mit Spannung versorgt, wenn Sie die Simulation starten. Diese Spannung wird vom Arduino-Board an das Breadboard geleitet. Das LCD vom Typ HD44780 wird in der typischen Konfiguration betrieben, bei der nur die unteren vier Datenleitungen zum Einsatz kommen. Weil nur Daten ans Display gesendet werden sollen, kann die Leitung R/W (read/write) permanent auf Low (Masse) gezogen werden. Neben den vier Datenleitungen wird noch Reset und Enable zum Arduino verlegt. Die LED-Hintergrundbeleuchtung wird über einen Vorwiderstand von 220 Ω an 5 V betrieben. Für die Kontrastregelung ist ein Poti mit 10 kΩ verbaut.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Wenn Sie jetzt die Simulation starten würden, passiert noch nicht viel. Die grüne LED auf dem Arduino leuchtet als Betriebsanzeige, das Display bleibt aber dunkel, da es noch nicht angesteuert wird. Um den ATmega zu programmieren, klicken Sie oben rechts auf Code Editor. Am unteren Rand öffnet sich der Eingabebereich für den Quellcode.

Tragen Sie dort die folgenden Anweisungen ein:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
uint8_t valuePWM = 128;

void setup()
{
lcd.begin (16, 2); // set up the LCD's number of columns and rows:
lcd.print ("hello Make:"); // Print a message to the LCD.
lcdOutValue();
}

void lcdOutValue(void)
{
lcd.setCursor(0, 1); // set the cursor to column 0, line 1. (note: line 1 is the second row, since counting begins with 0)
lcd.print("PWM value: ");
lcd.print(valuePWM); // print the value
lcd.print(" "); // overwrite old values
}

void loop()
{
}
Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Anschließend klicken Sie auf Upload & Run oder Start Simulation. Der Sourcecode wird dann übersetzt und die Ausführung auf dem Arduino wird simuliert, wenn keine Fehler vorliegen. Andernfalls wird die zu bemängelnde Stelle markiert und Sie können den Fehler im Text beseitigen.

Beim ersten Start wird vermutlich auf dem Display nichts zu sehen sein. Das liegt an der noch nicht eingestellten Kontrastspannung. Drehen Sie dann während der laufenden Simulation am Potentiometer den inneren Pfeil nach rechts, bis im Display der Text lesbar wird. Diese Einstellung kann ein wenig fummelig sein. Eventuell ist es einfacher, an die gewünschte Zeigerposition zu klicken.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Um den Sourcecode zu verändern, muss man erst die Simulation anhalten. Für den Zugriff auf das Display wurde im Beispiel die Bibliothek LiquidCrystal.h eingebunden. Auf eine weitere Beschreibung der Anweisungen verzichten wir hier, da es sich dabei um die einfachsten Grundlagen der Arduino-Nutzung handelt – die hier nicht Thema sind. Auf der Webseite mit der Arduino-Referenz für C [12] finden Sie die Dokumentation zu der verwendeten Bibliothek und den Befehlen.

Im nächsten Schritt sollen dem Aufbau [13] noch ein paar weitere Bauteile hinzugefügt werden: Taster, LED mit Vorwiderstand (1 kΩ), Voltmeter und Oszilloskop. Nachdem Sie das Multimeter eingebaut haben, ändern Sie bei den Eigenschaften zum Objekt die Messgröße (Mode) auf Voltage, um Spannungen zu messen. Für das Scope stellen Sie bei Time per division 1 ms ein.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Ergänzen Sie den Quelltext zu diesem Gesamtprogramm:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
uint8_t ledPin = 9;
uint8_t btnPin = 7;
uint8_t valuePWM = 128;

void setup()
{
lcd.begin (16, 2); // set up the LCD's number of columns and rows:
lcd.print ("hello Make:"); // Print a message to the LCD.
pinMode (ledPin, OUTPUT); // sets pin as output
pinMode (btnPin, INPUT_PULLUP); // set pin as input with internal Pullup
analogWrite (ledPin, valuePWM); // PWM signal out
lcdOutValue();
}

void lcdOutValue(void)
{
lcd.setCursor(0, 1); // set the cursor to column 0, line 1. (note: line 1 is the second row, since counting begins with 0)
lcd.print("PWM value: ");
lcd.print(valuePWM); // print the value
lcd.print(" "); // overwrite old values
}

void loop()
{
if (!digitalRead (btnPin)) // Button pressed (=LOW)?
{
_delay_ms(20); // debouncing
while (!digitalRead (btnPin)) ; // wait until released

valuePWM += 16;
analogWrite (ledPin, valuePWM); // PWM signal out
lcdOutValue();
}
}
Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Wenn Sie anschließend die Ausführung wieder starten, dann sollte auf dem Oszilloskop das phasenmodulierte Signal (PWM) zu sehen sein. Mit jedem Klick auf den Taster wird der Wert erhöht, bis die Variable überläuft und wieder bei 0 begonnen wird. Geänderte PWM-Werte führen zu einer Änderung der Helligkeit der LED, weil die LED mit längeren oder kürzeren Impulsen angesteuert wird. Am oberen Rand sehen Sie die Zeit, die die Simulation bereits läuft. Hier wird deutlich sichtbar, dass es sich um keine Echtzeitsimulation handelt, da die Sekunden langsamer verstreichen. Bei zeitkritischen Anwendungen ist das zu berücksichtigen.

Screenshot Autodesk 123D Circuit Electronic Lab

Zum Vergrößern bitte anklicken.

Nach dieser Einführung in Electronics Lab haben Sie bereits einen guten Überblick über die Möglichkeiten der Online-Simulation von Autodesk. Nun steht eigenen Experimenten nichts mehr im Weg und Sie können die anderen Bauteile und eigenen Code erproben. Wie Sie gesehen haben, eignet sich das Web-Tool gut für die ersten gefahrlosen Schritte in die Welt der Elektronik und Mikrocontroller. Hat Ihr Aufbau hier funktioniert, können Sie sich an einen realen Nachbau wagen. Trotzdem gibt es aber Grenzen, die bisher von der Simulation nicht beherrscht werden. Für einen Anfänger kann es durchaus schwer sein, zu erkennen, ob der Fehler dann im eigenen Plan oder bei der Programmierung liegt oder ob die Simulation von der Realität abweicht.








(fls [14])


URL dieses Artikels:
https://www.heise.de/-3259142

Links in diesem Artikel:
[1] http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE/
[2] http://www.heise.de/make/inhalt/2014/2/92/
[3] https://circuits.io/
[4] https://www.heise.de/news/Open-Source-Schaltungsplaner-mit-Code-Editor-2481496.html
[5] https://circuits.io/circuits/2393099-astabiler-multivibrator
[6] https://circuits.io/circuits/2402920-signalgenerator
[7] http://de.creativecommons.org/
[8] https://www.heise.de/ratgeber/Steckbretter-1204874.html
[9] https://circuits.io/circuits/2403140-transistor-demo
[10] https://circuits.io/circuits/2403524-lcd-hd44780
[11] https://de.wikipedia.org/wiki/HD44780
[12] https://www.arduino.cc/en/Reference/HomePage
[13] https://circuits.io/circuits/2363051-lcd-pwm
[14] mailto:fls@make-magazin.de