Servoansteuerung mit der Arduino Servo Library

Genauigkeit der Impulserzeugung

Ich habe mich gefragt, wie genau die Erzeugung der Impulslänge der Arduino Servo Library ist, da in der Beschreibung auf entsprechende Limitations hingewiesen wird:

“Limitations

This library does not stop your interrupts, so millis() will still work and you won’t lose incoming serial data, but a pulse end can be extended by the maximum length of your interrupt handles which can cause a small glitch in the servo position. If you have a large number of servos there will be a slight (1-3 degrees) position distortion in the ones with the lowest angular values.”

Quelle: http://playground.arduino.cc/ComponentLib/Servo

Hierzu habe ich zunächst mit einem Logikanalysator die Impulslängen von 1.000 aufeinanderfolgenden Impulsen im unbelasteten Zustand, also auf dem Arduino wurde nur die Servo Library ausgeführt, gemessen. Bei einer Soll-Impulslänge von 1.500 µs ergibt sich folgende Verteilung der Impulslängen:

Verteilung ohne Last

Die erzeugten Impuls sind zwar etwas zu lang, aber die Streuung ist relativ gering und der Längenunterschied zwischen dem kürzesten und dem längstem Impuls beträgt nur 0,6 µs.

Die Verteilung der Impulslängen ändert sich deutlich, wenn auf dem Arduino weitere Anwendungen ablaufen und so zusätzliche Last erzeugt wird. Im folgenden Beispiel wird parallel zur Impulserzeugung der Programmspeicher eines PIC Controllers mit dem ArdPicProg ausgelesen und über die USB Schnittstelle an einen PC übertragen.

Verteilung mit Last

Wie im Bild sichtbar ist, nimmt damit die Streuung der Impulslängen deutlich zu, da der Arduino immer wieder durch andere Aufgaben abgelenkt wird; der längste Impuls in dieser Messreihe hatte eine Länge von 1.508 µs.

Von daher ist bei einer hohen Anforderung an die Genauigkeit der Impulslänge und einer entsprechenden Prozessorauslastung des Arduino der Einsatz eines intelligenten Servo Controllers anzuraten – zumal davon auszugehen ist, dass sich die Genauigkeit und die Streuung beim Einsatz von mehr als einem Servo weiter verschlechtert.

Kalibrator 0 dBm (50 Ω)

Für einige meiner Projekte habe ich einen HF Kalibrator benötigt. Bei meinen Recherchen im Internet bin ich auf den Kalibriergenerator von Andreas Lindenau, DL4JAL (www.dl4jal.de), gestoßen, der eine Schaltung von Thomas Moliere, DL7AV, überarbeitet und auf SMD umgestellt hat. Besonders ansprechend fand ich die Möglichkeit, den HF Pegel mit einem Vielfachmessgerät einzustellen.

Mit den Layout-Daten, die Andreas Lindenau mir freundlicherweise zur Verfügung gestellt hat, konnte ich eine Musterserie Leiterplatten fertigen lassen. Die Beschaffung der Bauteile war ebenfalls kein Problem.

Die Leiterplatte wurde mit Hilfe einer einglöteten und verklebten BNC-Einbaubuchse an der Frontplatte des vorgesehenen Gehäuses befestigt. Zusätzlich habe ich als Einschaltkontrolle noch eine LED mit Konstantstromquelle auf einer Lochrasterplatte eingebaut.

Einbau Frontplatte

Einbau Frontplatte Unterseite

Die folgenden Bilder zeigen das Gerät von vorne und hinten.

Vorderseite Kalibrator

Rückseite Kalibrator

Das Signal macht – im Rahmen meiner Messmöglichkeiten – einen sehr stabilen und guten Eindruck.

Screen Capture

P.S.: Ich habe noch einige Leiterplatten übrig, die ich gerne zu Selbstkosten (5 Euro plus Porto und Verpackung) abgebe. Wenn Sie Interesse haben, dann bestellen Sie direkt über PayPal im Shop.

Baudrate Bluetooth shield mit Arduino einstellen

Im Rahmen der Realisierung meiner digitalen OpenSource Bluetooth-Fernsteuerung  ergab sich die Anforderung zum Einsatz eines Arduino Bluetooth Shield auf der Senderseite. Da dieser Shield defaultmäßig mit 38400 Baud arbeitet, aber mein Controller 9600 Baud benötigt, musste die Baudrate umgestellt werden. Diese Anpassung wollte ich nur mit einem Arduino vornehmen und keine weiteren Hilfsmittel, wie USB-Serial-Adapter einsetzen – zumal der Arduino bereits die benötigten 3,3 V Betriebsspannung für den Shield zur Verfügung stellt. Der einfachste Weg hierzu ist der Einsatz der USB-Schnittstelle des Arduino selber, da bei dieser Schnittstelle die Baudrate über den Arduino Serial Monitor vom Bediener angepasst werden kann.

Um jegliches “Störfeuer” an den Digitalpins zu vermeiden, wird der Reset-Eingang des Arduino fest mit GND verbunden und der Controller so “still gelegt”.

Danach habe ich den Bluetooth Shield aufgesetzt und die Jumperstellung für RX und TX gemäß dem folgenden Bild vorgenommen.

Jumpereinstellungen
Stellung der Jumper auf dem Bluetooth-Shield

Jetzt wird der Serial Monitor gestartet. Die Baudrate wird auf 38400 eingestellt. Zur Einhaltung des Protokolls ist es außerdem wichtig, dass am Zeilenende sowohl NL als auch CR übertragen werden. Nachdem ich einige leere Zeilen geschickt habe, erschien nach diversen unlesbaren Zeichen die Meldung “ERROR”.

Screenshot 1
Screen Shot: Beginn der Programmierung

Nun wird die Programmierung durch die Übertragung einer weiteren leeren Zeile (entsprechend NL und CR) gestartet und das Kommando zur Umstellung der Baudrate auf 9600 eingegeben.

Screen Shot 2
Screen Shot 2: Eingabe des Kommandos zur Baudratenumstellung

Nach dem Senden wird die erfolgreiche Ausführung mit “OK” quittiert Die folgenden Statusmeldungen werden mit der neuen Baudrate 9600 ausgegeben und sind daher hier nicht zu lesen.

Screen Shot 3
Screen Shot 3: Quittierung der neuen Baudrate

Zur Überprüfung kann die Baudrate am Serial Monitor nun auf 9600 umgestellt werden. Nach einem Reset des Arduino wird dann ein Kommando eingegeben – ich habe die Baudrate einfach nochmal auf 9600 gestellt – und der Shield meldet sich nun mit einer lesbaren Statusmeldung.

Screen Shot 4
Screen Shot 4: Prüfung der Programmierung mit neuer Baudrate

Damit ist die Programmierung abgeschlossen.

Röhrenoszillator mit Obertonquarz

Beim Design eines Röhrenoszillators  mit einem Obertonquarz, der üblicherweise bei Frequenzen > 10 MHz … 15 MHz zum Einsatz kommt, sind zwei wesentliche Punkte zu beachten: Der Quarz ist in Serienresonanz zu betreiben und die maximale Quarzbelastung ist einzuhalten.

Nur im Fall von Serienresonanz ist ein stabiles Arbeiten des gesamten Oszillators gewährleistet. Wie schon das “Quarz 1×1” von Helmut A. Wuttke in den fünfziger Jahren ausführte, sind für Obertonquarze “Röhrenschaltungen einfacher Art, bei denen nur eine Triode Verwendung findet und der Quarz zwischen Gitter und Masse liegt (Parallelresonanz), .. . abzulehnen. Die Stabilität dieser Schaltungen ist unzureichend. Zudem sind Obertonquarze grundsätzlich auf die Serien-Resonanz-Frequenz abgestimmt; die Frequenz würde also bei solchen Oszillatoren zu hoch liegen.”

Zusätzlich ist die maximale Quarzbelastung zu berücksichtigen, die bei heutigen Quarzausführungen im Bereich von 1 mW liegt. Eine höhere Belastung des Quarzes gefährdet die Frequenzstabilität (Langzeitkonstanz) und kann sogar zur Zerstörung des Quarzes führen. Von daher sind im Schaltungsentwurf geeignete Maßnahmen zur Amplitudenbegrenzung vorzusehen.

Der nachfolgend dargestellte Quarzoszillator mit einer Triode in Gitterbasisschaltung wird den genannten Anforderungen vollständig gerecht.  Durch den Einsatz einer Kombiröhre mit Triode und Pentode kann die erwartungsgemäß kleine Leistung des Oszillators bis auf ca. 50 mW an 50 Ohm erhöht werden.

 

Schaltplan Röhrenoszillator mit Obertonquarz
Schaltplan Röhrenoszillator mit Obertonquarz (für eine vergrößerte Darstellung anklicken)