![]() |
ARDUINO Servosteuerung preiswerte, vielfältige Anwendungsmöglichkeiten |
Ein Muss für jede Modellbahnanlage
sind Weichenantriebe. Diese sind im Allgemeinen relativ teuer; so liegt
beispielsweise bei MÄRKLIN der Preis pro Weichenantrieb bei bei 21,99 €
und möchte man dann noch einen Unterflurantrieb, so kostet der
Unterflurzurüstsatz nochmal 16,49 €, in Summe also stattliche
![]() Ein ARDUINO NANO kostet rund 2,-- € (im 5-wer Set) und ein SERVO etwa 4,-- € (im 10-ner Set), in Summe also ca. 6,-- € (Stand Oktober 2021). Der kurze kleine Antriebsdraht fällt kostenmäßig nicht ins Gewicht und eine Servohalterung ist schnell aus zwei Holzklötzchen hergestellt. Natürlich wird auch eine Stromversorgung für die Servos und ARDOINOs benötigt. Hier kann aber eine Stromversorgung mehrere Einheiten versorgen. Außerdem kann mit einem einzigen ARDUINO NANO mehr als nur ein einziger Weichenantrieb realisiert werden: ein NANO steuert z.B. 6 Antriebe, dann reduziert sich der Preis auf ![]() Aber auch andere Anwendungen erschließen sich mit Servosteuerungen: Tore von Lokschuppen, drehbare Wasserkräne, und so weiter. |
Vorbemerkungen: 1.] zu Servoansteuerungen mit einem ARDUINO stehen auch fertige Bibliotheken zur Verfügung. Ich möchte aber grundlegend zeigen wie Servos mit einem ARDUINO angesteuert werden können (verwendet man Bibliotheken, so ist nicht erkennbar, was diese wie tun!). 2.] Meist ist zu lesen, dass Servos an PWM-Anschlüssen (PWM = PulsWeitenModulation) eines ARDUINOs anzuschließen sind. Ich zeige, dass auch digitale Pins (D0 - D13) verwendbar sind. 3.] Im Allgemeinen ziehen Servos (insbesondere im Einschaltmoment) viel Strom, sodass eine entsprechende externe Stromversorgung der Servos eingesetzt wird. In der nachfolgenden Beschreibung eines Tests mit nur einem Servo verzichten wir darauf, damit die grundlegende Ansteuerung deutlicher ist. 4.] Die in einem Servo enthaltenen Spulen erzeugen beim Betrieb mehr oder weniger hohe Spannungsspitzen, welche ARDUINO-Ausgänge schädigen können. Deshalb werden hier zumeist sogenannte Treiberbausteine verwendet. Auch diese setze ich in meiner ersten TEST-BESCHREIBUNG nicht ein, damit die Schaltung so einfach wie möglich ist und damit das Wesentliche deutlicher wird. 5.] Verwendet man im TEST nur einen einzigen kleinen Servo, der wenig Leistung hat und damit wenig Strom benötigt, so spielen die oben genannten Punkt [3] und [4] keine Rolle, was meine Testaufbauten bestätigen. |
Eine erste Demo-Schaltung
Abbildung 1
zeigt den Testaufbau. Mit nur einem ARDUINO NANO, einem Servo, und 2 Taster (der Elko dient nur zur Stabilisierung, da die Stromversorgung über den USB-Anschluss erfolgt) ist eine Servosteuerung auf einem Steckboard aufgebaut. Der Servo ist mit GND und +5V Unter den oben genannten Bedingungen dient dieser Aufbau lediglich der Demonstration, um das erforderliche Programm (Scetch) des ARDUIONO zu testen. |
![]() Abb.1 |
Abbildung 2
zeigt den Schaltplan. Der Servo ist mit GND (scharz) und +5V (rot), sowie seiner Pulsleitung (gelb) an Pin D2 des ARDUINO NANO verbunden. Der Taster Ta1, zuständig für den Linkslauf des Servos, ist an D3 und Taster Ta2, für den Rechtslauf, an D4 des NONOs angeschlossen. Ein Elektrolytkondensator (Elko) stabilisiert die Stromversorgung beim Anlauf des Servos. Fehlt nur noch das Programm (Scetch), was nachfolgend kommentiert in Abbildung 3 dargestellt wird. Hier habe ich bewusst auf Einbindungen von Bibliotheken zu Servosteuerungen verzichtet, um das Prinzip von Servoansteuerungen explizit zu zeigen, denn bei Verwendung von Bibliothekten ist das nicht erkennbar. |
![]() Abb.2 |
![]() Abb.3 |
Download obiger
Abbildungen 1 bis 3: Servo_NANO_1-Servo ARDUINO Sketch und Fritzing |
Weitere Informationen finden Sie unter: => Grundlagen => ARDUINO und Zubehör |
Nimmt man diese
Demo-Schaltung in Betrieb, so wird man feststellen, dass der
Servo sich in seiner Mittelstellung befindet. Der Servo führt eine
langsame Linksbewegung aus, solange
die Taste Ta1 gedrückt wird. Eine Rechsbewegung erfolgt solange die
Taste Ta2 gedrückt wird. Nach Unterbrechung der Versorgungsspannung
verbleibt der Servo in seiner letzten Position. Wird die
Versorgungsspannung wieder eingeschaltet, so kehrt der Servo automatisch
schnell in seine Mittelstellung
zurück! Ohne die Stromversorgung zu unterbrechen kann auch die
RESET-Taste am UNO betätigt werden, worauf das Programm neu gestartet
wird und der Servo natürlich ebenfalls in seine Mittelstellung
zurückgesetzt wird. In den Endpositionen stoppt der Servo automatisch. Statt Taster können auch Schalter verwendet werden. Dann führt der Servo entsprechende Bewegungen solange aus, wie ein Schalter eingeschaltet ist, oder seine jeweilige Endposition erreicht hat. Taster, bzw. Schalter, können natürlich auch durch Schaltmodulausgänge von einer Modellbahnanlagensteuerung ersetzt werden. Dies soll aber einem separaten späteren Thema vorbehalten bleiben, wenn es um reale Einsätze geht. Hier soll "nur" das Grundsätzliche in Form von Test-Schaltungen vermittelt werden, also wie ein ARDUINO zur Ansteuerung von Servos prinzipiell zu programmieren ist! Dem geneigten Leser ist es natürlich nicht vorbehalten, selber die hier vorgestellten Demo-Programme zu seinen Zwecken zu verändern. |
Demo-Schaltung für 2 Servos
Das Programm zur unabhängigen Ansteuerung von 2 Servos entwickeln wir aus dem obigen Programm der Abbildung 3, damit die Vorgehensweise leichter verständlich ist. Das Programm wird aber auch Schwächen aufweisen (davon später). |
Abbildung 4 zeigt den Testaufbau. Da hier 2 Servos verbaut sind, verwenden wir eine externe Stromversorgung (für stromsparende Servos zu Testzwecken nicht zwingend erforderlich). Servo 1 ist an D2 mit zugehörigen Tastern Ta1 an D3 und Ta2 an D4 verbunden. Servo 2 ist an D5 mit zugehörigen Tastern Ta3 an D6 und Ta4 an D7 verbunden. |
![]() Abb.4 |
Abbildung 5 zeigt den Schaltplan. im Prinzip wie Abbildung 2, nur erweitert um einen zweiten Servo und der externen Stromversorgung, wobei zu beachten ist, dass die Versorgungs-Ströme (Plus und Minus) für die Servos nicht durch den ARDUINO NANO laufen! Fehlt nur noch das Programm, was in Abbildung 6 dargestellt wird. |
![]() Abb.5 |
![]() Abb.6 |
Wie wurde das Listing aus Abbildung
3 verändert? Nun, es wurden entsprechende Abschnitte kopiert und hinter
entsprechenden Abschnitten eingefügt. Dann wurden Namen dahingehend
geändert, dass eine Nummer hinzugefügt wurde, jeweils eine "1", was den Servo 1 betrifft und eine "2", was den servo 2 betrifft. Also wurde z.B.
"int minPuls = 600;" ersetzt durch "int minPuls1 = 600;", bzw. "int
minPuls2 = 600;", usw. Außerdem wurden für Servo 2 und zugehörigen
Tastern (Ta3 und Ta4; deren Nummern auch geändert wurden!) auch die
Anschlüsse im Listing angepasst. In der obigen Listingsabbildung 6 habe
ich die entsprechenden Abschnitte durch gelbe Schriftbezeichnungen
kenntlich gemacht. Wie in der ersten Demo-Schaltung wird mit den Tastern 1 und 2 der Servo 1 gesteuert. Die Taster 3 und 4 steuern entsprechend den Servo 2. Beide Servos können gleichzeitig angesprochen werden. Download obiger Abbildungen 4 bis 6: Servo_NANO_2-Servo_extPOWER ARDUINO Sketch und Fritzing Was sind nun aber die anfangs genannten Schwächen des Programms? Wird zeitlich jeweils nur ein Servo angesprochen, so funktioniert alles genau wie beim ersten Demo-Programm. Werden aber beide Servos gleichzeitig angesprochen, so ist deren Stellgeschwindigkeit verlangsamt! Woran liegt das? Nun, der ARDUINO kann nicht beide Servos gleichzeitig ansprechen, sondern nur hintereinander! Also erst wird die Schleife für Servo 1 durchlaufen und danach die Schleife für Servo 2. Wird nur Servo 1 angesprochen und nicht Servo 2, so arbeitet der ARDUINO die Schleife für Servo 1 ab und für die Schleife des Servos 2 hat der ARDUINO nichts zu tun (diese Schleife wird also schnell verlassen). Wird nur Servo 2 angesprochen und nicht Servo 1, so arbeitet der ARDUINO die Schleife für Servo 1 nicht ab, sondern springt gleich zur Schleife des Servos 2. Werden hingegen beide Servos angesprochen, so muss der ARDUINO natürlich beide Schleifen abarbeiten, was selbstverständlich mehr Zeit in Anspruch nimmt. Die Servos bewegen sich deshalb langsamer und ein kompletter Schaltdurchlauf dauert entsprechend länger. Was bedeutet dies, wenn man diese Schaltung für den Antrieb von Weichen einsetzen möchte? Sollen 2 Weichen gleichzeitig geschaltet werden, dann dauern die Weichenumschalten eben etwas länger, als wenn nur eine Weiche umgeschaltet werden muss. Erweitert man das Programm (was prinzipiell möglich ist) auf gleiche Weise auf 6 Servos, so verlängern sich die Schaltvorgänge bei gleichzeitiger Ansteuerungen aller 6 Antriebe doch erheblich und das ist dann nicht mehr zu vernachlässigen! Man könnte natürlich die Geschwindigkeit der Servos erhöhen. Dann aber würde die Weichengeschwindigkeit bei nur Betätigung eines einzigen Antriebs nicht mehr so vorbildgerecht langsam ablaufen. Um das Problem zu langer Schaltzeiten zu umgehen, könnten die Servogeschwindigkeiten auch bis auf ein Minimum reduziert werden. Damit würde bei Schaltung nur einer Weiche diese aber nicht mehr vorbildgerecht langsam umschalten, sondern nahezu schlagartig, wie bei den Spulenantrieben. Gibt es einen Ausweg aus dieser Problematik? Ja, siehe unten: 2 Servos behalten stets ihre Geschwindigkeiten bei. Außerdem wird bei den meisten Weichenantrieben keine Mittelstellung des Servos benötigt (außer vielleicht bei Dreiwegweichen), sondern nur eine einfache Links-Rechts-Bewegung. Das Programm dahingehend zu ändern ist aber trivial. Auch dies werde ich einmal gesondert beschreiben. |
Servos behalten stets ihre Geschwindigkeiten bei
Die Schaltung bleibt unverändert
(also so, wie sie die obigen Abbildungen 4 und 5 zeigen. Lediglich das
Programm (der Sketch) wird angepasst. In der folgenden Abbildung 7 ist
dies in zwei orangen Rahmen kenntlich gemacht. Im oberen Rahmen werden deklariert: die Variablen "turnRate", "TurnRate1" mit dem zugewiesenem Wert 1 (wenn jeweils nur ein Servo angesteuert wird, und "turnRate2" mit zugewiesenem Wert 2 (wenn zwei Servos gleichzeitig angesteuert werden. |
![]() Abb.7 |
Im untere, zweiten Rahmen wird
abgefragt, ob 2 Servos gleichzeitig angesteuert werden; also ob
(Ta1 oder Ta2
und Ta3
oder Ta4) gedrückt sind. Ist diese der Fall ("if"), dann wird der
Variablen "turnRate" der Wert der Variablen "turnRate2", also 2,
zugewiesen. Damit sind dann die Servogeschwindigkeiten höher. Trifft die obige "if"-Bedingung nicht zu, so ("else" =sonst) wird der Variablen "turnRate" der Wert der Variablen "turnRate1", also 1, zugewiesen. Also eine langsamere Geschwindigkeitsänderung der Servos pro Schritt. Wir haben also für die Geschwindigkeiten der Servos zwei Umdrehungsgeschwindigkeiten ("turnRate1" und "turnRate2") eingeführt, welche den Servos je nachdem, ob jeweils nur ein Servo, oder beide zur Zeit angesprochen werden, zugeordnet wird ("turnRate"). Download obiger Abbildungen 7: Servo_NANO_2-Servo_Geschwindigkeit ARDUINO Sketch und Fritzing Im Programm "Fritzing" (Download) sind natürlich wieder enthalten die Abbildungen "Steckplatine", "Schaltplan", "Code" (das Programm-Listing), aber auch "Leiterplatte". "Leiterplatte" bietet die Möglichkeit eine Platine für die Schaltung zu erstellen, was sich in diesem Fall wohl nicht lohnt, da es sich ja nur um eine Test-Schaltung handelt. Später einmal, wenn wir einen für Modellbahnanwendungen geeigneten Aufbau mit vielen Servos haben, dann wird eine Platine zum Festaufbau sinnvoll sein. Hier sollen lediglich die dazu erforderlichen Grundlagen vermittelt werden! Ich habe hier gezeigt, dass mit einem ARDUINO Servosteuerungen realisierbar sind, bei denen auch rein digitale Ein-/Ausgänge des ARDUINOs zu Servosteuerungen verwendet werden können und man nicht auf die wenigen PWM-Ausgängen angewiesen ist. Und dass es auch ohne Einbindungen von Libraries (Bibliotheken) in das Programm funktioniert! Dadurch wird es deutlicher, wie prinzipiell die Ansteuerung von Servos funktioniert. Es sei aber nicht verschwiegen, dass bei Einbindungen von Libraries Programme deutlich vereinfacht werden und dazu noch viel mehr Servos an einem einzigen ARDUINO betrieben werden können; bei Verwendung preiswerter Module (im Handel erhältlich). Mit einem einzigen Modul können 16 Servos angesteuert werden. Und es können 62 solcher Boards zusammengeschaltet werden, wobei dann 992 PWM-Ausgänge für Servos zur Verfügung stehen! Gemeint ist hier das Modul "Adafruit 16-Channel 12-bit PWM/Servo Driver-I2C interface-PCA9685", welches für 13,45 € erhältlich ist (Stand Oktober 2021). Jeder kann sich selber ausrechen, wie preiswert damit bis zu 992 Servoantriebe machbar sind (im Gegensatz zu 992 käuflich erwerbbare Weichenantriebe). Es zahlt sich folglich aus, sich mit Programmierungen zu beschäftigen und zu "Basteln", wobei zudem die erforderlich Bauteilemenge zum Bauen gering ist!!! Über den Bau von servogesteuerten Weichenantrieben für den Betrieb auf einer Modellbahnanlage werde ich bei Gelegenheit an geeigneter Stelle berichten. Hier sollten die dazu erforderlichen Grundkenntnisse vermittelt werden. |
Demo-Schaltung für 2 Servo-Weichenantriebe
Bisher eignen sich unsere
Demoprogramme nicht so wirklich für Weichenantriebe einer
Modellbahnanlage, sie sollten ja auch "nur" in die Thematik einführen,
wie ADRUINO-Programme für Servos realisiert werden können. Nun aber
wollen wir ein Programm entwickeln, welches Weichen mittels Servos
"vernünftig" ansteuern kann. Dazu verwenden wir jetzt aber eine in der
IDE des ARDOINOs verfügbaren Library (zu deutsch: Bibliothek), sowie
Programmbefehle, die bis jetzt noch nicht verwendet und beschrieben
wurden. Damit gestaltet sich das Programm wesentlich einfacher, denn wir
müssen nicht alles selbst programmieren, weil vieles die Library für uns
erledigt. Mit einer Library namens "servo.h" können nämlich Servos zu
Positionen bewegt werden, indem man nur einen Winkel in Grad angibt. So
stellen wir im Programm damit Servos einfach auf 0° (Weiche Gerade) und
auf 30° (weiche Abzweig). Auch kann der Anwender ohne großen Aufwand
andere Gradzahlen für seine individuellen Anforderungen wählen. Bevor wir uns jedoch mit einem solchen Programm beschäftigen, ist es sinnvoll sich mit den neuen erforderlichen Befehlen vertraut zu machen. Diese sind: #include <Servo.h> und "switch", "case", "break", und eine Variable "state". Ich habe dazu Informationen unter ARDUION => Grundlagen => ARDUINO Beispiele eingestellt. Bitte machen Sie sich vorab damit vertraut bevor Sie hier weiterlesen. |
Um das nun folgende Programm zu entwickeln, überlegen wir uns erst einmal welche und wie viele Tastenkombinationen es zur Stellung von Tastern von 2 Weichen gibt. Für die Weiche W1 verwenden wir Taster Ta1 für Gerade und Taster Ta2 für Abzweig. Entsprechend für Weiche W2 die Taster Ta3 für Gerade und Taster Ta4 für Abzweig. 4 Taster bilden also eine Menge von insgesamt 16 möglichen Betätigungen, von denen aber nicht alle vorkommen; d.h. nicht sinnvoll sind. Auch hier erfüllt eine Wahrheitstabelle gute Dienste, denn sie erleichtert die Programmierung ungemein! Siehe Abb.8 rechts. Aus der Tabelle sehen Sie übersichtlich alle möglichen Tastenkombinationen. Grün hinterlegt für Schaltungen Gerade und Rot hinterlegt für Abzweig. Unter Aktion ist eingetragen, in welche Stellungen sich die zugehörigen Servos bewegen sollen. Aus der Tabelle erkennen wir leicht, dass es 8 sinnvolle Fälle gibt, welche zu programmieren sind. 8 Fälle? Da eignet sich ja der oben genannte Swich-Befehl hervorragend! Und das Einbinden der Servo-Bibliothek erspart uns viel Programmieraufwand bei den Servoansteuerungen. |
Grundlegendes zu Wahrheitstabellen finden Sie unter Steuerungen, dort scrollen Sie runter bis "II] Die Schaltalgebra". |
![]() Abb.9 |
Programm-Struktur // Komentare Servo Library einbinden INIZIALISIERUNG DEKLARATION ENDLOSSCHLEIFE Schalter Fall 1 Fall 2 for-Schleife 1 bis 8 Schalter 2 Fall 1 ENDE Fall 1 Fall 2 ENDE Fall 2 Fall 3 ENDE Fall 3 Fall 4 ENDE Fall 4 Fall 5 ENDE Fall 5 Fall 6 ENDE Fall 6 Fall 7 ENDE Fall 7 Fall 8 Ende Fall 8 ENDE Schalter 2 ENDE for-Schleife ENDE ENDLOSSCHLEIFE |
In der obigen
Abb.9 wurde die Programm-Struktur farbig markiert und zwar gleich wie
unter
ARDUION => Grundlagen =>
ARDUINO Beispiele eingestellt. Wie auch im Programm der Abb.7 bleiben Drehgeschwindigkeiten der Servos für die Weichenstellungen stets gleich, ob nun nur eine Weiche, oder beide gleichzeitig gestellt werden. Aber auch Unterschiede bestehen: 1. beim Programm der Abb.9 führen die Servos nur so lange Drehbewegungen aus, wie eine Taste gedrückt ist (man könnte natürlich auch Umschalter statt Taster verwenden)! Folglich ist eine Ansteuerung mittels eines Impulses (wie in Programm-Abb.7 möglich) nicht gegeben. Wird die Servoschaltung aber durch einen entsprechenden Schaltdecoder angesteuert, so spielt das keine Rolle. Andernfalls könnte man das Programm auch leicht ändern. 2. bei erneutem Einschalten der Spannung, oder bei Reset, gehen alle Servos in die 0°-Stellung und damit die Weichen auf Gerade (also keine Mittelstellung mehr!). Wenn die Schaltung aber an entsprechenden Modellbahn-Decodern verbunden ist und diese Decoder auf definierte Weichenstellungen weisen, so werden die Servos der Weichen sofort auch zu diesen Positionen wieder gefahren. |
Programm-Download ARDUINO-Scetch und Fritzing |
Für einen Testaufbau kann der Schaltungsaufbau, wie in obiger Abb.4 (oder im Download von Fritzing) dargestellt, verwendet werden. Wenn Sie bereits Testaufbauten so gemacht haben, wird es Ihnen eventuell aufgefallen sein, dass bei gleichzeitiger Ansteuerung beider Weichenservos diese manchmal nicht ordnungsgemäß schalten. Eine Störung tritt auf. Ursache sind auftretende Spannungsspitzen der Servos, welche mit ihren Steuerungseingängen direkt an Ausgängen des ADRUINOs verbunden sind und dann im ARDUINO intern zu Überkopplungen führen können, welche dann eben diese Störungen verursachen können. Dem kann aber abgeholfen werden, und zwar durch Entkopplung mittels preiswerter Treiberbausteine, ohne dass weitere Bauteile erforderlich sind. Für meine Testschaltung habe ich den Treiberbaustein UDN 2981 A, mit dem man 8 Servos betreiben kann (Firma Reichelt Elektronik: 1,13 €, also gerade einmal 14 Cent pro Servo, Stand Nov.2021) verwendet. Aber auch andere, ähnliche sind geeignet. Der Testaufbau zeigt Abbildung 10, den Schaltplan Abbildung 11. |
![]() Abb.10 Steckbord ![]() Abb.11Schaltplan C1 mit 100uF bei den Servos zu positionieren und C2 beim ARDUINO dienen zusätzlicher Spannungsstabilisierungen |
Die Schaltung mit selbst gebauter Stromversorgung
![]() Abb.12 auch mit Fritzing darstellbar |
![]() Abb. 13 |
Wenn man keinen Testaufbau möchte, sondern einen normalen Schaltungsaufbau, dann wird man das Modul in Abb.10 nicht verwenden, sondern eine eigene Stromversorgung aufbauen. Dies ist sehr einfach mit einem Fest-Spannungsregler möglich. Abb.12 zeigt den Testaufbau und ersetzt das rote Modul in Abb.10. Die Abb.13 zeigt den Schaltplan. Über Anschluss J3 kann eine Gleichspannung und über J4 eine Wechselspannung zugeführt werden (je nachdem was man möchte). Am Ausgang des 7805 steht dann eine Spannung von 5V= zur Verfügung. |
![]() Abb.14 |
Mit dem Programm Fritzing lässt
sich auch ein Layout für eine Platine erstellen, wie es die Abbildung 14
zeigt. J1 und J2 sind Jumper, also Steckverbinder, an denen die Servos
angeschlossen werden. An J3 kann eine Gleichspannungsquelle und an J4
eine Wechselspannungsquelle angeschlossen werden, je nach Bedarf. Die
unterschiedlichen Farben der Leiterbahnen brauchen Sie nicht
beachten. Das Programm Fritzing verfügt über Autorouting, wenn man anders routen möchte und das manuell macht, ändert Fritzing die Farben dafür. Das Listing ist natürlich unverändert wie in Abb.9. Fritzing Download Servo_2Wh7805 |
Wie funktioniert es?![]() Abb.15 Die einzelnen Signalfolgen ![]() Abb.16 |
Erklärungen in Kurzfassung ist eine Weiche auf Gerade (grün) gestellt (Servo also auf 0°), so liefert der Ausgang des ADROINOs periodisch entsprechend relativ kurze positive Rechtecke in Abständen von ca. 45 Millisekunden. Wird nun eine Taste permanent gedrückt, so wird das Rechteck schrittweise länger, die Pulsweite wird also größer. Der Servo folgt mit seiner Bewegung, bis z. B. der Winkel von 30° erreicht ist => rotes Rechteck in Abb.15. Die interne Elektronik des Servos vergleicht also die eingehende Pulsweite mit seiner internen Stellung und passt diese solange an, bis sie mit dem Eingangssignal übereinstimmt. Versucht man (mit Gewalt) den Servo manuell eine andere Stellung zu geben, so wird der Servo nach Ende der Krafteinwirkung seine ursprüngliche Stellung wieder einnehmen. Die Abb.16 zeigt Signalverläufe, wenn die Ausgänge des ARDUINOs zu den 2 Servos einem Oszilloskop zugeführt werden. Die Oszillogramme zeigen, dass das Rechtecksignal zu W2 (Servo 2) stets nach dem Rechtecksignal zu W1 (Servo 1) gesendet wird. Das ist nur logisch, da der ARDUINO nicht beide Signale gleichzeitig senden kann! So zeigt der Fall 5, dass erst nach dem langen Rechtecksignal an W1 für Abzweig das kurze Rechtecksignal an W2 für Gerade gesendet wird. Die weiteren dargestellten Fälle für mögliche Weichenstellungen der Servos verstehen sich dann von selbst. Es gibt nur 4 Fälle; wärend im Programmlisting aber 8 Fälle zu unterscheiden sind, zur Unterscheidung, ob jeweils nur 1 Servo angesteuert wird, oder ob 2 Servos gleichzeitig angesteuert werden, um eben Servogeschwindigkeiten stets gleichbleibend zu halten! |
Die einzelnen Schritte in der for-Schleife
des Programms![]() Abb.17 |
Beschreibung der in der for-Schleife
erzeugten Rechteckimpulse Die obige Abb.16 zeigt die Oszillogramme jeweils nachdem die Servos ihre Endpositionen erreicht haben. Wir schalten unsere Weichen aber langsam, und daher unsere Servos in kleinen 1°-Einzelschritten bis sie jeweils eine Endposition erreicht haben. Dies veranschaulicht die Abb.17. Und damit werden wir das Programm noch besser verstehen, wie es funktioniert: Diagramm 0° zeigt die Ausgangsposition: W1 und W2 Gerade. Nun werden die Tasten Ta2 und Ta4 betätigt, sodass im Programm in der for-Schleife "case 8" ausführt (siehe Abb.9). Diagramm 1°W1: lastPuls1 und lastpuls2 werden um 1 erhöht und dann der Servo 1 in der Zeile W1.write(lastPuls1) angesteuert. Die Pulsweite für Servo 2 bleibt noch unverändert, rückt aber zeitlich etwas weiter. Diagramm 1°W1&W2: erst dann wird in der Zeile W2.write(lastPuls2) Servo 2 angesteuert. Beide Servos habe jetzt 1°-Stellung erreicht. Die for-Schleife hat 8 Fälle abgearbeitet und erreicht ihr Ende und es wird wieder an den Anfang gesprungen. Da 30° noch nicht erreicht sind, wird die for-Schleife abermals die Servos in case 8 um 1° weiter stellen. Diagramm 30°W1&W2: die Schritte wurden nun solange durchlaufen bis die Servos 30° erreicht haben. Beide Weichen sind nun auf Abzweig (fast) gleichzeitig gestellt worden; "fast" gleichzeitig, da sie jeweils nur kurz hintereinander um 1° gestellt werden können, was aber so gut wie nicht auffällt. |
Möge nach diesen Erklärungen die Funktionsweise des Programms und der Servos noch besser verständlich geworden sein! |
![]() Abb.18 |
Oszillogramme Die in den obigen Abbildungen dargestellten Oszillogramme können auch auf einem kleinen Video dynamisch betrachtet werden, welche ich mit einem 2-Kanal-Oszilloskop aufgezeichnet habe. ![]() |
Abbb.19
![]() Abb.20 |
An Hand eines Testaufbaus möchte
ich zeigen, wie der Servoeinbau mit einer K-Gleis-MÄRKLIN-Weiche
realisierbar ist. Im Bereich, wo normalerweise ein Weichenantrieb angesteckt wird, befindet sich zwischen den beiden Schienen ein bewegliches Teil (Stellungshebel). In dieses Teil bohren wir äußerst vorsichtig ein Loch von 1mm Durchmesser; der rote Pfeil in Abb.20 weist darauf hin. Durch diese Bohrung wird später ein Rundfederstahlstift von 1mm Durchmesser gesteckt, welche ebenfalls auf einem Servohebel gesteckt wird und dort mit einem kleinen Tropfen Sekundenkleber befestigt wird. |
![]() Abb.21 |
Die Abb.21 zeigt den Aufbau im
Querschnitt. Ganz oben ist die Weiche angedeutet. Darunter die Grundplatte mit einer 10mm Bohrung zur Durchführung des Stelldrahts. Der Servoantrieb wird mittels zweier 6-Kand Abstandshalter mit M3-Gewindeschrauben befestigt. Dabei werden die oberen beiden Schrauben in der Grundplatte versenkt, damit die Weiche plan aufliegen kann. Der Federrundstahl des korrekt aufgesteckten Servohebel (dargestellt in Abb.22) führt durch das Loch des Weichenstellhebels, wie in Abb.20 dargestellt. |
![]() Abb.22 Die Draufsicht des Testaufbaus. Der Servoantrieb (hellblau) ist natürlich mit seinem Stellhebel (weiß) unter der Weiche verbaut, hier aber zur besseren Sichtbarkeit für seine Position sichtbar dargestellt! Der Servohebel ist auf die Servoachse so zu positionieren, dass mit der 30°-Bewegung des Servos die Weiche exakt von Gerade (0°) nach Abzweig (30°) schaltet. Eine beleuchtete MÄRKLIN-Weichenlaterne ist rechts an der Weiche aufgesteckt und folgt in langsamer vorbildgerechter Bewegung den Weichenstellungen. ![]() Abb.23 Die Abbildung 23 zeigt eine Bohrschablone, mit der ein Einbau erleichtert wird. Die Schienen der Weiche, sowie deren Endabschnitte, sind in der Schablone in Schwarz dargestellt. Damit kann die Schablone auf einer Anlage exakt positioniert werden und die entsprechenden Bohrungen durchgeführt werden. Für Links-Weichen kann die Schablone einfach umgedreht aufgelegt werden. Ebenso lassen sich sehr leicht selber Schablonen für andere Weichenformen erstellen (welche ich bei meinen Anlagenbauten sicher einmal an geeigneter Stelle zur Verfügung stellen werde). |
Hier stelle ich dem geneigten Interessenten zum Nachbau die Beschreibungen mit den Abbildungen 20 bis 23 zum Download pdf als zur Verfügung. Ebenso kann die Funktion des Testaufbaus in einem kleinen Video betrachtet werden. |
![]() ![]() |
Sie möchten diese Servo-Weichen-Steuerung
auf Ihrer Modellbahn digital ansteuern? Bitte sehr, hier die Schaltung
inklusive Anzeigen:![]() Abb.24 |
Anmerkung: Die hier gezeigten Programme wurden von mir natürlich aufgebaut und getestet. Sie funktionierten auf einem ersten Testboard, wie es auch die Videos zeigen. Ich baute mit einem zweiten ADRUINO-Nano eine weitere Schaltung auf. Hier zeigten sich nun Probleme, wenn 2 Servos gleichzeitig angesteuert werden. Der Ursache ist nun erkannt: Ich verwendete ein 9V= 1,2A Steckernetzteil, welches an einen 5V= Regler auf dem Board zur Versorgung der Schaltung diente. Auf der zweiten aufgebauten Schaltung zogen die Servos (obwohl sie vom gleichen Typ waren!) mehr Strom in den Einschaltmomenten (entsprechende Einbrüche auf der Versorgungsspannung wurden mit einem Oszilloskop deutlich sichtbar), als die Servos des ersten Aufbaus dies taten. Die Spannung brach folglich dabei kurzeitig ein und der ARDUINO arbeitete nicht mehr sauber. Ich nahm daraufhin ein Steckernetzteil mit 5V=, welches bis zu 3A Strom liefert (damit war auch der 5V Regler auf dem Board nicht mehr erforderlich!). Damit funktioniert nun auch die zweite aufgebaute Schaltung. Die oben beschrieben Schaltungen sind also fehlerfrei und brauchen nicht korrigiert zu werden. Für die Ursachensuche hatte ich noch ein modifizierte Programm erstellt, welches für den realen Modellbahneinsatz zu Servo-Weichensteuerungen noch besser geeignet ist (die oben beschriebenen Programme sollen in erster Linie dazu dienen, Servoansteuerungen mittels eines ARDUINO verstehen zu lernen). Nachfolgend stelle ich das modifizierte Programm mit Beschreibungen vor. |
Ein modifiziertes Programm zur Servo-Steuerung zweier Weichen
Bisher wurde an Demo-Schaltungen schrittweise erklärt, wie Programme zur Ansteuerung von Servos an Weichen entwickelt werden können. Hier nun folg eine Schaltung, die für eine betriebssichere Servo-Weichensteuerung einer Modellbahnanlage geeignet ist |
Die Tabelle in Abb.8 weist noch 8 Fälle auf. Es funktioniert aber auch mit nur 4 Fallunterscheidungen, wie es die Tabelle in Abb.25 zeigt, wenn eine UND-Verknüpfung verwendet wird. Aufbauten der Abb.10, sowie Abb.24 können sogar belassen werden; nur das Programm ändert sich. |
![]() Abb.25 zur Beachtung: die ARDUINO-Eingänge werden mit L, also mit Masse angesteuert! Wie übrigens auch konventionell MÄRKLIN-Weichen-Antriebe; Kompatibilität ist damit gegeben! |
![]() Abb.26 (Das Programm lässt sich leicht auf mehr als 2 Servos erweitern) |
Fall 1 Fall 2 Fall 3 Fall 4 |
Der grundsätzlich Programmaufbau
gegenüber Abb.9 hat sich nicht verändert, sodass weitgehend auf
Beschreibungen verzichtet werden kann. Lediglich in der Schleife (loop)
fanden die Hauptänderungen gemäß Tabelle der Abb.25 statt. Diese sind in
Abb.26 durch farbliche Rahmen hervorgehoben: Im gelben Rahmen finden "if"-Abfragen statt und zwar so, wie sie in der Tabelle der Abb.25 für die Fälle 1 bis 4 aufgeführt sind. Nehmen wir z.B. Fall 3: die Schalteingänge des ARDUIONs werden abgefragt (im gelben Rahmen); Wenn (if) S1=0 UND S2=1 (also nicht 0 ist, folglich nicht eingeschaltet ist!) UND S3=1 (also nicht 0 ist, folglich nicht eingeschaltet ist!) UND S4=0, dann wird das Nachstehende inner halb der {...} abgearbeitet. Im grünen Rahmen wird abgefragt, ob der letzte zu Servo 1 übermittelte Puls (lastPuls1) kleiner/gleich 30 ist, aber 0 noch nicht erreicht hat. Nur wenn dies zutrifft, dann wird LastPuls1 um 1 vermindert und dieser Wert dem Servo 1 zugeführt, bis LastPuls1 Null ist, also die 0°-Stellung erreicht ist und somit die Weiche auf Gerade steht. Im orangen Rahmen wird abgefragt, ob der letzte zu Servo 2 übermittelte Puls (lastPuls2) größer/gleich 0 ist, aber 30 noch nicht erreicht hat. Nur wenn dies zutrifft, dann wird LastPuls2 um 1 erhöht und dieser Wert dem Servo 2 zugeführt, bis LastPuls2 30 ist, also die 30°-Stellung erreicht ist und somit die Weiche auf Abzweig steht. "switch (state2)" wird im Programm zyklisch permanent durchlaufen und dabei die Abfragen "case 1" bis "case 4" ausgeführt. Auch wenn ein Servo seine Endstellung noch nicht erreicht haben sollte und eine andere Weichenstellung gewählt wird, wird diese neue Stellung sofort abgefragt und ausgeführt! Unter INIZIALISIERUNG steht die Zeile "int warte = 50;". Den Wert "50" können Sie vor dem Hochladen des Sketch (Programm) in den ARDUINO ändern; bei einem kleineren Wert werden die Servogeschwindikeiten erhöht, bei einem größeren Wert verlangsamt. Die Zeile "delay(2); // TEST-PAUSE !!!!! " (ziemlich am Ende des Listings) kann entfallen; sie diente nur zu Testzwecken, worauf ich später noch eingehen werde. Weitere Erklärungen sind den Kommentaren im Listing zu entnehmen, sowie weiter oben in diesem Abschnitt beschrieben. |
Wichtig: bei den vorigen Demo-Programmen wurden Taster verwendet. Bei diesem Programm sind Ein-/Aus-Schalter zu verwenden, damit die Servos (also die Weichen) sicher ihre Endlagen erreichen und nicht irgendwo stehen bleiben können! |
Download 2WhV2.fzz Fritzing und 2WhV2.ino inkl. Abb.25, 27, 28 |
Anwendungsbeispiel Die Abbildung 27 zeigt wie die Weichen-Servo-Steuerung bei einer digital betriebenen Modellbahnanlage integriert werden kann. Zur Ansteuerung der Servoschaltung wurde ein Schaltdecoder (hier von Viessmann) verwendet (welcher preiswerter ist, als ein Weichendecoder!). Der Schaltdecoder wird z.B. von einer Uhlenbrock-Zentrale (Intellibox) angesprochen. Die LEDs dienen nicht nur zu Anzeigen der Weichenstellungen! Ist nämlich ein Schalter des Schaltdecoders offen (also nicht mit 0V verbunden), so erhält der betreffende Eingang des ARDUINOs über die LED mit ihrem Vorwiderstand das Potential +5V. Damit "schwebt" der Eingang nicht "in der Luft", sondern hat definiertes Potential, was die Betriebssicherheit erhöht! Möchte man auf die Anzeigen verzichten (also auf die LEDs), so sind die Widerstände an den jeweiligen ARDUINO-Eingängen direkt an +5V zu legen. Auch bei dieser Schaltung sind die Stromkreise "digitaler Bahnstrom" und "Weichen-Servos" vollständig galvanisch voneinander getrennt, also zueinander unabhängig, was eine weitere Betriebssicherheit bedeutet! ![]() Abb.27 |
![]() Abb.28 |
Eine Hilfe bei der ARDUINO-Programm-Erstellung: der Serial Monitor
Vielleicht hat der ein oder andere
Leser hier Programme heruntergeladen, um sie dann für seine speziellen
Bedürfnisse zu ändern. Dabei kann es durchaus vorkommen, dass dabei
Fehler entstehen. Das ARDUINO-Tool meldet durchaus Fehler. Das sind aber
nur Syntaxfehler (also Fehler der Programmstruktur). Wenn solche Fehler
aber nicht vorhanden sind, aber das Programm nicht das tut, was der
Programmierer erwartet, nun das kann der ARDUINO nicht melden. Woher
soll er auch wissen, was der Anwender will?! Der Anwender kann nur
programmieren und wenn das Programm dann läuft, das Resultat sehen. Was
ihm verborgen bleibt, ist was im Innern des ARDUINOs während des
Programmablaufs wirklich passiert. Es wäre demzufolge hilfreich diverse
Abläufe innerhalb der Programmroutine sichtbar machen zu können. Und das
ist tatsächlich möglich, nämlich mit dem Hyper Terminal als Serial
Monitor! Information und Anleitung habe ich bereits auf einer anderen Seite beschrieben, siehe unter ARDUINO => Grundlagen => Grundlagen der Programmierung, dort unter: Anleitung zum Programm Hyper Terminal als Serial Monitor für den ARDUINO Bevor Sie hier weiter lesen, empfiehlt es sich, dieses Kapitel nochmal durchzulesen. Also, in das letzte Programm (2WhV2.fz) habe ich Zeilen für für einen Serial Monitor eingebaut. Damit werden auf dem PC-Monitor die Abläufe innerhalb der der Programmdurchläufe von "switch (state2)" angezeigt, also was innerhalb der Abfragen von "case1" bis "case4" jeweils zu den Servos gesendet wird. Damit wird sichtbar wie das Programm funktioniert (oder auch nicht?). Die eingefügten Programmzeilen: ![]() Abb.29 Die "Test-Pause" von 100 Millisekunden verlangsamt das Programm so, dass die Anzeigen auf dem PC-Monitor auch verfolgbar sind. Die nachfolgende Abbildung 30 gibt verschiedene Szenarien des Monitors wieder:
|
Eine
Servo-Steuerung
für 2 Weichen-Antriebe mit einem ATtiny85
für unter 5 € einsetzbar für Modellbahnanlagen,
aber auch zu anderen Zwecken
Nachdem für einen ATtiny85 ein
Bootloader und ein HV-Brenner beschrieben wurden (siehe unter
ARDUINO ATtiny-Brenner), zeige ich hier nun, wie eine Servosteuerung
für 2 Weichenantriebe auch mit einem ATtiny85 äußerst preiswert
realisiert werden kann:
|
![]() Abb.31 Testaufbau ATtiny-Servo-Steuerung für 2 Unterflur-Weichenantriebe mit Stellungsanzeigen für Gerade und Abzweig. Hinweis: rein zu Testzwecken wurden auf dem Steckboard Taster verwendet, wodurch Servos nur solange in "Abzweigposition" verharren, wie ein Taster gedrückt ist. Für einen realen Modellbahnbetrieb sind natürlich Schalter statt Taster zu verwenden. |
![]() Abb.32 Schaltplan |
Die obige
Abbildung 32 zeigt den Gesamtschaltplan. Die rechte Abbildung 33 veranschaulicht die Besonderheit der Funktion der beiden Schalter S1 und S2: mit jeweils nur einem einzigen einfachen Ein-/Aus-Schalter gelingt es die LEDs (Orange und Grün) umzuschalten und gleichzeitig die ATtiny-Eingänge +/- umzuschalten (High/LOW-Umschaltung)! Ausschlaggebend ist hierfür die Diode (D1, bzw. D2), wodurch zwei Schalter eingespart werden (also nur 2, statt 4)! Abb.33 links: Schalter offen (bzw. Taster nicht betätigt). Die grüne LED wird mit Plus/Minus versorgt und ist an. Die orange LED wird beidseitig mit Plus versorgt und ist aus. Abb.33 rechts: Schalter geschlossen (bzw. Taster betätigt). Die grüne LED wird beidseitig mit Minus versorgt und ist aus. Die orange LED wird mit Plus/Minus versorgt und ist an. Die Stromverläufe sind in den Abbildungen durch Pfeile hervorgehoben: in ROT Plus und in Schwarz Minus (GND); zu beachten ist dabei der jeweilige Stromfluss durch die Diode 1N914! |
![]() Der "Dioden-Umschalt-Trick" Abb.33 |
Das Einsparen von 2 Schaltern spart nicht nur Bauteile, sondern es sind mit dieser Schaltung lediglich 2 Eingänge am ATtiny, statt 4, erforderlich. Nur dadurch ist es möglich, mit einem einzigen ATtiny85 2 Servos ansteuern zu können! Auch bleiben damit die die Stellungsanzeigen der Weichen mittels 4 LEDs erhalten! Die "Umschaltlogik" wird nun per Software erledigt, wie wir gleich im Programmlisting sehen werden. |
Das Programm für den ATtiny85
![]() Abb.34 |
Beachte: in einem ATthiny-Programm (Sketch) sind die Bezeichnungen für die Anschlusspins anders als bei einem ARDUINO! Im Listing oben (Abb.34, Zeile 5) ist z.B. Servo 1 an Pin 6 des ATtiny85 angeschlossen, der Befehl lautet aber "int Servo1Pin=1;" vergleiche Abb.35 rechts! In einem ATtiny-Programm sind für die Anschlüsse also die in Abb.35 blau hinterlegten Pin-Belegungen zu verwenden! |
![]() Abb.35 |
Hinweise Anleitungen zu: - Bootloader (damit Sketch hochgeladen werden kann). - eine Programm (Sketch) in den ATtiny hochladen. - HV-Brenner (ATtiny in Ursprungszustand versetzen. sind unter ARDUINO ATtiny-Brenner beschrieben. |
Der Schaltungsaufbau auf einer Lochrasterplatine
Die Schaltung auf dem Steckboard
dient lediglich zu Testzwecken der Schaltung. Für eine reale
Weichenansteuerung einer Modellbahn werden wir aber die Schaltung auf
einer kleinen Platine aufbauen, auf der sich aber nicht die externen
Bauteile der Schalter, Anzeigen, sowie Servos befinden (diese finden ja
auf unserem Stellpult Platz, beziehungsweise die Schalter werden durch
einen Decoder bei einer digitalen Modellbahnsteuerung ersetzt und die
Servos bei den Weichen verbaut). Zum Erstellen einer geeigneten Platine ist es hilfreich aus dem Schaltplan (siehe Abb.32) einen neuen Schaltplan zu erstellen, der übersichtlich die externen Bauteile darstellt und wie diese über Anschlüsse zu der zu erstellenden Platine verbunden werden. Dies zeigt der Schaltplan der folgenden Abbildung 36: |
![]() Abb.36 Der Kondensator C2 ist nicht zwingend erforderlich, kann aber eventuelle ATtiny-Störungen minimieren. |
Die Abbbildung
37 zeigt die Lochrasterplatine (Raster-Abstände 2,54 mm x 2,54 mm der
einzelnen Lötaugen mit Bohrungen), mit den darauf befindlichen
Bauteilen, sowie die Anschlüsse der externen Bauteile. Um die Anschlüsse
nicht per Lötungen auszuführen, habe ich kleine Steckfassungen
verwendet. Die Drahtverbindungen werden dann an Pfostenstecker gelötet
um dann auf die Platinenanschlüsse aufgesteckt zu werden. Die
Pfostenstecker gibt es preiswert in der Polzahl von 36 Pins und können
leicht für die hier erforderlichen 2- und 3-poligen Anschlüsse getrennt
werden. Auf die Anschluss-Belegung der Bauteile ist zu achten! LEDs: K=Kathode (Minus), A=Anode (Plus); Servos: P=Pulseingang, +=Plus-Stromversorgung, GND=Minus-Stromversorgung. Die Platine mit den Servos sollte in unmittelbarer Nähe der entsprechenden Weichen verbaut werden; die LEDs zur Anzeige der Weichen werden am Stellpult ihren Platz finden (müssen aber nicht verbaut werden). Die Anschlüsse der Schalter sollten möglichst kurz zu Schaltdecodern geführt werden. Sind hier längere Leitungen erforderlich, so kann es unter Umständen zu Störungen kommen; dann sind entsprechende Abhilfemaßnahmen erforderlich (nach Tests werde ich darüber berichten). Als Stromversorgung sollte eine externe Quelle von 5V Gleichspannung verwendet werden (z.B. eine Steckernetzteil). |
![]() Abb.37 |
![]() Abb.38 Platinen-Bestückungsseite (oben) zuerst werden die niedrigen Bauteile aufgelötet, dann jeweils die nächst höheren. Die Abbildung zeigt grünlich durchscheinend die Leitungsverbindungen auf der Unterseite zur besseren Orientierung. Platinengröße: 6,5 cm x 3 cm |
![]() Abb.39 Platinenverdrahtungsseite (unten) Die meisten Verbindungen werden dadurch bewerkstelligt, dass unisolierte dünne Drähte auf die Lötaugen gelötet werden und so die in der Abbildung grau/weiß dargestellten Verbindungen hergestellt werden. So verbleiben nur 6 herzustellende Verbindungen mittels isolierter Drähte; in der Abbildung blau, gelb, und rot dargestellt. |
Wer mit Lötarbeiten noch nicht so wirklich versiert ist, dem empfehle ich eine etwas größere Lochrasterplatine zu verwenden, auf der die Bauteile in entsprechend größeren Abständen platziert werden. So sind Lötungen sicherer herzustellen und es passiert weniger leicht, dass ungewollte Lötverbindungen zu unmittelbar benachbarten Lötanschlüssen entstehen. |
Der Einbau in einer Modellbahnanlage
Die rechte
Abbildung 40 vermittelt die Anordnung der Schaltung auf einer Anlage mit
2 Servo Unterflur Weichenantrieben, geeignet zur digitalen, oder auch
analogen Ansteuerung. Der Decoder kann entweder am Bedienpult oder auf
der Anlage platziert werden (je was gefällt). Interessant ist die
Möglichkeit auf einem externen Gleisbildstellwerk die Weichenstellungen
anzeigen zu können, wobei sogar Schalter zum Umschalten der Weichen
gleich mit integriert werden können! Der Servoeinbau bei den Weichen
wurde bereits weiter oben beschrieben (Abb.20 bis 23). Der Treiberbaustein (hier ULN2803) beinhaltet 8 Treiber, von denen nur 2 belegt werden. Der Baustein ist aber immer noch deutlich preiswerter, als 2 Treiberstufen mittels diskreter Bauteile aufzubauen und nimmt wesentlich weniger Platz in Anspruch. Man könnte natürlich auch eine Platine mit 4 ATtiny85 für 8 Servos und nur einen ULN2803 aufbauen, womit dann alle 8 Treiber ausgenutzt werden. Natürlich lässt sich diese Schaltung auch für andere Anwendungen einsetzen. Beispielsweise: 2 einflügelige Signale, 1 zweiflügeliges Signal, drehbarer Wasserkran, Tore, und vieles mehr. Dabei ist lediglich das ATtiny-Programm bezüglich der Stellungswinkel der Servos anzupassen. Und das alles zu einem extrem niedrigen Preis! |
![]() Abb.40 |
Im
Download enthalten: - Programm-Dateien fritzing: Steckplatine, Schaltplan, Leiterplatte, Code - ARDUINO IDE-Scetch (ATtiny 85 Programm) - pdf-INFO |
Download 2W30ATtiny85 |