Sie sind auf Seite 1von 116

März/April 2019 | Nr. 566 | www.elektormagazine.

de

lektorlabs
lektor

DESIGN BUILD SELL ELECTRONICS magazin

Elektor Flipper-Uhr

Der Sound der alten Score-Trommeln


Das SCCC-Projekt Monitor für
Softcore-Prozessor und Luftverschmutzung
C-Compiler
im Selbstbau

Sensor misst
die Luftqualität
CNC-Portalroboter Mikrocontroller-Kits für Dummies Lüftersteuerung Rückwärts-„Radar” fürs Rad Raspberry-Pi-Lineal
mit Laufzeitsensor Taupunkt-Messgerät mit ENS210 Störquellen im Automotive-Bereich I²C-Bus Datenleser Grundlagen:
Kanalfilterung Schrittmotor-Steuerung mit Antiresonanz-Technik Nachgemessen: Funkstörungen durch LED-Lampen

G3078 E (D) € 14,90 | CHF 27,00 | (A, B, L) € 16,00


Mehr als 100.000 Produkte
Top-Preis-Leistungsverhältnis
Hohe Verfügbarkeit und zuverlässige Lieferung
Starke Marken und ausgesuchte Qualität

T U ND LAB OR
R K S TAT
! NIK FÜR WE
PROFESSION
EL
B EI T S P L AT ZLE TECH
W E R A M A R
V O L L E P O
Das Weller WE1010 Education Bundle
70 Watt Power für
professionelle Ansprüche!
Die stärkste Lötstation ihrer Klasse! Mit diesem Vorteils-
pack sind Sie für alle Aufgaben gerüstet. Neben der
WE1010 Lötstation beinhaltet dieses Set einen 170 mm
Weller Xcelite Seitenschneider, eine Rolle Weller WSW SCN
N1 Lötzinn sowie eine zusätzliche Lötspitze ETB 2,4 mm.

ESD-sichere Lötstation, Lötkolben und


hitzebeständinges Silikonkabel
Temperaturstabilität und -verriegelung
schützt Lötspitze und Bauteil
Weller
We
Wel
Welle
el
elller
ler
er Edu
E
Educational
duca
uca
atio
io
onnal
na
a Bundle
Bundle:
e:
Passwortschutz sichert alle Einstellungen
Seitenschneider
+ Seit
S e ten
eitenssch
ens chneider
+LLötzinn
Lötz
ötzininn
Bestell-Nr.: WELLER WE1010EB + Löt
Lö pitze
öt
öts
Lötspitze

TECHNIK
00
TIPP 199,
(2 Kundenrezensionen) DSO für Einsteiger!
50 MHz, 2 Kanäle
Labornetzteil
USB-HOST
0 - 30 V, 0 - 10 A Vielseitiges Digital-Speicher-Oszilloskop,
ideal auch für den mobilen Einsatz. E
Dieses Schaltnetzgerät ist wegen seiner sehr UND -DEVIC
handlichen Bauform und des geringen Gewichtes beleuchtetes Full-Color TFT-Display
hervorragend für Anwendungen in der Entwicklung Abtastrate: 1 GS/s
und im Ausbildungsbereich geeignet. vielfältige Trigger-Arten
inkl. Edge, Video, Pulsbreite
Spannungs- und Stromvorwahl
mit Ultra Sigma Software
mit abschaltbarem Ausgang
Bestell-Nr.:
Modi für Konstantstrom und
RIGOL DS1052E
Konstantspannung bei
angeschlossener Last
automatische Abschaltung
299,99
bei Kurzschluss
fein einstellbare Ausgangs-
werte: 10 mV, 10 mA
Kompakt-Multimeter
mit 2.000 Counts
NG,
R AUSBILDU Spannungsmessung: 200 mV - 600 V AC/DC
QUALITÄT FÜ
SERVICE Strommessung: 200 μA bis 200 mA
LABOR UND Widerstandsmessung: 200 Ohm bis 20 MOhm
Bestell-Nr.: PEAKTECH 6226 Durchgangs- (Summer) und Diodenprüfungen

95 BEST Bestell-Nr.: CHAU P01191740Z

95, SELLER

Tagespreise · Preisstand: 30. 1. 2019


49,99 NEU

www.reichelt.de
Es gelten die gesetzlichen Widerrufsregelungen. Alle angegebenen Preise in € inklusive der gesetzlichen MwSt.,
zzgl. Versandspesen für den gesamten Warenkorb. Es gelten ausschließlich unsere AGB (unter www.reichelt.de/agb,
im Katalog oder auf Anforderung). Abbildungen ähnlich. Druckfehler, Irrtümer und Preisänderungen vorbehalten.
reichelt elektronik GmbH & Co. KG, Elektronikring 1, 26452 Sande, Tel.:+49 (0)4422 955-333 BESTELLHOTLINE: +49 (0)4422 955-333
Impressum

50. Jahrgang, Nr. 566


März/April 2019
Erscheinungsweise: 12 x jährlich
(Elektor Doppelheft im Wechsel mit
dem Elektor Business Magazin)

Verlag
Elektor-Verlag GmbH
Kackertstraße 10
52072 Aachen
Tel. 02 41/955 09 190
Fax 02 41/955 09 013 Mit-Programmieren!
Technische Fragen bitten wir per E-Mail an
redaktion@elektor.de zu richten. Bereits im Septemberheft hatte ich die Serie angekündigt: Unserem langjährigen
Hauptsitz des Verlags Autor Martin Ossmann ist es gelungen, einen eigenen kleinen Softcore-Prozessor
Elektor International Media zu realisieren, der in einem FPGA „läuft“. Ein ebenfalls selbst gestrickter Compi-
Postbus 11, 6114 ZG Susteren
ler wandelt einfaches C in Maschinenbefehle um, die der 32-Bit-Prozessor versteht
Niederlande
(Seite 24). Professor Ossmann musste das Rad nicht völlig neu erfinden – sondern
konnte auf die Arbeit von Ron Cain aus den frühen Achtzigern zurückgreifen, der
Anzeigen:
ein einfaches, aber leistungsfähiges C-Subset für den Z80 entwickelt hatte. Beim
Margriet Debeij (verantwortlich)
Tel. 02 41/955 09 174 / Fax 02 41/955 09 013 „SCCC-Projekt“ kann man eine Menge über die Hardware-Beschreibungssprache
Mobil: +49 (170) 550 539 6 Verilog, die Architektur einer CPU und den Compilerbau lernen; doch es werden
E-Mail: margriet.debeij@eimworld.com auch handfeste Anwendungen folgen. Typisch für unsere Zeit ist, dass ein Low-
Tanja Pohlen Cost-Board und ein paar Bauteile genügen, um mitmachen zu können. Für rund
Tel. 02 41/955 09 186 30 Euro erhalten Sie in unserem Shop das kleine MAX1000-Board (Art.-Nr. 18816),
E-Mail: tanja.pohlen@eimworld.com
das einen gut ausgestatteten FPGA, je 8 MB RAM und Flash sowie User-LEDs und
Es gilt die Anzeigenpreisliste ab 01.01.2018.
Buttons integriert.
Noch weit günstiger sind die Boards, die die (ebenfalls gut bekannten) Elektor-
Distribution: Autoren Burkhard und Fabian Kainka ab Seite 6 vorstellen. Für eine Handvoll Euro
IPS Pressevertrieb GmbH
können jetzt alle Leser dabei sein, die sich bisher noch nicht getraut haben, erste
Postfach 12 11, 53334 Meckenheim
Tel. 0 22 25/88 01-0 Schritte in die spannende Welt der Controller-Programmierung zu unternehmen.
Fax 0 22 25/88 01-199 Und die einsteigerfreundliche Arduino-Entwicklungsumgebung sowie viele, viele Bei-
spielprogramme gibt es ja sowieso kostenlos.
Der Herausgeber ist nicht verpflichtet, unverlangt einge-
Machen Sie mit!
sandte Manuskripte oder Geräte zurückzusenden. Auch
wird für diese Gegenstände keine Haftung übernommen.
Nimmt der Herausgeber einen Beitrag zur Veröffentlichung Jens Nickel
an, so erwirbt er gleichzeitig das Nachdruckrecht für alle Chefredakteur Elektor
ausländischen Ausgaben inklusive Lizenzen. Die in dieser
Zeitschrift veröffentlichten Beiträge, insbesondere alle Auf-
sätze und Artikel sowie alle Entwürfe, Pläne, Zeichnungen
einschließlich Platinen sind urheberrechtlich geschützt. Ihre
auch teilweise Vervielfältigung und Verbreitung ist grund-
sätzlich nur mit vorheriger schriftlicher Zustimmung des
Herausgebers gestattet. Die veröffentlichten Schaltungen
können unter Patent- oder Gebrauchsmusterschutz stehen.
Herstellen, Feilhalten, Inverkehrbringen und gewerblicher Unser Team
Gebrauch der Beiträge sind nur mit Zustimmung des Ver-
lages und ggf. des Schutzrechtsinhabers zulässig. Nur der Chefredakteur: Jens Nickel (v.i.S.d.P.) (redaktion@elektor.de)
private Gebrauch ist frei. Bei den benutzten Warenbezeich-
nungen kann es sich um geschützte Warenzeichen handeln, Ständige Mitarbeiter: Dr. Thomas Scherer, Rolf Gerstendorf
die nur mit Zustimmung ihrer Inhaber warenzeichengemäß
Leserservice: Ralf Schmiedel
benutzt werden dürfen. Die geltenden gesetzlichen Bestim-
mungen hinsichtlich Bau, Erwerb und Betrieb von Sende- Korrekturen: Malte Fischer
und Empfangseinrichtungen und der elektrischen Sicherheit
sind unbedingt zu beachten. Eine Haftung des Herausgebers Internationale Redaktion: Thijs Beckers, Eric Bogers, Jan Buiting,
für die Richtigkeit und Brauchbarkeit der veröffentlichten Mariline Thiebaut-Brodier
Schaltungen und sonstigen Anordnungen sowie für die Rich-
tigkeit des technischen Inhalts der veröffentlichten Aufsätze Elektor-Labor: Mathias Claußen, Ton Giesberts, Hedwig Hennekens,
und sonstigen Beiträge ist ausgeschlossen.
Luc Lemmens, Jan Visser, Clemens Valens
© 2019 elektor international media b.v. Grafik & Layout: Giel Dols
Druck: Senefelder Misset, Doetinchem (NL)
ISSN 0932-5468

www.elektormagazine.de März/April 2019 3


Inhalt
50. Jahrgang – Nr. 566
März/April 2019

Rubriken
3 Impressum
47 Bemerkenswerte Bauteile
Nukleare Ereignisdetektoren

51 Der NXP-Cup 2019


Größer und besser denn je!

62 Homelab Helikopter
85 Projekt 2.0
Korrekturen, Updates und Leserbriefe

88 Highlights aus dem Elektor-Shop


Messen, Stromversorgen und 3D-Drucken...

95 elektormagazine.de/labs
Das SCCC-Projekt (1)
Projekte in der Pipeline Softcore-Prozessor und C-Compiler
106 Retronik im Selbstbau
Schätze der Grafik-Abteilung

114 Hexadoku
Sudoku für Elektroniker

24 Manchmal benötigt man


in einem Projekt gleichzeitig
einen FPGA und eine klassische CPU,
mit der sich auch komplexe Programmflüsse einfach
programmieren lassen. Eine Lösung ist ein Prozessor,
der in einem FPGA realisiert ist. Man kann sich solch einen „Softcore”

Hintergrund kaufen, was aber oft nicht ganz billig ist. In diesem Projekt wird eine
einfache CPU für FPGAs im Selbstbau vorgestellt; dank offenem Quellcode
lässt sie sich an eigene Bedürfnisse anpassen. Hierzu gehört ein DIY-C-
Compiler, der ebenfalls erweitert werden kann. In der Artikelserie zum
6 Mikrocontroller-Kits für Dummies
Projekt wird die Theorie wie üblich von vielen praktischen Beispielen ergänzt.
Aller Anfang ist leicht!

36 Q&A
Fertigung von Gehäusen

58 Operationsverstärker in der Praxis


Teil 2: Feldeffekt-Opamps
und Breitbandanwendungen

70 Grundlagen
Kanalfiltertechniken Projekte
80 PureBasic
Ein BASIC-Compiler, viele Plattformen

90 Hardware-Design mit (V)HDL (3)


WS2812-LED-Matrix ansteuern
14 Flipper-Uhr
Der Sound der alten Score-Trommeln

24 Das SCCC-Projekt (1)


106
100 Störquellen im Automotivebereich
Und wie man sie eliminiert!
Softcore-Prozessor und C-Compiler
Retronik
im Selbstbau Schätze der
104 Funkstörungen durch LED-Lampen
Sind störende LED-Lampen 32 Lüftersteuerung Grafik-Abteilung
konform zum EMC-Standard? Analog oder Arduino?

4 März/April 2019 www.elektormagazine.de


Flipper-Uhr lektorlabs magazin

14
52 CNC-Portalroboter „Wolverine”
Multifunktionales Kraftpaket

66 Luftverschmutzungsmonitor
Ein Sensor misst die Luftqualität

77 Taupunkt-Messgerät mit ENS210 als BoB

Der Sound der


Mit Beispiel-Implementierung
für Arduino Uno

96 I²C-Bus Datenleser

alten Score-Trommeln Über USB auf den PC-Bildschirm

Luftverschmutzungsmonitor
Ein Sensor misst die Luftqualität
Die Qualität der Luft, die wir atmen, sollte uns allen ein großes Anliegen sein.
Vorschau
Nicht nur Staubpartikel, sondern auch eine
zu hohe Konzentration bestimmter Gase in
Das nächste Heft ist wie immer randvoll gefüllt mit
der Atemluft sind schädlich für unsere
Schaltungsprojekten, Grundlagen sowie Tipps und
Gesundheit. Dieses kleine Gerät misst
den Gehalt an luftverunreinigenden
Tricks für Elektroniker.
Gasen und löst einen Alarm Aus dem Inhalt:
aus, wenn deren • Feinstaubsensor für die Wetterstation
Konzentration
• Schlafzimmeruhr mit ESP32
einen
• USB-Strom-Messgerät
bestimmten Wert
überschreitet. • Versteckte Leitungen aufspüren
• Einfaches Audio-Spektrometer
• Mikrocontrollerkits für Fortgeschrittene

66
• Batterieüberwachung
• Das IOTA-Projekt und ein FPGA für den Raspberry Pi

Und vieles mehr!

Änderungen vorbehalten.
Elektor Mai/Junil 2019 erscheint am 18. April 2019.

Vorschau Elektor Industry Ausgabe 2/2019


Sensoren und Messtechnik
Die Ausgabe 2/2019 des Magazins Elektor Industry
beschäftigt sich mit Sensoren sowie Equipment
39 Schrittmotor-Steuerung
und Methoden für das Testen und Messen, mit
mit Antiresonanz-Technik
Höherer Wirkungsgrad
Beiträgen von Unternehmen, Branchenspezialisten,
und weniger Vibrationen Elektor-Redakteuren und freien Autoren. Einen
besonderen Schwerpunkt der Ausgabe bildet die Messe
44 Rückwärts-„Radar” fürs Rad Sensor+Test in Nürnberg.
Einfache Schaltung für mehr Sicherheit
Elektor Industry (Ausgabe 2/2019) erscheint im Juni 2019.
48 Das Raspberry-Pi-Lineal
Änderungen vorbehalten.
Spaß mit einem Laufzeitsensor

www.elektormagazine.de März/April 2019 5


Mikrocontroller-Kits
für Dummies
Aller Anfang ist leicht!
Viele Elektroniker fürchten sich, in die Mikrocontroller-Programmierung einzusteigen. Doch der Anfang
ist gar nicht so schwer, wie wir anhand von vier Low-Cost-Boards beweisen. Sie werden durch viele
Demo-Programme unterstützt, so dass man schnell zu Erfolgen kommt. In diesem ersten Artikel hat
der vielfache Elektor-Autor Burkhard Kainka ein besonders günstiges Arduino-Board ausprobiert. Sein
Sohn Fabian Kainka hat erste Schritte mit dem NodeMCU-Board unternommen, das sich besonders für
die Internet-Programmierung eignet.

(Zu) viele Elektroniker fürchten sich, in die Mikrocontroller-Pro- Der Anfang in dieser Ausgabe machen Vater Burkhard und Sohn
grammierung einzusteigen. Ein Grund ist sicherlich, dass es Fabian Kainka. Ersterer ist ein weithin bekannter Entwickler
schwerfällt, in dem unübersehbaren Dschungel von Mikrocon- einer Unzahl interessanter (Elektor-)Selbstbauschaltungen,
troller-Kits das richtige Kit zu finden, das nicht zu kompliziert Autor zahlreicher Bücher und Lernpakete und Betreiber einer
ist, vom Hersteller und von Drittanbietern mit Hard- und Soft- Hobbyelektronik-Webseite. Er hat sich mit einem Arduino-
ware gut unterstützt wird und mit dem sich eine Community Nano-Klon beschäftigt.
verbindet, bei der man auch als Anfänger Hilfe in höchster Sein Sohn Fabian ist in die Fußstapfen seines Vaters getreten
Not erhalten kann (sprich: sich nicht scheuen muss, dumme und hat sich auf Entwicklungen und Veröffentlichungen rund um
Fragen zu stellen). das Thema Internet of Things spezialisiert. Folgerichtig ist „sein“
Wir haben vier Controller-Boards/Kits ausgesucht, die sich für Mikrocontroller-Kit auch ein Entwicklungsboard, das besonders
Programmiereinsteiger eignen und sie vier Elektronikern über- auf diesen Bereich ausgerichtet ist: Das NodeMCU-Kit.
lassen, die sie auspacken und ausprobieren sollten. Sie werden In der nächsten Elektor-Ausgabe folgen unter anderem ein
sehen und lesen, dass der Einstieg in die Welt der Mikrocon- ESP32-WLAN/Bluetooth-Board mit integriertem OLED-Display.
troller gar nicht so kompliziert ist!

JOY-iT Nano V3
Von Burkhard Kainka

Der JOY-iT Nano V3 ist ein kompatibler Arduino Nano der Firma JOY-iT, der im Elektor-Shop zu einem Preis
von unter 12 Euro angeboten wird. Passend dazu gibt es das Arduino Supplement Kit mit zusätzlichen
Bauteilen, das einen einfachen und schnellen Start mit dem Mikrocontrollerboard ermöglicht.

Einen Arduino sollte man immer in Reserve haben, denn er


leistet wertvolle Dienste im Elektronik-Labor und beim Erpro-
ben neuer Ideen. Wenn ich auch meist das Standard-Modell
Arduino Uno eingesetzt habe, so bietet der Nano auf wesent-
lich kleinerer Fläche doch fast die gleiche Hardware rund um
einen ATmega328. Das bedeutet: reichlich Speicherplatz auch
für große Projekte und mehr Rechenleistung, als man übli-
cherweise braucht.

Erste Versuche
Wer sich fragt, was denn der Unterschied zwischen dem origi-
nalen Arduino Nano und dem Nano-Clone von Joy-It (Bild 1) Bild 1. Der Nano V3.

6 März/April 2019 www.elektormagazine.de


Bild 2. Bauteile im Supplement-Kit. Bild 3. Der Arduino Nano im Einsatz.

ist, muss die Platine auf den Rücken legen. Auf der Unterseite Damit funktioniert alles wie gewünscht. Also, was könnte man
des Boards findet man den USB-Baustein, einen FT232R beim nun weiter anfangen? Mein Blick streift über das Material im
Original und einen CH340G beim Nachbau. Beide leisten das- Supplement-Kit. Da gibt es einen Buzzer, der getestet werden
selbe, sie setzen die serielle Schnittstelle des ATmega in eine will. Es handelt sich um einen aktiven Summer mit interner
USB-Schnittstelle um. Beim Anschluss an den PC wird dann eine Elektronik. Ein Test am 3,3-V-Ausgang des Nano ist erfolg-
virtuelle serielle Schnittstelle gebildet. Sie heißt beispielsweise reich, an 5 V ist das Summen lauter. Der Aufkleber wird wie
COM2, COM3 oder COM99, je nachdem wie viele andere Bau- empfohlen abgezogen und sogleich wieder angebracht, da das
steine mit serieller Schnittstelle der PC vorher schon gesehen Summen wirklich unangenehm laut ist. Könnte nicht auch ein
hat. Bei einem FT232R werden immer wieder neue COM-Num- Widerstand helfen? Getestet und verworfen, denn bei mehr als
mern gebildet. Beim CH340 ist das anders. Beim nächsten 100 Ω reicht der Strom nicht mehr für den Start des Summers.
Board erscheint wieder die gleiche COM, die man allerdings Aber an einem Port müsste es doch gehen! Der Summer wird
umbenennen kann, wenn man mehrere Platinen gleichzeitig an Pin 13 angeschlossen, dem Anschluss der gelben LED auf
einsetzen will. Falls es an einem Rechner Probleme mit dem dem Board. Nun ist wie zu erwarten ein Intervall-Summen zu
USB-Treiber gibt, muss man den Treiber im Netz [1] laden und hören; Summer und gelbe LED arbeiten im Gleichtakt.
manuell installieren. So langsam kommt mir ein Verdacht: Ist das vielleicht gar
Das Arduino-Supplement-Kit (Bild 2) enthält eine Steckplatine kein Piezo-Summer, wie ich zuerst vermutet hatte? Handelt
und sehr viele nützliche Bauteile vom Kabel bis zum Poti. Damit es sich gar um einen elektromagnetischen Summer? Ich halte
hat man mehr LEDs, Widerstände, Kondensatoren, Tastschalter von außen einen Magneten dran, der spürbar angezogen wird.
und sonstiges Material, als man in einer Woche verbasteln kann. Alles klar, solche Teile bestehen aus einer Magnetspule mit
Genug der Vorrede, jetzt wird der Nano getestet. Dazu habe
ich das Board auf die Steckplatine gesetzt (Bild 3), damit die
Versuche standfest, sicher und kurschlussfrei verlaufen. Zum
Anschluss an den PC wird ein USB-Mini-Kabel gebraucht. Die
grüne LED auf dem Board leuchtet und zeigt, dass die Platine
mit Spannung versorgt wird. Die gelbe LED blinkt mit kurzen
An-Phasen. Das ist bei einem Arduino der Hinweis darauf, dass
noch kein Programm geladen ist und dass der Bootloader auf
Arbeit wartet.
Dann muss die Arduino-IDE gestartet werden. Immer wenn ich
einen neuen Arduino teste, kommt als erstes das Beispielpro-
gramm Blink.ino zum Einsatz (Bild 4), das in der IDE enthalten
ist. Beim Arduino spricht man übrigens statt von Programm von
einem Sketch. Blink.ino lässt die gelbe LED langsam im Takt
von 2 s blinken. Bevor das Programm auf den Arduino gela-
den werden kann, muss ich natürlich erst das Board (Arduino
Nano) in der IDE wählen und die aktuelle Schnittstelle akti-
vieren (COM2). Dass es gerade COM2 geworden ist, hatte
ich erwartet, denn kürzlich habe ich einen anderen Controller
verwendet, der ebenfalls mit einem CH340 ausgestattet war,
den ich auf COM2 gesetzt hatte.
Also dann, hochladen und abwarten. Die Aktion endet erfolg-
reich, die LED blinkt langsam. Um ganz sicher zu gehen, ver-
längere ich die Delay-Zeiten auf 2000 ms und lade den Sketch
noch einmal hoch. Es blinkt langsamer. Bild 4. Einrichten und Laden des Nano in der IDE.

www.elektormagazine.de März/April 2019 7


Transistor-Generator und einer magnetischen Membran. Sie
brauchen viel mehr Strom als ein vergleichbarer Piezo-Sum-
mer, und deshalb hat das mit dem Vorwiderstand nicht funk-
tioniert. Aber ein Portpin des ATmega328 liefert genügend
Strom. Es reicht sogar für sehr sparsame DC-Motoren ohne
einen zusätzlichen Motortreiber.

Der Buzzer am PWM-Ausgang


Was könnte man denn noch mit dem vorhandenen Material
probieren? Ich teste eine rote LED mit einem Vorwiderstand
von 330 Ω an D9 mit dem Beispielsketch Fade.ino aus der
Arduino-IDE. Es funktioniert auf Anhieb, die LED fungiert als
„weicher“ Blinker, wird kontinuierlich heller und dann wieder
dunkler. Alles dank PWM, also mit schnellem Ein- und Aus-
Bild 5. Ein Versuchsaufbau. schalten eines Ports.
So langsam erwacht mein Spieltrieb. Könnte man den Summer
auch einfach so an den PWM-Ausgang anschließen? Tatsächlich,
das funktioniert, obwohl der Summer eigentlich dafür nicht
ARDUINO_NANO vorgesehen ist. Im Takt der LED ändert sich die Lautstärke
und in geringerem Maße auch die Frequenz des Summers. In
1 30
TX VIN einigen Phasen hört man zusätzliche Überlagerungstöne der
2 29
RX GND
3 28 Summerfrequenz und der PWM-Frequenz.
RST RST
4
GND 5V
27 Und was passt sonst noch so auf die Steckplatine? Auf den
5
D2 A7
26 ersten Blick scheint es sehr schnell eng zu werden, aber dann
6 25
D3 A6 finden sich immer wieder Ecken und Wege. Zwei extra große
7 24
S1 S2 D4 A5 Tastschalter, ein Poti, der Buzzer, LED, Widerstand und viele
8 23 VCC
D5 A4
9 22 Kabel, alles passt gut drauf (Bild 5). Die Taster habe ich nur
D6 A3
10
D7 A2
21 mit zwei Beinchen eingesteckt, die andern beiden schauen
11
D8 A1
20 über den Rand.
12 19
D9 A0 Und dann wird das Fade-Beispiel erweitert. Der rote Taster
13 18
D10 AREF soll die Ausgabe anhalten und den Ton abschalten. Mit einem
14 17
D11 3V3
Druck auf den blauen Taster geht es wieder weiter. Und das Poti
100k

10k
330

15 16
D12 D13
Buzzer soll die Geschwindigkeit einstellen. Wie immer klappt irgend-
USB
was zuerst nicht, weil ich mich vertippt habe, und wie immer
muss ich irgendetwas erst nachlesen (weil ich sonst lieber mit
Bascom arbeite). Aber am Ende funktioniert alles wie geplant.
Zwar ist das Projekt einigermaßen sinnlos und im Endergebnis
10
eher nervig (dafür ja der Stopp-Taster S1), aber insgesamt
180604-001 eine schöne Fingerübung. Und man bekommt das gute Gefühl,

Bild 6. Erweiterung mit einem Tiefpassfilter 100 kΩ / 10 µF.

im elektor-shop
ªJOY-iT Nano V3
www.elektor.de/joy-it-nano-v3
ªArduino Nano
www.elektor.de/arduino-nano-3
ªSupplement-Kit
www.elektor.de/arduino-supplement-kit
 
Bücher:
ªMaik Schmidt, „Arduino”
www.elektor.de/arduino-dpunkt
ªBert van Dam, „Arduino entdecken”
www.elektor.de/arduino-entdecken
ªMichael Margolis, „Arduino Cookbook” (engl.)
www.elektor.de/arduino-cookbook
ªElektor Select, „Arduino Kompilation”
www.elektor.de/arduino-kompilation-pdf-de
Bild 7. Ausgabesignal und gefilterte Spannung.

8 März/April 2019 www.elektormagazine.de


dass alles am Ende wie gewünscht arbeitet.
Listing 1. Das erweiterte Fade-Beispiel.
Bei der Arbeit mit dem Board ist mir ein
seltsames Verhalten aufgefallen, das ich mir /*
zunächst nicht erklären konnte. Nachdem  Fade
ein Programm geladen wurde, kann ich den  This example shows how to fade an LED on pin 9
USB-Stecker abziehen und stattdessen eine  using the analogWrite() function.
USB-Powerbank anschließen. Damit wird die  This example code is in the public domain.
Anwendung portabel. Aber als ich das Kabel  Additional: pot + s1 off + s2 on + AD + serial plot
dann wieder in den PC stöpselte, war das  */
Programm weg! Die gelbe LED zeigte ein
Blinken wie bei einem leeren Nano. Was war int led = 9;           // the pin that the LED is attached to
da los? Eine Recherche im Netz brachte die int brightness = 0;    // how bright the LED is
Antwort: Es liegt an der verwendeten IDE int fadeAmount = 5;    // how many points to fade the LED by
in der Version 1.6.8. Wenn sie einen neu int s1 = 2;
angeschlossenen Arduino entdeckt, versetzt int s2 = 3;
sie ihn sofort in den Boot-Modus. Warum
habe ich das bisher nicht bemerkt? Weil ich // the setup routine runs once when you press reset:
lieber mit der etwas älteren Version 1.6.5 void setup() {
arbeite, die schneller startklar ist.   // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
Analoge Signale plotten   pinMode(s1, INPUT_PULLUP);
Manchmal muss aber doch eine Version   pinMode(s2, INPUT_PULLUP);
1.6.8 oder höher zum Einsatz kommen,   Serial.begin(9600);
vor allem, wenn man den Seriellen Plotter }
benötigt. Damit lassen sich veränderliche
Größen darstellen. In der Version 1.8.2 kann // the loop routine runs over and over again forever:
der Plotter sogar mehrere Kanäle anzeigen. void loop() {
Das Programm wurde deshalb noch ein-   // set the brightness of pin 9:
mal erweitert, um den Inhalt der Variablen   analogWrite(led, brightness);
brightness zu plotten. Außerdem wurde ein   Serial.print(brightness);
Tiefpassfilter mit 100 kΩ und 10 µF gebaut,   int U = analogRead(A2);
um das PWM-Signal zu glätten und über den   Serial.print( " "); 
analogen Eingang A2 zu messen (Bild 6   Serial.print(U/4);
und Listing 1). Das Ergebnis sieht man in   Serial.println ( " ");
Bild 7. Die Helligkeit wird in einem Drei-   // change the brightness for next time through the loop:
ecksverlauf gesteuert, aber das RC-Glied   brightness = brightness + fadeAmount;
macht daraus näherungsweise einen Sinus.
Nach einiger Zeit wurde am Poti gedreht,   // reverse the direction of the fading at the ends of the fade:
um die Ausgabe zu verlangsamen. Die Sig-   if (brightness == 0 || brightness == 255) {
nalperiode verändert sich relativ zur kon-     fadeAmount = -fadeAmount ;
stanten Zeitkonstante des RC-Filters. Die   }
Amplitude des „Sinussignals“ wird höher   // wait for … milliseconds to see the dimming effect
und das Signal verzerrter. Solche Experi-   delay(analogRead(A0)/10+10);
mente erfordern eigentlich einen ganzen   if (digitalRead(s1) == LOW){
Messgerätepark, aber hier erledigt der Nano     analogWrite(led,0);
alles quasi nebenbei.     while (digitalRead(s2) == HIGH);
  }
ISP-Programmierung }
Übrigens, es muss nicht immer die Ardui-
no-IDE sein. Im Prinzip kann auch man jede
andere Entwicklungsumgebung für AVR-Controller verwenden. Den Bootloader habe ich mit einem STK500 in den Nano
Das hex-File kann dann über den ISP-Stecker gebrannt wer- gebrannt. Und dabei trat ein besonderes Problem auf. Der
den. Das kleine Board wird damit noch universeller. Ich arbeite Nano (Original wie Klon) verwendet einen besonders kleinen
wie gesagt gern mit Bascom. In der Mikrocontroller-Serie zum Pullup von 1 kΩ am Reset-Pin, so dass das STK500 es nicht
Arduino Uno („Mikrocontroller für Einstei-
ger”, Elektor ab 4/2014) kam ein speziell
Weblinks
angepasster Bascom-Bootloader zum Ein-
satz, der auch auf dem Nano funktioniert, [1] Treiber CH340G:
weil ja der gleiche Controller ATmega328 www.wch.cn/download/CH341SER_ZIP.html
und die gleiche Taktfrequenz 16 MHz ver- [2] Webseite des Autors: www.b-kainka.de/
wendet wird.

www.elektormagazine.de März/April 2019 9


schaffte, den Pin ausreichend auf low zu ziehen. Der Arduino noch nicht ausgelöst, aber mit dieser Unterstützung schafft
Uno hat an dieser Stelle einen 10-kΩ-Widerstand, mit dem es es auch der Brenner im STK500. Ähnliches könnte auch mit
problemlos klappte. Für den Nano habe ich folgende Quick-and- anderen Brennern passieren. Also falls es mal irgendwie nicht
dirty-Methode gefunden: Zwischen Reset und GND wird extern klappt, sollte man die Spannung am Reset-Eingang untersuchen.
noch einmal 1 k angeschlossen. Der Reset wird dabei gerade

NodeMCU
Von Fabian Kainka

NodeMCU ist ein auf dem 32-Bit-Mikrocontroller ESP8266 des Herstellers Espressif basierendes
Entwicklungsboard, das auf das Internet of Things spezialisiert ist.

rial-Wandler kommt ein DP2102 zum Einsatz. Eine LED und


zwei Taster (einer davon für Reset) sind ebenfalls direkt auf
dem Board integriert. Soweit ist alles so, wie man es von einem
ESP8266-Entwicklungsboard erwarten darf.
Doch NodeMCU ist nicht nur die Bezeichnung für das Entwick-
lungsboard, sondern auch der Name der vorinstallierten Firm-
ware, die einen Lua-Interpreter enthält. Lua (portugiesisch für
Mond) ist eine Skriptsprache und der eigentliche Grund, warum
mich das NodeMCU-Board interessiert. Ein ESP8266 lässt sich
(wie vergleichbare Boards auch) problemlos und ohne Auf-
wand über die Arduino-IDE programmieren. Aber das span-
nende an Lua ist, dass Programme zur Laufzeit interpretiert
und nicht zuvor von einem Compiler übersetzt werden. Damit
sind Programme nichts weiter als einfacher, aber vom Inter-
preter verstandener Text, der auch live, also auch zur Laufzeit,
Bild 1. Die Entwicklungsplattform NodeMCU. verstanden und ausgeführt werden kann. Das Ganze lässt sich
am besten mit der Konsole unter Linux oder der Windows-Po-
wer-Shell vergleichen, die Befehle jederzeit entgegennehmen
Die Hardware verwendet, wie man in Bild 1 erkennen kann, ein und Skript-Dateien automatisiert ausführen können. Hier wie
ESP12E-WLAN-Modul. Es stehen insgesamt 13 nutzbare Pins dort benötigt man als Entwicklungsumgebung nicht mehr als
für die verschiedensten Anwendungen bereit. Als USB-To-Se- einen einfachen Texteditor. Man kann sich die Arbeit, wie man
später sehen wird, sogar noch einfacher machen.

Die ersten Schritte


Technische Daten des ESP8266. Der erste Schritt war, dass ich das Board aus der Verpackung
• ESP12E-Modul genommen und an eine USB-Buchse meines PCs angeschlossen
• 32-Bit-Low-Power-CPU mit 80 MHz Taktfrequenz habe. Für die erste serielle Verbindung habe ich das Terminal-
• 4 MB Flashspeicher für Programme und Dateien programm Putty genutzt, aber jeder andere Serielle Monitor
• WLAN: 802.11 b/g/n bis 72,2 MBit/s funktioniert gleich gut. Nachdem ich die Verbindung mit einer
• Leiterbahnantenne Baudrate von 9600 hergestellt hatte, konnte ich erste leserliche
• Betriebsspannung 3,3 V Zeichen empfangen. Diese verrieten mir, dass das Board mit
• Programmierung und Stromversorgung über Firmware-Version 0.9.6, kompiliert Mitte 2015, ausgestattet
Micro-USB-Anschluss ist. Das war mir persönlich ein bisschen zu alt und ich machte
• USB-To-Serial-Wandler: DP2102 mich auf die Suche nach der neusten Version. Dabei fand ich
• 13 GPIO-Pins gleich mehrere spannende Sachen heraus.
• 10-Bit-ADC (sukzessive Approximation)
• SPI, I²C, I²S, 2 x UART, IRDA, PWM, RTC Eine neue Firmware
• OnBoard-LED, 2 Taster Mein Weg führte mich zur entsprechenden Github-Webseite [1]
(Github ist eine Internetplattform für Quellcode). Hier waren

10 März/April 2019 www.elektormagazine.de


alle wichtigen Informationen verlinkt und ich hoffte, die neu-
este Firmware herunterladen zu können. Doch die Überra-
schung war groß, denn es gibt nicht nur eine neue Firmware.
Stattdessen kann sich jeder Nutzer seine eigene Firmware
zusammenstellen. Ganz nach eigenem Gusto kann (und muss)
man aus mittlerweile über 65 verschiedenen Funktionsmodulen
auswählen, die man in die Lua-Firmware integrieren möchte.
Alle Module passen aber nicht gleichzeitig in den 4 MB großen
Flash-Speicher; das wäre so, als würde man alle verfügbaren
Arduino-Libraries gleichzeitig nutzen wollen. Also muss sich
der Nutzer schon im Vorfeld entscheiden, in welche Richtung
seine Entwicklung gehen soll.
Dabei sollten Standard-Module wie Timer, UART, WiFi, GPIO und
so weiter in fast jede Firmwarekonfiguration aufgenommen wer-
den, während Module wie HTTP, MQTT, SNTP oder verschiedene
Sensormodule wie DHT (Klima), BME280 (Klima, Luftdruck),
HMC5883L (3-Achsen-Digitalkompass) oder TCS34725 (Far-
ben/Lichtsensor) nur bei Bedarf aufgenommen werden sollten.
Bild 2. Firmwareerstellung mit allen Modulen.
Das klingt zwar alles nach einer ganzen Menge Möglichkei-
ten, aber auch nach einer Menge Arbeit, die einzelnen Module
zusammenzustellen und zu einer lauffähigen Firmware zu kom-
pilieren. Das Ganze wäre auch sicher mühevoll, gäbe es nicht Das Programm ESPlorer verfügt bereits über ein paar Tasten
den einfach anzuwendenden Cloud Build Service (Bild 2). am Rande des Fensters, die automatische Befehle an das Board
Auf der Webseite [2] kann man nämlich seine persönliche Firm- senden. So konnte ich zum Beispiel die Chip-ID oder Informa-
ware mit den benötigten Modulen einfach „zusammenklicken“. tionen zum File-System auslesen. Aber es gibt natürlich auch
Es gibt zusätzliche Optionen, zum Beispiel, welchen Branch ein Eingabefenster für direkte Befehle. Ich probierte zunächst
(Zweig) man von Github verwenden möchte und ob man TLS/ folgende Kommandos aus:
SSL-Unterstützung oder FatFS zum Lesen von SD-Karten benö-
tigt. Nachdem man seine Wahl getroffen hat, trägt man seine gpio.mode(0, gpio.OUTPUT)
E-Mail-Adresse im entsprechenden Feld ein und klickt auf Start gpio.write(0, gpio.LOW)
your build. Das Erstellen der Firmware dauert eine Weile (bei
mir etwa drei Minuten), dann erhält man eine Mail mit einem Die Schreibweise erinnert an Arduino-Quellcode, weshalb die
Download-Link, der 24 Stunden gültig bleibt. Befehle recht leicht zu lesen sind. Zunächst wird hier Pin 0 als
Ausgang konfiguriert und anschließend auf low geschaltet. An
Die fertig kompilierte Firmware muss nur noch auf das Board Pin 0 hängt die On-Board-LED, die gegen VCC geschaltet ist
geladen werden. Auch dazu gibt es ein praktisches Tool, näm- und deswegen aufleuchtet. Das war tatsächlich nur ein erster,
lich den NodeMCU PyFlasher (Bild 3), den man unter [3] für einfacher Test, ob die Kommandos auch wirklich ohne Kompi-
Windows und für macOS herunterladen kann. Eine Installation lieren funktionieren.
ist nicht notwendig, die Datei ist direkt ausführbar. Anschließend
wählt man den richtigen COM-Port sowie die eben heruntergela-
dene Firmware-Datei aus und startet den Upload-Vorgang. Das
funktionierte bei mir völlig unproblematisch. Eine ausführliche
Beschreibung zum Erstellen und Flashen der Firmware, aber
auch Informationen zu allen Modulen und grundlegende FAQs
findet man übrigens auf der ausgezeichneten Projekt-Doku-
mentationsseite [4].

Hello World – Lua-Test


Auf der Dokumentationsseite fand ich auch einen Link [5] zum
sehr nützlichen Tool ESPlorer. Dieses Programm (Bild 4) ist
kein einfacher Serieller Monitor, sondern eine Art Schweizer
Messer für den ESP8266 – unabhängig davon, ob man Micro-
Python, NodeMCU oder eine AT-Firmware benutzt.
Nach dem Herunterladen und Starten der ausführbaren ESPlo-
rer.jar-Datei habe ich die serielle Verbindung zum Board her-
gestellt. Mit der neuen Firmware betrug die Baudrate diesmal
115200. Das Programm versuchte nun automatisch mit dem
Board zu kommunizieren, aber ohne Erfolg. Erst als ich die
Reset-Taste auf dem Board betätigte, bekam ich erste Nach-
richten, die mich über die verwendete Firmware inklusive aller
Module informierte. Die Kommunikation funktionierte also. Bild 3. Das PyFlasher-Tool.

www.elektormagazine.de März/April 2019 11


Bild 4. Das ESPlorer-Tool: rechts das Terminal, links die Snippets.

Wenn man nur einen oder zwei Befehle testen möchte, ist das direkt im Aufruf definierte Funktion (Anonyme Funktion genannt)
manuelle Eingabefenster sehr praktisch, auch weil es den Verlauf übergeben, die er jede Sekunde ausführen soll. Die LED klas-
speichert und so das erneute Ausführen eines Befehls enorm sisch blinken zu lassen war also kein Problem und das Programm
erleichtert. Aber meist möchte man direkt eine ganze Abfolge von verständlich. Aber wir haben es hier ja mit einem IoT-Board zu
Befehlen ausprobieren. Ich wollte das klassische „Hello World“ tun, weswegen ich folgendes Snippet erstellte, um zunächst
implementieren und die LED blinken lassen. Das sind schon ein eine Verbindung zu meinem Router herzustellen:
paar Zeilen mehr, doch zum Glück hat man mit ESPlorer die
Möglichkeit, ganze Code-Schnipsel zu erstellen und sogar auf wifi.setmode(wifi.STATION)
dem PC zu speichern. Diese Befehlsabfolge-Schnipsel, hier Snip- station_cfg={}
pets genannt, können dann per Klick automatisch an das Board station_cfg.ssid="YourSSID"
gesendet werden. Ich habe folgendes Blinkprogramm in eines station_cfg.pwd="YourPassword"
von 15 editierbaren Snippets eingetragen und per Run gestartet:
station_cfg.save=true
station_cfg.auto=true
-- Variables
wifi.sta.config(station_cfg)
pin = 0            --  GPIO0
wifi.sta.connect()
status = gpio.LOW
 
duration = 1000    -- 1 sec
wifi.eventmon.register(wifi.eventmon.STA_CONNECTED,
-- Pin Initialization
function(T)
gpio.mode(pin, gpio.OUTPUT)
    print("WiFi connected!")
gpio.write(pin, status)
end)
-- Timer Intervall
tmr.alarm(0, duration, 1, function () Nachdem die Verbindung erfolgreich hergestellt ist, gibt das
    if status == gpio.LOW then Programm zudem die Meldung „WiFi connected!” aus. Dazu
        status = gpio.HIGH musste ich erneut eine Anonyme Funktion erstellen, die beim
    else WLAN-Verbunden-Ereignis ausgeführt wird. Diese Art von ereig-
        status = gpio.LOW nisgesteuerter Programmierung ist typisch in Lua.
    end Der Verbindungsaufbau funktionierte tadellos. Die hier verwen-
  gpio.write(pin, status) dete Konfiguration sorgt außerdem dafür, dass die WLAN-Da-
end) ten gespeichert werden und auch nach einem Reset erhalten
bleiben. Zusätzlich sorgt station_cfg.auto=true dafür, dass
Interessant ist, dass Variablen nicht erst deklariert werden das Board immer selbständig versucht, eine Verbindung zum
müssen. Wer schon mal in JavaScript programmiert hat, kennt gespeicherten Netzwerk herzustellen. Ohne entsprechendes
dies wahrscheinlich. Ebenfalls interessant ist die Verwendung Programm erscheint aber keine Meldung „Wifi connected”, denn
des Timers. In diesem Fall wird dem Timer einfach eine ganze, dieser Teil bleibt nur bis zu einem Reset auf dem Board erhalten.

12 März/April 2019 www.elektormagazine.de


Weblinks
[1] Git-Repository: https://github.com/nodemcu/nodemcu-firmware
[2] Firmware erstellen: https://nodemcu-build.com/
[3] PyFlasher: https://github.com/marcelstoer/nodemcu-pyflasher/releases
[4] Dokumentation: https://nodemcu.readthedocs.io/
[5] ESPlorer: https://esp8266.ru/esplorer/#download
[6] MQTT-Beispiel: https://nodemcu.readthedocs.io/en/master/en/modules/mqtt/#example
[7] Webseite des Autors: https://fkainka.de/

Da der Verbindungsaufbau so gut geklappt hat, wollte ich direkt Dieses Programm macht nun etwas, was in der Regel nur Skript-
das MQTT-Modul testen. In der Dokumentation gab es ein gutes sprachen können. Zunächst wartet es nur auf das erfolgreiche
Beispiel, das ich direkt in ein Snippet kopiert, leicht angepasst Herstellen einer WLAN-Verbindung. Aber dann lädt es zur Lauf-
und „mal eben“ live auf dem Board getestet habe [6]. Auch zeit ein Programm aus dem Internet herunter, welches unter
hier lief alles ungewöhnlich glatt, sodass ich mich an Größe- dem Namen run.lua gespeichert und anschließend ausgeführt
rem versuchen wollte. wird. In diesem Beispiel lädt es ein simples Blink-Programm
Der nächste Schritt war deshalb, ein Programm zu schreiben, von einer Pastebin-Seite nach. Aber natürlich können auch alle
das dauerhaft auf dem Board gespeichert bleibt und beim anderen Quellen genutzt werden. In dieser Firmware wurden
Boardstart automatisch ausgeführt wird. Dies hat sich ebenfalls sowohl das HTTP-Modul als auch die TLS/SSL-Option verwendet.
als sehr einfach herausgestellt, wenn man folgendes beachtet: Hier wird Lua als Interpreter-Sprache so richtig spannend. Ich
stelle mir vor, dass gleich eine ganze Reihe von Programmen
• Die Firmware stellt einen eigenes Virtuelles Dateisystem auf einem Webserver liegt, die dort ständig angepasst und ver-
zu Verfügung, in das Dateien hochgeladen werden können. bessert werden können. Per Webseite oder MQTT wählt man
Diese Dateien können Skript-Dateien sein, die dann mit dann sein Programm und lädt es auf das Board. Modularer und
dem Befehl dofile(dateiname) ausgeführt werden, oder einfacher geht es kaum.
auch Webseiten, Bilder oder sonstige Dateien, die man auf 180604-01
dem Board bereitstellen möchte.
• Beim Starten prüft das Board, ob die Datei init.lua im
Dateisystem existiert. Ist dies der Fall, wird diese automa-
tisch ausgeführt.

Konkret hieß das für mich, dass ich im ESPlorer einfach vom
Reiter Snippets auf Scripts gewechselt bin, in dem sich ein
Texteditor befindet. Dort schrieb ich folgende Zeilen, die ich
zunächst auf meinem PC als init.lua speicherte und anschlie-
ßend mit Upload auf den NodeMCU übertrug:

wifi.eventmon.register(wifi.eventmon.STA_CONNECTED,
function(T)
    print("WiFi connected!")
    http.get("https://pastebin.com/raw/k4ccGx3T",
nil, function(code, data)
     if (code == 200) then
          if file.open("run.lua","w+") then
               file.write(data)
               file.close()
          end
im elektor-shop
      else
          print("HTTP request failed") ªNodeMCU-Mikrocontrollerboard
www.elektor.de/
      end nodemcu-microcontroller-board-with-esp8266-and-lua
     
ªErik Bartmann: „Das ESP8266-Praxisbuch”
      if file.exists("run.lua") then dofile('run. www.elektor.de/das-esp8266-praxisbuch
lua') else print("run.lua not found") end ªDogan und Ahmet Ibrahim: „ESP8266 and MicroPython”
    end) www.elektor.de/esp8266-and-micropython
 end)

www.elektormagazine.de März/April 2019 13


LABS PROJECT

Flipper-

14 März/April 2019 www.elektormagazine.de


INFOS ZUM PROJEKT

Uhr
Flipper retro
ESP12-F
ESP8266

Einsteiger
Æ Fortgeschrittene
Experte

etwa 2 Stunden (ohne


Score-Trommel-Reinigung)

3,3-V-FTDI-Kabel
oder anderes
USB/UART-Interface

etwa 75 € (ohne Zählwerke)

www.elektormagazine.de März/April 2019 15


Der Sound der alten Score-Trommeln
Von Luc Lemmens (Elektor Labs)

Vintage-Displays erregen mit Sicherheit Aufmerksamkeit, und das nicht nur, weil sie gut aussehen. Dieses
Projekt, das die 1960er Jahre mit SMDs, WLAN und Internet verbindet, ist auch dermaßen laut, dass der Lauf
der Zeit garantiert nicht unbemerkt bleibt...

In Elektor gab es in der Vergangenheit Wunsch im europäischen oder im Im wirklichen Leben sind die Dinge etwas
zahlreiche Projekte mit „Vintage“-Anzei- US-Format. komplizierter. Es gibt weitere Schalter
gen wie Nixie-Röhren, Numitrons, Deka- am Zählwerk, zum Beispiel einen Kon-
trons, VFD-Röhren, aber bisher nur ein Elektromechanik takt, der meldet, ob die Trommel ihren
einziges Thermometerprojekt mit elek- Die meisten Flipper, die von Mitte der Vorwärtsschritt beendet hat, einen, der
tromechanischen Flipperzählwerken [1], 1950er Jahre bis Mitte der 1970er Jahre sich in Position „9“ schließt (Übertrag in
gefolgt von einem Remake mit einem gebaut wurden, besitzen elektromecha- die höhere Dekade), und einige Trom-
Flipper-Kreditzählwerk zur Tempera- nische Zählwerke (auch bekannt als meln können sogar jede Ziffernposition
turanzeige [2]. Höchste Zeit für eine Score-Drums) zur Anzeige des Punktes- für Freispielpunkte und die sogenannte
neue Idee! Diesmal fabrizieren wir eine tands eines Spielers. Das Funktionsprin- Match-Funktion registrieren. All diese
Uhr mit „normalen“ Zählwerken. Das ist zip hat sich im Laufe dieser Jahre nicht Kontakte verwenden wir in unserem Pro-
zwar nicht gerade das originellste Recy- wesentlich verändert: Ein Impuls wird jekt nicht. Die Spule und der Nullschalter
cling dieser alten Displays, aber das Pro- an eine Spule gelegt, wodurch das Zähl- sind die einzigen elektrischen Teile, die
jekt weist einen hohen Spaßfaktor auf. werk einen Schritt hochzählt. Ein Schal- für unsere Uhr von Interesse sind.
Zu Ehren des ursprünglichen Ein- ter erkennt die Nullposition der Trommel Die Zähltrommeln haben sich im Laufe
satzzwecks der Zähltrommeln in Bars, und ermöglicht es dem Gerät, zu Beginn der Jahrzehnte geändert, vor allem in der
Kellern und Cafés verbirgt sich im Projekt eines neuen Spiels die Punktzahl auf Null Größe. Der Durchmesser wurde von 5“
ein einfacher Flipper, der auf Ihrem Com- zurückzusetzen. Anfang der 60er Jahre auf 4“ und spä-
puter oder einem mobilen Gerät gespielt
werden kann.
Es gibt eine Flut von Flipperuhren-Designs
im Internet (Stichwort: pinball clock),
aber soweit wir wissen, ist diese eine
der modernsten und zugleich anachronis-
tischsten aller Zeiten, mit einem ESP8266,
der die Uhr über WLAN mit dem Internet
verbindet, um Zeit und Datum zu syn-
chronisieren. Alle Einstellungen der Uhr
können über WLAN (Smartphone, Tablet
oder PC) abgerufen und geändert werden.
Zeit und Datum lassen sich aber auch
manuell einstellen. Ein batteriegepuffertes
Echtzeituhr-IC namens DS3231 sorgt für
die korrekte Uhrzeit mit einem maximalen
Fehler von 5 ppm, auch bei ausgeschal-
teter Stromversorgung.
Sie können ein tägliches (oder besser
gesagt nächtliches) Intervall einstellen,
in dem sich die Uhr ruhig verhält: Die
Zählwerke und die Glockenspiele sind
dann nicht aktiv. Alternativ können Sie
die Anzeige auch manuell ein- und aus-
schalten (oder Sie ziehen einfach den
Netzstecker).
Während des normalen Betriebs wird
die Zeit entweder im 12- oder 24-Stun-
den-Format angezeigt. Das Datum
erscheint alle 30 Minuten, ganz nach

16 März/April 2019 www.elektormagazine.de


Woher bekomme ich die Zählwerke?
Gute Quellen für Zählwerke sind Auktions- möglicherweise nicht gleichmäßig genug, stoff-Lager. Wenn eine Trommel nicht
oder Kleinanzeigenseiten im Internet, aber um ordnungsgemäß zu funktionieren. Tun leichtgängig läuft, haben Sie sie nicht
es gibt auch zahllose (Web-)Geschäfte, Sie sich deshalb den Gefallen und nehmen genügend gereinigt oder bei der Mon-
die historische und generalüberholte Flip- Sie die Einheiten komplett auseinander! tage etwas falsch gemacht. NIEMALS
perteile verkaufen. Alle Zählwerke der Reinigen Sie jedes Teil gründlich, bevor Sie schmieren!
namhaften Hersteller wie Gottlieb, Bally es wieder zusammenbauen. Nun einige • Nullschalter sind nicht schwer zu identi-
und Williams sind für unsere Uhr geeig- do’s and don’t’s von einem alten Hasen: fizieren: Achten Sie auf einen Federzun-
net, aber auch Werke weniger bekannter genschalter, der sich öffnet, wenn sich
Marken können eingesetzt werden. Es gibt • Das Wichtigste: Seien Sie sehr vorsich- die Trommel in Nullstellung befindet.
je nach Marke und Alter der Zähltrom- tig mit der Trommel. Die Nummerierung Bei den neueren Trommeln von Bally
meln verschiedene Größen, Punktzahlen kann leicht beschädigt oder sogar ab- und Williams befindet sich der Schal-
und Schriftarten. Achten Sie darauf, vier gewischt werden, wenn die Trommeln ter auf der Oberseite des Bauteils. In
identische Exemplare zu erwischen. nicht mit Sorgfalt behandelt und gerei- dieser Hinsicht sind Gottlieb-Zählwerke
nigt werden. Frühe Gottlieb-Trommeln weitaus weniger reparaturfreundlich,
Entkarbonisierung wurden beispielsweise mit einer was- da die Schalter im Inneren des Bauteils
Sobald die vier Zählwerke auf Ihrer Werk- serbasierten Tinte bedruckt. Also nicht versteckt sind. Es ist also ratsam, den
bank liegen, beginnt der schmutzigste, einweichen, schrubben oder kratzen Nullschalter zu identifizieren, wenn die
aber auch lohnenswerteste Teil des Pro- und keine (aggressiven) Reinigungs- Trommel demontiert ist. Reinigen Sie
jekts: die Reinigung! Denn wahrscheinlich mittel verwenden! auf jeden Fall die Kontaktstellen mit
sind die Zählwerke mit Schmutz, Staub • Beim Zusammenbau: Es gibt immer eine feinem Schleifpapier und passen Sie die
und Ruß bedeckt (daher: Entkarbonisie- Art Kerbe oder Markierung für die kor- Federzungen gegebenenfalls an.
rung), was nicht nur hässlich aussieht, rekte Ausrichtung der Trommel auf der
sondern höchstwahrscheinlich auch die Nabe. Eine falsche Ausrichtung kann die Videos mit Hinweisen zur (De-)
mechanischen Eigenschaften beeinträch- Einheit beschädigen oder zumindest die Montage, Reinigung und Reparatur
tigt. Wenn Sie die Zählwerke nur ober- Nullposition der Trommel verschieben. von Flipper-Zählwerken finden Sie im
flächlich säubern, läuft der Mechanismus • Bewegliche Teile haben Metall-zu-Kunst- Internet.

www.elektormagazine.de März/April 2019 17


ter auf 3“ reduziert. Die größeren Rollen mentieren. Das bedeutet, dass eine teil der Uhr sein, da diese Glockenspiele
waren nämlich recht träge, die kleineren Trommel an der Position „1“ nur durch zunehmend schwieriger zu finden sind
konnten mit schnelleren Drehungen den neunmaliges Pulsen auf „0“ zurückge- und genauso zunehmend teurer werden.
Punktestand schneller anzeigen. Des- setzt werden kann. Unnötig zu sagen, Alternativ lässt sich auch ein eintöniges
halb „klingen“ ältere Flipperautomaten dass dies definitiv die lauteste Uhr sein Glockenspiel eines älteren Flipperauto-
weniger flott als neuere Modelle. Welches wird, die Elektor je vorgestellt hat. Die maten verwenden.
Zähltrommelmodell man auch verwen- echten Flipper-Enthusiasten werden Die Spulen in elektromechanischen Flip-
den möchte, die Uhr lässt sich entspre- natürlich das optionale elektromecha- pern werden mit Wechselstrom betrie-
chend einstellen, damit der Sound der nische Glockenspiel mit drei Tönen ben, mit Ausnahme der Flipper und der
Score-Drums dem Klang eines echten anschließen, das jede Viertelstunde laut- aktiven Schlagtürme, die die Firma Gott-
Flippers nahekommt. hals zu Gehör bringt. lieb Pop-Bumper genannt hat (in spä-
Flipper-Zählwerke können nur inkre- Letzteres könnte der teuerste Bestand- teren Modellen). Wechselstromspulen
können auch mit Gleichstrom betrieben
werden, jedoch mit einer niedrigeren als
der Nennspannung, siehe [3]. In diesem

CH1
CH2
CH3
RL1
RL2
RL3
RL4
V+

V+
Dokument geht es um die permanente
K2 K5
1 2 3 4 5 1 2 3 4 Versorgung von Wechselspannungsrelais
V+ V+
mit Gleichstrom; in unserem Projekt (und
D
T1
D
T2
D
T3
D
T4
D
T5
D
T6
D
T7
in Flippern natürlich auch) werden (die
LED2
G G G G G G G meisten) Magnete aber nur mit kurzen
R15 S R16 S R17 S R18 S R20 S R22 S R25 S
FAULT Impulsen versorgt, so dass eine Über-
1k 1k 1k 1k 1k 1k 1k
R3 R6 R10 R12 R19 R21 R24 R27 hitzung der Spulen unwahrscheinlich ist.
Schaden könnte eine Spule nur bei einem

1k
100

100

100

100

100

100

100

Fehler in der Uhr nehmen, wenn perma-


FAULT
10MIN

nent Strom durch sie fließt. In diesem


1MIN

CH1

CH2

CH3
10H

1H

Fall brennt lediglich eine Sicherung durch


K1 UART
und unterbricht den Strom, bevor die
T1...T7 = NTF3055L108
VCC 6 5 4 3 2 1 Spule abbrennt. Im echten Flipperleben
führt ein festsitzender Scoreschalter zu
VCC
R1 R9 R23 R2 R26 R11
einer bösartig riechenden, verbrannten
10k

10k

10k

10k

10k

10k

18 Trommelspule, bis dass eine 10+-Ampe-


VDD
MOD1 6
RST
re-Sicherung sie von der Spannung schei-
ESP-12E/F 10 FAULT
C7 IC3 GP0
K3 RESET TX
GP1
11 1MIN det. Die Isolation des Spulendrahts wäre
2 8
ZERO ADC RX INT 12 10MIN
GND
1
CH_PD GPIO5
100n 1
SCL
GP2 dann schon heruntergeschmolzen und die
13 1H
2 GP3
GPIO16 GPIO4 SDA
GP4
14 10H Spule nur noch ein großer Kurzschluss.
GPIO14 GPIO0 MCP23008 15 CH3
GPIO12 GPIO2
5
A0
-E/SO GP5 Kurz gesagt, diese Spulen waren nie
16 CH2
4 GP6
GPIO13 GPIO15 A1
GP7
17 CH1 für eine dauerhafte Stromversorgung
3
VCC GND A2
ausgelegt!
GPIO10
GPIO9

VSS
SCLK
MISO

MOSI
CS0

9 Mit Ausnahme der frühen Williams-Ge-


R8
S2 C5 C3 C2 S1 räte (vor 1963: 50 VAC) betrug die Spu-
10k

10 100 100n VCC


lenspannung der Williams- und Gottlieb
RESET 16V 16V FLASH
R13 R14
Flipperautomaten im EM-Zeitalter 28 VAC,
100n

VCC
bei Bally-EM-Geräten 50 VAC. Alle Sco-
C6

4k7

4k7

2 K6
VCC
4
3V3
re-Trommeln funktionieren auch mit
3 7 3
INT/SQW SDA
8 2
SDA etwa 35 VDC gut, für Gottlieb- und Wil-
IC2 SCL SCL
1
32KHZ BT1
1
GND
liams-Versionen reichen sogar noch nied-
4 6
RST VBAT rigere 20 VDC aus.
DS3231MZ+
GND CR2032
F1 2A 5 NTF3055L108 Werden wir elektronisch!
SOT-223
V+ 4 VCC DRAIN Das Schaltbild der Flipperuhr in Bild 1
D2 D4
K4 2 FEEDBACK
L1
ist nicht allzu kompliziert, aber lassen
1
IC1 2
4x S3J INPUT OUTPUT
MSS7341 R4 R7
Sie uns trotzdem alle Einzelteile näher
LM2576
1 GATE SOURCE
erläutern.
1k
2k7

D3 D1 HVS-ADJ DRAIN
C1 C8
GND ON/OFF
D5
C4 Die Stromversorgung der Uhr besteht aus
4700 100n 3 5
MBRS540 100
R5
LED1 einem 2×12-V-Ringkerntransformator,
50V 16V
1k6

dessen sekundäre Wicklungen in Reihe


POWER
geschaltet an K4 angeschlossen werden,
180307-006
was zu einer Spulenspannung von etwa
32 VDC am Brückengleichrichter D1...D4
führt. Theoretisch – denn in der Praxis
Bild 1. Schaltbild der Flipperuhr. Mit oder ohne Glockenspiel, es ist eine akustisch bedenkliche Schaltung! erreichen die Sekundärwicklungen eine

18 März/April 2019 www.elektormagazine.de


wesentlich höhere Ausgangsspannung, Score-Trommel gepulst wurde, also wenn
wenn sie nicht belastet werden. Dann diese Spule ihre Nullposition erreicht hat.
kann die Spulenspannung auch schon Folglich drehen sich bei einem komplet-
einmal 35 V DC betragen. Aus diesem ten Reset alle Trommeln, auch wenn sie
Grund dürfen Sie auch einen 2x9-V-Ring- sich bereits auf Position Null befanden.
kerntrafo verwenden, wenn Sie Score- Über alle vier Nullschalter sollten, wie
Trommeln von Williams oder Gottlieb in Bild 2 zu sehen, 1,2-kΩ-Widerstände
einsetzen. gelötet werden. Die Schalter sind in Reihe
IC1 ist ein Abwärtswandler LM2576, der geschaltet und mit K3 verbunden.
3,3 V für den digitalen Teil der Hard- Wenn sich der ADC-Wert nach zwölf
ware liefert. Um auf der sicheren Seite aufeinanderfolgenden Impulsen an wird, gelangen Sie beziehungsweise
zu sein, haben wir uns für die HV-Ver- einer Spule nicht ändert, leuchtet die der ESP8266 in den Bootloader-Modus,
sion des Wandlers mit einer maximalen LED2 „FAULT“ auf. Der Impuls für diese in dem man die Uhr vom Rechner aus
Eingangsspannung von 60 V (im Gegen- Spule wird dann unterdrückt, bis die Uhr über den UART-Anschluss K1 neu pro-
satz zu 40 V des „normalen“ LM2576) zurückgesetzt wird. Untersuchen Sie aber grammieren kann. Mit S1 lässt sich die
entschieden. LED1 leuchtet, wenn die vor einem Neustart die Nullschalter und Uhr auch in die „Werkseinstellungen“
3,3-V-Versorgung vorhanden ist. deren Verkabelung! Durch diese Maß- zurückversetzen. Dies kann nützlich sein,
Eine Anmerkung zum Elektrolytkon- nahme kann die Spule nicht gepulst wer- um zum Beispiel ein anderes WLAN aus-
densator C1, eines der wenigen Durch- den, um eine Nullposition zu erreichen, zuwählen. Setzen Sie dazu die Uhr zurück
steckbauteile auf der Platine. Es mag die niemals erreicht werden kann. Dies und drücken Sie S1, während die rote
etwas seltsam aussehen, war aber eine schont die Spule und auch Ihre Nerven FAULT-LED leuchtet.
bewusste Entscheidung. Denn ers- vor Überhitzung! IC2 ist die hochgenaue (wow, 5 ppm!)
tens ist es schwierig - wenn nicht gar Um die Statusinformationen der Uhr I2C-Echtzeituhr DS3231. Eine handels-
unmöglich -, einen so großen SMD-Elek- anzuzeigen, kann an K6 ein I2C-OLED- übliche CR2032-Knopfzelle sorgt dafür,
trolytkondensator mit einer Nennspan- Display angeschlossen werden. Dieser dass die Uhrzeit aktuell bleibt, auch wenn
nung von mehr als 35 V zu finden. Zwei- Verbinder ist auch für zukünftige Erwei- die Flipperuhr ausgeschaltet wird. Somit
tens ist solch ein Durchsteckkondensa- terungen brauchbar, zum Beispiel für den muss die Uhr nicht jedes Mal nach dem
tor mechanisch stabiler und drittens Anschluss eines I2C-Temperatursensors. Einschalten neu gestellt werden (wenn
können wir es uns angesichts der guten S2 ist der Reset-Knopf. Wenn Sie S1 sie nicht ohnehin über NTP synchroni-
Verfügbarkeit leisten, bei der maximalen gedrückt halten, bis S2 losgelassen siert wird).
Spannung nicht zu knausern und einen
50-V-Elko einzusetzen.
Die Spulen der Score-Trommeln und Glo- F2 SCORE REELS

ckenspiele werden von N-Kanal-MOSFETs Tr1

160mAT (230V)
des Typs NTF3055 gesteuert. Sie weisen 24VAC
320mAT (115V)
AC POWER R28
1k2
eine ausreichend niedrige Vth-Spannung
1 MIN.
auf, um mit der niedrigen Gate-Span- D9

nung von 3,3 V aus den Logikausgängen CHIMES


des Controllers die Spulen zuverlässig K4
HI MID LOW

anzusteuern. In unserem ersten Proto- D6 D7 D8


typ waren diese FETs direkt mit den den
R29
GPIO-Pins des ESP8266 verbunden. Da K5 1k2
CH1
aber der ESP8266 nicht übermäßig viele CH2 D10
10 MIN.

IOs besitzt, die teilweise noch beson- CH3


V+
dere Funktionen beim Einschalten haben,
D6...D12 = 1N4007
haben wir einen I/O-Expander MCP23008 K2
V+
(IC3) zwischengeschaltet. Dieser Expan- RL1
R30
der, der vom Controller über I2C gesteu- RL2
1k2
RL3
ert wird, macht die Ansteuerung der RL4 1 HR.
D11
Spulen wesentlich einfacher und bietet
K3
zudem eine Art Schutz/Pufferung zwi- 0V

schen dem ESP und den Power-FETs. ZERO

Im ersten Entwurf wurden auch die Null- K6


schalter direkt mit dem ADC-Pin des 3V3 R31
SDA 1k2
ESP verbunden, um IO-Pins zu sparen. SCL
10 HR.
Obwohl dieser ADC nicht wirklich genau GND D12

ist, erwies sich diese Lösung als zuver-


lässig genug. Der ESP erkennt nur eine
180307-001
Änderung des ADC-Wertes, das heißt, er
kann nur feststellen, wenn sich ein Null-
schalter öffnet, nachdem die Spule einer Bild 2. Schaltbild der Flipperuhr.

www.elektormagazine.de März/April 2019 19


Bestellen Sie
STÜCKLISTE www.elektorm
dieses Projek
agazine.com/p
t bei GroupGet
s.com:
inball-clock

20 März/April 2019 www.elektormagazine.de


Bau und Verkabelung der Flipperuhr
Zuerst benötigen Sie die vier Score-Trommeln. Erst wenn diese
auf Ihrem Labortisch liegen, sollten Sie auch die andere Hard-
ware kaufen. Ein dreitöniges Glockenspiel oder vielleicht auch
eine einzelne Flipperglocke wäre ein schöner Bonus, ist aber
nicht zwingend erforderlich, um die Uhr zu bauen. Und selbst
wenn Sie ein Glockenspiel haben, kann es passieren, dass sie
es abschalten müssen, weil das Geräusch Ihnen und/oder Ihren
Mitbewohnern auf den Wecker fällt.
Obwohl die meisten Bauteile auf der Platine SMDs sind, wird das
Löten nicht allzu schwierig sein, wenn Sie einen kleinen Lötkol- Bild 3. Auf dieser Webseite können alle Parameter und Optionen der
ben und dünnen Lötdraht (vorzugsweise <1 mm) verwenden. Flipperuhr eingestellt werden.
Löten Sie bei jedem Bauteil erst ein Pad fest und überprüfen
dann, ob alle Bauteile gut und gegebenenfalls (Halbleiter und
Elkos) richtig herum ausgerichtet sind. Dann löten Sie die ande-
ren Pads fest. Anschließend verlöten Sie alle „freien“ Bauteile,
die sich nicht auf der Platine befinden (Bild 2).
Reinigen Sie die Zähltrommeln und vergessen Sie nicht, an
jeder Spule eine Feilaufdiode (D9...D12) 1N4007 oder gleich-
wertig anzuschließen, ebenso an den Spulen des optionalen
Glockenspiels. Verbinden Sie jeweils eine Kontaktfahne der
Spulen mit den Kathoden der Dioden und dem V+-Anschluss
von K2 (beziehungsweise K5 beim Glockenspiel). Die andere
Seite der 1-Minuten-Trommel wird mit RL1 an K2 verbunden,
die 10-Minuten-Trommel mit RL2 und so weiter, die höchste
Bild 4. Das Zeiteinstellungsmenü.
Note des Glockenspiels mit CH1 an K5 et cetera.
Die Widerstände R28 bis R31 werden direkt auf die Kontakt-
fahnen der Nullpositionsschalter gelötet. Diese Schalter wer-
den hintereinander geschaltet und die Enden der Kette mit
K3 verbunden. Portable-Ordner in den Arduino-Installationsordner auf Ihrem
Die Sekundärwicklungen des Ringkerntrafos werden in Reihe Computer. Um den Download einigermaßen klein zu halten,
an K4 angeschlossen. Vergessen Sie nicht, eine Netzsicherung ist das große ESP8266-Boards-Plugin nicht enthalten! Halten
auf der Primärseite des Transformators einzubauen! Sie sich an die Anleitung auf der Git-Seite! Es gibt mehrere
Möglichkeiten, wobei die Installation mit dem Boards-Manager
Software und Firmware flashen wahrscheinlich die komfortabelste ist.
Es gibt noch einiges zu tun, bevor Sie mit der Kompilierung
und dem Hochladen der Firmware auf das ESP12-Modul der • Schalten Sie die Uhr ein und schließen Sie sie mit einem
Uhr beginnen können. 3,3-V-FTDI-Kabel an K1 (der schwarze GND-Leiter zeigt
Zuerst müssen Sie die Arduino-IDE auf Ihrem Computer instal- auf IC3) an die USB-Buchse Ihres PCs an. Halten Sie die
lieren. In die IDE muss das ESP8266-Boards-Plugin [4] und das Taste S1 (Flash) gedrückt, drücken Sie den Reset-Schalter
Arduino-ESP8266FS-Plugin aufgenommen werden, damit Sie S2 und lassen Sie dann S1 los, um den ESP im Bootloa-
die „Webpräsenz“ der Uhr [5] hochladen können. Die Firmware der-Modus zu starten.
für dieses Projekt steht unter [6] zur Verfügung. • Wählen Sie in der Arduino-IDE den COM-Port mit ange-
Der Code benötigt einige Bibliotheken, die ebenfalls in die IDE schlossenem FTDI-Kabel und wählen Sie unter Werk-
aufgenommen werden müssen: zeuge/Board „nodeMCU 1.0 (ESP-12E Module)“.
• Öffnen Sie in der Arduino-IDE die Datei ..\arduino\porta-
• RTCLib von Adafruit ble\sketchbook\PinballClock\PinballClock.INO.
• MCP23008 von Adafruit • Kompilieren Sie die Firmware und laden Sie sie dann auf
• TimelLib von Michael Margolis Ihr Board hoch.
• Arduino JSON 5.x
• WebSockets von Markus Sattler Last but not least müssen Sie die ESP-Webseite hochladen. Im
• NtpClientLib-Formular [7] (verwenden Sie den Arduino-Sketchordner befindet sich ein Unterordner namens
AsyncUDP-Branch) „data“, der alle Dateien für diese Webseite enthält. Das Upload-
• CRC32 von Christopher Baker Tool wählt automatisch alle Inhalte aus diesem Ordner und sen-
det sie an den Flash-Speicher des ESP. Achten Sie aber vorher
Die Installation der beiden Plugins ist, wie Sie auf den Git-Sei- darauf, dass im Werkzeugemenü die Einstellung „Flash size“ auf
ten lesen können, nicht so einfach. Um Ihnen das Leben ein „4M/1M SPIFFS“ gesetzt ist. Wiederholen Sie die S1/S2-Tas-
wenig zu erleichtern, haben wir unseren Portable-Ordner in tendrücke, um den ESP in den Bootloadermodus zu versetzen
das Download-Archiv für dieses Projekt aufgenommen [8], und laden Sie dann die Webseite des ESP hoch, indem Sie im
der den kompletten Sketch sowie all diese Bibliotheken ent- gleichen Menü die Option „ESP8266 Sketch Data Upload“ aus-
hält, einschließlich des ESP8266FS-Plugins. Kopieren Sie diesen wählen. Es dauert ein wenig, bis der Vorgang abgeschlossen

www.elektormagazine.de März/April 2019 21


Bild 5. Das Displayeinstellungsmenü. Bild 7. Spielen Sie das Flipperspiel „Osterei“ aus der Projektsoftware und
lassen Sie die Uhr Ihre Punktzahl registrieren!

Sollte die rote FAULT-LED (LED2) leuchten, überprüfen Sie die


vier Nullschalter an den Score-Rollen, die Widerstände und die
Verkabelung. Beseitigen Sie eventuelle Fehler und stellen Sie
die Uhr durch einen Druck auf S2 zurück.
Wenn die Uhr keine Verbindung zu einem WLAN herstellen kann
(zum Beispiel nach dem Flashen einer neuen Firmware oder
wenn das Netzwerk ausgefallen ist), richtet sie einen offenen
WLAN-Accesspoint mit der SSID „Elektor Pinball Clock“ ein.
Verbinden Sie einen Computer, ein Tablet oder ein Smartphone
mit diesem Netzwerk und öffnen Sie im Browser die IP-Adresse
Bild 6. Das Menü zur WLAN-Einstellung. 192.168.4.1 (Bild 3). Die Startseite ist eine Textbox, in der
zum Beispiel Ihre Highscores oder Notizen (zum Beispiel zu
eigenen Firmware-Änderungen) eingetragen werden können.
Unter dem Menüpunkt „Time settings“ (Bild 4) können Sie
Uhrzeit und Datum manuell einstellen, aber auch über einen
ist und in der Statusleiste „SPIFFS Image Uploaded“ angezeigt NTP-Server im Internet synchronisieren lassen. Dazu suchen
wird. Dann ist die Uhr bereit für die Konfiguration. Sie zunächst die SSID Ihres lokalen Netzwerks unter „WiFi
settings“, geben das Passwort ein und klicken auf „Submit“.
Inbetriebnahme Der ESP startet neu, verbindet sich mit diesem WLAN und
Nach dem Hochladen der Webseite wird die Uhr erneut zurück- empfängt eine IP-Adresse vom DHCP-Server des Netzwerks.
gesetzt. Alle vier Trommeln drehen in ihre Nullstellung und Es gibt viele Möglichkeiten, um diese Adresse herauszufinden:
zeigen dann eine zufällige Zeit an, wie sie von der (noch nicht
synchronisierten) RTC vorgegeben wird. • Wenn das FTDI-Kabel noch angeschlossen ist, öffnen Sie
den seriellen Monitor der Arduino-IDE und sehen dort
nach, ob die Anmeldung erfolgreich ist und wie die
IP-Adresse der Uhr lautet.
• Alternativ können Sie auch das optionale OLED-Display
im elektor-shop LCD1 anschließen, um die Netzwerkeinstellungen nach
dem Neustart anzuzeigen.
ªFlipper-Uhr, Leerplatine
www.elektor.de/pinball-clock-180307-1
• Schauen Sie einfach in der Netzwerksübersicht Ihres Com-
puters nach oder ermitteln Sie die IP-Adresse mit einem
ªESP-12F, ESP8266-basiertes WLAN-Modul
Tool wie „Free IP Scanner“.
www.elektor.de/wi-fi-module-160100-92
ª(optional) OLED-LCD-Display für Arduino, 0,96“, 128x64
Wenn Sie Ihren Computer oder ein mobiles Gerät mit dem glei-
www.elektor.de/oled-display-for-arduino
chen Netzwerk verbinden, können Sie mit der gerade ermittelten
IP-Adresse auf die Uhr zugreifen. Der AP wird ausgeschaltet,

22 März/April 2019 www.elektormagazine.de


wenn sich der ESP8266 in Ihrem WLAN onen in den „Display settings“ können
angemeldet hat. Sie Trommeln und/oder Glockenspiel zu
Öffnen Sie nun wieder „Time settings“ jeder Zeit völlig (de-)aktivieren. Wenn
und geben Sie für den NTP-Server „pool. die Anzeige ausgeschaltet ist, werden
ntp.org“ (oder einen alternativen Zeit- die Trommeln auf „9999“ gesetzt.
server) und das gewünschte Synchro- „WiFi settings“ (Bild 6) haben wir schon
nisationsintervall ein. Wählen Sie Ihre kennengelernt, aber nun ist die Uhr mit
Zeitzone und zusätzliche Zeiteinstellun- dem WLAN verbunden. Alle verfügbaren
gen aus und vergessen Sie nicht, auf Netzwerke sind aufgelistet und unter
die entsprechenden „Submit“-Buttons „Current connection“ ist das aktuell
zu klicken. verwendete Netzwerk angegeben. Ihr
bevorzugtes Netzwerk und das dazuge- re-Trommeln“ und der Highscore
Einstellungen hörende Passwort werden gespeichert werden zurückgesetzt und natürlich
In den „Display settings“ können Sie das und bleiben auch bei ausgeschalteter ist auch das Glockenspiel aktiv! Glück-
Tempo der Score-Trommel-Impulse ein- Stromversorgung erhalten. licherweise arbeitet das Spiel auch im
stellen. Es ist nicht unbedingt notwen- Ein „Restart“ startet die Uhr neu. Dabei Silent-Modus, damit Sie Ihre ahnungs-
dig, die Standardeinstellung 5“ passt für kann sich die IP-Adresse der Uhr ändern. losen Mitbewohner nicht aufwecken oder
alle Typen aller Hersteller. Die kleineren Und nun zum lustigen Teil, den wir uns erschrecken können...
3“-Typen wurden für schnelleres Vor- als Zitronencreme-Bällchen auf der Flip- 180307-02
wärtsdrehen entwickelt; es klingt und per-Uhr bis zum Ende des Artikels aufge-
sieht natürlich natürlicher aus, wenn spart haben: das Flipperspiel (Bild 7).
sich die Trommeln schneller drehen. Es erscheint auf dem Touchscreen, wenn
Die älteren, größeren Score-Trommeln Sie diesen Menüpunkt wählen. Die „Sco-
arbeiten bei schnelleren Veränderungen
nicht zuverlässig.
Soweit wir wissen, gab es niemals Sechs- Weblinks
Zoll-Trommeln, doch auch dies kann ein- [1] Thermometer mit Gottlieb-Display (Elektor April 2012):
gestellt werden. Wählen Sie einfach aus, www.elektormagazine.de/magazine/elektor-201204/19852
was Ihnen am besten gefällt!
[2] Flipper-Zählwerk – zweite Folge (Elektor Juli 2012):
Der „Reel status“ zeigt an, wenn die Null-
www.elektormagazine.de/magazine/elektor-201207/19947
schalter der Rollen registriert werden. Die
Anzeige ist bei einer (Neu-)Einstellung [3] Wechselstromspulen mit Gleichstrom betreiben:
der Schalter sehr nützlich. Der Button www.ecmweb.com/content/using-ac-coils-dc-power
„Reset Reels“ dreht alle vier Trommeln [4] ESP8266-Board-Plugin: https://github.com/esp8266/Arduino
in Nullstellung und löscht eventuelle [5] Arduino ESP8266FS-Plugin:
Fehlermeldungen. https://github.com/esp8266/arduino-esp8266fs-plugin
Mit der Option „Time/Date format“ stel-
[6] Software-Paket für das Flipper-Uhr-Projekt (Github):
len Sie das Format der Zeitanzeige (12 h
https://github.com/ElektorLabs/180307-PinballClock
oder 24 h) und des Datums (mm-dd oder
dd-mm) ein. [7] NtpClientLib-Formular: https://github.com/gmag11/NtpClient/issues/60
Der „Silent mode“ schaltet die Uhr [8] Software-Paket für das Flipper-Uhr-Projekt:
(Trommeln und Glockenspiel) während www.elektormagazine.de/180307-02
einer bestimmten Tages- oder besser [9] Flipper-Uhr-Video (Elektor TV): https://youtu.be/lQL2Vk1Hj-o
Nachtzeit stumm. Mit den letzten Opti-

Anzeige

Profil - Gehäuse
Standard und Kühlkörper
www.hammondmfg.com/1455.htm
www.hammondmfg.com/1455NHD.htm
+ 44 1256 812812
sales@hammondmfg.eu

www.elektormagazine.de März/April 2019 23


LABS PROJECT

Das SCCC-Projekt (1)


Softcore-Prozessor und C-Compiler im Selbstbau
Von Martin Oßmann

Manchmal benötigt man in einem Projekt gleichzeitig einen FPGA und eine klassische CPU, mit der sich
auch komplexe Programmflüsse einfach programmieren lassen. Eine Lösung ist ein Prozessor, der in einem
FPGA realisiert ist. Man kann sich solch einen „Softcore” kaufen, was aber oft nicht
ganz billig ist. In diesem Projekt wird eine einfache CPU für FPGAs im
Selbstbau vorgestellt; dank offenem Quellcode lässt sie sich
an eigene Bedürfnisse anpassen. Hierzu gehört
ein DIY-C-Compiler, der ebenfalls
erweitert werden kann.
In der Artikelserie
zum Projekt wird die
Theorie wie üblich
von vielen praktischen
Beispielen ergänzt.

Arbeitet man mit FPGAs und normalen CPUs, stellt man fest, dass realisiert werden soll, sind klassische CPUs klar im Vorteil.
FPGAs da vorteilhaft sind, wo man einen hohen Grad an Paral- In vielen Projekten findet man deshalb einen FPGA und einen
lelität braucht, wobei der Flow Of Control bei vielen FPGA-Pro- Mikrocontroller. Alternativ kann man eine CPU selbst im
jekten relativ einfach ist. Wenn ein komplizierter Programmfluss FPGA realisieren. Solche „Softcores” werden häufig von den
FPGA-Herstellern bereitgestellt. Dabei handelt es sich meistens
um eine proprietäre Software, die manchmal schon ziemlich
Das MAX1000-Board teuer sein kann.
• Intel MAX®10 10M08SAU169C8G FPGA Hier setzt das Small C Compiler CPU Project (SCCCP) an. Vor-
• Arrow USB Programmer2 gestellt wird eine einfache CPU, die man, da der Quellcode
• 64 MBit SDRAM (16-Bit-Datenbus) offenliegt, selbst an eigene Anforderungen anpassen kann.
• 64 MBit Flash Als Nächstes braucht man eine Sprache, um die CPU zu pro-
• 12-MHz-MEMS-Oszillator grammieren. Hier ist ein Compiler entstanden, der eine Unter-
• Optionaler MEMS-Oszillator menge der Sprache C (genannt smallC) übersetzen kann, die
• 8 rote User-LEDs auf Integer-Variablen basiert. Auch der Compiler lässt sich
• 2 Indikator-LEDs noch erweitern.
• 2 User-Buttons
• 3-Achsen-Beschleunigungssensor Hardware
• 12-Pin-PMOD-Steckverbinder einlötbar Als Hardware kommt in diesem Projekt das MAX1000-Board
• Arduino-MKR-Steckverbinder einlötbar von Arrow (unter 30 Euro [1]) zum Einsatz. Es ist mit einem
• JTAG-Steckverbinder einlötbar MAX10-FPGA von Intel/Altera, einem USB-Programmierinter-
• 3-Pin-I/O-Steckverbinder einlötbar face, zwei User-Buttons, acht User-LEDS und verschiedenen
Erweiterungssteckverbindern ausgestattet (siehe Kasten).

24 März/April 2019 www.elektormagazine.de


Um uns mit dem Board und der Quartus-Software (von Intel/ Listing 1. Lauflicht.
Altera) vertraut zu machen, können wir schon ein erstes Expe-
riment durchführen. Unter dem Deeplink [2] findet man den setLeds(int pattern){ // output pattern to LED
MAX1000 User Guide. Hier wird beschrieben, wie man die pattern ;
Quartus-Entwicklungssoftware installiert. Mit dieser wird das #asm
Programmierfile erstellt, welches nach dem Hochladen auf den OUTA 5 // LEDs are attached to channel 5
FPGA das Innenleben des Bausteins definiert. Dieser Vorgang #endasm
wird auch Synthese genannt. Als Hardwarebeschreibungsspra- }
che kommt bei diesem Projekt Verilog zum Einsatz. In der letz-
ten Ausgabe haben wir Verilog in Grundzügen dargestellt [3]. delay(int time){
int k ;
Experiment 1: Test for(k=0 ; k<time ; k++){
Das Experiment 1 dient dazu, die Quartus-Installation zu tes- }
ten. Wir laden hierzu von der Webseite zu diesem Projekt [4] }
das Software-Archiv herunter, das die verschiedenen Demos
zum SCCC-Projekt enthält, entpacken das Archiv und ziehen
es auf einen lokalen Ordner, den wir für dieses Projekt anle- main(){
gen: C:/SCCCP/. int k ;
Nun öffnet man mit Quartus einfach die QPF-Datei (QuartusPro- while(1){
jectFile) für das Experiment 1 (C:/SCCCP/experiment1/experi- for(k=0 ; k<8 ; k++){
ment1/experiment1.qpf). Dann synthetisiert man das Projekt setLeds(1 << k) ;
und lädt das erzeugte Programmierfile auf das MAX1000-Board. delay(500000) ;
Wenn alles geklappt hat sollte nun ein LED-Lauflicht (User- }
LEDs) zu sehen sein. }
Wir haben nun zum ersten Mal den Selbstbau-Prozessor syn- }
thetisiert und auf dem FPGA arbeiten lassen - das C-Programm
befand sich bereits fertig kompiliert im Verzeichnis von Expe-
riment 1. Den Quellcode sieht man in Listing 1.
Wer schon einen Blick hinter den Vorhang machen möchte,
sehe sich das Verzeichnis von Experiment 1 an. Dort gibt es
die Dateien codemem.txt und datamem.txt. Diese Dateien
hat der C-Compiler des Autors erzeugt. Beim Hochladen des
sC Sourcecode
FPGA-Programmierfiles wird auch der Inhalt dieser Dateien in experiment1.c
den Speicher des FPGA überspielt. Der Inhalt von codemem.
txt definiert den Anfangsinhalt des CPU-Codespeichers (mit
den Anweisungen in Maschinensprache), datamem.txt den
Anfangsinhalt des Datenspeichers für unsere CPU (siehe unten).
SC Compiler
Schaut man sich die Dateien an, stellt man fest, dass innerhalb Verilog-Code
der Dateien am Anfang der Quellcode mit ausgegeben wurde.
So kann man in den Dateien später noch den Quellcode sehen. TopLevel.v
sCCCPcpu1v01.v
Im Arbeitsverzeichnis findet sich außerdem noch die Datei SFRs.v
sCCCPcpu1v01.v. Das ist unsere CPU als Verilog-Datei, die aus datamem.txt
codemem.txt
etwa 1000 Zeilen Code besteht.
Der Workflow mit den verschiedenen Tools und Dateien ist in
Bild 1 dargestellt.
Auf dem Rechner des Verfassers dauert ein Synthesevorgang
rund 4 Minuten. Damit wird das Fehlersuchen ziemlich aufrei- Quartus
bend und kostet viel Zeit. Da muss es bessere Möglichkeiten Synthesis Tool
geben, wie wir gleich noch sehen werden.

Geschichtliches
Eine CPU zu designen und (dazu noch einen passenden Com- CPU
piler) ist natürlich kein Projekt, das an einem Nachmittag Memory
SFRs
erledigt ist. Da ist es gut, wenn man von Anfang an ein ver-
nünftiges Design wählt. Die Inspiration zum SCCCP stammt FPGA
vom „small C”-Projekt von Ron Cain (Ron Cain, „A Small
C Compiler for the 8080’s”, Dr. Dobb’s Journal, April–May
1980, pp. 5–19).
Er hat ein einfaches aber doch recht leistungsfähiges C-Subset Bild 1. Der C-Compiler setzt das C-Programm in Maschinensprache um
entwickelt; es wird dabei Code für den 8080 bzw. Z80 erzeugt. und erstellt das File „codemem.txt”. Der Zahlencode wird in das RAM des
Dabei werden nur relativ wenige verschiedene 8080-Befehle FPGAs geladen, wo er von der synthetisierten CPU abgearbeitet wird.

www.elektormagazine.de März/April 2019 25


Außerdem gibt es zwei Register: R0 ist das primäre Register;
Listing 2. Lauflicht mit Interrupt-Handler.
über dieses Register laufen die meisten Daten. Register R1 ist
#asm das sekundäre Register. Es wird benötigt, wenn zwei Operanden
RTCintVector       EQU   8 im Spiel sind (in Ron Cains smallC-Implementation entspricht
CPUflagsChannel    EQU   6 R0 dem HL-Register und R1 dem DE-Register). Diese beiden
LEDsChannel        EQU   5 Register sind 32 Bit breit.
ORG      RTCintVector Der Datenspeicher ist ebenfalls 32 Bit breit, der Programm-
PUSH     R0 speicher hat 40 Bit Breite. Damit passen in ein Befehlswort
PUSH     R1 ein 32-Bit-Wort für Daten und 8 Bit zur Opcode-Dekodierung.
CALL     RTCinterrupt An dieser Stelle sei schon einmal ein Befehl der CPU genannt.
POP      R1 Der Befehl
POP      R0           LDI        1234     ; LoaDImmediate
RET
#endasm schreibt den Wert 1234 ins Register R0.
                  Unsere Maschine kennt nur 32-Bit-Worte und alle Operatio-
setCPUflags(int x) { nen werden auf 32 Bit ausgeführt. Will man mit char-Werten
x ; rechnen, benutzt man nur die unteren 8 Bit. Das ist auf den
#asm ersten Blick verschwenderisch, erleichtert es aber gewaltig,
OUTA   CPUflagsChannel einen Compiler zu entwickeln.
#endasm             
} Peripherie
Zusätzlich hat die CPU auch die Möglichkeit, auf andere Werte
setLeds(int pattern){ unseres Hardware-Designs zuzugreifen, die ebenfalls 32 Bit
pattern ; breit sind.
#asm Erweitert man die CPU z.B. um einen Real Time Counter (RTC),
OUTA   LEDsChannel so möchte man den Wert des RTC lesen und schreiben kön-
#endasm              nen, und man möchte die Periodenlänge angeben. Es gibt in
} diesem Fall also zwei Werte (RTCtimer, RTCperiod) die von der
CPU kommen, und einen Wert, der von der CPU gelesen wird,
RTCinterrupt(){ nämlich der aktuelle Zählerstand RTCtimer.
setLeds(0xFF) ; Allen Parametern der CPU-Peripherie, die gelesen- oder
} geschrieben werden, ist eine Nummer zugeordnet (SFR-Ad-
resse = Adresse des Spezial-Funktions-Register). Um Werte
   zu lesen gibt es den Befehl:
main(){       INPA   nn
int k ; Dieser Befehl liest das Spezialfunktionsregister nn und schreibt
setCPUflags(1) ; den Wert nach R0.
while(1){ Der Befehl
for(k=0 ; k<8 ; k++){      OUT A  nn
     setLeds(1 << k) ; sendet den Inhalt von R0 ans Spezialfunktionsregister nn.
} In unseren Experimenten werden wir die nackte CPU durch
} solche zusätzliche Funktionalitäten ergänzen (serielle Schnitt-
} stelle, AD-Wandler, PWM, RTC, Interrupts). Die CPU hat dann
mit den Befehlen INPA und OUTA den Zugriff auf das entspre-
chende SFR.
generiert. Eine solche „Schmalspur”-CPU sollte sich relativ leicht Will man zum Beispiel den RTC auf einen Wert setzen oder
als Softcore umsetzen lassen. Unser SCCCP-CPU-Design wurde seinen aktuellen Stand lesen, so ist die SFR-Adresse jeweils
so entwickelt, dass es die Maschinenbefehle abarbeiten kann, 4. Die Periodenlänge RTCtop kann man unter der SFR-Adresse
die beim Kompilieren eines smallC-Subsets generiert werden. 7 erreichen. Um also z.B. den RTC auf 256 und die Perioden-
Wer sich noch an alte 8080-Zeiten erinnert, wird schnell eine länge auf 500 zu setzen, kann man in Assembler schreiben:
gewisse Nähe von unserer CPU zum 8080 entdecken.
    LDI        256  //  Konstante ins Register
CPU-Architektur //  R0 bringen
Unsere SCCCP-CPU realisiert eine sogenannte modifizierte     OUTA    4       //  und über SFRadresse 4 ,
Harvard-Architektur, d.h. es gibt getrennte Programm- und //  d.h. RTCtimer, ausgeben
Datenspeicher. In der Standardkonfiguration haben wir Platz
    LDI        500  //  Konstante ins Register
für 4096 Befehls- und 1024 Datenworte. Außerdem verfügt
//  R0 bringen
die CPU über einen Programmcounter (PC) und einen Stack-
    OUTA    7       //  und über SFRadresse 7 ,
zeiger (SP). Die beiden Register sind so breit, dass man alle
//  d.h. RTCtimerTop, ausgeben
Worte direkt adressieren kann, beim Programmcounter also
12 Bit, beim SP 10 Bit.

26 März/April 2019 www.elektormagazine.de


Über SFR-Adressen hat man auch Zugriff auf die I/O-Pins des In den beiden Dateien c.bat und r.bat müssen Sie entsprechend
FPGAs, die wiederum mit Board-Peripherie wie zum Beispiel den Pfad zu Ihrer Icarus-Installation einfügen.
den User-LEDs verbunden sind.
Die SCCCP-Umgebung
Debugging des CPU-Designs Im Ordner von Experiment 1 lag das Anwendungs-Programm
Eine CPU in Verilog zu debuggen dauert sehr lange, wenn man für unsere CPU bereits fertig kompiliert vor, in Form von code-
für jede Iteration eine vollständige Synthese des FPGA-Designs mem.txt, einem Abbild des Codespeichers. Im Allgemeinen
durchführt. Will man im Verilog-Code der CPU (und ihren Erwei- wollen Nutzer ja aber ihre eigenen C-Programme schreiben,
terungen) nach Fehlern suchen, so bietet es sich an, eine Ver- kompilieren und auf der CPU zur Ausführung bringen. Hierfür
ilog-Simulation zu benutzen. Wir verwenden dabei den freien hat der Verfasser eine kleine Entwicklungsumgebung in der
Simulator Icarus Verilog [5]. Eine Installationsanleitung findet Programmiersprache Java erstellt. Sie kann über die Kom-
man unter [6]. mandozeile aufgerufen werden mit
Bevor Sie das Experiment 2 ausführen können, müssen Sie java -jar c:/SCCCP/CompilerAsJar/sCCCP.jar -s experi-
noch die zwei Batch-Dateien c.bat und r.bat im Verzeichnis von ment2.c -i c:/SCCCP/experiment2/experiment2/
Experiment 2 so ändern, dass diese den Icarus-Verilog-Simula- Beim Aufruf mit den gezeigten Parametern wird der C-Quell-
tor korrekt aufrufen. Beim Verfasser liegen die Icarus-EXE-Da- code experiment2.c in die Entwicklungsumgebung vorgeladen.
teien im Verzeichnis C:/iverilog/bin/. Dementsprechend steht Damit sich die Leser die fehlerträchtige Tipperei sparen kön-
in der Datei c.bat (c für „compile”) Folgendes: nen, ist der Aufruf in Form einer Batch-Datei realisiert, die
sich im Ordner von Experiment 2 befindet und den Namen
c:/iverilog/bin/iverilog.exe -o Vobject TestBench1v01.v c_compile.bat trägt.
Das GUI der kleinen Entwicklungsumgebung sieht man in Bild 2.
Die Batch-Datei r.bat (r für „run”) sieht so aus: Über die Schaltfläche MAKE kann man das C-Programm kom-
pilieren. Dazu gibt es Optionen für das Debugging und die
c:/iverilog/bin/vvp.exe  Vobject Simulation; wir kommen im Laufe des Artikels darauf zurück.

Bild 2. Die kleine Entwicklungsumgebung mit Compiler und Simulator ist in Java geschrieben.

www.elektormagazine.de März/April 2019 27


Experiment 2: Simulation mit Icarus
Listing 3. Debug-Infos.
In Experiment 2 nutzen wir abermals den Lauflicht-Code von
VCD info: dumpfile test1.vcd opened for output. Experiment 1, allerdings zusätzlich erweitert um einen Inter-
sC reset rupt-Handler für Interrupt 1 (Listing 2). Als Erstes rufe man
sC reset mit c_compile.bat die SCCCP-Umgebung auf und erzeuge mit
 -- set CPUflags 00000001H MAKE den übersetzten Code (im Arbeitsverzeichnis C:/SCCCP/
 -- out channel 00000005H data = 00000001H experiment/experiment2).
 -- out channel 00000005H data = 00000002H Dann übersetzt man mit dem Aufruf von c.bat den Code in das
 -- out channel 00000005H data = 00000004H interne Icarus-Format. Mit r.bat kann man dann die Simulation
 -- out channel 00000005H data = 00000008H starten. Wir erhalten den Ausdruck in Listing 3.
 -- out channel 00000005H data = 00000010H Man erkennt, dass Daten 01H, 02H, 04H usw. ausgegeben
// werden, die das LED-Muster erzeugen. Die LEDs sind unter der
Interrupt irq0 CPUflags=00000001H SFR-Adresse 5 ansprechbar. Weiter sieht man, wie zwischen-
***** interrupt ACK           selectedIRQ=0001H durch ein Interrupt abgearbeitet wird. Aber sehr viel mehr Infor-
serviceCode at 0008H  simTimer=0000012eH save mation als in Experiment 1 ist das nicht. Das liegt daran, dass
PC=00000028H im Verilog-Code für unsere CPU die entsprechenden defines
für das Debugging noch auskommentiert sind. Aktivieren kann
 -- out channel 00000005H data = 000000ffH man die defines in den ersten Zeilen in sCCCPcpu1v01.v, in
 -- out channel 00000005H data = 00000020H dem man die //-Zeichen weglöscht.
 -- out channel 00000005H data = 00000040H
 -- out channel 00000005H data = 00000080H //`define VERBOSE2
 -- out channel 00000005H data = 00000001H //`define VERBOSE1
 -- out channel 00000005H data = 00000002H
//`define VERBOSE3
 -- out channel 00000005H data = 00000004H
//`define VERBOSE_INPA1
//`define VERBOSE_OUTAchrOut

Nach erneutem Kompilieren erhält man nun im Detail ange-


zeigt, was in der CPU passiert. Für die ersten vier Befehle sieht
man die Ausgabe in Listing 4.

Listing 4. Detailliertere Infos.

FETCH PC=0000H Time=000002  SP=03ffH OPC=2500000018H  R0=00000000H R1=00000000H


decode: CALL    00000018H
pending write, store adr=000003feH val=00000001H

FETCH PC=0018H Time=000004  SP=03feH OPC=2affffffffH  R0=00000000H R1=00000000H


decode: ADDSP   ffffffffH 

FETCH PC=0019H Time=000006  SP=03fdH OPC=4000000001H  R0=00000000H R1=00000000H


decode: PUSHI   00000001H  
pending write, store adr=000003fcH val=00000001H

FETCH PC=001aH Time=000008  SP=03fcH OPC=250000000eH  R0=00000001H R1=00000000H


decode: CALL    0000000eH
pending write, store adr=000003fbH val=0000001bH

Listing 5. Befehle NOP und LDI in Verilog.

if( sCstate==sCstateDecode1 ) begin


     if (sCopcode==sCopcNOP) begin
        sCstate<=sCstateFetch ;          // NOP instruction: nothing to do
        end                              // goto fetch phase of next instruction
      else if (sCopcode==sCopcLDI) begin
        sCregR0 <= sCoperand1 ;          // Data fom instruction goes to R0
        sCstate<=sCstateFetch ;          // goto fetch of next instruction
        end
      else
...

28 März/April 2019 www.elektormagazine.de


Bild 3. Zustandsdiagramm der State Machine für die Abarbeitung der Maschinenbefehle.

Wie man sieht, wird für jeden einzelnen Befehl der Inhalt aller if( sCstate==sCstateFetch ) begin
Register angezeigt, sowie auch der Mnemonic des jeweiligen     sCinstruction <= sCcodeMem[sCregPC] ;
Befehls. Man erhält also detaillierte Informationen. Allerdings     sCregPC <= sCregPC + 1'b1 ;
ist man nun teilweise von dem Wust an Informationen erschla-     sCstate <= sCstateDecode1 ;
gen. Da muss man kreativ werden, um sich nur die Information     end
anzeigen zu lassen, die man braucht. Manchmal ist allerdings
so viel Information nötig, um einen Fehler einzugrenzen. Ein Im Zustand sCstateDecode wird der Befehl dekodiert; dann
Problem ist dabei oft, dass die Simulation nicht alle Aspekte wird mit der eigentlichen Ausführung begonnen. Eine Reihe
eines Programmlaufes widerspiegeln kann, weil es einfach zu Befehle werden auch bereits vollständig bearbeitet. Für die
aufwändig ist, alle Aspekte des realen Designs abzubilden. Man Befehle NOP und LDI sieht der Verilog-Code wie in Listing 5
stelle sich z.B. vor, dass man im echten Design Funksignale aus (als nächster Zustand wird wieder sCstateFetch gesetzt,
analysiert. Man müsste dann die Funksignale mit korrektem was den nächsten Befehl beginnt).
Timing simulieren, was aber oft zu aufwändig ist. Es gibt natürlich auch komplexere Instruktionen. Die Instruktion
LDPUSH aa bringt den Wert, der auf Adresse aa steht, auf den
Will man aber z.B. Fehler in der CPU-Simulation finden, ist Stapel und nach R0. Im Zustand sCstateDecode1 wird der Wert
der Icarus-Verilog-Simulator wirklich wertvoll. Mit ihm wurden von aa in den Zwischenspeicher readAddress gebracht. Darauf
diverse Fehler in der CPU erkannt und anschließend beseitigt. folgt der Zustand sCstateReadMemAt3. Da wird im Datenspeicher
gelesen und der gelesene Wert wird ins R0-Register gebracht.
Programmierung der CPU in Verilog Gleichzeitig wird der Schreibvorgang im Stapel vorbereitet,
Nun soll anhand einiger ausgewählter Befehle erklärt werden, indem die Variable writeAddress den Wert des Stapelzeigers
wie die SCCCP-CPU in Verilog realisiert wird. Die Befehle werden sCregSP-1 erhält; dieser Wert wird auch als neuer Wert von
in einem endlichen Automaten (finite state machine) abgear- sCregSP gesetzt. Als zu schreibender Wert writeValue wird der
beitet; Bild 3 zeigt das von Quartus generierte Zustandsdia- gelesene Wert verwendet. Das Schreiben könnte man nun in
gramm. Die erste Phase heisst sCstateFetch; in ihr wird nur einem 4. Zustand erledigen. Da unsere CPU aber eine modi-
der Befehl geladen und der Programmcounter (sCregPC) um fizierte Hardwarearchitektur aufweist, können wir gleichzeitig
1 erhöht. Als nächster Zustand wird sCstateDecode1 gesetzt. auf den Datenspeicher und den Codespeicher zugreifen. Der
In Verilog sieht das dann wie folgt aus: noch ausstehende schreibende Zugriff auf den Datenspeicher

Weblinks
[1] MAX1000 Board: https://shop.trenz-electronic.de/de/Produkte/Trenz-Electronic/MAX1000-Intel-MAX10/
[2] MAX1000-Board Manual mit Quartus Installationsanleitung: www.trenz-electronic.de/fileadmin/docs/Trenz_Electronic/Mo-
dules_and_Module_Carriers/2.5x6.15/TEI0001/User_Guide/MAX1000%20User%20Guide.pdf
[3] „Verilog Basics”, Elektor 1-2/2019: www.elektormagazine.de/180562-01
[4] Projektseite mit Softwaredownload: www.elektormagazine.de/180394-01
[5] Simulator Icarus Verilog: http://iverilog.icarus.com
[6] Installationsanleitung zu Icarus: http://iverilog.wikia.com/wiki/Installation_Guide

www.elektormagazine.de März/April 2019 29


Befehlsübersicht der DIY-CPU.
instruction set (all operations 32 bit wide):
Name cycles meaning explanation
NOP 2 no Operation
IDIV 37 signed integer division R0=R1 / R0
IMOD 37 modulus operation R0=R1 % R0 for positive operands
HALT 2 halts execution
LDIND 3 load indirect R0=memory[R0]
LDI    n 2 load immediate R0=n
ADDI   n 2 add immediate R0=R0+n
ADDSP  n 2 add to stack pointer SP=SP+n
JMP    adr 2 jump PC=adr
PCR0 2 load PC with R0 PC=R0
JFALSE adr 2 jump if HL==0 if(HL==0) PC=adr
LD     @adr 3 load R0=memory[adr]
PUSH   R0 2+ save R0 on stack memory[--SP]=R0
PUSH   R1 2+ save R1 on stack memory[--SP]=R1
CALL   adr 2+ call subroutine memory[SP--]=PC , PC=adr
POP    R1 3 fetch R1 from stack R1=memory[SP++]
POP    R0 3 fetch R0 from stack R0=memory[SP++]
XTR0 3 xchange top of stack and R0 R0=memory[SP], memory[SP]=R0
RET 3 return from subroutine or interrupt PC=memory[SP++]
IADD 2 integer addition R0=R1 + R0
IADD SP 2 add stackpointer to R0 R0=R0 + SP
IXOR 2 bitwise XOR R0=R1 ^ R0
IOR 2 bitwise OR R0=R1 | R0
IAND 2 bitwise AND R0=R1 & R0
ICOM 2 bitwise complement R0= ~ R0
INEG 2 signed negate R0= - R0
IMUL 2 signed multiply R0=R1 * R0
IASR 2 arithmetic shift right R0=R1 >> R0
IASL 2 arithmetic shift left R0=R1 << R0
ST     @adr 2+ store memory[adr]=R0
STIND  @R1 2+ store indirect memory[R1]=R0
OUTA   ch 2 output R0 to channel ch channel n=R0
INPA   ch 2 input R0 from channel ch R0=channel n
CMPEQ 2 compare equal R0=(R1==R0)
CMPNE 2 compare not equal R0=(R1!=R0)
CMPLT 2 compare less than R0=(R1<R0)
CMPLE 2 compare less equal R0=(R1<=R0)
CMPGT 2 compare greater than R0=(R1>R0)
CMPGE 2 compare greater equal R0=(R1>=R0)
CMPULT 2 compare unsigned less than R0=(R1<R0)
CMPULE 2 compare unsigned less equal R0=(R1<=R0)
CMPUGT 2 compare unsigned greater than R0=(R1>R0)
CMPUGE 2 compare unsigned greater equal R0=(R1>=R0)
The following instructions were added later to increase efficiency (higher speed, smaller code).
These instructions are not necessary. They are used by a simple peephole-optimizer.
Switching the optimizer off eliminates usage of these instructions.
PUSHI  n 2+ push immediate value R0=n ; SP-- ; memory[SP]=R0
TWOOP  n 2 prepare two operands R1=R0 ; R0=n ;
LDPUSH adr 3+ load var and push R0=memory[adr] ; SP-- ; memory[SP]=R0
ADDSPI n 2 load R0 by SP+offset R0=SP+n
GETLCL n 3 get local variable R0=SP+n ; R0=memory[R0]

30 März/April 2019 www.elektormagazine.de


Listing 6. Befehl LDPUSH in Verilog.

if( sCstate==sCstateDecode1 )
              readAddress <= sCoperand1 ;
              sCstate<=sCstateReadMemAt3 ;

if( sCstate== sCstateReadMemAt3 )


              sCregR0 <=sCdataMem[readAddress] ;
              writeAddress <= sCregSP-1‘b1 ;
              writeValue   <= sCdataMem[readAddress] ;
              writePending <= 1 ;         
              sCregSP <= sCregSP-1‘b1 ;
              sCstate<=sCstateFetch ;

if( sCstate== sCstateFetch )


    if(writePending) begin
    sCdataMem[writeAddress[sCdataMemAddressWidth-1:0]]<=writeValue ;
    end

Listing 7. Befehl LDPUSH im Java-Simulator.

instruction=ram[regPC] ;
opcode=(instruction>>32) & 0xFF ;     // 8 Bit opcode
operand1=instruction & 0xFFFFFFFF ;   // 32 Bit immediate operand1

switch(opcode){
  case(ccNOP) :    { return ;}
  case(ccLDI) :    { regR0=operand1 ; return ;}
  case(.ccLDPUSH) : { regR0=readDataMemX(operand1) ;
                      regSP-- ;
                      writeDataMemX(regSP,regR0) ;
                      return ;}

wird deshalb überlappend mit der nächsten Fetch-Phase aus-


geführt. Das erkennt die Zustandsmaschine am gesetzten Bit
writePending. Dadurch verkürtzt sich die Ausführungszeit von
4 auf 3 Zustände.
Die Ausführung des Befehls LDPUSH gestaltet sich wie in Lis-
ting 6 gezeigt.
Ein solcher oder ähnlicher Code muss nun für jede Instruktion
(siehe Kasten Befehlsübersicht) geschrieben werden. Das
ist nicht wirklich schwierig. Aber bis alles fehlerfrei gelaufen
ist, waren schon ein paar Programmiertage notwendig.
Der Autor hat in die SCCCP-Entwicklungsumgebung einen klei-
nen PC-Simulator für die CPU eingebaut. In Java sieht die Aus-
führung des Befehls LDPUSH viel einfacher aus (Listing 7).
Der Simulation der CPU widmen wir uns in Experiment 3, das
Sie im zweiten Teil des Artikels finden.
180394-01

im elektor-shop
ªMAX1000 FPGA-Entwicklungsboard
www.elektor.de/max1000
ªE-Book: „Microprocessor Design Using Verilog HDL”
www.elektor.de/
microprocessor-design-using-verilog-hdl-e-book

www.elektormagazine.de März/April 2019 31


HOMELAB PROJECT

Lüftersteuerung
Analog oder Arduino?

Von Jac Hettema

Elektronische Systeme, die hohe


Leistungen in Verlustwärme umsetzen,
machen einen Wärmeabtransport
mit einem Lüfter notwendig. Um
die Lebensdauer des Lüfters zu
verlängern und das Lüftergeräusch zu
reduzieren, liegt der Gedanke nahe,
die Lüfterdrehzahl an wechselnde
Verlustleistungen anzupassen. In diesem
Beitrag geht es um zwei Varianten einer
Lüftersteuerung: Konventionell, also
analog, oder modern mit einem Arduino.

Es liegt in der Natur der Sache, dass Elektronik Wärme produ- Analog
ziert. Wenn die abzuführende Wärmemenge gering ist, genügt In der Schaltung, die Bild 1 zeigt, dient Transistor T1 als
meistens eine passive Kühlung mit einem nicht allzu ausge- Temperatursensor. Die Spannung am Basis-Emitter-Übergang
dehnten Kühlkörper. Höhere umzusetzende Verlustleistungen von T1 ändert sich mit einem Faktor von etwa –2,2 mV/K.
erfordern voluminösere Kühlkörper, doch dem sind in der Praxis Die Basisspannung von T1 wird über den Spannungsteiler R4/
Grenzen gesetzt. Dann kann eine aktive Kühlung mit einem R5 angehoben. Komparator U1.A, ein LM358, vergleicht diese
elektrisch betriebenen Lüfter die bessere Lösung sein. Dieser Spannung mit der am Abgriff des Trimmpotis R1 liegenden
Beitrag zeigt, wie sich ein elektrischer Lüfter abhängig von der Spannung. Durch Einstellen des Potis R1 lässt sich das Ver-
Wärmeentwicklung steuern lässt. halten der Lüftersteuerung ändern. An R1 (zusammen mit LED
D1, blau oder grün) liegt die Spannung der Zenerdiode D2.
Prinzip Die Spannung wird zunächst auf 7,5 V begrenzt. Die Schaltung
Die analoge Steuerung ist mit diskreten Bauelementen besitzt folgende Eigenschaften:
aufgebaut, während die digitale Version ein Mikrocontrol-
ler-Board Arduino Pro Mini mit einem dafür geschriebenen • Die Zenerdiode hat einen Wert, bei dem der Temperatur-
Programm (Sketch) verwendet. Bei beiden Varianten steu- koeffizient minimal ist, und die LED hat einen negativen
ert ein pulsbreitenmoduliertes Rechtecksignal (PWM) über Temperaturkoeffizienten. Die Spannung an Trimmpoti R1
einen Leistungstreiber den Lüftermotor. Durch Hinzufügen folgt dem positiven Temperaturkoeffizienten des Wider-
einer Induktivität, einer Diode und eines Kondensators erhält stands R2, der den LED-Strom begrenzt. Mit R2 wird die
die Treiberstufe ähnliche Eigenschaften wie eine schaltende Umgebungstemperatur des Lüfters berücksichtigt.
Stromversorgung. • T1 hat einen negativen Temperaturkoeffizienten, er ist für

32 März/April 2019 www.elektormagazine.de


R2 +12V
3k3
D1 R3 M1
D2 C2

10k
M
R8
7V5 D4 2 2
16V 12V

330k
1N4001 L1
R1 R11
5k 100k
3
D3 R9
1 5 T2
R6 U1.A 3k3 R13
2 7
1k 1N4148 U1.B 3k3
R4 6
R7
BDxxx
2k2

100k R12
T1 100k

R5 R10
U1 = LM358 C1
2k2

10k
BDxxx
47n

+12V D7 D5

7812
U2 D5...D8 = 1N4001
8 C3 C5 C4 C7 C6
U1 D8 D6
4 10 50 100n 100n 250
16V 16V 25V

170201-008

Bild 1. Die analoge Version arbeitet mit einem LM358 als astabilem Multivibrator.

die Temperatur des zu kühlenden Objekts zuständig. In den Eingang niedriger, muss die Ausgangsspannung für eine
der Bilanz hängt die Differenzspannung sowohl von der bestimmte Zeit hoch sein, damit der Opamp kippt. Auf diese
Temperatur des zu kühlenden Objekts als auch von der Weise kann der Duty-Cycle verändert werden. Eine niedrige
Umgebungstemperatur ab, so dass die steuernde Span- Eingangsspannung hat einen hohen Duty-Cycle zur Folge, und
nung mit höheren Umgebungstemperaturen ansteigt und umgekehrt.
der Lüfter schneller läuft.
• Die LED signalisiert, dass die Lüftersteuerung in Betrieb ist. Der Simulator TINA von Texas Instruments [2] kann das Ver-
halten der Opamp-Kippstufe perfekt simulieren. In Bild 2 ist
Die vom Temperatursensor T1 kommende Spannung wird von die Schaltung dargestellt, mit der die Simulation durchgeführt
Opamp U1.A um den Faktor 100 verstärkt. Die hohe Verstär-
kung hat zur Folge, dass schon geringe Temperaturschwan-
kungen spürbare Auswirkungen auf die Lüfterdrehzahl haben.
Falls dies nicht notwendig oder nicht erwünscht ist, kann die
Verstärkung mit den Widerständen R6 und R7 herabgesetzt
werden. Mit niedrigeren Werten für R7 sinkt die Verstärkung.
Wenn R7 durch ein Trimmpoti ersetzt wird, ist die Verstärkung
variabel. Mit einem Trimmpoti 100 kΩ lässt sie sich ungefähr
im Bereich 1...100 einstellen.
Opamp U1.B, der zweite Opamp des LM358, ist als astabile
Kippstufe geschaltet, auch astabiler Multivibrator genannt. Der
nicht invertierende Eingang liegt über R9 und D3 am Ausgang
von U1.A, er ist außerdem mit dem Spannungsteiler R8/R10
verbunden. Erläuterungen zur Arbeitsweise eines Opamps als
astabile Kippstufe geben diverse Webseiten im Internet, bei-
spielsweise [1].
Der Duty-Cycle der astabilen Kippstufe hängt von der Spannung
ab, die am nicht invertierenden Opamp-Eingang liegt. Wenn
die Spannung gleich der halben Betriebsspannung ist, beträgt Bild 2. In TINA-TI von Texas Instruments lässt sich die analoge Steuerung
der Duty-Cycle 50 %. Ist die Spannung am nicht invertieren- simulieren.

www.elektormagazine.de März/April 2019 33


Digital
Bei der von einem Mikrocontroller gesteuerten Version fiel die
Wahl auf den Arduino Pro Mini. Das ist ein kleines Board, das
für diesen Zweck wie maßgeschneidert ist und bei Online-Händ-
lern preisgünstig erstanden werden kann. Ein noch kompakte-
rer Schaltungsaufbau ist mit einem Digispark und dem darauf
befindlichen ATtiny85 möglich. Letzteres wurde jedoch (noch)
nicht realisiert. Prinzipiell ist jedes Arduino-Board geeignet, das
alternative Board sollte jedoch zweckmäßigerweise mit dem
gleichen Mikrocontroller ausgestattet sein. Eine Übersicht über
die diversen Arduino-Boards und ihre Eigenschaften enthält die
Webseite des Herstellers [3].
Die Schaltung (Bild 4) ist äußerlich unkomplizierter als die
Schaltung der analogen Version. Die Funktion des Tempera-
tursensors übernimmt eine Diode vom Typ 1N4148 (D1). Ein
Transistor wie in der analogen Lüftersteuerung wäre hier nicht
brauchbar. Der Grund ist die Wahl der internen Referenzspan-
nung des Arduino, sie beträgt 1100 mV. Mit einem Transis-
tor als Temperatursensor wäre die Eingangsspannung bereits
höher als die Referenzspannung. Der Mikrocontroller kann diese
Spannung nicht verarbeiten.
Vf1 (V) t (msec) th (msec) f (Hz) duty cycle
Die Auflösung des internen A/D-Wandlers beträgt 10 Bit, was
1 12 9 83 0.8
4.5
einer Schrittweite von 1,1 mV entspricht. In Kelvin umgerech-
11.5 1 222 0.2
net beträgt die Schrittweite mit einer Diode etwa 0,5 K. Für
die Lüftersteuerung reicht die Genauigkeit vollkommen aus.
Da sowohl die Referenzspannung des Arduino als auch die
Bild 3. Die Simulation zeigt, dass sich sowohl der Duty-Cycle als auch die Werte der Diode nicht frei von Exemplarstreuungen sind, ist es
Frequenz ändern.
ratsam, einige Kalibrierungen vorzunehmen. Die Spannung an
der Diode wird mit dem Arduino bei 0 °C und 100 °C gemes-
sen. Wenn die Spannung bei diesen Temperaturen bekannt
wurde, und Bild 3 zeigt die Ergebnisse. Dort ist der Einfluss ist, können die Temperaturen der Zwischenwerte berechnet
der Eingangsspannung auf den Duty-Cycle deutlich erkennbar. werden. Daraus lassen sich die Werte ableiten, die das puls-
Außerdem ist zu sehen, dass sich nicht nur der Duty-Cycle, breitenmodulierte Signal bei den unterschiedlichen Tempera-
sondern auch die Frequenz ändert. Für die Lüftersteuerung ist turen annehmen muss.
dies jedoch ohne Bedeutung. Die Temperatur kann auch mit einem digitalen Sensor wie dem
In der Schaltung (siehe Bild 1) ist für T1 ein NPN-Transistor DS18B20 gemessen werden. Ein solcher Sensor ist jedoch nicht
angegeben, ein PNP-Transistor ist jedoch ebenfalls brauchbar. immer sofort zur Hand. In diesem Fall stellt eine gewöhnliche
Mit einem PNP-Transistor müssen die Anschlüsse von Kollektor Diode eine praktikable Alternative dar. Der DS18B20 darf ohne
und Emitter in der Schaltung vertauscht werden. Da der Kol- weitere Maßnahmen anstelle der Diode mit der Schaltung ver-
lektor eines PNP-Transistors vom Typ BD... an Masse liegt, ist bunden werden. Er arbeitet dann im „One-Wire-Modus“, was
der Transistor ohne Isolierung an der Kühleinheit montierbar. bei kurzen Leitungslängen kein Problem ist.
Dadurch wird der Wärmeübergang optimiert. Die Software bietet noch Spielraum für Verbesserungen. Die
Der optimale Wert für die Induktivität L1 muss experimentell Temperaturmessung arbeitet wunschgemäß, doch unter ande-
bestimmt werden. Am besten werden mehrere unterschiedli- rem wurde das Umschalten des PWM-Signals abhängig von der
che Exemplare getestet, mit Blick darauf, wie sich Schaltung Temperatur noch nicht getestet.
und Lüfter verhalten. Die Induktivität wirkt als Tiefpass für das
PWM-Signal, der Tiefpass trägt zum ruhigen Lauf des Lüfters Motorsteuerung und Betriebsspannung
bei. Der Lüfter kann ein Universaltyp sein, die exakte Typen- Die beschriebene Lüftersteuerung ist für einen 12-V-Lüfter
bezeichnung ist nicht relevant. niedriger Leistung dimensioniert. Im Stromkreis des Lüfters
liegt ein Transistor BD135 (T2) oder ein ähnlicher Typ. Der
Kollektor ist über eine Induktivität (L1) und die zugehörigen
Bauelemente mit der Wicklung des Lüftermotors verbunden.
im elektor-shop Mit einem Transistor, der leistungsstärker als der BD135 ist,
können auch höhere Lasten gesteuert werden. Dann ist jedoch
ªJOY-iT Uno R3 darauf zu achten, dass der LM358 (oder der Arduino) den nöti-
www.elektor.de/joy-it-uno-r3
gen Strom zum Steuern des stärkeren Transistors liefern kann.
ªArduino-Sensor-Kit Bei beiden Schaltungsversionen ist ein Spannungsregler
www.elektor.de/arduino-sensor-kit
7812 dazu geeignet, die Spannung 12 V bereitzustellen. Brü-
ªBuch: „Arduino“ (überarbeitete Neuauflage) ckengleichrichter D5...D8 sorgt dafür, dass sowohl Gleich- als
www.elektor.de/arduino-schaltungsprojekte auch Wechselspannungen (bis etwa 18 Veff, abhängig von der
Kühlung und Last des 7812) für die Stromversorgung ange-

34 März/April 2019 www.elektormagazine.de


+12V

C1 D2 D3

100n R1 R2

RX1
GND

GRN
BLK

TX0
VCC
M1

3k3

3k3
C4
RAW TX0 M
GND RX1 D4 47
U1 16V 12V
RST RST
A3 GND 1N4001 L1
A5
A2 D2
A4
A1 D3
J1 A0 D4
R5 D13 D5
D1 A7
3k3 D12 D6
A6
D11 D7
1N4148 D10 D8 T2
R13
VCC D9 3k3
C2
Arduino Pro Mini BD135
100n

+12V D7 D5

7812
U2 4x 1N4001
C6 C5 C7 C8
D8 D6
10 100n 100n 250
16V 25V

170201-009

Bild 4. Hier wird das pulsbreitenmodulierte Signal von einem Arduino Pro Mini erzeugt, die Treiberstufe ist mit der analogen Version nahezu identisch.

schlossen werden können. Außerdem sind noch einige Kon- Gegebenenfalls ist ein spannungsfesterer Transistor mit
densatoren für den Betrieb des 7812 erforderlich. Die Strom- Kühlung erforderlich. Auch die Spannungsfestigkeit von C4
versorgung soll eine Leistung haben, die den Nennstrom des muss ausreichend bemessen sein.
Lüfters um etwa 100 mA übersteigt.
Der Arduino Pro mini wird ebenfalls vom 7812 mit der Span- Zum Schluss
nung 12 V versorgt. Er hat einen Spannungsregler an Bord, Die Bilder der Schaltungen wurden mit Ulticap 5.72 erstellt,
der die Spannung für den Mikrocontroller auf 5 V reduziert. Die die Platinen wurden mit Sprint 5 entworfen. Der Autor hat
Spannung +5 V ist auch am VCC-Anschluss des Board verfüg- die Software als Arduino-Sketch zur Verfügung gestellt. Der
bar. Davon wird Gebrauch gemacht, um den Temperatursensor Arduino kann mit der kostenlosen Arduino-IDE [5] program-
mit Spannung zu versorgen. miert werden. Die Ulticap-Zeichnungen, die Sprint-Layouts
und der Arduino-Sketch warten auf der Projektseite [4] auf
Platinen den Download.
Der Autor hat für die Lüftersteuerung zwei Platinen entworfen, 170201-03
die Layouts können von der Projektseite [4] heruntergeladen
werden. Die Platine der digitalen Version wurde gegenüber der
analogen Version um einige Eigenschaften erweitert:

• Hinzugefügt wurden zwei Ausgänge, beispielsweise für Weblinks


eine LED und einen Optokoppler. In der Software können
[1] Beschreibung Opamp-Multivibrator:
die Funktionen leicht implementiert werden.
www.electronics-tutorials.ws/de/operationsverstarker/
• Möglich ist die Montage einer Kontaktleiste, auf der +5 V,
opamp-multivibrator.html
GND, A4 und A5 herausgeführt sind. Dort kann beispiels-
weise ein Modul angeschlossen werden, das über I2C [2] TINA-TI: http://www.ti.com/tool/TINA-TI
kommuniziert. [3] Übersicht Arduino-Boards:
• Es ist möglich, den Lüfter an einer separaten Stromver- www.arduino.cc/en/products.compare
sorgung zu betreiben. Zum Umschalten ist ein Header mit [4] Projektseite zu diesem Beitrag:
Jumper vorgesehen. Wenn die Spannung der separaten www.elektormagazine.de/170201-03
Stromversorgung über 12 V liegt, muss darauf geachtet
[5] Arduino-IDE: http://www.arduino.cc/en/Main/Software
werden, dass der BD135 der Spannung gewachsen ist.

www.elektormagazine.de März/April 2019 35


(Fast) alles, was Sie schon immer
V wissen wollten über ...
Fertigung von Gehäusen
Ein solides, ansprechendes Gehäuse gibt Ihrem Projekt ein professionelles Aussehen. Was früher ein
schwieriges Vorhaben war, lässt sich heute leichter realisieren.

Antworten von Ilse Joostens Trotz seiner Festigkeit lässt es sich gut schiedenen Holzarten. Es ist fester als
mechanisch bearbeiten, mit weniger MDF, dünne Platten neigen jedoch dazu,
Bruchgefahr als bei PMMA. sich zu verbiegen, wenn die Luftfeuch-

Q Welche Materialien kann


ich zum Bau von Gehäusen
Für das Laserschneiden ist es weniger
geeignet, da dann hässliche Schneidrän-
tigkeit oder die Temperatur schwanken.
Das Material lässt sich leicht mecha-
verwenden? der entstehen. Polycarbonat eignet sich nisch bearbeiten. Wenn die Platten-

A
Die Auswahl an Materialien, die gut als Schutzfenster für Displays, es ist stärke begrenzt ist, sind auch Laser-
sich für den Gehäusebau eignen, kratzfester als PMMA. schneiden und Lasergravieren möglich.
ist vielfältig. An dieser Stelle beschrän- • Polyvinylchlorid (PVC, Vikupor) Starke Multiplex-Platten (>10 mm) kön-
ken wir uns auf die gebräuchlichsten, gut PVC-Platten sind als Hart-PVC-Platten nen nur mit Lasersystemen hoher Leis-
verfügbaren und leicht bearbeitbaren und Schaumplatten in verschiedenen tung sauber geschnitten werden, da
Materialien. Stärken und Farben erhältlich. Die Hart- sonst die Schneidkanten verkohlen. Für
• PMMA, Polymethylmethacrylat PVC-Platten sind sehr formstabil und wei- das Laserschneiden und Gravieren wird
(Acrylat, Plexiglas, Perspex) sen eine hohe chemische Beständigkeit insbesondere Sperrholz aus „leichten“
PMMA ist in einer Vielzahl von Farben und auf. Lasergravur und Laserschneiden Hölzern wie Birke oder Pappel empfoh-
Stärken erhältlich, sowohl transparent sind für dieses Material ein absolutes len (Bild 1). Sperrholz aus tropischem
als auch halbtransparent oder undurch- No-Go, da dabei Chlorwasserstoff frei- Hartholz führt eher zu enttäuschenden
sichtig. Wichtig ist, dass PMMA in zwei gesetzt wird. Das ist ein stark reizendes Ergebnissen.
Varianten erhältlich ist: Gegossen (GS) und giftiges Gas, das in Kontakt mit Was- • MDF (Medium-Density Fibreboard)
und extrudiert (XT). Was sich am bes- ser Salzsäure bildet und die Laserschnei- MDF ist mechanisch sehr leicht zu bear-
ten eignet, hängt von der Anwendung demaschine angreift. Die mechanische beiten und mechanisch stabil, es verzieht
und der vorgesehenen Verarbeitung ab. Bearbeitung ist problemlos möglich. sich nicht. Laserschneiden ist bei dünnem
Im Gegensatz zu extrudiertem PMMA, das Da PVC flammwidrig und selbstverlöschend Material möglich, doch die Schneidkan-
zwischen Rollen auf Dicke gewalzt wird, ist, eignet es sich als Material für Produkte, ten sehen dunkelbraun bis schwarz aus
treten bei gegossenem PMMA erhebliche die dem Bereich Leistungs- und Netzspan- (siehe Bild 2).
Toleranzen bis etwa ±15 % auf. Wenn nungselektronik zuzuordnen sind. • Aluminium
die mechanischen Abmessungen und • Sperrholz, Multiplex Aluminium lässt sich nur mecha-
die Passgenauigkeit für eine Konstruk- Sperrholz ist eine Sammelbezeichnung nisch bearbeiten. Laserbearbeitungen
tion wichtig sind, muss dieser Eigenschaft für laminiertes Plattenmaterial aus ver- beschränken sich auf das Markieren von
Rechnung getragen werden. Dann ist das
extrudierte PMMA vorzuziehen.
Gegossenes PMMA lässt sich leichter
mechanisch bearbeiten (Bohren, Sägen,
Fräsen, ...) und liefert bessere Ergebnisse
bei der Lasergravur (Frost-Look). Für das
Laserschneiden ist nach unserer Erfah-
rung extrudiertes PMMA wegen des nied-
rigeren Schmelzpunkts besser geeignet.
Die Schneidkanten können einen flamm-
polierten Effekt haben, gegossenes PMMA
hat oft raue Schneidkanten [1].
• Polycarbonat (Lexan)
Polycarbonat ist wie PMMA in verschiede-
nen Stärken erhältlich, jedoch mit einer
geringeren Farbauswahl. Es ist robust, Bild 1. Dünne Multiplex-Platten (Sperrholz) Bild 2. Beim Schneiden von Holz oder MDF
schlagfest und 250 Mal stärker als Glas. eignen sich gut zum Laserschneiden. entstehen braune Schneidkanten.

36 März/April 2019 www.elektormagazine.de


eloxiertem Aluminium oder blankem Alu-
minium in Kombination mit einem che-
mischen Produkt. Das Sägen und (CNC-)
Fräsen wird durch Wahl einer leicht bear-
beitbaren Aluminium-Legierung verein-
facht. Geeignete, gut erhältliche Legie-
rungen sind beispielsweise die Typen
6061 T4 und T6 oder 6082 T6.
• Gravierbare Materialien
(Rowmark, Lasermark, Gravoply, ...)
Platten aus diesen Materialien sind nor-
malerweise dünn, sie bestehen aus zwei
(oder mehr) Schichten verschiedenfarbi-
ger Materialien. Durch Entfernen von Tei-
len der oberen Schicht mit einem Laser Bild 3. Platten mit unterschiedlich farbigen Schich- Bild 4. Laschen, Abstandshalter, Bolzen und
oder einer Fräse wird die andersfarbige ten eignen sich zum Anfertigen von Frontplatten. Muttern halten die Teile zusammen.
untere Schicht sichtbar. Dieses Verfahren
eignet sich beispielsweise zum Herstellen
von Frontplatten (Bild 3). • Laserschneiden erhitztem Kunststoff durch Unterdruck
Fiberlaser und kombinierte Systeme, über eine dreidimensionale Form gezo-

Q Wie kann ich Materialien


bearbeiten?
die extrem hohe Kosten verursachen,
sind hier nicht gemeint. Es geht nur um
gen [2].

A
Früher standen nur die klassischen
mechanischen Verfahren wie
CO2-Lasersysteme: Im Gegensatz zu
den 3D-Druckern und CNC-Fräsmaschi- Q Welche Software kann ich
verwenden?
Sägen, Bohren oder Feilen zur Wahl, es
sei denn, die Kosten waren nebensäch-
nen sind die Preise für Laserschneide-
maschinen weiterhin auf recht hohem A Für den 3D-Druck sind eine Reihe
freier Programme verfügbar, die
lich. Inzwischen wurden fortgeschrittene Niveau. Neben professionellen Produk- Auswahl an Open-Source-Software ist
Techniken auch für das kleine Budget tionsmaschinen mit Metall-HF-Laserrohr groß. Beispiele sind Blender, SketchUp,
zugänglich. Hier eine Übersicht: sind auch Low-Cost-Lasersysteme mit SolidWorks, Fusion 360, Inventor oder
• 3D-Druck Glaslaserrohr für den semiprofessionel- TinkerCAD. Einige Programme eignen
3D-Drucker sind seit vielen Jahren len Einsatz auf dem Markt. Wer von den sich auch für das 3D-CNC-Fräsen, natür-
beliebt und oft erste Wahl, wenn ein Preisen abgeschreckt wird, aber kein lich muss auch die CNC-Maschine für die-
Gehäuse nach Maß gefertigt werden Risiko scheut, kann eine Laserschneide- sen Zweck geeignet sein. Viele kosten-
muss. Der 3D-Druck ist erschwinglich maschine in China ordern. Es ist auch günstige CNC-Fräsmaschinen unterstüt-
geworden, auf dem Markt werden viele möglich, das Laserschneiden auszula- zen anstelle von echtem 3D nur 2.5D.
preisgünstige 3D-Drucker-Modelle ange- gern, indem ein spezialisiertes Unter- Das bedeutet dass eine 3D-Struktur aus
boten, und die Auswahl an kostenlo- nehmen beauftragt wird, die eigenen 2D-Ebenen aufgebaut wird.
ser Open-Source-Software ist umfang- Entwicklungen zu produzieren. Wenn Volle 3D-Funktionalität ist nicht immer
reich. Ein Schwachpunkt ist allerdings, es um CNC-Fräsen oder 3D-Druck geht, sofort erforderlich, oft genügt zunächst
dass diese Technik zum Herstellen einer ist dies natürlich ebenfalls möglich. Auch ein 2D-CAD-Programm oder ein (vek-
größeren Anzahl identischer Produkte der Besuch eines FabLab- oder Hacker- torielles) Zeichenprogramm wie Draft-
(Serien) zu langsam ist und die Materi- space-Portals kann zum Erfolg verhelfen. Sight, AutoCAD LT, InkScape, CorelDraw
alkosten ein hohes Niveau haben. Dem Ein Tipp am Rand: Die Rastergravur mit oder Adobe Illustrator. Produzieren in 3D
steht gegenüber, dass auch das Anfer- einer Laserschneidemaschine braucht viel kostet auf einer CNC-Maschine ebenso
tigen hochkomplex gestalteter Produkte Zeit. Wenn es auf Schnelligkeit ankommt, wie der 3D-Druck viel Zeit. Der Aufbau
möglich ist. sollte möglichst viel vektoriell (mit Linien) eines dreidimensionalen Gehäuses aus
• CNC graviert werden. einfacheren 2D-Teilen ist schneller, er
Wie bei den 3D-Druckern steigt auch • Thermoformen lässt sich auch auf Kleinserien anwen-
das Angebot preisgünstiger CNC-Fräs- Thermoplastische Kunststoffe können den. Durch Aufbringen von Materialien
maschinen, auch sie werden als Bau- durch lokales Erhitzen erweicht und in in Schichten können auch komplexe
sätze angeboten. Die Entwicklung ver- die gewünschten Formen gebracht wer- Gehäuse mit professionellem Aussehen
läuft im Vergleich zu den 3D-Druckern den. Zum Erweichen können Heißluft, entstehen.
noch steiler. Die CNC-Maschinen der Heizöfen oder auch Laserschneider die-
gehobenen Klassen können zahlreiche
unterschiedliche Materialien verarbeiten.
nen. Mit dem Laserschneider wird das
Material vom Laserstrahl, der sich unfo- Q Wie kann ich die
Komponenten eines
Für den semiprofessionellen Bedarf sind kussiert schnell bewegt, in der Fläche Gehäuses verbinden?
auch kostengünstige, manuell zu bedie-
nende Fräsmaschinen auf dem Markt.
erhitzt. Anschließend kann die Schwer-
kraft wirksam werden (Laser-Origami). A Die gebräuchlichsten Verbindungen
sind Befestigungselemente, Klam-
Ihre Stärke ist zum Beispiel das gele- Das mag etwas umständlich sein, führt mern, Klicksysteme und Klebstoffe.
gentliche Fräsen von Durchbrüchen in aber zum Ziel. • Befestigungselemente
Frontplatten. Beim Vakuumformen wird eine Folie aus Zu den Befestigungselementen zählen

www.elektormagazine.de März/April 2019 37


Bild 5. Eine T-Nut macht Schraubverbindungen Bild 6. Risse in PMMA werden vermieden, wenn Bild 7. „Living hinges“ können unter anderem
einfach. das Material vor dem Kleben entspannt wird. aus Holz oder PMMA gefertigt werden.

unter anderem Schrauben, Muttern, Bol-


zen, Abstandshalter, Distanzrollen und
kann schwierig sein. Andererseits besteht
auch die Gefahr, dass sich Klemmverbin- Q Was sind „Living hinges“?

A
Verbinder. Diese Methode generiert zwar dungen spontan lösen. Living hinges sind flexible Schar-
zusätzliche Kosten für die Befestigungs- • Klicksysteme niere, die zwei starre Teile verbin-
materialien, sie hat jedoch den Vorteil, Hier werden gezahnte Laschen verwen- den und aus dem gleichen Material wie
dass das Gehäuse später bei Bedarf leicht det, die beweglich sind, weil sich das die starren Teile bestehen. Ein Beispiel
demontiert werden kann. Die einfachste Material verbiegen kann. Die Lasche wird ist das Scharnier des Deckels einer Tic-
Methode besteht darin, das Gehäuse mit gebogen und durch ein Loch gedrückt, so Tac-Box. Durch Laserschneiden oder -frä-
einer Kombination aus Laschen, Distanz- dass der gezahnte Teil einrastet, nach- sen können Kunststoffplatten mit einem
stücken und Bolzen zusammenzuhalten dem er das Loch passiert hat [6]. Dies Kerbenmuster versehen werden, so dass
(Bild 4). Für rechtwinklige Verbindun- ist ein anfälliges Verfahren, insbesondere ein Teil oder die gesamte Platte biegsam
gen kann ein „T-Schlitz“ (Bild 5, [3][4]) wenn empfindliche Materialien wie PMMA und flexibel wird (Bild 7). Das ist mög-
vorgesehen werden, auf den eine zweite verwendet werden und das Material nicht lich, weil auch starre Materialien noch
Platte im Winkel von 90° aufgesetzt wird. für mehrfache Montage und Demontage eine gewisse Flexibilität besitzen. Die
Dabei ist wichtig, die Schraube nicht zu geeignet ist. Anwendungen dieser Technik sind
fest anzuziehen. • Kleben äußerst vielfältig, neben Scharnieren und
• Klemmen Klebeverbindungen können sehr fest sein, flexiblen Verbindungen gehören auch
Klemmverbindungen [5] können mit sogar so fest wie das geklebte Material. Teile mit runden Formen dazu. Bei Bedarf
Laschen und Aussparungen oder mit Oft werden spezielle Produkte benötigt, können die Kerben auch als zierende
Zahnverbindungen hergestellt werden. und manchmal müssen spezielle Tech- Muster gestaltet werden. Das Laser-
Die Lasche oder ein Teil davon wird mini- niken beherrscht werden. Verbindungen schweißen oder Fräsen von Living hinges
mal größer als das Gegenstück bemes- dieser Art sind normalerweise endgültig, kann einige Zeit in Anspruch nehmen,
sen, in das sie passen muss, damit die und es gibt nur einmal die Chance, ein und Living hinges sind manchmal zer-
Verbindung hält. Bei Zahnverbindungen Teil korrekt zu befestigen. Beim Laser- brechlich [7][8].
sorgt eine geringe Differenz in der Größe schneiden von PMMA entstehen Span- 180685-D-03
zwischen Zähnen und Nuten für den fes- nungen im Material, die beim Kleben zu
ten Halt. Oft sitzen Klemmverbindungen Rissen führen können (Bild 6). Um dies
extrem fest. Das Lösen solcher Verbin- zu verhindern, muss PMMA vor dem Kle-
dungen, ohne Schäden zu hinterlassen, ben durch Hitze entspannt werden.

Weblinks
[1] Kurzanleitung Acrylglas: https://makezine.com/2015/10/29/skill-builder-acrylic/
[2] Video zum Thermoverformen: https://www.youtube.com/watch?v=P8a2KrEOzxU
[3] Acrylglas-Verbindungen: http://www.ponoko.com/blog/how-to-make/how-to-make-snug-joints-in-acrylic/
[4] Schraubverbindungen: https://www.instructables.com/id/How-to-Make-Anything-Using-Acrylic-and-Machine-Sc/
[5] Klemmverbindingen: https://www.ponoko.com/blog/how-to-make/how-to-create-better-nodes/
[6] Klicksysteme: https://www.defproc.co.uk/blog/2013/so-whats-a-practical-laser-cut-clip-size/
[7] Living hinge auf Wikipedia: https://en.wikipedia.org/wiki/Living_hinge
[8] Mehr über Living hinges: https://www.rs-online.com/designspark/laser-cut-living-hinges-for-neater-designs

38 März/April 2019 www.elektormagazine.de


HOMELAB PROJECT

Schrittmotor-Steuerung
mit Antiresonanz-Technik
Höherer Wirkungsgrad und weniger Vibrationen
bei Schrittmotoren
Von René Merz (Magnetron.ch)

Schrittmotoren sind aus der modernen Elektromechanik nicht mehr wegzudenken. Man findet sie überall,
vom 3D-Drucker über Festplatten bis hin zu einer Vielzahl an Maschinen. Schrittmotoren haben aber auch
nichtideale Seiten, darunter Resonanzphänomene und einen durchaus optimierbaren Wirkungsgrad. Dieser
Beitrag zeigt, wie man dem begegnen kann.

Schrittmotoren gibt es von klein bis groß, mit unterschiedlichs- dabei jenseits optimaler Bedingungen, also bei hohen Frequen-
ten Schrittweiten, Frequenzbereichen und Bauarten – passend zen und geringen Lasten betrieben, wo störende Phänomene
zur jeweiligen Anwendung. Gerade Hybrid-Schrittmotoren und wie mechanische Resonanzen besonders gerne auftreten. Für
Klauenpol-Varianten werden zunehmend bei 3D-Druckern in einen optimierten Schrittmotorbetrieb sollte daher schon in
den Linearantrieben mit Spindeln eingesetzt. Häufig werden sie der Ansteuerung diesen Phänomenen Rechnung getragen und
ihnen möglichst schon begegnet werden. Im Folgenden geht
es daher um die Demonstration einer solchen Ansteuerung auf
Basis eines Raspberry Pi plus passendem HAT.

Resonanzen
Bei Schrittmotoren unterscheidet man zwischen den Eigenre-
sonanzen und einem sogenannten parametrischen Instabili-
tätsbereich. Eigenresonanzen bei Steuerfrequenzen im Bereich
von 1...300 Hz kann man durch mechanische Gegenmaßnah-
men (Getriebewahl, Dämpfung etc.) eindämmen. In diesem
Bereich erreicht ein Schrittmotor typischerweise einen Wir-
kungsgrad von < 10 %.
Oberhalb von 300 Hz (bzw. Schritte/s) treten in bestimmten
Frequenzbändern die sogenannten parametrischen Resonan-
zen auf. Hier ergeben sich in bestimmten Frequenzbereichen
Oszillationen des Rotors um seine jeweilige Schrittposition
(siehe Bild 1). Diese Rotorschwingungen können aufgrund
von Resonanz große Amplituden erreichen und so dafür sor-
gen, dass der Rotor nicht mehr synchron zur Steuerfrequenz ist
und Schritte verliert und letztlich sogar stillsteht. Ohne geeig-
nete Gegenmaßnahmen kann man daher den maximalen Leis-
tungsbereich nicht voll nutzen (siehe Bild 2). Die gestrichelte
Linie in Bild 3 zeigt, dass ohne Gegenmaßnahmen sowohl das
Drehmoment als auch die mögliche Steuerfrequenz deutlich
unter dem Möglichen bleibt.
Bild 1. Typische Rotoroszillationen bei kleinen Schrittmotoren über der
Frequenz gemessen an einem Shunt. X = 500 ms/Teilstrich und Y =
200 mV/Teilstrich. Ohne Antiresonanz-Maßnahmen ergibt sich eine Eine Lösung
Oszillationsfrequenz des Rotors von 34 Hz. Nach dem Aufschaukeln Zur Messung der Phänomene bei Resonanz kann man mit den
blockiert der Motor. Oszillationen korrespondierende Signale via Shunt (Spannungs-

www.elektormagazine.de März/April 2019 39


Bild 2. Mechanische Motorleistung in W bei I = 0,4 A/Ph und ED = 30 %. Bild 3. Drehmoment über der Frequenz. Die durchgezogene Linie zeigt die
Die gestrichelte Kurve ergibt sich ohne Antiresonanz-Schaltung. Damit enorme Verbesserung durch die Antiresonanz-Schaltung.
ergeben sich nicht nur die dreifache mögliche Leistung, sondern auch
deutlich höhere mögliche Frequenzen.

abfall des Stroms der Rotorwicklung) abgreifen. Bild 4 stellt


die idealisierten Phasenbeziehungen von Rotor und Steuersi-
gnalen dar.
Bild 5 zeigt das Prinzip einer möglichen Gegenmaßnahme,
entwickelt 1986 durch Pierre Boillat [1], dessen Patentschutz
mittlerweile abgelaufen ist.
Bei kleineren Klauenpol-Schrittmotoren (Tin-Can-Motoren) wei-
sen die Oszillationen typischerweise Frequenzen im Bereich
5…80 Hz auf. Nach Filterung und Verstärkung des Shunt-Signals
(unten) steuert dieses einen Pulsphasen-Modulator. Sein Aus-
gangssignal CLK-PM hat eine korrigierte Phasenlage der Step-
per-Impulse und steuert den Sequenzer-Eingang des eigentli-
chen Motortreibers. So ein Pulsphasen-Modulator kommt dann
zum Einsatz, wenn der eigentliche Taktgenerator (meistens
ein Mikrocontroller) nicht dazu in der Lage oder konzipiert ist,
selbst eine geeignete Phasenmodulation durchzuführen.
Auf diese Weise kann man sehr hohe Schrittgeschwindigkei-
ten von bis zu 15.000 S/s erreichen, was es auch erlaubt, die
Schrittmotoren bei höheren Wirkungsgraden zu betreiben. Ein
weiterer Vorteil ist, dass man keine speziellen Beschleunigungs-
Bild 4. Phasenbeziehungen der Signale der Motorsteuerung. A:
rampen einhalten muss, wenn man die Instabilitätsbereiche
Rotorgeschwindigkeit ω; B: Lastwinkel Rotor γ; C: U = f (IT), in Phase mit
durchfahren will. Nicht zu verachten ist schließlich, dass ein so
Signal B; D: Clock-In (fO), vom Frequenzgeber; E: Sägezahnsignal und
U‘ nach Filter, 90° phasenverschoben; F: PWM; G: Clock-PM, speist den stabilisierter Schrittmotor auch weniger Geräusche produziert.
Sequenzer. Wichtig zu wissen: Dieses Stabilisierungsverfahren hat nichts
mit den PWM-Chopper-Stromsteuerungen zu tun, die heute
in vielen integrierten Schrittmotor-Treibern eingebaut sind.

Antiresonanz-Schaltung
Als praktische Demonstration des Prinzips hat der Autor die
Schaltung von Bild 6 entwickelt. Es handelt sich dabei um ein
Erweiterungsmodul (HAT) zum direkten Aufstecken auf ein
Raspberry-Pi-Board des Formats „A+“. Das steuernde Taktsi-
gnal eines externen Mikrocontrollers liegt an CLK-IN bzw. an
Pol 3 der Schraubklemmleiste X2. Nach Signalformung mit dem
Inverter von IC7 gelangt das Signal an das Monoflop IC3A,
welches auf dessen negative Flanken triggert. Am Ausgang Q
liegen dann Impulse mit der konstanten Länge von etwa 30 µs
an. Diese Impulse entladen über MOSFET T2 den Kondensator
C2 des Rechteck/Sägezahn-Wandlers um IC1A und T1...T3. Die
gesteuerte Stromquelle mit T1 bewirkt, dass C2 nach Entladung
mit T2 durch T1 mit einem linearen Strom auf seinen Maxi-
malwert geladen werden wird. Resultat ist ein recht sauberes
Bild 5. Prinzip der Antiresonanz-Schaltung. Das Signal eines Shunts wird Sägezahnsignal am positiven Eingang (Pin 3) des Komparators
zur Phasenverschiebung der Steuerimpulse genutzt. IC2A. Zusammen mit dem Modulationssignal U' am negativen

40 März/April 2019 www.elektormagazine.de


/CLK-PM
PWM
+5V
+24V
X2 +5V
Pulse-Reinjector R21
IC4C

22k
1 8 IC4B IC5D
10 5 12 IC5B
2 9 & 4 11 5
6 & 13 & 4
Control-I/O

3 R22 R37 R23 6 &


14 15
IC5C

2k2

10k
4

4k7
8 RC CX
5 12 10
9 & +T Q
6 IC4A 10
T6
1 IC3B
7 3 11 9
CLK/IN 2 & -T Q
2 1 IC5A
R2 IC4D 1 R
RC CX 12 3
D12
4 6 11 2 & 13
1k

+T Q 13 &
T5 IC7 C1 BCR142
IC3A
BCR142 2 4 5 7
1 -T Q
3n3 +5V
C8 R
74LVC1G06 IC3 = 4538
3
BAV99 2n2 IC4, IC5 = 4011D
+5V
T4...T8 = BCR142 (with integrated resistors)
CLK-PM
U-SHUNT
+5V
+5V
R9 R4 R3
C18 5 6

1k
10k

56k
T3
IC7 7
100n 3
IC2B
3 5
+5V D1
1
BC848 R7 R8 IC1A
D 2 T1
16 C6 14 C7 14 10k 100k MCL4148
T2
IC3 IC4 IC5 R11
G
8 100n 7 100n 7 PULSE_30 s 100k
BC807 Test Sawtooth
BSS123 S
R6 R5 -40
SJ4 C1 C2 SJ1 IC2 = LM393D
IC1 = LM358D
4k7

R10

680
330n 10k 33n
+5V

R20
D2

1k
X4-8
+5V 3
+5V-RPI +5V MCL4148
D3 1
2

IC2A
1

+3V3 C5 8 8 C17 R14 2


4

MCL4148 SJ2
3

IC1 IC2
6

390

100n 4 4 100n
8

R1 R16 R18 Test PWM


10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40

390
1k
11 13 15 17 19 21 23 25 27 29 31 33 35 37 39

R12 C4 100k
6
100k R17
GPIO22 7
GPIO23 T4 330n IC1B 1k
5
100k
R13 R15
C3 SJ3
BCR142 R19 Test: U' = f(l)
100

470n 1M

+5V

R28 R29 LD1 R38 R32 R24 R25 R34


C15 100n
2k2

2k2

10k

3k3

22k
2 2

2 2

680p C12
R30 D4...D11 = RGL 1J
1k6

+24V

D8 D10
+24V +5V

7805DT
IC6
R35 D9 D11
C9 C10 1 2 3 4 5 6 7 8 9 10 11 12
X1
GND
GND
VBB2

DIR
OUT2B

OUT2A
REF
RC2

SENSE2
SLEEP

MS1
STEP
100

100n 100n +24V


2B 5
Stepper Motor

IC8 A3967SLB 2A 4
R36
1B 3
ENABLE
SENSE1
OUT1B

OUT1A
RESET

+24V
VBB1

GND

+5V
GND
100

VCC

1A 2
MS2
PFD
RC1

1
24 23 22 21 20 19 18 17 16 15 14 13
T7 D4 D6
DIR (CW/CCW)
GPIO12 +24V
BCR142
D5 D7

T8
ENABLE R31 R26 R27 R33
SJ5 C14 C13 C16
GPIO16
22k

22k
2 2

2 2

BCR142 470
Motor 680p 1
run

Bild 6. Die konkrete Antiresonanz-Schaltung als RPi-HAT.

www.elektormagazine.de März/April 2019 41


fehlenden Impulsen am Ende des Sweeps beim Komparator
IC2A führen könnte. Das wäre beim Positionieren fatal! Um ein
Ausbleiben von Impulsen zu verhindern, wurde die Logik um
die NAND-Gatter IC4 und IC5 (Pulse-Reinjector) eingeschleift.
Das Monoflop IC3B wird benötigt, da nur die positive Sig-
nalflanke moduliert wird, einige handelsübliche Sequenzer-Dri-
ver aber auf die negative Flanke triggern. Dank der Open-Collec-
tor-Schaltung kann eine nachfolgende Driver-Schaltung mittels
Pullup-Widerstand eine Pegelanpassung vornehmen.
Aus dem Signal an den Driver-Shunt-Widerständen R24...R27
wird nach Bandpassfilterung mit R12, C3, C4, R15 und Ver-
stärkung mit IC1B die Modulationsspannung U' gewonnen. Der
Bandpass muss in seltenen Fällen (vom Rotorträgheitsmoment
abhängig) angepasst werden. Die Verstärkung kann mit R18
zwischen 1- und 250-fach eingestellt werden. Die Praxis hat
gezeigt, dass Verstärkungen um 50 meistens ausreichen. Die
Pads SJ1...SJ4 auf der Platine dienen als Testpunkte für ein
Bild 7. Signale der Antiresonanz-Schaltung bei einem Schrittwinkel von Oszilloskop. Die im Oszillogramm von Bild 7 gezeigten Signale
15° und 901,75 Hz. C1: 30-µs-Impulse an SJ4; C2: Sägezahn an SJ1; C3: können mit den Trimmpotis R10, R18 und R19 passend ein-
PWM-Signal an SJ2; C4: Shunt-Signal, U = f (IT) an X2-6. gestellt werden. R19 dient zur Einstellung des DC-Pegels am
Ausgang von IC1B. Er sollte an SJ3 die Hälfte des Spitzenwerts
des Sägezahns SJ1 aufweisen und im Bereich 1...1,3 V liegen.
Eingang (Pin 2) ergibt sich am Ausgang (Pin 1) ein Impulssignal Ganz am Schluss folgt mit IC8 der integrierte Schrittmotor-Trei-
mit der gewünschten (linearen) Phasenmodulation. ber von Allegro [2]. Das IC A3967SLB enthält einen Sequenzer,
Für einen weiten Frequenzbereich des Modulators sollte der eine PWM-Chopper-Stromsteuerung für Microstepping und eine
Sägezahn eine von der Frequenz unabhängige Amplitude aufwei- bipolare Transistor-Endstufe mit 0,75 A/Ph. Die Referenzspan-
sen. Hierzu wird die Stromquelle um T1 durch IC1A gesteuert. nung an Pin 1 von IC8 kann mit dem Spannungsteiler R31/
Zur Konstanthaltung wird der Mittelwert bzw. die DC-Kompo- R32 an die Stromspezifikationen des jeweiligen Schrittmotors
nente des Sägezahns nach Pufferung mit T3 und Tiefpassfil- angepasst werden.
terung mit R7 und C1 zur Gegenkopplung genutzt. Das Steu-
ersignal wird dann über D1 in die Stromquelle eingespeist. RPi-HAT
Bei einem sehr schnellen Sweep (z.B. nur wenige Impulse in Die HAT-Platine von Bild 8 passt dank einer entsprechend plat-
einem Anstieg von 0 Hz auf 4 kHz in nur 200 ms) ist diese zierten 2 x 20-poliger Stiftleiste direkt auf ein Board des Typs
Regelung wegen der Zeitkonstante von R7/C1 zu träge. Folg- RPi A+. Dieses kann dann das nötige Steuersignal für den Motor
lich würde die Amplitude des Sägezahns einbrechen, was zu für allerlei praktische Anwendungen generieren. Hierzu wer-
den die Takt-Impulse mit 3,3-V-Pe-
gel über den Port GPIO23 und T5
zur Antiresonanz-Schaltung mit
ihren 5-V-Pegeln geleitet.
CLK-IN benötigt zur Pegelanpas-
sung einen Pullup-Widerstand
(R22). Auch für die Steuerlei-
tungen /Enable (Freigabe Motor,
active low) und CW/CCW (Dreh-
richtung) ist gesorgt. Falls das
HAT-Board auf ein RPi-Board
gesteckt werden soll, braucht
es natürlich noch vier Distanz-
bolzen und Schrauben für den
mechanischen Halt. Die bei-
den Boards sollten elektrisch
getrennt versorgt werden (aus
zwei getrennten Netzteilen).

Bild 8. So sieht der Prototyp


einer Schrittmotorsteuerung mit
Antiresonanz-Schaltung in Form
eines RPi-Hat für die Bauform
des Modells A+ aus.

42 März/April 2019 www.elektormagazine.de


Zum Test eignen sich alle kleinen Zweiphasen-Schrittmotoren, Technische Daten
egal ob Klauenpol- oder Hybrid-Typen (NEMA17), bipolar oder
Betriebsspannung 7...24 V
unipolar mit Wicklungswiderständen im Bereich 5...100 Ω/Ph
Steuerfrequenz Burst 1 mHz...25 kHz
und Leistungen von 1...15 W. Bei Widerständen ≤ 5 Ω/Ph sollte
die Stromeinstellung am Driver sehr vorsichtig vorgenommen Zeitverzögerung CLK-In/Out ca. 5 ms bei 1 kHz
werden. Im laufenden Betrieb dürfen die Motorleitungen kei- Phasenstrom max. 0,75 A/Ph
nesfalls unterbrochen werden.
Obwohl IC8 für bipolare Schrittmotoren ausgelegt ist, können
auch unipolare Versionen an die Schraubklemmen X1 ange-
schlossen werden. Der Mittelanzapfung der Spulen kommt dann Einbau: Man achte auf hohe innere Dämpfung der Motorhal-
an X1-1 (+24 V). terung. Bezüglich des Einsatzes eines spielfreien Getriebes
Falls Sie das HAT-Board nachbauen wollen, finden Sie Schal- (Harmonic-Drive) oder einer passend ausgelegten Zahnrie-
tung und Board-Dateien auf der Elektor-Webseite zu diesem mentransmission erfordert dies Überlegungen hinsichtlich des
Artikel [3]. Die Technischen Daten finden sich in der neben- Kosten-Nutzen-Verhältnisses. Vielleicht wird es bald preiswerte
stehenden Tabelle. Zuletzt bleibt nur noch das Programmieren Treiber-ICs geben, bei denen eine D-Endstufe sogar gleich gefil-
eines zu Testzwecken oder für Ihre Anwendung geeigneten terte Sinus- und Cosinus-Leistungssignale für die Motorpha-
Impulsgenerators samt entsprechender Anwendung auf dem sen bereitstellt. Begrüßenswert wäre außerdem die zukünftige
RPi. Das ist dann Ihre Aufgabe… Verwendung von Statormaterialien mit geringeren Ummag-
netisierungs- und Hystereseverlusten, denn heute sind schon
Überlegungen und Hintergründe Chopper-Frequenzen > 18 kHz üblich.
Der Autor nahm 2014 einen 3D-Drucker in Betrieb, bei dem 180279-01
sämtliche Antriebsachsen durch bipolare Hybrid-Schrittmotoren
(Vierstrang, NEMA17) ausgeführt waren. Die Wicklungen sind
hier in Serie geschaltet. Die gewählten Steuerfrequenzen des
Controllers lagen leider in Bereichen, in denen das Druckerge-
häuse ausgeprägte Resonanzen aufwies. Man hätte da die gro-
ßen Hybrid-Schrittmotoren durch kleinere Versionen ersetzen
können, wenn in der Steuerung eine Antiresonanz-Schaltung
und ein angepasstes Getriebe eingesetzt worden wäre. Viele
Anwender fahren zur Dämpfung im Eigenresonanzbereich im
Microstepping-Modus ein – gerade auch wegen der höheren Über den Autor
Auflösung. Die höhere Auflösung bedeutet jedoch lange nicht
René Merz arbeitete von 1985 bis 1990 bei der SAIA AG
eine entsprechend höhere Positioniergenauigkeit.
(heute Johnson Electric International AG, Murten, CH) im
Gründe hierfür: Fehler in der Statorgeometrie, Streuung in
Bereich Magnetisierspulen und bei der Entwicklung neuer
der Qualität der weichmagnetischen Eigenschaften des Stator-
Magnetrotoren für Schritt- und Synchronmotoren. Seit
blechs und Abweichungen vom Stromsollwert (PWM-Chopper,
dieser Zeit bis heute beschäftigt sich René Merz auch mit
1/8-...1/16- Schritt) bei kleinen Phasenströmen!
Steuerungen für Schrittmotoren. Seit Ende 1992 ist er
Bei gleicher Steuerfrequenz am Sequenzer und acht Mikro-
Inhaber der Firma Magnetron Labs Merz.
schritten wird zudem die resultierende Geschwindigkeit der
Motorachse um den Faktor 8 reduziert. Man sieht nämlich in
der Formel für die mechanische Abgabeleistung ...
Pmech = Mdx ω
Weblinks
... dass die Geschwindigkeit ω an der Motorachse und nicht
nur das Drehmoment (Md) auch eine wichtige Rolle spielt: Die [1] Pierre Boillat, „Restraining the instability of a stepper
Last sollte schließlich in möglichst kurzer Zeit exakt positio- motor“, US-Patente US4673855 und US4683409
niert werden können! Bedingung wäre, dass der Mikrocontroller [2] Allegro A3967: https://bit.ly/2UoRnk1
einen oder mehrere geeignete Oszillatoren zur Entlastung inte- [3] Elektor-Webseite:
griert hat. Wichtig ist also, dass die MCU genügend Speicher www.elektormagazine.de/180279-01
(NV-RAM oder Flash) für die Ablage von Werten für Frequen-
zen, Burstimpulszahlen und Rampen aufweist. Bei den für RPi
verwendeten SoCs ist das kein großes Problem.
Damit der Einsatz von Schrittmotoren zukünftig einfacher wird,
sollten die Hersteller daher auch den Wirkungsgrad bzw. das im elektor-shop
Verhältnis von aufgenommener elektrischer Leistung und
ªBuch: „Motorsteuerung mit Arduino und Raspberry Pi”
mechanischer Abgabeleistung als Funktion der Steuerfrequenz www.elektor.de/motorsteuerung-mit-arduino-und-raspberry-pi
in den Datenblättern ihrer Schrittmotoren sauber dokumentie-
ªBuch (engl.): „Motors for Makers”
ren. Um wirklich alles aus Schrittmotoren herauszuholen, sind
www.elektor.de/motors-for-makers
komplexe Algorithmen mit Beschleunigungs- und Brems-Ram-
ªMendocino-Solar-Motor X-8
pen zentral. Dies erhöht natürlich den Programmieraufwand.
www.elektor.de/mendocino-motor-x-8
Man sollte es tunlichst vermeiden, den Motor im Bereich von
Eigenresonanzen zu betreiben. Das betrifft daher auch den

www.elektormagazine.de März/April 2019 43


HOMELAB PROJECT

Rückwärts-„Radar” fürs Rad


Einfache Schaltung für mehr Sicherheit
Von Laurent Labbe

Ich lebe seit langem in Asien (Shenzhen in China und jetzt Hongkong) und fahre regelmäßig mit dem Fahrrad
zur Arbeit oder zum Triathlon-Training. Ich habe diese kleine Mikrocontroller-Schaltung entwickelt, damit ich
in Zukunft nicht mehr von steifen Nackenmuskeln geplagt werde. Die bekomme ich nämlich, weil ich beim
Radfahren ständig den Kopf drehen muss, um die vielen Fahrzeuge um mich herum zu beobachten.

Als ich vor (sehr) langer Zeit zur Schule fuhr und dabei die ist sogar möglich, einen dritten Sensor hinzuzufügen. Der hier
Stadt durchquerte, hatte ich kleine Spiegel rechts und links vorgestellte Prototyp (Bild 1) ist noch nicht damit ausgestat-
an meinem Fahrrad, um die vorbeifahrenden Autos zu beob- tet, aber die Software zum Download [1] kann drei Sensoren
achten. Dabei überblickte ich jedoch nur einen Teil des mich verwalten. Die genaue Ausrichtung der Sensoren ist abhängig
umgebenden Verkehrs. Deshalb habe ich mir ein Warnsystem von der Fahrtrichtung (links oder rechts), das heißt, vom jewei-
ausgedacht, mit dem ich mich voll auf die Straße vor mir kon- ligen Land. Diese müssen insgesamt nämlich, je nachdem, ob
zentrieren kann. In China und Hongkong fahren Autos und Rechts- oder Linksverkehr herrscht, ein bisschen mehr nach
Busse oft ohne Vorwarnung in alle Richtungen. Die Straßen links oder ein bisschen mehr nach rechts gedreht werden. Der
sind dazu noch sehr schmal, so dass Sie ständig auf vorbei- Grund: Als die beiden Sensoren genau symmetrisch im Winkel
fahrende Busse, Taxis und Kleinbusse achten müssen. Vorsicht von 45° rechts und links zur Fahrradachse eingestellt waren,
ist daher oberstes Gebot. stellte ich fest, dass am Straßenrand geparkte Autos falschen
Das hier vorgeschlagene System ist eine Art Radar, das aus zwei Alarm auslösen.
um 90 ° versetzten Ultraschallsensoren besteht. Sie messen Wie kann man einen Radfahrer durch einen Alarm warnen?
regelmäßig den Abstand zwischen dem Fahrradsitz und den Der Blick darf schließlich nicht von der Fahrbahn abweichen!
Fahrzeugen, die sich von hinten rechts oder links nähern. Es Ich entschied mich für zwei kleine Vibratoren, die unter dem

44 März/April 2019 www.elektormagazine.de


Sitz rechts und links angebracht sind, um anzuzeigen, woher den Ultraschallsensoren. Ein OR-Gatter aus Dioden ermöglicht
das Fahrzeug kommt. Die Anzahl der Vibrationen (1, 2 oder die Messung der Zeit bis zum Rücklaufimpuls. Da die Aktivie-
3 Mal) vermitteln eine Vorstellung von der Entfernung. Bei rung und die Abstandsmessung in der Software nacheinander
den Vibratoren handelt es sich um kleine Motoren mit einem erfolgen, reicht das OR-Gatter mit dem Pulldown-Widerstand
Gewicht, die aus alten Mobiltelefonen stammen. nach Masse völlig aus.
Bleibt noch die Frage der Versorgung. Die Schaltung wird von Die Messung erfolgt mit dem Timer1, der von Pin 4 (GP3,
einer Lithium-Batterie versorgt, die über ein spezielles IC (hier T1GVAL) angesteuert wird. Das Register dieses Timers wird
MAX1555) aufgeladen wird. Ein Regler ist nicht erforderlich. erhöht, wenn der Pin den Wert 1 besitzt. Beim Zustand 0
Die Möglichkeit des Aufladens durch Solarenergie wird vielleicht geschieht nichts.
bei der nächsten Version realisiert. Die Software hat eine Vorlaufzeit (solange das Signal auf 0
steht) und misst dann die Zeit, in der sich das Signal auf 1
befindet – oder stoppt die Messung bei Erreichen der einge-
Die Schaltung stellten Grenzzeit (TIME_LIMIT_WAIT), falls die Ultraschallsen-
Zur Messung der Batteriespannung benötigte ich einen Mikro- soren kein Hindernis anzeigen. Das OR-Diodengatter ist daher
controller mit integrierter Spannungsreferenz, der aber klein mit diesem Eingang verbunden, der die Zählung über Timer1
sein musste (8-polig), um den Stromverbrauch gering zu hal- auslöst. Die Zeit wird im Register dieses Timers gelesen, wenn
ten. Ich habe mich für den 12F1512 entschieden, der eine das OR-Gatesignal auf 0 zurückfällt. Der Abstand (in cm) wird
Versorgungsspannung zwischen drei und fünf Volt unterstützt. nach folgender Formel berechnet:
Ultraschallsensoren stehen in großer Auswahl zur Verfügung.
Einige können mit einer Spannung zwischen 3,3 V und 5 V d = t (Signaldauer high in µs) * 34 / 200
versorgt werden, zum Beispiel die Modelle Y401 und US100.
Die Schaltung ist sehr einfach (Bild 2): Die beiden Ausgänge Die Ansteuerung der Vibratoren erfolgt über zwei FET-Transis-
GP1 und GP2 des Mikrocontrollers aktivieren die Trigger der bei- toren des Typs BS170. Wie bereits erwähnt, kann das Modul

US2 VDD VDD US1

TRIG2 TRIG1
DIST2 DIST1

Y401 Y401

VDD

U1B1 U1B2

12F1572
7 1
GP0/AN0/CIN+/ICSPDAT/ULPWU VDD
6
GP1/AN1/CIN–/VREF/ICSPCLK
BS170 5
GP2/AN2/T0CKI/INT/COUNT/CCP1
4
GP3/MCLR/VPP
3
GP4/AN3/T1G/OSC2/CLKOUT
2 8
GP5/T1CKI/OSC1/CLKIN VSS
BS170
4k7

VUSB

VDD USB
10k

1
5 4 2
BAT DC
3
MAX1555
3 1 4
POK USB
5
GND
2
170501-006

Bild 1. Prototyp des Autors, mit einem Sensor auf der rechten und einem Bild 2. Der Schaltplan des „Radars”: Einfach und effizient.
auf der Rückseite.

www.elektormagazine.de März/April 2019 45


Bild 3. Montage auf beiden Seiten einer Lochrasterplatine.

von jeder Lithium-Batterie mit Strom versorgt werden. Mit • Die US-Einheit wird unter dem Sattel platziert. Ich habe
dem Chip MAX1555 kann die Schaltung auch über eine USB- alles mit Schnellspannern befestigt. Der Erfassungsbereich
Buchse geladen werden. muss horizontal ausgerichtet sein, damit der Ultraschall
nicht auf den Asphalt gerichtet ist.
Die Software • Wie bereits erwähnt, muss die US-Einheit je nach landes-
Auch die Software ist nicht allzu kompliziert. Alle zwei Sekunden typischem Rechts- oder Linksfahrgebot präzise ausgerich-
aktiviert sie den linken Sensor, misst den Abstand, aktiviert tet sein.
den linken Vibrator entsprechend des erfassten Hindernisses • Auch die Vibratoren lassen sich am besten unter dem Sat-
und führt dann den gleichen Vorgang mit dem rechten Sensor tel montieren.
durch. Wenn ein dritter Sensor für die Mitte (GP5-Ausgang) • Die Vibratoren sind von einem Schrumpfschlauch umge-
angeschlossen ist und sich ein Hindernis von hinten nähert, ben und mit einer Klemme an den beiden Metallstangen
wird die Software den Alarm an beiden Vibratoren gleichzeitig des Sattelrahmens befestigt. Mehrere Tests haben gezeigt,
auslösen. Die Alarmabstände sind in der Software vordefiniert. dass es an dieser Stelle die wenigsten Bewegungen gibt.
Die Software wurde mit der neuesten Version von MikroC ent- Auf der Vorderseite des Sattels würden Sie die Vibrationen
wickelt, der einzigen Version, die den µC 12F1512 berücksich- aufgrund der Beinbewegung nicht spüren. Wenn Sie kein
tigt. Die kostenlose Version ist, gemessen am Umfang des Problem damit haben, die Kabel bis zum Lenker zu verle-
Programms, ausreichend. Zur Programmierung habe ich das gen, wäre dies die effektivste Lösung. Die kleine Schaltung
PICkit3 verwendet. zur Sicherheit beim Radfahren kann natürlich noch weiter
verbessert werden. Vielleicht haben Sie ja selber noch ein
Montage am Fahrrad paar Ideen dazu (Sensoren, Stromversorgung usw.).
Bei der nicht ganz einfachen Montage müssen die US-Einheit 170501-02
und die Vibratoren installiert werden.

Weblink
[1] Projektseite zu diesem Beitrag:
www.elektormagazine.de/170501-02

im elektor-shop
ªBuch: „PIC Microcontroller Programming”
www.elektor.de/pic-microcontroller-programming

46 März/April 2019 www.elektormagazine.de


Nukleare Ereignisdetektoren
Bemerkenswerte Bauteile
Von Neil Gruending (Kanada)

Diese Folge der Bemerkens-


werten Bauteile wurde von
einem Twitter-Post mit einem
Bild eines „Nuclear Event
Detectors“ initiiert. Ich hatte
so etwas noch nie zuvor gese-
hen und war natürlich neugierig.
Nach einiger Recherche stellte sich
heraus, dass solche Nukleardetektoren Quelle: www.maxwell.com/images/
documents/hsn1000_rev3.pdf
faszinierende Bauteile mit einer Vielzahl
von Anwendungsmöglichkeiten sind.
Nukleare Ereignisdetektoren erfassen Gammastrah-
lenwerte und lösen dann ein Ereignis aus, wenn die nach einem Reset möglicher-
Werte zu hoch werden. Es gibt verschiedene Möglich- weise nicht in den Ausgangs-
keiten, Strahlungswerte zu messen (wie Geigerzähler), zustand zurückkehren. Ein Burnout
aber hier erzeugt die Gammastrahlung praktischerweise einer Verbindung wird durch die Art der
einen proportionalen Photostrom in dem PN-Übergang eines verwendeten Transistoren sowie durch den von der
Halbleiters. Strahlung erzeugten Photostrom verursacht. Es gibt zwar
strahlungsresistente Halbleiter, diese sind aber sehr teuer. Des-
halb setzt man lieber Schutzschaltungen ein, die ein System
VB Threshold VH VL
Adjust
bei einer Strahlungsexposition in einen sicheren Zustand ver-
8 9 14 1
setzen oder abschalten. Hier wird es interessant! Der NED-Im-
10k
puls kann nämlich auf vielfältige Weise eingesetzt werden, um
2 NED elektronische Schaltungen zu schützen.
Detector
Amplifier
Pulse Nukleare Ereignisdetektoren werden zwar meist in militärischen
(Pin Diode) Timer
Anwendungen eingesetzt, aber ihre Fähigkeit, Gammastrahlung
zu erfassen, machen sie auch für Raumfahrzeuge und Satelli-
ten interessant. Raumfahrzeuge haben in der Vergangenheit
BIT 6 LED
verschiedene Abschirmmaterialien verwendet, um kritische
Systeme zu schützen, was jedoch ihr Gewicht und die Kosten
7 5 4 für den Raketenstart erhöhte. Heutzutage ist es üblich, für die
GND C RC
typische Strahlenbelastung resistente Komponenten zu ver-
wenden und diese dann mit nuklearen Ereignisdetektoren vor
Bild 1. Blockschaltbild HSN1000 [1]. zu großen Strahlungsereignissen zu schützen. So werden der
Umfang der Abschirmung und das Gewicht gesenkt und die
Startkosten reduziert.
Der Detektor HSN1000 von Maxwell Technologies (Blockschal- Leider sind solche Detektoren sehr teuer und schwer erhält-
tung in Bild 1) ist ein solches Bauteil, das mit einer PIN-Diode lich. Experimente mit Nuklearen Ereignisdetektoren sind aber
Gammastrahlenwerte erfasst. Eine PIN-Diode ähnelt einer nor- ohnehin schwierig, da man dazu eine Gammastrahlungsquelle
malen PN-Diode, besitzt aber einen zusätzlichen undotierten benötigen würde. Allerdings ist es immer wieder interessant zu
Bereich (intrinsischer Bereich) zwischen den P- und N-Bereichen. sehen, wie solch simple Bauteile wie eine PIN-Diode auf unge-
Dies erhöht die Empfindlichkeit und Geschwindigkeit der Diode wöhnliche Weise eingesetzt werden können.
bei der Erkennung nuklearer Ereignisse. Das Ausgangssignal 180575-B-02
löst, nachdem es verstärkt wurde, einen Impulstimer aus und
erzeugt so ein (low-aktives) Ereignis namens NED.
Bei einer Strahlungsexposition können Halbleiter „weiche“ Feh- Weblinks
ler wie einen erratischen CPU-Betrieb oder sogar Latchups und [1] Maxwell Technologies Datenblatt HSN1000:
Junction-Burnouts erleiden. Latchups sind ein ernsthaftes Pro- www.maxwell.com/images/documents/hsn1000_rev3.pdf
blem, da IO-Logikpins in einem Zustand steckenbleiben und

www.elektormagazine.de März/April 2019 47


LABS PROJECT

Das Raspberry-Pi-Lineal
Spaß mit einem Laufzeitsensor

Von Clemens Valens (Elektor Labs)

Konzipiert haben wir dieses Lineal als Werbegeschenk für Messen und ähnliche Veranstaltungen. Mit Hilfe
eines Time-of-Flight-Sensors kann es Entfernungen von bis zu zwei Metern elektronisch messen!

das Lineal in ein echtes High-Tech-Spiel- Ein-Photon-Avalanche-Diode


Eigenschaften zeug verwandelt werden. Sie müssen Das reflektierte Licht wird von einer
• Viele praktische RPi-Infos lediglich einen Time-of-Flight-Sensor Ein-Photon-Avalanche-Diode (SPAD)
• VL53L0X Laufzeit-Sensor (ToF) VL53L0X am I2C-Bus anschlie- erfasst. Diese SPAD ist der normalen
• 22 LEDs ßen und natürlich das Lineal auf Ihren Avalanche-Photodiode (APD) recht ähn-
• I2C-Anschluss RPi stecken. lich; mit dem Unterschied, dass sie nur
ein einziges einfallendes Photon benö-
Der Time-of-flight-Sensor tigt, um die Lawine auszulösen und
VL53L0X einen Strom von wenigen Milliampere zu
Zur Erläuterung und wer ihn nicht kennt: erzeugen. Wenn die Lawine abgeflossen
Wenn Sie zufällig eines dieser Lineale Ein Time-of-Flight- oder ToF-Sensor oder ist, kann sich die SPAD erholen und ein
auf der letztjährigen electronica in Mün- auf Deutsch, ein Laufzeitsensor, misst nächstes Photon erkennen. Der Haupt-
chen am Elektor-Stand ergattert haben, eine Entfernung durch die Laufzeit eines unterschied zwischen SPAD und APD
werden Sie darauf etliche freie Lötpads ausgesandten, vom Gegenstand reflek- besteht darin, dass letztere ein linearer
und Platz für zwei Steckverbinder ent- tierten und wieder empfangenen Schall- Verstärker für optische Signale ist, wäh-
decken. Das Lineal ist für 22 LEDs (im oder (wie hier) Laserlicht-Impulses. Der rend die erste ein Triggerglied darstellt.
0805-Gehäuse) samt 1-kΩ-Strombegren- Hersteller des VL53L0X-Sensors, ST, Zwei Meter Entfernung sind das höchste
zungswiderständen (ebenfalls 0805), behauptet im Datenblatt, dass dieses der Gefühle für die VL53L0X-Diode, in der
eine 40-polige Raspberry Pi-Erweite- Laser-Ranging-Modul (Ladar) im kleins- Praxis hängt die maximale Entfernung
rungsbuchse (mindestens 16 mm hoch, ten Gehäuse steckt, das es (2018) auf vom Umgebungslicht und (doch) von der
wenn Sie einen „normalen“ Pi verwenden dem Markt gibt. Es misst Entfernungen reflektierenden Oberfläche ab. In Innen-
wollen) und eine(n) 6-polige(n) I2C-Ste- im Wesentlichen unabhängig vom Refle- räumen schafft der Sensor leicht einen
cker/Buchse vorbereitet (Bild 1). xionsgrad des bis zu zwei Metern ent- Meter, im Außenbereich kann es auch
Zugegeben: Das RPi-Lineal hat gelinde fernten Messobjekts. Der Sensor ermit- etwas weniger sein. Die Genauigkeit oder
gesagt nur eine begrenzte Nützlichkeit. telt den Abstand nicht durch die Menge besser der Fehler des Sensors liegt in den
Doch stehen auf der Platine viele prakti- des reflektierten Lichts (dies würde zu meisten Fällen unter 10 %, aber auch
sche mechanische und elektrische Infor- stark von der Farbe und Oberfläche des dies hängt von den Einsatzbedingungen
mationen über den RPi und sie funktio- Objekts abhängen), sondern durch die ab. Die vom VL53L0X ermittelten Ent-
niert auch als Lineal gut. Mit den weni- Zeit, die das Licht benötigt, um zum fernungsdaten können komfortabel über
gen zusätzlichen Bauteilen aber kann Objekt und zurück zu gelangen. die I2C-Schnittstelle abgerufen werden.

48 März/April 2019 www.elektormagazine.de


P27
6
INFOS ZUM PROJEKT
5 +3V3 1 2 +5V
P4 GPIO05 R1 LED1 Raspberry Pi
4 GPIO2 3 4 +5V 470
SDA1 GPIO06 R2 LED2
3 GPIO3 5 6 GND 470 VL53L0X
SCL1 GPIO07 R3 LED3
2 GPIO4 7 8 GPIO14 470
0V GPIO08 R4 LED4 ToF-Sensor
1 GND 9 10 GPIO15 470
3V3 GPIO09 R5 LED5
GPIO17 11 12 GPIO18 470

GPIO27 13 14 GND
GPIO10 R6
470
LED6
Æ Einsteiger
GPIO11 R7 LED7
470
GPIO22 15 16 GPIO23
GPIO12 R8 LED8 Fortgeschrittene
+3V3 17 18 GPIO24 470

GPIO10 19 20 GND
GPIO13 R9
470
LED9 Experte
GPIO14 R10 LED10
GPIO9 21 22 GPIO25 470
GPIO15 R11 LED11
GPIO11 23 24 GPIO8 470
GPIO16 R12 LED12
GND 25 26 GPIO7 470

ID_SD* 27 28 ID_SC*
GPIO17 R13
470
LED13 rund 1 Stunde
GPIO18 R14 LED14
GPIO5 29 30 GND 470
GPIO19 R15 LED15
GPIO6 31 32 GPIO12 470
GPIO20 R16 LED16
GPIO13 33 34 GND 470

GPIO19 35 36 GPIO16
GPIO21 R17
470
LED17 (SMD-)Lötstation,
GPIO22 R18 LED18
GPIO26 37 38 GPIO20 470 Raspberry Pi,
GPIO23 R19 LED19
GND 39 40 GPIO21 470
GPIO24 R20 LED20 Internet
470
GPIO25 R21 LED21
470
GPIO26 R22 LED22
470

180483-003 etwa 25 €

Bild 1. Der Schaltplan des RPi-Lineals besteht aus 22 LEDs mit Strombegrenzungswiderständen und
zwei Steckverbindern.

Praktische Break-Out-Platine Installation der Software auf gehen Sie in das Home-Directory und
Der interessante Sensor wurde von (chi- dem RPi geben dort in der Konsole ein:
nesischen?) Breakout-Board-Anbietern Der VL53L0X-Treiber wurde in C++
schnell auf ein praktisches Platinchen geschrieben, weshalb die Software für cd VL53L0X_rasp
gelötet, das im Internet leicht zu finden dieses Projekt auch in C++ gehalten ist. make API_DIR=~/VL53L0X_1.0.2/
ist (Bild 2). Der Hersteller hat zudem Python-Bibliotheken für den Sensor sind make examples API_DIR=~/
einiges an Aufwand in die Entwicklung ebenfalls vorhanden, wenn Sie also lieber VL53L0X_1.0.2/
von mehreren Open-Source-Treiber- mit Python fortfahren möchten, bitte...
bibliotheken für Arduino und Raspberry Nur um es klarzustellen: Die folgenden Es sollte keine Warnungen oder Fehler
Pi gesteckt. Schritte werden auf dem Raspberry Pi geben. Um das RPi-Linealprogramm aus-
und nicht auf einem Windows/Linux/ zuführen, geben Sie Folgendes ein:
Ein elektronisches RPi-Lineal macOS-Computer durchgeführt!
In diesem Projekt wird die Entfernung ./bin/rpi_ruler
durch die LEDs auf dem RPi-Lineal ange- • Laden Sie wiringPi [1] herunter und
zeigt. Da jede LED für einen Zentime- installieren Sie diese Bibliothek, um
ter steht und sich nur 22 LEDs auf dem auf die GPIO-Pins des Pi in C++
Lineal befinden, ist der Messbereich auf zugreifen zu können. Mit wiringPi
22 cm begrenzt. Es können durch Mul- lassen sich die LEDs steuern.
tiplexen der LEDs aber auch aufwändi- • Laden Sie den VL53L0X-Treiber
gere Anzeigen programmiert werden. Der STSW-IMG005 aus dem „Get Soft-
gemessene Abstand wird (in Millimetern) ware“-Abschnitt von [2] herunter
auch auf ein am HDMI-Port des RPi ange- und entpacken Sie ihn.
schlossenes Display ausgegeben. So kann • Laden und entpacken Sie den Rasp-
dieses Projekt auch ganz ohne das Lineal berry-Pi-Adapter VL53L0X_rasp [3]
durchgeführt werden, wenn man die SPAD von Cassou (Mathieu Cassard).
mit dem I2C-Port des RPi verbindet. • Laden Sie das Makefile von [4] her-
unter und kopieren Sie es in den
Die Software wurde für einen Raspberry Ordner VL53L0X_rasp (überschrei-
Pi 3 Modell B V1.2 geschrieben, sollte ben Sie die vorhandene Datei).
aber auch auf anderen Pis mit einem • Laden Sie die Datei rpi_ruler.c von
40-poligen Erweiterungsanschluss funk- [4] herunter und legen Sie sie im
tionieren. Stecken Sie das Lineal immer Ordner VL53L0X_rasp/examples ab.
erst auf den RPi, bevor Sie die Betriebs- Bild 2. Eine besonders populäre Breakout-
spannung einschalten. Wenn Sie dies erfolgreich erledigt haben, Platine für den Time-of-Flight-Sensor VL53L0X.

www.elektormagazine.de März/April 2019 49


males Ergebnis beim Aufbau des RPi-Li-
neals erzielen.

• Verwenden Sie eine 16 mm hohe


(oder höhere) Buchse für den
Erweiterungssteckverbinder des
Raspberry Pi, damit das Lineal über
der USB-Buchse des Pi liegt (Bild 3).
Natürlich gilt dies nicht für einen
Raspberry Pi Zero, da dieser ja keine
hohe USB-Buchse besitzt.
• Der VL53L0X-Sensor wird mit
2,6...3,5 V versorgt. Auf den Break-
Bild 3. Wenn das Lineal auf einen „normalen“ Raspberry Pi gesteckt werden soll, muss dieser
out-Modulen des VL53L0X befin-
Verbinder mindestens 16 mm hoch sein.
det sich in der Regel ein integrierter
LDO-Spannungsregler (Low Drop-
Out), um auch eine Versorgung mit
Anzeige der Ergebnisse malwert bestimmt, wobei die LED, die 5 V zu ermöglichen. Der I2C-An-
Wenn Sie ein Display am RPi angeschlos- dem Dezimalwert am nächsten kommt, schluss am Lineal liefert zwar nur
sen haben, werden die Messergebnisse heller leuchtet. Beispiel: Beträgt der 3,3 V, aber die meisten LDOs leiten
fortlaufend (in Millimetern) angezeigt, gemessene Abstand 12,4 cm, leuch- diese zu niedrige Eingangsspannung
wenn Sie Ihre Hand oder einen Gegen- tet die LED12 mit 60 % Helligkeit und einfach weiter. Wenn Sie aus irgend-
stand vor dem Sensor bewegen. Befindet die LED13 mit 40 %. Die Helligkeit wird einem Grund tatsächlich 5 V benöti-
sich nichts vor dem Sensor, erscheint über die wiringPi-Funktion softPwmWrite gen, stehlen Sie die Spannung ganz
der Wert 8192 (außerhalb des Messbe- gesteuert (wobei zur optimalen Ablesbar- einfach vom Erweiterungsanschluss
reichs). Wenn sich ein Objekt innerhalb keit eigentlich eine logarithmische statt des RPi.
einer Distanz von 22 cm vor dem Sen- eine lineare Skalierung verwenden wer- • Der VL53L0X-Sensor kann mit einer
sor befindet, wird der Abstand von den den sollte). (oft gelblichen) Schutzfolie verse-
LEDs angezeigt. Da der Abstand meist hen sein. Ist dies der Fall, entfer-
ein nicht ganzzahliger Zentimeterwert Hinweise nen Sie sie vor der Verwendung des
ist, können zwei LEDs gleichzeitig leuch- Hier noch einige Hinweise, wie Sie Fehl- Sensors.
ten. Ihre Helligkeit wird durch den Dezi- konstruktionen vermeiden und ein opti- (180483-B-01)

im elektor-shop
STÜCKLISTE ª180483-1, RPi-Lineal
www.elektor.de/elektor-raspberry-pi-ruler
ª180483-71, Teilesatz
www.elektor.de/rpi-kit-180483-71
ªTime-of-Flight-Sensor VL53L0X
www.elektor.de/tof-distance-sensor

Weblinks
[1] wiringPi: http://wiringpi.com/
[2] Offizieller VL53L0X-Treiber:
www.st.com/en/embedded-software/stsw-img005.html
[3] VL53L0X-Treiber für RPi: https://github.com/cassou/VL53L0X_rasp
[4] Makefile und Hauptprogramm: www.elektormagazine.com/labs/rpi-ruler

50 März/April 2019 www.elektormagazine.de


Der -Cup 2019
Größer und besser denn je!
Von Clemens Valens (Elektor Labs)

Der NXP Cup ist ein jährlicher weltweiter Wettbe-


werb für Studenten-Teams und Robotik-Clubs, ein
autonomes Modellauto zu bauen, zu programmieren
und so schnell wie möglich auf einer Strecke fahren
zu lassen. Und es geht um mehr, denn das Sieger-
team wird ins Silicon Valley (und zurück) fliegen!

Das Ziel des NXP Cups ist es, autonome Autos mit professionel-
lem Anspruch zu bauen und zu fahren, ohne aber viel Geld aus-
zugeben. Hierzu bedarf es gut konstruierter und hochoptimierter
Hard- und Software, was eindeutig keine leichte Aufgabe ist.

Der NXP Cup 2019 hat überarbeitete Regeln, die mehr Frei-
heit ermöglichen:
• Unbegrenzte Anzahl von Sensoren.
• Freie Wahl und unbegrenzte Anzahl von NXP-Prozessoren.
• Weitere Herausforderungen, mit denen man zusätzliche
Punkte sammeln kann: Zeitfahren, Achter-Schleife,
Ausweichen vor Hindernissen und
Geschwindigkeitsbeschränkungen.
Neben optimierten Regeln und zusätzlichen Herausforderun-
gen wurde auch die Strecke selbst verbessert: Sie bietet jetzt
besseren Grip und ermöglicht höhere Geschwindigkeiten.
180692-02
Weblink
Der NXP Cup ist eine großartige Möglichkeit für Studenten [1] NXP Cup EMEA:
der Ingenieurwissenschaften, beruflich relevante Fähigkeiten https://community.nxp.com/groups/tfc-emea
zu erlernen. Lars Reger, CTO von NXP Automotive, drückte
das so aus: „Die Technologie, der universitäre Support und
das unglaubliche Partner-Ökosystem bieten den Studenten die
Möglichkeit, wichtige Fähigkeiten in der kollaborativen Team-
arbeit zu erlernen und sich mit Kerntechnologien beim Bau
autonomer Roboter vertraut zu machen.“

Die Konstruktion eines erfolgreichen autonomen Autos für die


Teilnahme erfordert:
• Programmierung von Embedded-Software und grundle-
gende Kenntnisse im Schaltungsentwurf;
• Optimierung der Hard- und Software zur Motorsteuerung
für höchste Geschwindigkeit und beste Lenkpräzision;
• Integration einer Kamera, damit das Fahrzeug auf der
Spur bleibt, indem es einer Leitlinie folgt.

www.elektormagazine.de März/April 2019 51


LABS PROJECT

CNC-Portalroboter
„Wolverine”
Multifunktionales Kraftpaket

Teil 1:
Mechanischer Aufbau

Von Ilse Joostens

Nicht wenige Elektronik-Fans, Tüftler und Maker stehen mit der mechanischen Seite ihrer Projekte auf Kriegsfuß.
Das Entwerfen und Anfertigen von Platinen ist für den geübten Elektroniker in der Regel kein Problem, aber
sobald das Projekt in ein vorzeigbares Gehäuse eingebaut werden soll, kühlt die Begeisterung ab. Das Anfertigen
vergleichsweise einfacher mechanischer Teile wie Abdeckplatten oder Zugstangen kann zur unüberwindlichen
Hürde werden. Mit dem Erscheinen von 3D-Druckern, erschwinglichen CNC-Maschinen und Online-Dienstleistern
hat der mechanische Teil eines Projekts weitgehend seine Schrecken verloren. Der hier vorgestellte CNC-
Portalroboter will hierzu beitragen und Ihnen helfen, die Welt der Mechanik stressfrei zu erschließen.

52 März/April 2019 www.elektormagazine.de


Eigenschaften
• Werktisch ungefähr 50 ∙ 30 cm
• Linearführungen mit Kunststoffgleitlagern, unempfindlich gegen Verschmutzung
• Höchstgeschwindigkeit X- und Y-Achse: 15000 mm/min, Z-Achse: 750 mm/min
• Wiederholgenauigkeit: Etwa 0,2 mm
• Schrittmotoren Nema-17
• Antrieb über verstärkte GT2-Zahnriemen (X- und Y-Achse) und Schraubspindel (Z-Achse, Erweiterung)
• Z-Achse als Erweiterung zum Bohren, Fräsen und Gravieren in Holz, Kunststoffen und NE-Metallen (Aluminium, Messing), mit
Proxxon LBS/E-Spindel (5.000...20.000 U/min, 100 W)
• Professionelle Steuerung und Software von Eding CNC (Controllerplatine cnc310)
• Schrittmotortreiber basierend auf Trinamic TMC2160 Controller-ICs für einen geräuscharmen Betrieb
• 2.5D-Software, kann auf 3D erweitert werden
• Multifunktionales Konzept, ausbaubar für andere Anwendungen
• Erweiterbar mit einem Pendant (= Konsole mit Tastern und Drehrad für manuelle Bedienung)
• Maximaler Leistungsbedarf ohne Bohrschleifer: Etwa 100 W
• Gesamtgewicht einschließlich Z-Achsen-Erweiterung und Proxxon LBS/E-Bohrschleifer: 24 kg

Wenn Sie schon einmal überlegt haben, muss bei einem 3D-Drucker in Stunden auffällige Erscheinung. Obwohl Por-
mechanische Teile in eigener Regie zu gerechnet werden. Wir haben natürlich talfräsmaschinen normalerweise an einer
fertigen, haben Sie wahrscheinlich an nicht die Absicht, 3D-Drucker schlecht zu festen Arbeitsfläche angebaut werden,
einen 3D-Drucker gedacht. 3D-Drucker reden. Für komplizierte 3D-Formen oder haben wir uns für einen stabilen Alumini-
gibt es schon eine Weile, doch erst seit Prototyping ist der 3D-Drucker immer umrahmen entschieden. Die 40 ∙ 40 mm
der Entwicklung erschwinglicher Modelle noch eine gute Wahl. starken Aluminiumprofile tragen nicht nur
ist diese Technik in kurzer Zeit beliebt Die Beliebtheit von 3D-Druckern hat zur Gesamtstabilität der Maschine bei, sie
geworden. Die meisten 3D-Drucker wen- für unser Projekt einen kaum zu über- erhöhen auch die Einsatzmöglichkeiten
den die FDM-Technik an (Fused Deposi- schätzenden Vorteil: Mechanische Teile und erlauben mehr Optionen bei späte-
tion Modeling), bei der ein Kunststofffaden wie Führungen, Lager, Zahnriemen und ren Erweiterungen.
geschmolzen und in Schichten extrudiert Kupplungen sind jetzt deutlich leichter Der Werktisch unseres Prototyps besteht
wird. Auch Maschinen, die auf der Stereo- zu beschaffen als noch vor zehn Jah- aus 20 mm starkem Sperrholz, er ist
lithographie (Fotopolymerisation) basie- ren. Unser CNC-Portalroboter ist mit gut dank der Rahmenkonstruktion leicht
ren, sind in Entwicklungslabors vertreten. erhältlichen Komponenten aufgebaut, die herausnehmbar. Die Arbeitsfläche kann
natürlich auch online erworben werden nicht nur abhängig von der Anwendung
Schwachpunkte der 3D-Drucker können (eBay, ...). gewählt werden, sie lässt sich auch in
Trotz der hohen Beliebtheit haben 3D-Dru- In diesem ersten Teil des Beitrags steht geeigneter Höhe montieren. Es ist sogar
cker zwei gravierende Nachteile: Die der mechanische Aufbau im Mittelpunkt. möglich, die Maschine ohne Arbeitsfläche
verwendeten Materialien (Filamente, auf einem Werkstück zu positionieren,
UV-Kunstharz, ...) sind relativ kostspie- Rahmen und Grundaufbau beispielsweise um ein größeres Objekt
lig, und das Drucken ist ein hochgradig Verglichen mit Standard-CNC-Portalfräs- zu gravieren. Eine mögliche zukünftige
langsamer Prozess. Zum schnellen Her- maschinen ist unser Portalroboter eine Erweiterung könnte ein höhenverstellba-
stellen größerer Stückzahlen ist dieses
Verfahren nicht geeignet. Außerdem hin-
terlassen insbesondere FDM-3D-Drucker
eine recht raue Oberfläche, so dass gele-
gentlich eine Nachbearbeitung notwendig
ist. Dringend abzuraten ist vom 3D-Druck
solcher Gegenstände, die mit Lebensmit-
teln in Kontakt kommen, denn sie können
wegen der rauen Oberfläche nach dem
Gebrauch nicht gründlich gereinigt werden.
Verglichen mit 3D-Druckern und ihrer
ausgefeilten Technik sehen einfache
CNC-Maschinen eher unkompliziert aus.
Sie sind jedoch in der Lage, mechanische
Teile wesentlich schneller als 3D-Dru-
cker zu produzieren. Die Verarbeitung
hat ein höheres Qualitätsniveau, und die
Materialauswahl ist reichhaltiger. Wo ein
durchschnittlicher Kleinauftrag auf einer
CNC-Maschine etwa fünf Minuten dauert, Bild 1. Die Elektronik hat ihren Platz auf der Rückseite der Maschine.

www.elektormagazine.de März/April 2019 53


haben wir uns für Profile und Lagerblö-
cke aus dem DryLin-W-gamma-Sorti-
ment von Igus entschieden [2]. Diese
harteloxierten Aluminiumprofile und
Kunststoffgleitlager bieten ein gutes
Preis-Leistungs-Verhältnis, sie sind robust
und wenig empfindlich gegen Staub
und Verschmutzung. Außerdem lässt
sich die Kunststofffolie der Lagerböcke
leicht ersetzen, falls dies einmal notwen-
dig sein sollte. Ein zusätzlicher Vorteil
besteht darin, dass die Ausrichtung im
Vergleich zu kugelgelagerten Führungen
weniger eng ist, was die Montage der
Maschine erleichtert.
Für die Y-Achse haben wir zwei Einzel-
Bild 2. Für die Y-Achse werden zwei Einzelschienen WS-10 verbaut.
schienen vom Typ WS-10 mit der Länge
500 mm verwendet (siehe Bild 2), wäh-
rend die X-Traverse um eine Doppel-
schiene vom Typ WSX-10-40 mit der
Länge 750 mm gebaut ist (Bild 3). Da
die X-Traverse über einen ausreichen-
den Abstand selbsttragend sein muss,
haben wir uns für eine erhöhte Schiene
entschieden. Wenn Bedarf nach einer
größeren Maschine besteht, kann die
Konstruktion innerhalb bestimmter
Grenzen in größerem Maßstab aufge-
baut werden.
Für die Lagerböcke der X-Achse stehen
abhängig von den gewünschten Einsatz-
bereichen der Maschine entweder der Typ
WJUME-01-10 mit einstellbarem Spiel
oder Vorspannungs-Lagerböcke des
Bild 3. Die X-Achse besteht aus einer Doppelschiene WSX-10-40. Typs WJ200UM-01-10-P40 / -P90 / -P140
oder auch Präzisionslagerblöcke vom Typ
WJUM-01-10K mit JUMO-01-10K-Lager-
rer Tisch für CO2-Lasergravur und Laser- werden. Voraussetzung sind Kenntnisse folie zur Wahl (für die Z-Achse sollte die
schnitt oder 3D-Druck sein. in der Metallbearbeitung und Verfügbar- Lagerfolie JUMO-01-10K verwendet wer-
Wenn die Maschine als Fertigungsma- keit einer Säulenbohrmaschine oder eines den, da die Z-Achse speziell für das Frä-
schine zum Bestücken von Platinen mit Bohrständers. Vorhanden sein müssen sen ausgelegt ist).
SMDs eingesetzt wird, können am Rah- ferner eine Kreissäge mit Sägeblatt für Die Lagerböcke mit einstellbarem Spiel
men sogar Rollen mit den Komponenten Aluminium, ein Gewindebohrersatz und und die Vorspannungs-Lagerböcke
oder SMD-Feeder angebracht werden, ein Stufenbohrer. Optional ist das Anfer- gewährleisten bei korrekter Einstellung
falls dies zweckmäßig erscheint. tigen einer Arbeitsfläche aus MDF-Platte einen ruhigen Lauf auf der X-Achse,
Der Rahmen macht es möglich, die mit T-Schlitz-Nuten (Spoil-Board) zum wobei der Antriebsmotor nur wenig
Elektronik der Steuerung an der Rück- Spannen von Werkstücken zusammen Kraft aufwenden muss. Dies ist ideal für
seite der Maschine zu montieren (siehe mit Proxxon-Spannbacken (24257). Anwendungen, bei denen auf der X-Tra-
Bild 1). Dadurch wird die Maschine Die MDF-Platte kann auf die Sperrholz- verse nur geringe Kräfte auftreten, wie
nicht nur insgesamt kompakter, auch platte montiert werden, bei Beschädi- Lasergravur oder Laserschnitt, 3D-Druck,
die Elektronik ist wirksamer vor umher- gungen lässt sie sich leicht austauschen. Platinenbestückung und so weiter. Wenn
fliegendem Span und Staub geschützt. Dafür wird allerdings eine Oberfräse mit die Maschine als CNC-Fräsmaschine ein-
Mit den verstellbaren Füßen kann die T-Schlitz-Einsatz benötigt. Die Zeichnun- gesetzt werden soll, empfehlen wir die
Maschine auch auf unebenen Flächen gen der mechanischen Teile, die Bau- Präzisionslagerblöcke WJUM- 01-10K. Mit
stabil aufgestellt werden. Natürlich ist es teileliste und eine ausführliche Baube- diesen Lagerblöcken erhält die X-Achse
auch möglich, die Maschine ohne Rah- schreibung stehen auf der Projektseite eine bessere Steifigkeit (weniger Spiel),
men mit einer Sperrholzplatte als Basis [1] zum Download bereit. was für den Einbau einer Z-Achse mit
aufzubauen. Frässpindel unabdingbar ist, insbeson-
Trotz ihrer Komplexität ist die Maschine X- und Y-Achse dere wenn harte Materialien zu bearbei-
nachbaufreundlich, sie kann ohne spezi- Führungen und Lagerblöcke ten sind.
elle Maschinen oder Werkzeuge gebaut Bei den Führungen der X- und Y-Achse Ein Nachteil dieser Lagerblöcke ist der

54 März/April 2019 www.elektormagazine.de


starrere Lauf auf der X-Achse. Für sich
betrachtet haben die Motoren durch die
Riemenscheibensysteme auch bei höhe-
ren Geschwindigkeiten genügend Kraft.
Optional können die Lagerblöcke vorsich-
tig mit einer geringen Menge Waffenöl
geschmiert werden (Typ Ballistol GunCer,
erhältlich im Waffenfachhandel).
Die Lagerblöcke der Y-Achse sind ein
Hybridtyp (WJRM-01-10), der sowohl
über die Schiene rollt als auch gleitet,
was bei höheren Geschwindigkeiten
(> 10 m/Minute) stabiler ist.

Antriebssystem und Motoren


Da die Maschine multifunktional konzi-
Bild 4. Ein Riemenscheibensystem erhöht die Kraft der Motoren.
piert ist und insbesondere für die Plati-
nenbestückung und Lasergravur schnell
sein soll, was bei spindelgetriebenen
Maschinen etwas schwieriger realisier- so dass etwa 60 N bis 70 N realistischer Z-Achse
bar ist, werden die X- und Y-Achse von sind. Um einen Eindruck zu geben: Wenn Auf der Trägerplatte des X-Achsen-Mo-
stahldrahtverstärkten, 6 mm breiten die X-Traverse bei niedriger Geschwin- tors befinden sich für die Montage von
GT2-Zahnriemen angetrieben. Diese digkeit festgehalten wird, kann sich die Erweiterungen drei Bohrungen mit
Zahnriemen sehen normalerweise weiß Maschine über den Boden bewegen. M5-Gewinde. Die erste Erweiterung ist
aus, sie sind strapazierfähiger als die Starke Motoren haben die Eigenschaft, die Z-Achse mit Frässpindel zum Fräsen,
schwarzen Neopren-Zahnriemen. Ein dass sie mehr Gewicht und damit mehr Gravieren und Bohren.
Merkmal für Riemen mit GT2-Profil ist Trägheit bei schnellen Beschleunigungen Da bei dieser Erweiterung die Präzision
auch das äußerst geringe Spiel. Die und Verzögerungen mitbringen. Auch wichtiger als die Geschwindigkeit ist, wird
Riemen müssen jedoch ziemlich fest sind manchmal aufwendigere Schrittmo- hier eine spindelgetriebene Linearführung
gespannt werden. tortreiber nötig, die mehr Strom bereit- eingesetzt. Die Linearführung kann kom-
Händler, die bei eBay 3D-Drucker zum stellen können. plett bei Igus [2] unter der Bezeichnung
Selbstbau anbieten, haben auch GT2-Rie- Die Y-Achse wird hier mit einem einzel- SLW-1040 bestellt werden (siehe Bild 5).
men im Angebot. Für die Riemenführun- nen Schrittmotor angetrieben. Mit zwei Der Kunde kann einige Parameter wäh-
gen werden gut erhältliche Kugellager Schrittmotoren würde die Maschine nur len, beispielsweise die Hublänge, in der
des Typs 606 2RS verwendet, sie werden problemlos laufen, solange sich beide Regel sind 60 mm ausreichend. Mit Rück-
zwischen M6-Scheiben mit dem Außen- Motoren im Gleichtakt befinden. Falls sicht auf die Stabilität darf die Hublänge
durchmesser 20 mm montiert. ein Motor Schritte überspringt, beginnt nicht zu lang gewählt werden. Da die
Als Antriebsmotoren kommen Schritt- der Querträger schräg zu laufen, was axiale Belastung durch das Gewicht der
motoren des Typs Nema-17 mit 5 mm zu erheblichen Problemen führen kann. Frässpindel hauptsächlich nach unten
Achsdurchmesser zum Einsatz. Durch ein Bei den verwendeten GT2-Riemenschei- gerichtet ist, wird eine Vorspannmutter
Riemenscheibensystem an den Zahnrie- ben mit 20 Zähnen beträgt die Verschie- am Spindelantrieb hinsichtlich des Spiels
men (siehe Bild 4) wird die Motorkraft bung auf der X-Achse etwa 20 mm pro nicht benötigt.
verdoppelt, so dass die Leistung für das Umdrehung des Schrittmotors. Auf der Für die Lagerböcke des SLW-1040 wird
leichte Fräsen und die übrigen Zwecke, Y-Achse spielt auch die Dicke des Zahn- die neue Kunststofffolie WJUM-01-10K
für die diese Maschine ausgelegt ist, riemens eine Rolle, bei unserem Proto- empfohlen (Sonderbestellung bei Igus),
mehr als ausreicht. Mit einem Haltemo- typ betrug die Verschiebung 20,6 mm anderenfalls besteht zu viel radiales Spiel
ment von 0,58 Nm für die Schrittmotoren pro Umdrehung. Dies sind Richtwerte, an der Frässpindel.
(Typ 17HS5425) und einem Scheiben- es ist wichtig, die Werte an der aufge- Wie die anderen Achsen wird auch die
durchmesser von 12,8 mm wird auf der bauten Maschine mit einer Schieblehre Z-Achse von einem Schrittmotor Nema-
X- und Y-Achse bei niedriger Geschwin- zu kalibrieren. 17 über eine flexible Kupplung ange-
digkeit theoretisch eine maximale Kraft Die Stützplatten für die Kugel- und trieben. Theoretisch ist hier die Kraft
von 2 ∙ (0,58 Nm ∙ 71 % / 0,0064 m) Gleitlager und die Motoren bestehen bei einer Verschiebung von 2 mm pro
= 128,7 N erreicht. Dabei wird ein the- aus 6 mm starkem Aluminium 6082 T6. Umdrehung deutlich höher als bei der
oretisches dynamisches Drehmoment Dieses Material lässt sich noch mäßig X-Achse und Y-Achse. Berücksichtigt wer-
von 71 % des Haltemoments bei niedri- leicht bearbeiten, es gibt der Maschine den müssen jedoch die maximale axiale
ger Geschwindigkeit mit Mikrostepping eine genügende Steifigkeit. Wenn die Tragfähigkeit des SLW-1040 (700 N sta-
angenommen. In der Praxis werden die Maschine nur für leichte Anwendungen tisch) und die Belastung der Z-Achse als
Motoren nicht mit maximalem Strom verwendet wird, ist anstelle von Alumi- Ganzes auf die Motorträgerplatte und die
betrieben, und durch die Verkabelung, nium auch eine 6 mm starke HPL-Platte Gleitlager der X-Achse. Es ist daher rat-
mechanische Übertragung und Reibung in verwendbar. Dieses Material lässt sich sam, die Belastung in der Praxis auf etwa
den Linearführungen entstehen Verluste, deutlich leichter bearbeiten. 20 N zu begrenzen, was für die meis-

www.elektormagazine.de März/April 2019 55


schmutzung. An sie werden hohe Anfor-
derungen gestellt, denen Haushaltskabel
nicht gewachsen sind. Die verwendeten
Kabel sind vom Typ ChainFlex CF9.02.06
(siehe Bild 7) mit sechs Adern und dem
Querschnitt 0,25 mm2, was für Motoren
des Typs Nema-17 und Ströme bis 2,5 A
gerade ausreicht. Bei diesem Kabeltyp
verlaufen die Kupferdrähte spiralför-
mig um einen Kunststoffkern, so dass
Kabelbiegungen weniger auf die Kupf-
erleiter einwirken. Der Kunststoffkern
und die synthetischen Fasern zwischen
den Adern und dem Außenmantel sorgen
für die notwendige Stabilität und Festig-
Bild 5. In der Z-Achse sorgt eine spindelangetriebene Führung vom Typ SLW-1040 für hohe keit. Der Außenmantel ist unempfind-
Präzision. lich gegen Verschmutzungen durch nicht
agressive Chemikalien, Öle und Fette.
Der Hersteller garantiert einen störungs-
freien Betrieb für mindestens fünf Millio-
nen Hin- und Herbewegungen bei Tem-
peraturen von –35 bis +100 °C.
Es ist nicht ratsam, dickere Kabel mit
einem größeren Kupferquerschnitt zu
verwenden, denn solche Kabel sind
beim Biegen wesentlich steifer. Aus die-
sem Grund werden drei Kabel mit sechs
Adern parallel zueinander geführt, statt
eines stärkeren Kabels mit mehr Adern.
Um die Kabel in Position zu halten,
werden zwei Kabelführungen verwen-
det, die ebenfalls von Igus stammen.
Eigentlich sind die Kabelführungen für
Bild 6. Dieser Proxxon LBS/E-Bohrer ist nicht der einzige geeignete Kandidat. den Abstand, den das Kabel überbrü-
cken muss, zu lang. Doch dadurch lässt
sich eine zusätzliche Kabelführung oder
ein Verkabelungskanal einsparen. Außer
ten Anwendungen genügen dürfte. Für und einem quadratischen Aluminiumstab den Kabeln kann auch ein PVC-Schlauch
die Montage der Bohr- und Frässpindel auf der Trägerplatte der X-Achse mon- durch die Kabelführungen gelegt wer-
wird ein Halter SK20 für 20-mm-Stäbe tiert. Die Z-Achse kann an fünf festen den, beispielsweise für die Absaugung,
verwendet. Positionen in unterschiedlichen Höhen für Druckluft oder Kühlmittel. Das Netz-
Bei unserem Prototyp kam einen Proxxon montiert werden. Wenn der Bohrer kabel des Proxxon-Bohrers darf auf kei-
LBS/E-Bohrer zum Einsatz (Bild 6), die- Proxxon LBS/E zum Einsatz kommt, kann nen Fall durch die Kabelführungen laufen,
ses Gerät eignet sich für leichte Fräsar- er auch in der Höhe angepasst werden, denn es erfüllt die Anforderungen einer
beiten. Auch Hersteller wie zum Beispiel was die Flexibilität steigert. solchen Verwendung nicht!
Kress haben geeignete Geräte in ihren Die Endschalter sind Mikroschalter
Programmen. Ferner spricht nichts dage- Verkabelung und Endschalter mit Rollenhebel (Bild 8). Wegen der
gen, eine echte Frässpindel mit oder ohne Die Kabel der Motoren und Endschal- höheren Schaltsicherheit liefert der in
angepasste Halterung zu montieren. ter sind ständig mit kleinen Biegeradien Ruhe geschlossene Kontakt das Signal,
Die Z-Achse wird mit vier M5-Schrauben in Bewegung und unterliegen der Ver- denn das Unterbrechen eines Kontakts
ist sicherer als das Schließen. Bei der
X-Achse und der Y-Achse befinden sich
die Schalter am Anfang und Ende der
Weblinks Führungsschiene. Die Schalter links und
[1] Projektseite zu diesem Beitrag: http://www.elektormagazine.de/180246-03 unten haben sowohl die Funktion eines
[2] Igus: http://www.igus.com Endschalters als auch eines Referenz-
schalters. Die übrigen Schalter lösen den
[3] Alu-Messing-Shop: http://www.alu-messing-shop.de
Notstopp aus, falls die Maschine wegen
[4] ACT Motor GmbH: http://de.act-motor.com eines Fehlerzustands droht, über die phy-
[5] Proxxon: http://www.proxxon.com sische Grenze der X- oder Y-Achse hin-
auszufahren. Die Notstopp-Schalter sind

56 März/April 2019 www.elektormagazine.de


Bild 7. Spezielle flexible Kabel sind tausendfach biegefähig. Bild 8. Die Endschalter mit Rolle werden liegend eingebaut.

Bild 9. Mit dem Notstopp-Schalter kann verhindert werden, dass eine Bild 10. Eine mehrpolige Steckverbindung hilft, die Z-Achse schnell gegen
Fehlfunktion die Fräse beschädigt. andere Erweiterungen auszutauschen.

optional, sie müssen für den Betrieb der flüssig erscheinen, doch die Kosten haben Schrittmotor-Treiber und die Software
Maschine nicht unbedingt montiert wer- sich spätestens gelohnt, wenn damit das betrachtet. Auch G-Code, CAM-Software
den. Eine Richtlinie, die den Betrieb von Brechen einer Fräse verhindert werden und der Workflow von der CAD-Zeich-
Maschinen regelt, schreibt diese Schal- kann. nung zum fertigen Produkt gehören zu
ter nicht vor, da die ausgeübten Kräfte Die Z-Achse ist über einen mehrpoligen den Themen.
relativ gering bleiben. Stecker mit der übrigen Maschine ver- (180246-03)
Für die Z-Achse ist nur ein End- und bunden (siehe Bild 10). Auf diese Weise
Referenzschalter für die höchste Posi- kann die Z-Achse leicht demontiert wer-
tion (Zmax) vorhanden. Ein Endschalter den, um sie gegen eine andere Erwei-
für die unterste Position ist nicht sinnvoll. terung (beispielsweise einen Laserkopf)
Vor dem Auslösen wäre der Fräser bereits auszutauschen.
durch das Material hindurch gedrungen.
Alle Referenzschalter sind in Längsrich- Elektronische Steuerung und
tung zu den Achsen montiert. Da die Software: Teil 2
Schalter keinen mechanischen Wider- Im nächsten Teil des Beitrags zu unserer
stand leisten, können die Ausgangspo- CNC-Maschine werden die Steuerung, die
sitionen schneller angefahren werden.
Nachdem ein Referenzschalter aktiviert
ist, bleibt noch Spielraum, die Achse
abzubremsen, ohne dass eine Kollision im elektor-shop
mit dem Schalter droht.
Neben dem Anschluss für einen Z-Sen- ªBuch: „3D Printing and CNC Fabrication with SketchUp”
sor befindet sich ebenfalls ein Not- www.elektor.de/3d-printing-and-cnc-fabrication-with-sketchup
stopp-Schalter (Bild 9). Dies mag über-

www.elektormagazine.de März/April 2019 57


Operationsverstärker
in der Praxis
Teil 2: Feldeffekt-Opamps und
Breitbandanwendungen
Von Burkhard Kainka

Für viele Anwendungen ist es entscheidend, dass die Eingänge eines Opamps extrem hochohmig sind.
Dies ist bei bipolaren Standardtypen nicht der Fall, so dass man auf Opamps mit Feldeffekt-Eingängen
zurückgreifen muss.

In die Eingänge eines Standard-Opamps vom Typ LM358 flie- Zenerdioden als Schutz eingebaut. Man erreicht Eingangsströme
ßen Ströme von etwa 30 nA. An einem Eingangswiderstand von nur 2 pA. Die Ausgangsstufe des CA3140 ist konventionell
von 1 MΩ ergibt sich dadurch schon ein Spannungsabfall von mit bipolaren Transistoren aufgebaut. Die Hersteller nennen
30 mV, was für viele Anwendungen nicht akzeptabel ist. Fast diese Technologie daher auch BiMOS-Verstärker. Neben der
ohne Eingangsstrom arbeitet dagegen ein Opamp mit Feldef- einfachen Version gibt es auch den zweifachen Opamp CA3240.
fekttransistoren in den Eingangsstufen. Eine weitere Verbesserung bringt der CA3160 mit seiner kom-
Mit J-FET-Eingängen erreicht man Eingangsströme, die um plementären MOS-Ausgangsstufe (CMOS). Man erreicht damit,
den Faktor 1000 unter denen bipolarer Eingänge liegen. Typi- dass die Ausgangsspannung bis auf 10 mV an die negative
sche Vertreter der J-FET-Opamps sind der TL071 (einfach), der und an die positive Betriebsspannung ausgesteuert werden
TL072 (zweifach) und der TL074 (vierfach). Diese Verstärker kann (Rail-to-Rail).
verwenden J-FETs in den Eingangsstufen und bipolare Tran-
sistoren im Rest ihrer inneren Schaltung, wie es Bild 1 zeigt. Spannungsrampen
Eine noch bessere Isolation der Eingänge erreicht man mit Ein Opamp mit FET-Eingang lässt sich gut einsetzen, um lang-
MOSFETs in den Eingangsstufen. Ein typischer Vertreter die- same Kurvenformen wie Spannungsrampen zu erzeugen. Bild 3
ser Technologie ist der CA3140 (Bild 2). Der Opamp arbeitet zeigt einen typischen Rampengenerator, wie er zur automati-
mit doppelter oder einfacher Stromversorgung ab 4 V. Die schen Aufnahme von Kennlinien verwendet werden kann. Der
Eingangsspannung darf um bis zu 0,5 V unter der negativen Opamp ist als Integrator geschaltet. Die Steilheit der Rampe
Betriebsspannung liegen. Da die Eingänge von MOSFETs sehr wird durch den geringen Ladestrom in den invertierenden Ein-
empfindlich gegen Überspannungen sind, wurden zusätzliche gang bestimmt. Dank der hochohmigen Eingänge des Opamps

Bild 1. Innenschaltung des TL071 (Quelle: Texas Instruments). Bild 2. Innenschaltung des CA3140 (Quelle: Renesas).

58 März/April 2019 www.elektormagazine.de


+10V

20k
100mV...10V
exponential
CA3160

4M7
–1V 10
10M 10mV/s
10k
CA3160

10k
180036-B-03

100
1

180036-B-04

Bild 3. Ein Rampengenerator. Bild 4. Ein exponentieller Rampengenerator.

braucht man keine Verfälschung durch Eingangsströme zu


befürchten. Ein Schalter parallel zum Integrator-Kondensator
entlädt diesen und startet eine neue Spannungsrampe.
In einigen Fällen benötigt man statt einer linear ansteigen-
den Spannung eine exponentielle Kurvenform. Ein exponentiell
arbeitender Rampengenerator nach Bild 4 kann zum Beispiel
eingesetzt werden, um einen Tongenerator für Audio-Messzwe-
cke zu steuern. Der Ladestrom des Kondensators wird hier über
eine Spannung erzeugt, die selbst proportional zur Kondensa-
torspannung ist. Dabei ergibt sich der exponentielle Anstieg
(Bild 5). Zum Start der Schaltung muss eine bestimmte Span-
nung vorgegeben werden. Mit 50 mV ergibt sich wegen der
zweifachen Verstärkung eine Anfangsspannung von 100 mV
am Ausgang. Mit einem hochohmigen BiMOS-Opamp lassen Bild 5. Die Ausgangsspannung des exponentiellen Rampengenerators.
sich die Daten der Schaltung in weiten Grenzen verändern.
Viele moderne Opamps sind komplett in CMOS-Technik aufgebaut
und enthalten keine bipolaren Transistoren mehr. Ein typischer
Vertreter ist der zweifache CMOS-Opamp TLC272 mit Eingangs- Extrem hochohmige Opamps werden in so genannten Instru-
strömen unter einem Pikoampere! Bild 6 zeigt das Innenschalt- mentenverstärkern für Messzwecke eingesetzt. Ein Instrumen-
bild. Einige CMOS-Opamps arbeiten am Eingang und am Ausgang tenverstärker nach Bild 8 besitzt Differenzeingänge und einen
mit Spannungen, die bis zu den Versorgungsspannungen reichen. unipolaren Ausgang. Es können Messungen auch an solchen
Es werden laufend neue Opamps mit immer besseren Eigen- Messobjekten durchgeführt werden, die mit keinem Anschluss
schaften entwickelt. Teilweise geht es darum, die Eingänge noch auf Massepotential liegen. Die Spannung gegenüber Masse
hochohmiger zu machen oder die Eingangs-Offsetspannung zu muss jedoch im Eingangs-Aussteuerbereich der Opamps liegen.
verringern. Oder man versucht einen echten Rail-to-Rail-Be-
trieb am Eingang und am Ausgang zu erreichen und dabei auch
noch relativ niederohmige Lasten am Ausgang zu treiben. So
kommt man in einzelnen Bereichen einem idealen Opamp sehr
nahe. Aber oft werden besonders gute Eigenschaften in einem
Bereich durch schlechtere an anderer Stelle erkauft. So haben
sehr hochohmige CMOS-Opamps meist eine größere Offset-
spannung, und Typen, die für besonders geringen Offset opti-
miert sind, erreichen dafür nur eine geringere Grenzfrequenz.
Ein universell einsetzbarer Vierfach-Opamp der neueren Gene-
ration ist der TS914 mit Rail-To-Tail-Betrieb am Ausgang und am
Eingang. Die Innenschaltung (Bild 7) zeigt eine komplementäre
Differenzstufe am Eingang und eine Gegentakt-Ausgangsstufe
mit MOSFETs. Dieser Typ ist für viele Fälle eine gute Wahl und
wurde auch für den Elektor-SDR verwendet. Er erreicht bei
einem Eingangsstrom von nur 1 pA eine Offsetspannung von
5 mV sowie eine Leistungsbandbreite von 800 kHz und kann
niederohmige Lasten bis hinunter zu 100 Ω ansteuern. Bild 6. Innenschaltung des TLC272 (Quelle: Texas Instruments).

www.elektormagazine.de März/April 2019 59


–Vi
10k 100k

Vo

10k 95k
+Vi 10k

180036-B-08

Bild 7. Innenschaltung des TS914 (Quelle: STMicroelectronics). Bild 8. Der Instrumentenverstärker.

Die Schaltung besteht aus einem einstellbaren Differenzver- geraten. Am Oszilloskop sieht man dann oft, dass ein Sinus-
stärker und zwei vorgeschalteten Impedanzwandlern für einen zu einem Dreiecksignal verformt wird. Intern führt die Über-
extrem hohen Eingangswiderstand. Der Differenzverstärker steuerung zu Rechtecksignalen, die in der Ausgangsstufe
muss abgeglichen werden, um ihn auf beste Gleichtaktunter- mit ihrer endlichen Anstiegsgeschwindigkeit zu Dreiecken
drückung und Stabilität einzustellen. integriert werden.
Im Elektor SDR-Shield [1] arbeitet ein Vierfach-Opamp TS914
Breitband-Anwendungen mit einem Verstärkungs-Bandbreite-Produkt von 0,8 MHz
Obwohl ein Opamp eigentlich als Gleichspannungsverstärker (Bild 10). Im Interesse einer großen Bandbreite wird die
konzipiert ist, eignet er sich doch auch zur Verstärkung von 100-fache Verstärkung auf zwei Stufen mit jeweils 10-facher
Wechselspannungen, also zum Beispiel als Mikrofonverstärker Verstärkung aufgeteilt. Damit beträgt die Bandbreite 80 kHz,
(Bild 9). Bei einfacher Versorgungsspannung legt man meist was für diese Aufgabe ausreicht. Die Signale gelangen an den
eine künstliche Mittenspannung fest, beispielsweise die halbe Stereo-Eingang einer Soundkarte und werden von der SDR-Soft-
Betriebsspannung. Die Schaltung verhält sich dann so, als ware weiter verarbeitet. Je nach Soundkarte kann dabei eine
hätte sie eine positive und eine negative Versorgungsspannung. Bandbreite von 24 kHz oder 48 kHz genutzt werden, woraus
Eine solche Verstärkerschaltung kann zwar in einem weiten wegen der Verarbeitung über zwei Kanäle eine effektive Emp-
Frequenzbereich arbeiten, aber manchmal wird man dennoch fangsbandbreite von 48 kHz oder 96 kHz wird.
überrascht, wie schnell ein Opamp an seine Grenzen stößt. Ein Für eine Standalone-Anwendung des Empfängers müsste die
Verstärker wird vielleicht für 100-fache Verstärkung dimensio- Signalverarbeitung am PC durch eine rein elektronische Lösung
niert und soll bis zu 20 kHz arbeiten. Das Verstärkungs-Band- ersetzt werden. Dazu eignet sich ein IQ-CW-Filter mit 750 Hz
breite-Produkt müsste dann 100 x 20 kHz = 2 MHz betra- (Bild 11). Am Eingang befindet sich ein Addierer für das I- und
gen. Viele Typen erreichen aber nur etwa 1 MHz. Bei 20 kHz das Q-Signal, wobei zwischen beiden eine Phasendrehung von
gibt es also keine ausreichende Verstärkung mehr, sodass 90 Grad bei 750 Hz eingefügt wird. Es folgt ein zweistufiges
die Gegenkopplung nicht wie gewünscht funktioniert. Dabei Bandpassfilter für etwa 750 Hz. Es wurden Doppel-Opamps
entstehen Verzerrungen, weil interne Stufen in die Sättigung des Typs LM358 verwendet.

C3 R9 R10
10 C8
10k 100k
+9V 8
3 IC3B
100n IC4C
9
C4 100n
5
2n2 R12
100k

4 100k C
C6
R11
K1
6
10k

100n
1 IC3A 7
C5 R13 IC4B
LM358 13 5 C7
4k7

330n 2n2
2 100n
100k
330n

IC4 = TS914
IC3 = 74HC4066 C9 R14 R15
3
10k 100k C14
1
8 IC3C 100n IC4A
2
100k

4k7

C10 100n
6
2n2 R17
9 100k D
C12 R16
13
10k

10 100n
10 IC3D 14
C11 R18 IC4D
12 12 C13
4k7

180036-B-09 2n2
11 100n
180036-B-10

Bild 9. Ein Mikrofonverstärker mit Opamp. Bild 10. Der TS914 im Elektor SDR-Shield.

60 März/April 2019 www.elektormagazine.de


+5V

270k
I 10k 10k 22n
470n 47k 22n
100k
4k7
Q 100 22n 4k7 NF
22n 22n
100n

100k

1k

1k
4 7

180036-B-11

Bild 11. Ein IQ-CW-Filter.

Die Filterstufen wurden vorab mit LTspice simuliert und entwi-


ckelt. Aber Achtung, auch hier spielt die begrenzte Bandbreite im elektor-shop
des Opamps eine Rolle! Man könnte ja denken, alles liegt im
ªBuch: The Circuit Designer’s Companion (3rd Edition)
NF-Bereich, da kann es ja keine Probleme geben. Tatsäch- www.elektor.de/
lich hat man in der zweiten Filterstufe eine Verstärkung von the-circuit-designers-companion-3rd-edition
100. Für ein Signal von 800 Hz braucht man also ein Verstär-
ªBuch: Learning the Art of Electronics
kungs-Bandbreite-Produkt von nur 80 kHz. Allerdings können www.elektor.de/learning-the-art-of-electronics-3rd-edition
auch höhere Frequenzen im Signalgemisch vorkommen, die
ªBuch: Elektronik - gar nicht schwer 5
nicht zu Verzerrungen führen sollen. Noch kritischer wird es, Experimente mit Operationsverstärkern
wenn man Filter hoher Güte für höhere Frequenzen oberhalb www.elektor.de/elektronik-gar-nicht-schwer-5
10 kHz bauen will.
180036-B-01

Anzeige

27. Internationale Fachmesse für Elektrotechnik, Energetik, Automatisierung,


Kommunikation, Licht unT Sicherheitstechnologien

2019

19. - 22. 3. 2019 | BRNO


TSCHECHISCHE REPUBLIK

www.amper.cz Veranstalter:

www.elektormagazine.de März/April 2019 61


Homelab Helikopter
Wundersame elektronische Dinge, von oben betrachtet
Von Clemens Valens (Elektor Labs)

Resonanzfrequenzen — „It’s a kind of magic!”


Das Internet ist voll von Communities, Produkten und Techno- völlig neu ist* und das irgendwie interessant erscheint. Nach
logien, die nur darauf warten, entdeckt zu werden. Ab und zu ein paar Klicks findet man sich dann schnell in einer Commu-
stolpert man beim Surfen im Netz über etwas, das für einen nity von Menschen, deren ganzes Leben sich um diese spezielle
Technologie oder dieses Produkt zu drehen scheint. Für mich war
die „Rife Machine“ eine solche Entdeckung. Obwohl sie offen-
sichtlich eine Menge Fans hat, hatte ich noch nie davon gehört.
Bevor wir fortfahren, lassen Sie uns konstatieren, dass die Rife
Machine und die Theorie dahinter umstritten sind, um es vor-
sichtig auszudrücken. Beschäftigt man sich mit dieser Techno-
logie, kommen einem Pseudowissenschaften wie Magnetfeld-
therapie, Pyramidenkraft und andere in den Sinn.
Die Rife Machine wurde irgendwann in den 1920er Jahren von
Royal Raymond Rife (1888-1971) entwickelt und ist ein elekt-
ronisches Gerät, das bösartige Mikroorganismen wie Bakterien,
Viren und Krebszellen zerstören soll. Grundsätzlich geht es
darum, dass jeder lebende Organismus eine Resonanzfrequenz
besitzt. Wenn man den Organismus mit dieser Frequenz anregt,
wird er entweder getötet oder deaktiviert. Royal Rife nannte
diese Frequenz die Mortal Oscillatory Rate oder MOR, andere
Leute nannten sie auch Royal Rife Frequency. Wie katastro-
phal sich Resonanzschwingungen auswirken können, zeigt der
ope, mit dem er beobachtete, wie
Royal Raymond Rife 1931 mit einem seiner Mikrosk berühmte Film über den Einsturz der Tacoma Narrows Bridge
werden (Quelle: Wikipedia).
Keime durch Resonanzschwingungen beeinflusst (obwohl kein lebender Organismus) im Jahr 1940.

* Es gibt eine Webseite namens Mix (früher StumbleUpon), die sich genau mit solchen Dingen beschäftigt.

62 März/April 2019 www.elektormagazine.de


Die Arbeiten von Royal Rife wurden vor etwa zehn Jahren
vom Musikprofessor Anthony Holland wiederentdeckt und ans
Licht der Öffentlichkeit gezerrt. Auf YouTube gibt es eine sehr
anschauliche Präsentation seiner Arbeit zu sehen.
Eine Rife Machine verwendet einen gewöhnlichen Funktions-
generator, um Signale mit speziellen „tödlichen“ Frequenzen,
die empirisch bestimmt werden, zu erzeugen. Diese Signale
werden auf die eine oder andere Art in den Organismus gelei-
tet, in dem die Krankheitserreger vermutlich leben, die durch
die Resonanzschwingung zerstört werden müssen. Der Mecha-
nismus ist derselbe, mit dem ein geübter Sänger ein Weinglas
zerspringen lassen kann.

Eine Rife Machine von 1931 (Quelle: Wikipedia).

Auf drei Arten kann das Signal zu den bösen Krankheitserre- DNA sendet. Auf der Website Spooky2, die eine
gern geführt werden: direkter Kontakt mit Handelektroden, kostengünstige Rife-Maschine beschreibt, heißt es:
drahtlos mit Plasmaantennen und ferngesteuert, wobei hier „Da die DNA aus zwei schraubenförmig umeinander
der Nichtlokale Raum, die Quantenphysik und die Antennen- gewickelten Strängen besteht, arbeitet sie als Antenne,
eigenschaften der DNA eine Rolle spielen. die in der Lage ist, in Energiesignalen kodierte Informationen
Bei einer Plasmaantenne ersetzt hochionisiertes, gut lei-
tendes Plasma herkömmliche Übertragungsleitungsele-
mente oder Antennenoberflächen. Da ein Plasma keine
physikalische Länge kennt, kann eine Plasmaantenne
leicht abgestimmt werden. Bereits 1919 wurde einem
gewissen J. Hettinger ein Patent auf diese Technologie
erteilt. In neuerer Zeit (1999) erhielt James E. Bare
das US-Patent #5,908,441 für sein Resonanzfrequenz-
therapiegerät auf Basis einer Plasmaantenne.
Der Hauptvorteil der Remote-Quanten-DNA-Me-
thode gegenüber den anderen besteht darin, dass
verschränkte Maschinen über Entfernungen von Tau-
senden von Kilometern und mehr arbeiten. Um den
Generator auf den Patienten abzustimmen, muss nur
zum Beispiel ein abgeknipster Fingernagel in einer
Art Klemmbehälter (Scalar DNA Transmitter) mit
dem Generator verbunden werden, der die Tonfre-
quenzenergie an die im Nagelabschnitt enthaltene

www.elektormagazine.de März/April 2019 63


schränkung ein alt(bekannt)er Hut.
Es gibt zwei weitere Möglichkeiten, die tödlichen Schwingun-
gen in den Körper zu leiten: die Kaltlaser- oder Low-Level-La-
ser-Therapie (LLLT) auf Basis nicht-thermischer Lichtphotonen
- Biophotonen, wie sie von Fritz-Albert Popp untersucht wur-
den - und die Pulsed-electromagnetic-field-Therapie (PEMFT).
Sowohl LLLT als auch PEMFT sind in der Alternativmedizin weit
verbreitet. Es gibt sogar Hinweise, dass sie einen leicht positiven
Effekt haben könnten. Nicht umsonst hat die US-amerikanische
Food-and-Drug-Administration (FDA) einige PEMFT-Geräte als
uenztherapiegerät. „Wellness-Geräte“ zugelassen.
einem Resonanzfreq
Patents von 1999 zu
Die erste Seite eines Da es keinerlei wissenschaftliche oder medizinische Nachweise
für den Nutzen von Rife-Maschines gibt, ist der Verkauf dieser
Maschinen in bestimmten Ländern illegal. Für Elektronikinge-
über den nicht-lokalen Raum zu senden und zu empfangen.“ nieure stellt das kein Problem dar, denn die meisten besitzen
Der Mechanismus ist also die Quantenverschränkung, bei der einen Funktionsgenerator in ihrem Labor oder haben zumin-
die Energie angeblich unmittelbar durch den nichtlokalen Raum dest Zugang zu einem. Im Grunde genommen müssen Sie nur
an die übergeordnete DNA weitergeleitet wird, die sich ja nur den Generatorausgang auf sichere Weise mit einem lebenden
beim betreffenden Patienten befindet (es scheint eine Hochprä- Menschen verbinden. Deshalb ist ja die Remote-Maschine so
zisionstechnik zu sein). Die Spooky2-Website fährt fort, dass interessant: Sie vermeidet den physischen Kontakt zwischen
Quantenverschränkung bedeutet, dass, „wenn irgendein Teil Generator und Patienten. Schließen Sie einfach den Ausgang
eines einzelnen Systems von diesem System an einen anderen des Generators an einen vom Patienten zur Verfügung gestell-
Ort entfernt wird, jede Aktion, die an diesem Teil durchgeführt ten Nagelabschnitt an (hier könnte die Impedanzanpassung ein
wird, auch sofort auf dem übergeordneten System ausgeführt Problem sein) und drehen Sie am Frequenzsteller. Die Ausgangs-
wird und umgekehrt“. Auch wenn dies stark vereinfacht klingt, leistung ist unwichtig, da die spiralförmige DNA-Antenne sehr
werden bekanntermaßen ähnliche Techniken seit Jahrhunder- effizient ist. Verbrennen Sie aber bloß nicht den abgeknipsten
ten in der sogenannten Sympathischen Magie (oder Analogie- Nagel mit Ihrer AC-Leistung! Seitdem ich in meinem Labor ein
zauber) eingesetzt. Deren Magiker glauben, dass, wenn eine solches System aufgebaut habe, das kontinuierlich über einen
Person mit einem Objekt in Berührung kommt, ein Teil ihrer weiten Frequenzbereich sweept, um viele Keime abzudecken,
Energie in das Objekt übertragen wird. Wenn man einen solchen habe ich mich nicht mehr mit der Spanischen Grippe infiziert!
Gegenstand, ein Haar oder eben ein Stückchen Fingernagel in Hinweis: Jegliche Verantwortung für Schäden oder Fehlfunktio-
eine (Voodoo-)Puppe einführt und in diese Puppe dann Nadeln nen, die durch den Einsatz von Resonanzschwingungen und/
steckt, so ist die Person, die energetisch mit dem Gegenstand oder Magie an Lebewesen sowie an unbelebten Objekten ver-
verbunden ist, direkt betroffen. Offensichtlich ist Quantenver- ursacht werden, wird ausdrücklich abgelehnt!

Hören Sie den Sound des Mars:


youtu.be/o3cxuIsEFRM

64 März/April 2019 www.elektormagazine.de


Tipps & Tricks
Wie kann man fes
tstellen, ob eine
Batterie leer oder
Test (BuT) einfac voll ist? Lassen Sie
h aus einer Höhe die Battery unde
von 20 cm auf ein r
(Tischplatte) fallen e harte, ebene Flä
. Wenn der Akku che
nur umkippt, ist hochspringt, ist er
er voll. Dass ist do leer, wenn er
ch Unsinn, oder?
Trick funktioniert Nein, dieser
tatsächlich bei nic
ht wiederaufladba
alkalischen AA- un ren
d AAA-Batterien.
Wirklich,
wir haben es in un
serem Labor ausp
robiert.
Der Grund dafür
ist das klebrige
Material im Inneren
der Batterie,
das sich verfestigt,
je mehr die
Batterie entladen
ist. So verliert
die Batterie ihre
stoßdämpfenden
Eigenschaften un
d
springt wieder in
die Höhe.

k tr o fa h r z e u g e z u le is e ?
Sind Ele ge für das Allheilmittel halt
en, gibt es
Obwohl viele Elektrofahrzeu mit denen
Beispiel die Lautlosigkeit,
doch erhebliche Mängel, zum or durch die
n lauten Verbrennungsmot
Elektrofahrzeuge ohne eine nicht, was zu
und Fußgänger hören EVs
Gegend huschen. Radfahrer d das Problem
en kann. Wie schwerwiegen
gefährlichen Situationen führ ierungen
erkennen, dass besorgte Reg
ist, kann man schon daran tstärkepegel für
prüfen, die einen Mindestlau
weltweit Rechtsvorschriften
z: Mehr Lärm muss her!
Elektrofahrzeuge prüfen. Kur Problem zu Leibe
e Technologien, die diesem
Glücklicherweise gibt es viel angehängten
Dauerhupens bis zu einer
rücken: im indischen Stil des Problem.
hen war halt noch nie ein
ame rika nisc hen Hoc hze iten her kennt. Lärm zu mac zum
man sie von 1552 von Analog Devices
Konservendosenkette, wie sie die Application Note AN-
gen wir jedo ch elektronische Ansätze, wie t eine Reihe von Geräusche
n, die so
chreibt. Ein EVWSS „erzeug
Bei Elektor bev orzu
tem (EV WS S) bes War ntöne
sollen. Der Fahrer kann
ning Sou nd Sys
Thema Electric Vehicle War nhe it eine s EVs aufmerksam machen
auf die Anw ese ch
beschaffen sind, dass sie Fuß
gänger chwindigkeiten jedo
lich), die bei niedrigen Ges
h wie bei eine r Fah rzeu ghupe, aber weniger aufdring hin zu realistischen Geräusche
n, die
auslösen (äh nlic bis
. Die se Ger äus che vari ieren von künstlichen Tönen Räd er
müssen schwebende Fahrzeuge ohn e
automatisch aktiviert werden r Kies bewegen“. Hatten die Autoren
und Reif en, die sich übe iker „Die Ritt er
Motorgeräusche nachahmen der Monty-Python-Filmklass
n man dies e AN lies t, kommt einem unweigerlich lapp ert, um
im Sinn, als sie das schrieb
en? Wen ussschalen zusammenk
ai Patsy zwei halbe Kokosn
“ von 197 5 in den Sinn , in dem König Arthurs Lak eine, die für den Motorsound
in
der Kokosn uss en vor,
iglic hes Ros s reit et. AD stellt zwei EVWSS-Lösung ersy stem e
anzudeuten, wie der König
sein kön -DSP ADSP-BF706. Einsteig
eine n exte rne n Lärm erze uger auf Basis des BlackFin
ist und
der Fahrerkabine zuständig
h den Sigm aDS P ADAU1450 verwenden.
können auc
180567-B-02

Möchten Sie mitmachen? Bitte senden Sie Ihre Kommentare, Anwendungen, Tipps und Tricks an labs@elektor.com!

www.elektormagazine.de März/April 2019 65


LABS PROJECT

Luftverschmutzungsmonitor
Ein Sensor misst die Luftqualität
Von Bera Somnath (Indien) und Roy Aarts (Elektor Labs)

Die Qualität der Luft, die wir atmen, sollte uns allen ein großes Anliegen sein. Nicht nur Staubpartikel,
sondern auch eine zu hohe Konzentration bestimmter Gase in der Atemluft sind schädlich für unsere
Gesundheit. Dieses kleine Gerät misst den Gehalt an luftverunreinigenden Gasen und löst einen Alarm aus,
wenn deren Konzentration einen bestimmten Wert überschreitet.

Eigenschaften
• Figaro TGS2600 Luftqualitätssensor
• Erkennt Gase wie Methan, Kohlenmonoxid, Isobutan,
Ethanol, Wasserstoff usw.
• WLAN (ESP32-basiert)
• Externes Netzteil 5 VDC, 0,5 A

66 März/April 2019 www.elektormagazine.de


Das Widerstandselement (RGAS; RS) im
Inneren des Sensors stellt den oberen INFOS ZUM PROJEKT
Teil eines Widerstandsteilers dar. Über ESP32
dem unteren Widerstand des Teilers RL,
Luftqualität
der extern als R2 angeschlossen wer-
Rauchmelder
den muss, bildet sich das resultierende
Ausgangssignal ab. Der Referenz-Wider-
Æ Einsteiger
standswert bei sauberer Luft ist RO, so
Fortgeschrittene
dass die Spannung über RS umgekehrt
Experte
proportional zur Luftverschmutzung
ist. Die Umgebungstemperatur und die
relative Luftfeuchtigkeit beeinflussen die
etwa 2 Stunden
Empfindlichkeit des Sensors ein wenig,
aber solange der Sensor im Bereich von
+10...50 °C eingesetzt wird, muss er
Bild 1. Der Figaro-Sensor TGS2600 erkennt
nicht kompensiert werden. Arduino-IDE,
Gase wie Methan, Kohlenmonoxid, Ethanol,
Lötkolben
Wasserstoff und Isobutan.
Die Schaltung ...
Der Einsatz des TGS2600 in einer Schal-
tung ist einfach: Es ist, wie in Bild 2
etwa 30 €
Der in diesem Projekt verwendete Sen- zu sehen, lediglich ein kleines Mikro-
sor TGS2600 des japanischen Gassen- controller-Board erforderlich, das über
sor-Spezialisten Figaro reagiert auf nied- einen integrierten Analog-Digital-Wand-
rige Konzentrationen verschiedener Gase ler (ADC) verfügt. Da wir die Daten nicht
wie Methan, Kohlenmonoxid, Ethanol, lokal anzeigen, sondern in einem Netz- wendet. Das Modul wird einfach auf eine
Wasserstoff und auch Isobutan, das häu- werk auf einer Webseite zur Verfügung Platine gesteckt, auf der sich auch alle
fig als Treibgas in Spraydosen eingesetzt stellen wollen, haben wir dafür das Mik- anderen Bauteile befinden (auch wenn
wird. Der Sensor erkennt diese Gase in rocontroller-Modul ESP32-Pico-Kit ver- sie sich teilweise unter dem Modul ver-
der Luft, kann sie aber nicht unterschei-
den. Außerdem ist der TGS2600 kein
+5V
echter Gassensor, sondern ein Gas-in-
ESP32 PICO KIT
Luft-Sensor, was bedeutet, dass er nicht K2 K1 R3 Buz1

1k
20 20
richtig funktioniert, wenn der Sauerstoff- FCS FSD1
19 19
FSD0 FSD3
gehalt zu niedrig ist. Da der TGS2600 auf 18 18
FSD2 FCLK
Veränderungen der Luftqualität reagiert, 17
SVP IO21
17 D
T1
16 16
kann er auch beispielsweise Zigaretten- SVN IO22 R4
G
15 15
IO25 IO19 1k
rauch erkennen. 14 14
IO26 IO23 S BS170
Obwohl der TGS2600 viele Arten von 13
IO32 IO18
13
12 12 S1
Gasen erkennt, gibt es einiges, was er 11
IO33 IO5
11
IO27 IO10
nicht erschnüffeln kann. Silikondämpfe 10 10
IO14 IO9 +5V
und hochkorrosive Umgebungen sind zu 9
IO12 RX0
9
+3V3 8 8
vermeiden, ebenso (Salz-)Wasser. Das R1 7
IO13 TX0
7
+3V3 3 4
IO15 IO35
vollständige Datenblatt des Sensors fin- D1
10k

6 6
IO2 IO34
den Sie im Projektdownload [1]. 5 5 IC1
IO4 IO38
4 4 BAT85
IO0 IO37 GAS TGS2600
3 3
+3V3 2 1
Über den Sensor 2
+3V3 EN
2
GND GND
R2
Der TGS2600 ist in einem kleinen Metall- +5V
1
+5V +3V3
1
C1
USB
10k

gehäuse untergebracht (Bild 1) und


100n
basiert auf einem Widerstandselement
aus Zinndioxid (SnO2). Damit dieses Ele-
* *
ment auf Änderungen der Gaskonzentra-
tionen reagieren kann, muss es zunächst
R7 R6 R5
durch ein internes Heizelement wohltem-
220

220

220

periert werden. Aus diesem Grund benö- +3V3

tigt der Sensor nach dem Einschalten LED3 LED2 LED1

1 2 3 4 5 6
einige Sekunden, bis er aufgeheizt und
K5 STA AP ALARM
damit betriebsbereit ist. Nur wenn der OLED
170182-018
Sensor zum ersten oder einige Wochen
nach dem letzten Mal in Betrieb genom-
men wird, muss man mit einer Startzeit Bild 2. Da die ganze harte Arbeit wirklich vom TGS2600 geleistet wird, fällt der Schaltplan des
von 15...20 Minuten rechnen. Luftqualitätsdetektors sehr einfach aus.

www.elektormagazine.de März/April 2019 67


stecken). Der Summer wurde noch nicht
eingesteckt. Die drei LEDs zeigen den
Status der drahtlosen Netzwerkverbin-
dung an (Bild 3). Die Platine passt exakt
in ein preiswertes Hammond-Gehäuse
Typ 1593k (Bild rechts).

Wir haben auch eine Version mit einem


zusätzlichen 0,96“-OLED-Display auf-
gebaut, allerdings nur auf einer Proto-
typing-Platine. Bis auf das Display sind
beide Versionen nahezu identisch, es wird
sogar derselbe Sketch tgs2600.ino ver-
wendet. Wie das Display angeschlossen
wird, erfahren Sie zu Beginn des Sket-
ches in den „Pin Definitions“.

... und die Software


Im Grunde genommen muss die Software
nur die Spannung über R2 messen. Mit
gegebenem R2 = 10 kΩ kann der Wert
von RS berechnet werden. Damit man RO
bestimmen kann, ist eine Kalibrierung
in möglichst sauberer Luft erforderlich
(siehe unten). Damit ist das Verhältnis
Bild 3. Einige Bauteile sind unter dem ESP32-Modul verborgen. Der TGS2600-Sensor steckt in der RS/RO a.k.a. Luftverschmutzung bekannt.
Blechdose rechts oben.

Weblinks
ThingSpeak
[1] Projektdownload: http://www.elektormagazine.com/170182-03
Luftqualitätsmessungen sind prädesti-
[2] U8g2lib Grafik-Library: https://github.com/olikraus/u8g2 niert, um auf die offene IoT-Plattform
[3] ESP32 Arduino-Core: https://github.com/espressif/arduino-esp32 ThingSpeak hochgeladen zu werden.
[4] SPIFFS Upload Tool: https://github.com/me-no-dev/arduino-esp32fs-plugin Man legt zunächst einen Channel mit
einem Datenfeld an und erhält einen
Write-API-Schlüssel, der auf der Kon-
figurationswebseite des ESP32 ein-
gegeben werden muss. Bei richtiger
Einstellung werden die Messungen
jeweils nach Ablauf des Messintervalls
STÜCKLISTE hochgeladen. Der gesendete Wert ist
der über das Intervall berechnete
Durchschnittswert.
Um die Daten an ThingSpeak zu sen-
den, wird zunächst ein HTTP-Re-
quest mit dem Sensorwert an die
Website gesendet. ThingSpeak ant-
wortet mit der Anzahl der Einträge
des Kanals oder mit Null (0), wenn
die Anforderung fehlgeschlagen ist.
Einer der Gründe dafür kann sein,
dass der API-Schlüssel falsch einge-
geben oder die Requests in zu schnel-
ler Abfolge gesendet wurden (Thing-
Speak begrenzt das Upload-Intervall
beim kostenlosen Zugang auf 15 s).
Das minimale Upload-Intervall unseres
Luftverschmutzungsmessers beträgt
deshalb eine Minute.

68 März/April 2019 www.elektormagazine.de


Die berechnete Luftverschmutzung wird
entweder in einem Liniendiagramm (für Ein Sketch für alles
maximal 20 Messungen) auf dem win- Ob Breadboard mit oder Platine ohne OLED-Display - beide Versionen verwenden
zigen OLED-Display angezeigt oder auf den gleichen Arduino-Sketch. Zur Unterscheidung der Versionen wird die Prä-
die beliebte ThingSpeak-IoT-Plattform Prozessordefinition #define USEDISPLAY in der ersten Codezeile verwendet.
hochgeladen, wo Messungen über einen Kommentieren Sie diese Zeile bei der Platinenversion aus oder entfernen Sie sie.
längeren Zeitraum als Liniendiagramm Wird ein Display eingesetzt, muss zusätzlich eine Bibliothek namens U8g2lib
dargestellt werden können. (unter: https://github.com/olikraus/u8g2) installiert werden. Mit ihr werden der
Die Messungen werden dort nicht Text und das Liniendiagramm auf dem Display gezeichnet.
nur gezeigt, sondern auch mit einem Um die Software auf den ESP32 hochzuladen, muss der ESP32-Arduino-Core in
Schwellwert verglichen. Wenn die Luft- der IDE installiert sein (unter: https://github.com/espressif/arduino-esp32). Nach
verschmutzung zu hoch wird, ertönt der der Installation muss auch das SPIFFS-Upload-Tool zum Hochladen der Webseite
Summer auf der Platine. Gemäß Daten- in das Dateisystem des ESP32 (unter: https://github.com/me-no-dev/arduino-
blatt ist ein RS/RO-Verhältnis von 0,85 esp32fs-plugin) installiert werden. Ist die IDE so vorbereitet, können unter
Werkzeuge/Board das ESP32-Pico-Kit ausgewählt und anschließend die Webseite
und der Sketch auf das ESP32-Modul hochgeladen werden.

(AP) befinden. Schalten Sie dazu die


Betriebsspannung des Moduls ein und
halten Sie dabei den Taster gedrückt, so
dass die LED2 (AP) leuchtet. Dann schlie-
ßen Sie einen Computer, ein Smartphone
oder ein Tablet an das ESP32-Netzwerk
an und navigieren Sie zur IP-Adresse
192.168.4.1, um die Konfigurations-
webseite des Luftverschmutzungsmes-
sers aufzurufen. Nun können Sie das
uploads (siehe Kas- WLAN-Netzwerk und die anderen oben
ten ThingSpeak). Auch das zu genannten Parameter einstellen.
verwendende WLAN-Netzwerk lässt Die Kommunikation zwischen der Web-
sich hier einstellen. Am wichtigsten ist seite und dem ESP32-Modul vollzieht
jedoch, dass Sie auf dieser Seite den sich über asynchrone XMLHttpRequests
ein vernünftiger Reinluftwiderstand RO kalibrieren können. auf der Webseite. Wenn die Seite gela-
Wert für den Alarm. Dazu sollte der Sensor für eine Weile (das den wird, wird ein HTTP-Request gebil-
Der Alarmschwellwert ist auf dem Display Datenblatt spricht von sieben Tagen!) in det und an den ESP32 gesendet. Nach
als gestrichelte horizontale Linie sicht- einer Reinluftumgebung betrieben wer- Erhalt dieser Anforderung sendet der
bar. Wenn der Alarmsummer ertönt, kann den, damit sich der Widerstand stabili- ESP32 eine Antwort mit der aktuellen
er mit einem Druck auf die Taste zum siert. Nach Ablauf dieser Zeit drücken Konfiguration an die Webseite zurück.
Schweigen gebracht werden. Sie die Taste „Calibrate sensor“, um den Drückt man auf einen Submit-Button auf
Durch Drücken der Taste werden auch Wert dauerhaft zu speichern. der Webseite, führt dies zu einer ähnlich
einige Informationen über die aktuelle ablaufenden Kommunikation, die aber
WLAN-Verbindung, den Alarmschwell- Access-point-Modus auch die vom Benutzer eingegebenen
wert und den Status von ThingSpeak Bei der erstmaligen Einrichtung muss Werte enthält.
angezeigt. sich der ESP32 im Access-point-Modus 170182-03

Konfiguration und Kalibrierung


Wir hätten es dabei belassen können,
aber wo wäre dann der Spaß? Um die im elektor-shop
Sache interessanter zu machen, wurde
ªLuftverschmutzungsmonitor, Leerplatine
ein kleiner Webserver hinzugefügt. Dies
www.elektor.de/air-pollution-monitor-170182-1
ermöglicht die Konfiguration des Luftver-
schmutzungsmonitors über eine komfor- ªESP32-Pico-Kit
www.elektor.de/esp32-pico4
table Webseite, die vom ESP32 selbst
gehostet wird. Auf dieser Seite können ªLuftschadstoffsensor TGS2600
www.elektor.de/tgs2600-air-sensor
der Alarmschwellwert sowie die Thing-
Speak-Einstellungen eingestellt wer- ª128x64-OLED-Display (0,96“), 6-polig
den, das heißt, der API-Schlüssel, der www.elektor.de/oled-display-for-arduino
für das Hochladen der Daten benötigt
wird, und die Zeit zwischen zwei Daten-

www.elektormagazine.de März/April 2019 69


Kanalfiltertechniken
Ein Mittel gegen Bandbreitenverschwendung

Von Robert Lacoste

Dieser Artikel ist eine Einführung in das umfangreiche Thema der Kanalfilterung. Es geht darum, ein binäres
Signal zwischen Empfänger und Sender zu filtern, um die belegte Bandbreite deutlich zu reduzieren, ohne die
Fehlerrate zu erhöhen. Im Folgenden finden Sie dazu verschiedene, mehr oder weniger effektive Filtertechniken.

Im vorherigen Artikel [1] habe ich Ihnen stellung der 1 (zum Beispiel 5 V), und für die Kommunikation zwischen zwei
die wichtigsten Techniken zur „Online-Co- eine andere Spannung für die 0 (zum Bei- Chips auf einer Leiterplatte. Im wirkli-
dierung” vorgestellt. Zur Erinnerung: Es spiel 0 V) verwendet. Das ist genau das, chen Leben müssen Sie die benötigte
ging um die optimale Methode, Nullen was auch der UART Ihres Lieblings-Mi- Bandbreite jedoch oft so weit wie möglich
und Einsen in eine analoge Spannung krocontrollers macht (Bild 1a). Diese reduzieren. Dafür gibt es viele Gründe:
(Basisbandsignal) zu verwandeln, um die Methode funktioniert sehr gut, wie die Zum Beispiel wegen minderwertiger
verfügbare Bandbreite optimal zu nutzen Vielzahl der Projekte mit UARTs zeigen, Kabel, aus Gründen der elektromagne-
und dem Empfänger die Arbeit zu erleich- die in dieser Zeitschrift bereits veröffent- tischen Verträglichkeit, wegen der durch
tern. Diese Spannung kann dann direkt licht wurden. Normen vorgegebenen Bandbreite der
über zwei Drähte oder, bei drahtlosen Funkkanäle, oder um den Durchsatz im
Verbindungen, durch Modulation eines Warum filtern? betreffenden Kanal so weit wie möglich
Hochfrequenzträgers an einen entfernten Wenn alles gut funktioniert, warum dann zu erhöhen.
Empfänger gesendet werden. noch diesen Artikel lesen, in welchem
Um es einfacher zu machen, hatte ich auf ich Ihnen erklären werde, dass es rat- Daher versuchen wir oft, nur die unbe-
das Beispiel einer gewöhnlichen, draht- sam ist, ein Filter in den Signalweg ein- dingt notwendige Bandbreite zu nut-
gebundenen Kommunikation zurückge- zufügen? Das Ganze ist eine Frage der zen. Dazu wird ein Filter zwischen der
griffen. Bleiben wir also beim gleichen spektralen Effizienz. Mit anderen Worten: Datenquelle (z. B. UART) und dem Sen-
Beispiel und stellen uns vor, dass Sie Ohne Filter würden Sie eine viel zu große der eingesetzt (Bild 1b). Der Zweck die-
eine Million Bits pro Sekunde (1 MBit/s) Bandbreite für Ihre 1-MBit/s-Übertragung ses Filters besteht darin, die vom Signal
zwischen zwei entfernten Geräten über- benötigen (weiter unten erfahren Sie, belegte Bandbreite zu reduzieren, indem
tragen müssen. Nehmen wir der Einfach- warum das so ist). Doch warum darf ein man die hohen Frequenzen abschneidet.
heit halber weiterhin an, Sie entscheiden Übertragungskanal nicht zu viel Überka- Die Herausforderung besteht darin, die
sich für die simpelste Kanalcodierungs- pazität aufweisen? Wenn Sie ein Ether- Eigenschaften des Systems in Bezug auf
methode namens NRZ. Zur Erinnerung: net-Kabel der Kategorie 6 (angegeben für Bitrate und Fehlerraten dabei nicht zu
NRZ (Non Return to Zero) bedeutet, dass 1 GBit/s) verwenden, um die Rate von 1 beeinträchtigen. Wie funktioniert solch
die Bits so gesendet werden, wie sie sind: MBit/s über einige Meter zu übertragen, ein Filter? Ich werde versuchen, es zu
Eine bestimmte Spannung wird zur Dar- ist eine Filterung unnötig. Dasselbe gilt erklären.

70 März/April 2019 www.elektormagazine.de


Kleiner Ausflug ins Reich der
Fourier-Transformation
Sie sind es jetzt schon gewohnt, zwi- Übertragungs- Empfangenes
Digitales Signal
a (1 Mbps, NRZ) medium Signal
schen den Zeit- und Frequenzbereichen (1 Mbps)
hin und her zu wechseln, und Sie wis-
sen, dass auch die Fourier-Transforma- Nicht voll genutzte
tion genau dies tut. Zur Auffrischung Bandbreite

Ihrer Erinnerung (oder für neue Leser)


werfen Sie bitte einen Blick auf Bild 2.
Teil a zeigt ein sinusförmiges Signal, hier Digitales Signal Übertragungs- Empfangenes
Kanal-
b medium Signal
500 kHz, und dessen Fourier-Transfor- (1 Mbps, NRZ) filter
(1 Mbps)
mation (d.h. sein Frequenzspektrum). Es
überrascht nicht, dass es nur eine Linie Optimierte Akzeptable
auf dem Spektrum gibt, die genau der Bandbreite Fehlerquote
Frequenz von 500 kHz entspricht. Was
ist mit der Fourier-Transformation eines
Bild 1a. Die direkte Übertragung eines digitalen Rohsignals, in diesem Fall NRZ mit 1 MBit/s, ist eine
500-kHz-Rechteck-Signals? Betrachten
Verschwendung von Bandbreite. b. Die Verwendung eines Filters reduziert die für die gleiche Bitrate
wir dazu Bild 2b. Das Spektrum des erforderliche Bandbreite, jedoch mit dem Risiko von erhöhten Übertragungsfehlern.
Signals enthält Linien bei 500 kHz (der
Grundfrequenz) – aber auch bei allen
ungeraden harmonischen Frequenzen: nämlich sin(x)/x mit Nullen bei 1 MHz, tenbegrenzung zurückzukommen, zeigt
1500 kHz, 2500 kHz, und so weiter – 2 MHz usw., wie in Bild 3a dargestellt. dieses Spektrum, warum ein Filter not-
aber mit abnehmenden Amplituden. Wie Im Falle einer Zufallsfolge gibt es Ket- wendig ist: Das Frequenzspektrum eines
üblich wurden all diese Beispiele mit klei- ten der Werte 1 und 0 in allen möglichen ungefilterten NRZ-Signals enthält Kom-
nen Scilab-Scripts [2] erstellt, die von Kombinationen, und alle entsprechenden ponenten bis zu theoretisch unendlichen
der Elektor-Website [3] heruntergeladen Spektren addieren sich. Die resultierende Frequenzen! Natürlich ist diese „Unend-
werden können. Es ist durchaus lohnens- Fourier-Transformation ist recht komplex lichkeit” in Wirklichkeit begrenzt, aber
wert, sich näher mit Ihnen zu befassen. (Bild 3b), aber ihre prinzipielle Form ent- die Bandbreitenauslastung wird immer
Kommen wir nun zu einem interessante- spricht immer noch der sin(x)/x-Funktion. viel höher sein als nötig.
ren Beispiel: Was ist die Fourier-Transfor- Noch wichtiger ist, dass dieses Spektrum,
mation eines einzelnen Datenbits, das im genau wie das eines einzelnen 1-MBit/s- Tiefpassfilter?
NRZ-Verfahren mit 1 MBit/s übertragen Pulses, bei jedem Vielfachen von 1 MHz Sie haben jetzt sicher verstanden, dass
wird? Dieses Signal ist nichts anderes den Wert Null besitzt. ein Filter zwischen der binären Signal-
als ein Impuls, der genau eine Mikrose- Um auf unser Problem der Bandbrei- quelle und dem Sender (oder Modulator
kunde lang ist. Seine Fourier-Transfor-
mation hat die seltsame Struktur, die in
Bild 2c dargestellt ist. Kommt sie Ihnen
bekannt vor? Es handelt sich um die kar-
dinale Sinusfunktion (sin(x)/x), die ich in
diesem Zusammenhang bereits mehrfach
erwähnt habe. Schauen Sie doch ein- a
mal genauer hin! Ihr Frequenzspektrum
reicht bis ins Unendliche und wird durch
aufeinanderfolgende Maxima gebildet.
Das erste um 0 Hz zentrierte Maximum
ist doppelt so breit wie die anderen. Die
Funktion hat zwischen den einzelnen b
Maxima, d.h. bei Frequenzen mit einem
Vielfachen von 1 MHz, den Wert Null.
Vergleichen Sie die drei Kurvenpaare in
Bild 2. Sicher werden Sie einige interes-
sante Gemeinsamkeiten finden.
c
NRZ ohne Filterung?
Wie sieht nun das Spektrum eines zufäl-
ligen Bitstroms aus, der mit NRZ und
einem MBit/s übertragen wird? Wenn das
Signal eine Eins ist, gefolgt von einer lan-
gen Kette von Nullen, dann ist das Fre- Bild 2a. Die Fourier-Transformation einer sinusförmigen Welle ist eine einzelne Linie bei der
quenzspektrum identisch mit demjenigen Trägerfrequenz. b. Ein Rechtecksignal hat spektrale Komponenten bei allen ungeraden Oberwellen.
des gerade besprochenen 1-µs-Pulses, c. Das Spektrum eines einzelnen Impulses ist die sin(x)/x-Funktion.

www.elektormagazine.de März/April 2019 71


zweiter Ordnung und variabler Grenzfre-
quenz erstellt (Bild 4). Die Diagramme
verdienen eine kleine Erklärung. Die
linke Spalte zeigt das Spektrum des
ungefilterten Signals (oben), ein Spek-
a trum mit einem Tiefpassfilter und einer
3-dB-Grenzfrequenz bei 310 kHz (Mitte)
sowie 410 kHz (unten). Die Filterant-
wort ist rot dargestellt. Die Diagramme in
der mittleren Spalte zeigen ein paar Bits
des gefilterten Signals – also im Zeitbe-
reich, als ob Sie ein Oszilloskop benut-
zen würden.
b Die rechte Spalte wird als Augendia-
gramm des empfangenen Signals
bezeichnet. Das mag beeindruckend klin-
gen, aber es ist ein sehr einfaches Kon-
zept: Stellen Sie sich vor, Sie haben ein
Speicher-Oszilloskop. Triggern Sie es bei
jeder steigenden oder fallenden Flanke
Bild 3a. Das Spektrum eines 1-Bit-Impulses ist eine sin(x)/x-Funktion. Bild 3b. Das Spektrum einer
des Eingangssignals, skalieren Sie es so,
zufälligen binären Sequenz ist komplexer, hat aber prinzipiell immer noch die gleiche Form wie
sin(x)/x, mit Nullen bei jedem Vielfachen der Taktfrequenz (hier jedes MHz). dass zwei Bits über die Breite des Bild-
schirms angezeigt werden, von denen
sich eines in der Mitte des Bildschirms
befindet. Danach überlagern Sie alle fol-
für ein Funksystem) sinnvoll ist. Aber zu dekodieren. genden Kurven auf dem Bildschirm, also
welche Eigenschaften sollte es besitzen? Um hohe Frequenzen zu begrenzen, alle gezeigten Zufallsmuster. Auf diese
Zuerst muss es die hohen Frequenzen so benötigen Sie natürlich ein Tiefpass- Weise erhalten wir ein Augendiagramm.
weit wie möglich dämpfen. Es muss aber filter. Warum also kein herkömmliches Dieses Diagramm verdeutlicht auf einen
auch dem Empfänger ermöglichen, das Filter verwenden, zum Beispiel ein But- Blick die Schwierigkeit, die der Empfän-
Signal fehlerfrei oder genauer gesagt, terworth-Filter? Ich habe dazu eine ger haben wird, um die Bits fehlerfrei
so fehlerfrei wie gerade noch tolerierbar Simulation mit einem Butterworth-Filter zu erkennen. Je besser die Kurven, die

Bild 4a. Das Spektrum eines Zufallssignals ohne Filterung und sein Augendiagramm rechts. Bild 4b. Mit einem Butterworth-Filter von 310 kHz ist das
Signal stark verzerrt und das Augendiagramm fast geschlossen. Bild 4c. Mit einer höheren Grenzfrequenz (410 kHz) sind die Inter-Symbol-Interferenzen
tolerierbar und das Spektrum zeigt Komponenten bis zu 2 MHz.

72 März/April 2019 www.elektormagazine.de


die 1 darstellen, von den Kurven, die trum ist ab 2 MHz sehr reduziert. Umgekehrt hat ein schmales Filter im
die 0 repräsentieren, auf dem Bildschirm Frequenzbereich eine lange Impulsant-
säuberlich getrennt bleiben, desto ein- Gauß-Filter wort und damit einen hohen ISI-Wert
facher wird der Empfang; zum Beispiel Der Einsatz eines Tiefpassfilters, auch (Bild 5c). Der für Bild 5b gewählte Zwi-
mit einem Spannungskomparator. Man eines einfachen, führt daher zu einer schenwert liegt nahe am Optimum, mit
sagt dann, dass das Auge „offen” ist, weil deutlich besseren Bandbreitenausnut- einem ISI von nahezu Null und einer
sich die aufeinanderfolgenden Bits beim zung. Das vorherige Beispiel zeigt, dass angemessenen Bandbreitenbelegung von
Überlagern nicht überschneiden und ein die gleichen Signale von 1 MBit/s mit etwa 2 MHz. Vergleicht man diese Simu-
klares, deutliches Bild ergeben. Ein Ver- einer drastisch reduzierten Bandbreite lation mit derjenigen des Butterworth-Fil-
schmieren der Kurven (Auge geschlos- übertragen werden können. Aber gibt es ters, so stellt man fest, dass die insge-
sen) wird als Inter-Symbol-Interfe- noch eine bessere Lösung? samt genutzte Bandbreite ähnlich ist, in
renz (ISI) bezeichnet und erschwert Die Antwort lautet ja. Die klassi- beiden Fällen 2 MHz, aber das Gauß-Filter
den Empfang. Offensichtlich wird dieses sche Lösung ist die Verwendung eines liefert ein viel reineres Empfangssignal.
Phänomen durch Filterung noch in gewis- Gauß-Filters. Das ist ganz einfach nur ein Aus diesem Grund sind Gaußsche Fil-
sen Fällen weiter verstärkt. Filter, das einen Frequenzgang in Form ter sehr gut für die genannten Zwecke
Werfen Sie noch einmal einen Blick auf einer halben „Gaußglocke“ besitzt: Es geeignet.
die Butterworth-Filtersimulationen. Die hat keine genau definierte Grenzfrequenz Das „G” in Abkürzungen wie GMSK oder
erste Linie (Bild 4a) hat ohne Filterung und senkt die hohen Frequenzen allmäh- GFSK bedeutet daher nicht anderes, als
ein völlig offenes Auge. Die zweite Zeile lich mit einem in Richtung Null streben- dass diese Modulationstechniken ein
(Bild 4b) mit einer 3-dB-Grenzfrequenz den, sehr weichen Verlauf ab. Schließlich Gaußfilter verwenden. Sie sind sogar
von 310 kHz zeigt ein sehr enges Fre- hat die Gauß-Kurve eine bemerkenswerte das Herzstück von Mobiltelefonen und
quenzspektrum von 1 MHz, allerdings Eigenschaft: Ihre Fourier-Transforma- Bluetooth-Geräten.
zum Preis eines sehr hohen ISI-Wertes: tion ist ebenfalls eine Gauß-Kurve. Dies
Das Augendiagramm ist fast geschlossen, bedeutet, dass ihre Antwort im Zeitbe- Von Gauß zu Nyquist
was bedeutet, dass Empfangsfehler auf- reich die gleichen Eigenschaften hat. Ein Gauß-Filter funktioniert bereits aus-
treten, sobald es zu Störungen kommt. Eine kleine Simulation wird Ihnen helfen, gezeichnet, aber natürlich haben Mathe-
Die dritte Zeile (Bild 4d) mit einem Filter dies zu verstehen (Bild 5). Wenn wir matiker trotzdem immer weiter danach
von 410 kHz scheint ein fairer Kompro- ein sehr breitbandiges Gaußfilter neh- geforscht, wie man einen noch besseren
miss zu sein. Sein ISI-Pegel ist angemes- men (Bild 5a), ist seine Impulsantwort Wirkungsgrad für die Bandbreitenaus-
sen, auch wenn er noch gut sichtbar ist eine sehr schmale Gauß-Kurve, es gibt nutzung erreicht. 1928 veröffentlichte
(aufeinanderfolgende Kurven passieren fast keine Inter-Symbol-Interferenz und Harry Nyquist einen berühmten Artikel
nicht den gleichen Punkt), und das Spek- das Augendiagramm ist vollständig offen. mit dem Titel „Einige Faktoren, die die

Bild 5a. Ein Beispiel für ein ziemlich breites Gaußfilter mit einem perfekten Signal. Bild 5b. Hier ist das Gaußfilter viel enger, aber der ISI-Wert bleibt
Null. Bild 5c. Bei einem zu engen Filter erscheinen die Inter-Symbol-Interferenzen wieder.

www.elektormagazine.de März/April 2019 73


Datendurchflussrate bei Telegrafenüber- so breit (2T). Was passiert, wenn wir dungspunkten genau Null sind, außer
tragungen beeinflussen”. In diesem Text zwei sin(x)/x-Funktionen nehmen, sie einem. Von dort aus liefert die Summe
bewies er eine grundlegende Tatsache genau um T Sekunden verschieben und dieser drei Impulsantworten ein Signal,
(ein Beweis, der später von Claude Shan- addieren? Wenn die erste Funktion ihr das genau dem Eingangssignal zu den
non erweitert wurde): Um eine Anzahl Maximum erreicht, ist die andere Null Abtastzeiten entspricht (Bild 6, rechts).
von R Symbolen pro Sekunde ohne und umgekehrt. Daher wird es zu diesem Für diejenigen, die an fortgeschrittene-
Interferenz zwischen den Symbolen zu Zeitpunkt keine ISI geben. Das ist die ren Funkprotokollen interessiert sind: All
übertragen, muss die minimale Band- Idee, aber wie setzen wir sie um? Denken dies ist eng mit den OFDM-Protokollen
breite R/2 Hz betragen. Sicher kennen Sie daran, dass die sin(x)/x-Funktion die verbunden, aber Details würden einen
Sie dieses Nyquist-Gesetz wahrschein- Fourier-Transformation eines Einheits- weiteren Artikel erfordern.
lich in seiner entgegengesetzten Form: pulses ist. Umgekehrt bedeutet dies, dass Doch zurück zum Thema und damit zu
Ein Bandbreitensignal von B Hertz muss die Impulsantwort eines perfekt steilen einem zufälligen 1-MBit/s-Binärsignal,
mit mindestens 2B Samples pro Sekunde Filters auch der Funktion sin(x)/x genügt. das in NRZ kodiert ist und ein unendlich
abgetastet werden. Eine solche Impulsantwort ermöglicht es, steiles Filter passiert. Ich habe die Simu-
Da wir also in unserem Beispiel 1 MBit/s das zu erhalten, wonach wir suchen. Stel- lation für Sie durchgeführt (Bild 7). Die
zu übertragen haben, sollten wir in der len wir doch einfach T auf einen Wert von verschiedenen Linien zeigen Ihnen das
Lage sein, eine Lösung mit nur 500 kHz 1/2 MBit/s ein, also auf eine Grenzfre- Ergebnis der Simulation mit einer leicht
Bandbreite und ohne ISI zu finden. Dies quenz von 500 kHz. Eine weitere kleine variablen Grenzfrequenz: 460 kHz oben,
wäre eine enorme Verbesserung gegen- Scilab-Simulation wird Ihnen helfen, den genau 500 kHz in der Mitte und 540 kHz
über den 2 MHz, die wir mühsam mit Grund für dieses sehr überraschende unten. Wenn das Filter nicht exakt einge-
früheren Filtern erhalten haben. Glückli- Ergebnis zu verstehen (Bild 6). Hier stellt ist, liegt ein sehr hoher ISI-Wert vor
cherweise erklärte Nyquist auch, wie man werden aus Gründen der Einfachheit die (Bilder 7a und 7c). Ist es dagegen genau
das macht: Theoretisch ist das optimale Eingangsbits nicht in NRZ kodiert, son- auf die halbe Bitrate eingestellt (hier 1
Filter ein unendlich steiles Tiefpassfilter, dern als positive oder negative Impulse MBit/s geteilt durch 2 = 500 kHz), ver-
dessen Eckfrequenz genau bei R/2, also dargestellt. Wenn ein solcher Impuls ein schwindet die Inter-Symbol-Interferenz
hier bei 500 kHz, liegt! Filter passiert, ist der Ausgang per Defi- wie von Geisterhand (Bild 7b). Dies ist im
Eine kleine Erklärung für all diejenigen, nition die Impulsantwort des Filters. Ich Augendiagramm deutlich sichtbar: Alle
die sich von der Theorie nicht abschre- nahm das Beispiel von drei aufeinander- Verläufe erscheinen zufällig, durchlaufen
cken lassen (alle anderen, bitte diesen folgenden Bits, jeweils 1, 1 und 0 (Bild 6, aber genau den gleichen Punkt in dem
Absatz überspringen): Denken Sie kurz Spalte 1). Die resultierenden Impulsant- Moment, in dem es notwendig ist, zu ent-
an die sin(x)/x-Funktion. Diese Funktion worten sind in der zweiten Spalte dar- scheiden, ob es sich um eine 1 oder eine
besitzt zwischen ihren Maxima perio- gestellt. Man kann sehen, dass diese 0 handelt. In der mittleren Spalte habe
disch auftretende Nullwerte im Abstand der Funktion sin(x)/x entsprechen und ich (in rot) die simulierte Impulsantwort
T und ist an ihrer Hauptkeule doppelt dass die Wellenformen an den Entschei- für zwei aufeinanderfolgende Bits sowie

Bild 6. Ein Nyquist-Filter hat eine optimale Leistung. Hier werden drei Bits als positive oder negative Impulse kodiert (erste Spalte). Das Filter erzeugt
drei zeitversetzte sin(x)/x-Funktionen (zentrale Spalte). Die Summe dieser drei Signale weist keine Inter-Symbol-Interferenzen mehr auf (rechts).

74 März/April 2019 www.elektormagazine.de


a

Bild 7. Ein Nyquist-Filter hat keine Inter-Symbol-Interferenzen, wenn seine Grenzfrequenz genau 500 kHz bei 1 MBit/s beträgt (Bild 7b, in der Mitte).
Etwas niedrigere (obere) oder höhere (untere) Grenzfrequenzen verschlechtern das Verhalten erheblich.

eine Kopie des Eingangssignals (in grün) nicht? Warum nicht ein Filter, das immer Wird er erhöht, ist das Filterprofil etwas
hinzugefügt. Wie erwartet, ist das gefil- eine Grenzfrequenz von R/2 besitzt, mit entspannter und sein Spektrum breiter.
terte Signal genau gleich dem Eingangs- einer etwas weniger geraden Steigung Erhöhte Cosinusfilter haben zwei Vorteile.
signal in den Entscheidungsmomenten. und trotzdem frei von Inter-Symbol-In- Zunächst ist das Spektrum des gefilter-
terferenzen?“ Diese Lösung wird als ten Signals begrenzt: Wenn Sie w = 0,8
Das Raised-Cosine-Filter Raised-Cosine-Filter oder Wurzel-Co- wählen, sind im gefilterten Signal theo-
Klingt fast nach Zauberei! Ein solches sinus-Filter bezeichnet. Seine genaue retisch keine Frequenzen, die größer sind
Nyquist-Filter bietet eine optimale Band- Definition findet man in der Literatur – als das 0,8-fache der Nyquist-Frequenz.
breiteneffizienz ohne ISI. Großartig, aber insbesondere in dem großartigen Buch Dies ist ein großer Vorteil gegenüber her-
leider kann niemand solch ein perfekt von Bernard Sklar [4]. Zusammenfas- kömmlichen Tiefpassfiltern, die bei hohen
steiles Filter in der Praxis aufbauen. Diese send lässt sich sagen, dass dieses Filter Frequenzen immer einen kleinen Sig-
Lösung ist rein theoretisch zwar optimal, zu einer Familie von Filtern gehört, in nal-Anteil durchlassen. Zweitens ist der
aber oft nicht realisierbar. Doch helfen denen der Wert w eine wichtige Rolle ISI-Wert immer strikt Null, unabhängig
uns mal wieder die Mathematiker wei- spielt. Wenn w nahe bei 0,5 liegt, arbeitet von dem für w gewählten Wert. Ich habe
ter: „Ihr wollt unser perfekt steiles Filter das Filter ähnlich wie ein Nyquist-Filter. einmal eine Simulation mit verschiede-

Weblinks
[1] „Digitale Modulation: Codierung der Daten”, Elektor 09-10/2018: www.elektormagazine.de/magazine/elektor-69/42270
[2] Scilab Simulationssoftware: www.scilab.org
[3] Artikelseite (Scilab-Skripte zum Herunterladen): www.elektormagazine.de/180509-02
[4] „Digital communications – Fundamentals and Applications “, 2nd edition, Bernard Sklar, Prentice Hall,
ISBN 0-13-084788-7:
[5] „Pulse shaping“, Wikipedia: http://en.wikipedia.org/wiki/Pulse_shaping
[6] „Inter Symbol Interference (ISI) and Root-raised Cosine (RRC) filtering “, Charan Langton:
http://complextoreal.com/wp-content/uploads/2013/01/isi.pdf
[7] High Performance Narrow Band ISM ADF7021 Transceiver-Chip, Analog Devices Inc.:
www.analog.com/en/rfif-components/rfif-transceivers/adf7021/products/product.html

www.elektormagazine.de März/April 2019 75


Bild 8. Ein Raised-Cosine-Filter verhält sich ähnlich wie ein Nyquist-Filter, jedoch mit einer weniger steilen Cutoff-Charakteristik – hier mit einem
Nullsignal bei 550 kHz (oben), 750 kHz (Mitte) und 900 kHz (unten). In allen Fällen ist der ISI-Wert zu den Abtastzeiten Null.

nen Werten von w durchgeführt (Bild 8). ausgelegt sein, dass Inter-Symbol-Inter- Im nächsten Artikel werde ich den
Noch einmal, die Scilab-Quelldateien für ferenzen minimiert werden. Die ideale Bereich der Funkelektronik etwas näher
all diese Simulationen befinden sich auf Lösung, das Nyquist-Filter, begrenzt das unter die Lupe nehmen, indem ich über
der Elektor-Website – also einfach mal Spektrum auf die Hälfte der übertrage- Mischer spreche.
herunterladen und ausprobieren. nen Bitrate (500 kHz für 1 MBit/s), aber 180509-02
dieses Filter ist nur ein Traum von Mathe- Dieser Artikel wurde in der Zeitschrift Circuit
Zum Schluss matikern. Raised-Cosine und Gaußsche Cellar (Nr. 285, April 2014) veröffentlicht.
Ein so kurzer Artikel kann natürlich nur Filter sind zwei Klassen von realisierbaren
als Einführung in das umfangreiche Filtern, die ein mehr als interessantes
Thema Kanalfilterung aufgefasst werden. Komplexitäts-/Leistungsverhältnis bieten.
Ich hoffe, Sie haben die Idee verstanden: Alles, was ich hier vorgestellt habe, gilt
Die Übertragung eines digitalen Rohsig- unabhängig vom Kommunikationska-
nals, ganz gleich, mit welchem Medium, nal, ganz gleich, ob es sich nun um zwei
ist eine Verschwendung von Bandbreite. Drähte, eine drahtlose Verbindung mit
Ein Filter kann das belegte Band deutlich Amplituden-, Frequenz- bzw. Phasenmo-
reduzieren, ohne die Fehlerrate deutlich dulation, um Trägermodems oder gar um
zu erhöhen. Dieses Filter muss jedoch so optische Verbindungen handelt.

76 März/April 2019 www.elektormagazine.de


LABS PROJECT

Taupunkt-Messgerät
mit ENS210 als BoB
Mit Beispiel-Implementierung für Arduino Uno

Von Luc Lemmens (Elektor-Labor) und Roland Stiglmayr

Die physikalische Größe „Taupunkt“ erlaubt nicht nur die Beurteilung des Risikos von Schimmelpilzbefall,
sondern auch der Korrosion von Gegenständen aus Stahl und Werkzeugen. Lüftung und Heizung ermöglichen
die Beeinflussung des Taupunkts. Für eine solche Beeinflussung muss aber zuvor der Taupunkt bestimmt
werden. Genau das macht dieses intelligente Messgerät.

lich der im Moment präziseste, vorkali- theoretische Hintergründe interessieren,


Eigenschaften brierte Sensor überhaupt. Er erfasst die sollten Sie unbedingt den informativen
• Dank Breakout-Board (BoB) Temperatur mit einer Genauigkeit von Wikipedia-Eintrag [1] dazu lesen. Einfach
einfache Verwendung des ENS210. ±0,2 °C in einem Bereich von 0…70 °C gesagt ist der Taupunkt die Temperatur,
• Kleiner aber hochpräziser ohne Kalibrierung. Damit eignet sich der bei der (bei gegebener absoluter) die
Temperatur- und Feuchtesensor. Sensor ENS210 sogar als Referenz für die relative Luftfeuchtigkeit 100 % beträgt.
• Beispielanwendung für Arduino Uno. Kalibrierung anderer Temperatur- und Zusätzlich wird auch die Differenz zwi-
Feuchtigkeitssensoren. schen Taupunkt und aktueller Temperatur
bestimmt, da dieser Wert ein sehr guter
In erster Linie handelt es sich hier also Taupunkt – was ist das? Indikator für das Risiko von Schimmel-
um ein sehr präzises Messgerät. Seine Der Taupunkt wird nicht direkt gemessen, bildung oder Korrosion ist.
hohe Messgenauigkeit von Temperatur sondern aus den Messergebnissen für
und Luftfeuchtigkeit macht es für die Temperatur und relativer Luftfeuchtig- Achtung:
Erfassung des Taupunkts ideal. Beim keit berechnet. Dazu wird die sogenannte Besonders kleines Objekt…
verwendeten Sensor handelt es um Magnus-Taupunkt-Annäherung verwen- Experimente mit den neuesten ICs
den Typ ENS210 von a m s – vermut- det. Wenn Sie sich für Mathematik und werden zunehmend durch ihre extrem

www.elektormagazine.de März/April 2019 77


INFOS ZUM PROJEKT
ENS210
Arduino
BoB

Einsteiger
Æ Fortgeschrittene
Experte
Bild 1. Klein, kleiner, ENS210. Dieser Taupunkt- Bild 2. Eine improvisierte aber durchaus funkti-
Sensor von a m s ist wirklich winzig (Foto des onierende Methode zur Montage eines ENS210
rund 0,5 Stunden Autors). auf einer Lochrasterplatine (Foto des Autors).

Arduino Uno,
Arduino-IDE, BoB, R1, R2: NOT mounted

Lötkolben R1 R2
C1
ENS210

2k2

2k2
Bottom View
100n
GND VDD
etwa 15 € K1
+3V3
SCL
SDA SCL
SDA
GND
GND

geringe Größe beeinträchtigt. Diese Mini-


180306-010
aturisierung ist eine Folge dessen, dass
immer mehr Funktionen in immer klei-
nere Geräte gestopft werden, also indi- Bild 3. Schaltung des BoB mit ENS210 von Elektor. Die I2C-Pullups R1 (SCL) und R2 (SDA) sind optional.
rekt ein Resultat unser eigenen „Kun-
denbedürfnisse“. Der Sensorchip ENS210
bildet mit seinem nur 2×2 mm messen-
den Gehäuse (Bild 1) keine Ausnahme. winzigen Chip auf ein Stück Experimen- len bestückt werden:
Wie Sie auf Bild 2 sehen können, ist es tierplatine (Lochrasterplatine) zu löten. • Wenn keine weiteren Pullups auf den
dem Autor mit etwas Mühe gelungen, den Frustration über die unmögliche Winzig- SDA- und SCL-Leitungen des Sys-
keit moderner ICs ist eine Sache – nach tems vorhanden sind.
Lösungen zu suchen, um mit ihnen über- • Wenn eine Spannungsbegren-
haupt umgehen zu können, ist besser. zung erforderlich ist, weil ein IC am
Aus diesem Grund hat das Elektor-La- I2C-Bus mit 5 V arbeitet (wie z.B.
STÜCKLISTE bor in bewährter Tradition ein Breakout ein ATmega mit internen Pullups),
Board (BoB) für diesen besonderen Sen- was dann zu einem noch sicheren
sor entwickelt. Unser BoB vermeidet alle High-Pegel von +3,6 V an den SDA-
Risiken der Beschädigung, des Überhit- und SCL-Pins des Sensors führt.
zens oder gar des Verschwindens des
ENS210 durch Handhabung und Löten Der Sensor sollte NIEMALS ohne Pullups
(oder durch Einsatz eines Staubsaugers an SDA und SCL betrieben werden!
am Arbeitsplatz). Mit dem BoB bekommt Der gesamte Datenverkehr und die
man leicht und unkompliziert Zugriff auf Stromversorgung des ENS210 erfolgen
die interessierenden Daten des Sensors. mit 3,3 V über die vierpolige Stiftleiste
K1.
BoB mit ENS210 von Elektor
Der einfache Schaltplan des BoB mit Verbindung mit Arduino
ENS210 ist in Bild 3 zu sehen. Dabei Der Autor schloss seinen ENS210-Sensor
wurde Wert auf den vom Hersteller emp- an einen Arduino Uno an, um damit ein
fohlenen Aufbau mit nicht mehr als einer praxisgerechtes Taupunkt-Messgerät zu
entkoppelten 3,3-V-Versorgungsschiene realisieren. Dankenswerterweise berich-
(C1) und den (optionalen) Pullup-Wider- tete er auf unserer Webseite Elektor-Labs
ständen R1 und R2 auf den SDA- und von seinem Vorhaben. Weil ein Arduino
SCL-Leitungen als Teil der I2C-Schnitt- Uno verwendet wurde, ist die für das
stelle gelegt. R1 und R2 werden mit 3,3 V Projekt benötigte Hardware ziemlich ein-
versorgt und sollten in diesen beiden Fäl- fach. Es gibt nur eine Herausforderung:

78 März/April 2019 www.elektormagazine.de


die (wenigen) elektrischen Verbindungen
zum LC-Display. Die einfachste Lösung
+3V3 +5V +3V3
ist sicherlich die Verwendung eines Pro-
totypen-Shields, das eine Buchse zum
Rload

4k7
Anschluss des Sensors über ein Kabel

3k9

3k9
100
1
hat. MOD1
Sensor 3V3 MOD2
5 5
Bild 4 zeigt den schematischen Aufbau +5V ARDUINO UNO
SCL
4 4
SCL
ENS210
SDA SDA
des resultierenden Taupunktmessgerätes AREF
3 3
GND
2 2
des Autors, das dank seiner selbst entwi- GND

100k
RESERVED 1 1
13
ckelten Software über einige Feinheiten IOREF
12
10n
RESET
verfügt. Diese Software, genauer: der +3V3 3.3V
11
10
„Sketch“ in Arduino-Sprache, kann kos- +5V 5V
9
GND

POWER
tenlos von [2] heruntergeladen werden. 8
GND

DIGITAL (PWM )
Beachten Sie, dass weder die Schaltung VIN 7

noch die Arduino-Software vom Elek- 6


A0 5
tor-Labor geprüft wurden. Aus diesem

ANALOG IN
Serial Plot/Monitor
S1 A1 4

Grund ist dieser Teil des Projekts in der A2 ICSP 3

RESET

MISO
A3 2
Kategorie Homelab Project einsortiert.

SCK
A4 TX 1
Der Sensor ENS210 verfügt über eine A5 RX 0

vollwertige I2C-Schnittstelle, so dass

MOSI
GND

5V
kaum zusätzliche Hardware benötigt
wird. Alle Messergebnisse werden nicht +5V

nur auf einem Display angezeigt, sondern


D2
auch seriell an den Monitor oder Plotter R1
C2
100n
10k

der Arduino-IDE gesendet. Das serielle D1


26 35 34 33 32 31 30 29 28 36 39
470n
Ausgabeformat ist über einen Taster ent- VDD
D0
D1
D2
D3
D4
D5
D6
D7

68

68
E
RS
23
PSB
weder für den Monitor oder den Plotter 24 1
VOUT A1
LCD1
umschaltbar. 25
VIN A2
20
40 LCD- DISPLAY
Vorgesehen ist ein nettes dreizeiliges 37
RES
2
R/W EA DOGM 163W-A C1
LC-Display mit weißer Hintergrund- 38
CSB C2
19
D1, D2 = 1N4148
beleuchtung von Electronic Assembly. VSS CAP1N CAP1P
27 21 22
Selbstverständlich können Sie auch ein C1

anderes Display Ihrer Wahl verwen- 100n 180306-005

den. Das dreizeilige Display wird vom


Arduino-Sketch „ENS210_3L_34“ unter-
stützt. Mit nur wenigen Zusatzfunktionen
Bild 4. Aufbau des Gesamtsystems für den Taupunktsensor ENS210 durch den Autor. In
können viele Teile der Standard-Biblio-
Kombination mit einem LCD ergibt sich ein interessantes Messgerät zur Bestimmung des Risikos
thek LiquidCrystal für Weiterentwicklun- von Schimmelpilzwachstum und Korrosion. Wenn die Boost-Funktion des Displays nicht erforderlich
gen verwendet werden. Die Bibliothek ist, kann man C1, C2, D1, D2, R1 weglassen und dafür Pin 24 mit Pin 25 verbinden.
selbst muss nicht verändert werden. Es
ist auch möglich, ein Elektor-LCD-Shield
zusammen mit dem Arduino-Sketch
„ENS210_2L_25“ zu verwenden. Eine
Idee zur Erweiterung dieses Projekts und
seiner Funktionen wäre, einige Taster zur
Steuerung eines integrierten Datenlog-
gers vorzusehen. Diese Funktion könnte
die gemessenen Daten dann nichtflüchtig
im EEPROM ablegen.
Schließlich ist zu beachten, dass es sich im elektor-shop
bei MOD2 in der Schaltung um die vom
ªBoB mit ENS210, bestückte Platine, 180306-1
Autor selbstgestrickte Sensor-Platine
www.elektor.de/180306-1
von Bild 2 handelt. Gemeint ist hier also
definitiv nicht das BoB von Elektor, das
eine andere Belegung hat. Eine geän-
derte Verdrahtung ist aber ziemlich ein-
fach. Man achte schlicht auf den richtigen
Weblinks
Anschluss von +3V3, SCL, SDA und GND
an die entsprechenden Pins des Arduino [1] Taupunkt, theoretischer Hintergrund: https://de.wikipedia.org/wiki/Taupunkt
Uno. [2] Arduino-Sketche: http://www.elektormagazine.de/180306-02
180306-02

www.elektormagazine.de März/April 2019 79


0101000000101
110101000000101
1101010000001
000000101
1000000101
110010101

Ein BASIC-Compiler, viele Plattformen


Von Waldemar Pieczerk

Ein eher wenig bekanntes Programm zur Cross-Plattform-Entwicklung ist PureBasic, ein Compiler für die
Jahrzehnte alte Programmiersprache BASIC. Die von PureBasic kompilierten Programme sind klein, schnell
und können auch ohne Installation von einem USB-Stick gestartet werden. Es lohnt sich also, einen näheren
Blick auf diesen Compiler zu werfen.

Vorgehensweise wird „Rapid Application passt werden. Um das zu vermeiden,


Eigenschaften Development“ (RAD) genannt. Große und bringt die Entwicklungsumgebung
• Erstellung von Anwendungen für kleine Anbieter von Programmierspra- ihre eigenen, vom Betriebssystem
32-Bit- und 64-Bit-Systeme chen bieten dazu Lösungen an, wobei die unabhängigen Elemente mit. Diese
• Form-Designer zur Erstellung von Anzahl der unterstützten Zielplattformen müssen auf dem Zielsystem instal-
Benutzeroberflächen (GUIs) individuell verschieden ist. liert werden, damit das Programm
• Erstellung eigener DLLs lauffähig wird. Dadurch ist der Spei-
• Verwendung von Zeigern/Pointern In der Praxis gibt es zwei Varianten mit cherplatzbedarf des kompilierten
• Zugriff auf Betriebssystem-APIs Vor- und Nachteilen: Programms auf der Festplatte insge-
• Inline-Assembler samt deutlich größer.
• Integrierter Compiler und • Der Code wird nur einmal geschrie-
Debugger ben, muss aber auf jeder Zielplatt- Ein eher wenig bekanntes Programm zur
• Direkte Erzeugung ausführbarer form separat kompiliert werden. Cross-Plattform-Entwicklung ist PureBa-
EXE-Dateien Die ausführbare Datei kann sehr klein sic [1], ein Compiler für die Program-
gehalten werden, da das Programm, miersprache BASIC. Trotz des geringen
soweit wie möglich, Funktionen des Bekanntheitsgrads kann es auf eine jahr-
Die Cross-Plattform-Entwicklung ist zur- Betriebssystems verwendet (zum zehntelange Historie blicken. Gerüch-
zeit der Trend bei den Programmierspra- Beispiel zum Erstellen eines Buttons). ten zufolge soll es in der russischen
chen. Dahinter steckt die Idee, nicht Das Programm ist unter Umständen Hackerszene sehr beliebt sein. PureBasic
mehr spezifisch für jedes Betriebssys- ohne Installation direkt lauffähig. gehört zur ersten Gruppe: Die kompilier-
tem separat zu programmieren, son- • Der Code wird nur einmal kompiliert ten Programme sind klein, schnell und
dern den Code nur einmal zu schreiben, und ist sofort auf allen Zielplattfor- können auch ohne Installation von einem
woraufhin die Entwicklungsumgebung men lauffähig. USB-Stick gestartet werden. Betriebssys-
automatisch für die Anpassung an das Da die Elemente der grafischen teme von Mobilgeräten werden allerdings
gewünschte Betriebssystem sorgt. Auch Benutzeroberfläche (z.B. Buttons) nicht unterstützt.
wenn die Idee nicht mehr ganz neu ist, bei verschiedenen Betriebssys- Die meisten aktuellen Programmierspra-
gewinnt sie immer stärker an Bedeutung, temen unterschiedlich aussehen chen sind objektorientiert. PureBasic ist
denn erfolgreiche Software soll möglichst sowie Unterschiede in Größe und da eine Ausnahme: Es arbeitet proze-
auf allen PC-Betriebssystemen und mög- Randbreiten aufweisen, müsste die durorientiert, kann aber dennoch auch
lichst auch auf den Betriebssystemen von Bedienoberfläche für jedes Zielsys- mit Objekten umgehen. Diese prozedu-
mobilen Geräten laufen können. Diese tem überprüft und wenn nötig ange- rale Programmierweise führt zu einer

80 März/April 2019 www.elektormagazine.de


einfacheren Syntax, deren Schlichtheit tons und so weiter) heißen Gadgets.
dem Hobby-Programmierer entgegen- • Zum Potenzieren wird eine separate
kommt, verspricht dies doch eine kürzere Funktion verwendet: pow(a,n) ent-
Einarbeitungszeit. spricht an.
Für Elektroniker besonders interessant • Die Deklaration von Variablen erfolgt
sind der Zugriff auf externe Peripherie- durch das Schlüsselwort DEFINE.
geräte wie Drucker, serielle Schnittstellen Define.s Variable1, Variable2,
und Ethernet sowie Spezialfunktionen wie Variable3 bedeutet, dass drei
der E-Mail-Versand. Wer Messdaten in String-Variablen definiert werden.
Diagrammen darstellen will, findet in den • Auch die direkte Deklaration einer
Bild 1. Bedienoberfläche von PureBasic.
Foren eine Vielzahl von Codebeispielen. Variablen ist möglich: Variable4.d.
Manche davon sind allerdings so umfang- Dem Variablennamen wird, abge-
reich, dass sie wegen der Codezeilen- trennt durch einen Punkt, die Abkür-
begrenzung nicht mehr auf der Demo- zung des Variablentyps angehängt
version von PureBasic laufen. Nicht zu (hier Double). • Wenn Break zusammen mit einer
verachten sind auch die vielen mitgelie- • Es gibt keine Unterscheidung zwi- Zahl aufgerufen wird, können meh-
ferten Beispiele, da sie die Einarbeitung schen Funktionen und Prozeduren; rere verschachtelte Schleifen direkt
erleichtern. es gibt nur Prozeduren. verlassen werden. Die Zahl gibt an,
• Die Übergabe von Variablen an und wie viele Schleifen abgebrochen wer-
Ein Blick auf die von Prozeduren erfolgt wie hier zu den sollen (hier: 2).
Windows-Version sehen:
Als Systemvoraussetzung wird von den For i=1 to 10
Machern von PureBasic mindestens Procedure.d For j=8 to 20
Windows XP verlangt. Ich habe es ver- MyFunction(Number1.d, Number2.d) If i=5
suchsweise unter Windows XP instal- result.d = ............. Break 2
liert – und es lief tatsächlich! PureBasic ProcedureReturn result EndIf
erzeugt nicht nur EXE-Dateien, die ohne
EndProcedure Next
zusätzlich zu installierende Laufzeitbib-
Next
liotheken laufen, auch die Entwicklungs- Zunächst wird MyFunction deklariert,
umgebung selbst benötigt keine weiteren dann der Rückgabetyp auf Double ein-
Dateien als die im Programmverzeich- gestellt. Schließlich werden zwei Dou- Wie man sieht, gibt es doch einiges zu
nis. Sobald PureBasic installiert ist, kann ble-Zahlen an die Funktion übergeben. beachten. Die ausgiebige Lektüre der
man den PureBasic-Ordner aus dem Pro- • If–Then–Abfragen: Das Schlüssel- Online-Hilfe oder des Referenzhandbuchs
grammverzeichnis auf einen USB-Stick wort Then wird nicht verwendet. Eine mag zwar lästig erscheinen, ist aber sehr
kopieren und hat seinen Basic-Compi- bedingte Verzweigung sieht so aus: empfehlenswert.
ler immer dabei! Lediglich der Kompilier-
vorgang läuft auf dem USB-Stick etwas If a=1 Mein erstes Programm
langsamer. .... Nach dem Start präsentiert sich das Pro-
Da prinzipiell auch Linux unterstützt wird, EndIf gramm wie in Bild 1. Der große freie
gleich ein kleiner Dämpfer vorab: Pure- Bereich ist für den Quellcode reser-
Basic kann keine Programme für den • Message-Box: Das in der Micro- viert, darunter werden Systemmeldun-
beliebten Einplatinencomputer Raspberry soft-Welt als Message-Box bekannte gen angezeigt. Im Bereich rechts kann
Pi kompilieren. Es werden nur Intel-kom- Infofenster heißt bei PureBasic man wählen zwischen einer Übersicht
patible Prozessoren der x86-Reihe unter- „MessageRequester“. aller Prozeduren der aktuellen Datei oder
stützt. PureBasic wurde ursprünglich für • Mathematische Operatoren können
AmigaOS geschrieben. Das macht sich auch in einer verkürzten Schreib-
auch noch heute dadurch bemerkbar, weise verwendet werden: A+1 ist das
dass sich die Syntax an einigen Stellen gleiche wie A=A+1, B*2 die verkürzte
deutlich von den Microsoft-BASIC-Vari- Schreibweise von B=B*2 und C<<1
anten (QBasic, VB, VBA) unterscheidet. meint C=C<<1, das bitweise Verschie-
An einigen Stellen hat man den Eindruck, ben nach links.
dass auch Elemente der Programmier- • For-Next-Schleifen arbeiten nur mit
sprache C eingeflossen sind. Integer-Werten.
Nachfolgend nur einige Unterschiede zu • Zum Abbruch von Schleifen wird das
anderen BASIC-Dialekten: Schlüsselwort Break verwendet:

For i=1 to 10
• Kommentare werden im Programm-
If i=5
code mit einem vorangestellten
Semikolon (;) gekennzeichnet. Break
• Die Elemente von Fenstern der EndIf
Bild 2. Autovervollständigen und Syntax-
Benutzeroberfläche (Textfelder, But- Next
Highlighting.

www.elektormagazine.de März/April 2019 81


vollständige Programm, eine Prozedur
„Addition“, die zwei Zahlen addieren
und die Summe zurückgeben soll. Da
keine Variablentypen angegeben wurden,
wird standardmäßig der Integertyp für
alle Variablen verwendet. In den beiden
Zeilen darunter sind zwei Möglichkeiten
angegeben, das Ergebnis anzuzeigen.
Zeile 7 öffnet das Debug-Fenster (funk-
tioniert nur bei eingeschaltetem Debug-
ger), Zeile 8 eine MessageBox.

Das Programm enthält noch einen Feh-


ler: Da die beiden Zahlen vom Typ Inte-
ger sind, muss die Summe einen größe-
ren Wertebereich als Integer darstellen
können. Quad scheint ein geeigneter
Datentyp zu sein. Und hier lauert auch
schon eine Falle auf den unbefangenen
Freizeit-Programmierer: Bei der Wahl
Bild 3. Autovervollständigen: Parameter-Anzeige.
des Datentyps für das Ergebnis ist zu
berücksichtigen, dass die Programme
auf 32-Bit- und 64-Bit-Systemen kom-
eines Projekts, der verfügbaren Steuer- piliert werden können. Hätten Sie daran
elemente zum Design von Bedienfens- gedacht, dass auf 64-Bit-Systemen Inte-
tern oder einem kleinen Datei-Explo- ger-Variablen 8 Byte lang sind und somit
rer. In der Symbolleiste steht die ein- genauso lang wie der Quad-Typ? Für das
gedrückte Schaltfläche mit dem grünen Ergebnis der Addition wären also Float
Käfer für den Debugger. Dieser lässt sich oder Double angebracht.
nur bei der Vollversion deaktivieren, Wir korrigieren den Fehler nicht, son-
wodurch die kompilierten Programme dern starten gleich einen Testlauf. Dies
noch kompakter werden, da sie keine geschieht über „Compiler –> Compile/
Bild 4. Das fertige Programm.
zusätzlichen Informationen mehr für den Run“ im Menü oder durch Klicken auf die
Debugger enthalten. Schaltfläche mit dem blauen Pfeil.
PureBasic beanstandet den Fehler nicht,
Der Editor beherrscht selbstverständlich sondern wandelt den BASIC-Code in
Autovervollständigen und Syntax-High- Assembler um. Der integrierte Assemb-
lighting. Prozeduren können wie in Bild 2 ler-Compiler erzeugt daraus eine EXE-Da-
„zugeklappt“ werden, so dass nur noch tei. Dies geschieht alles im Hintergrund.
die Deklaration zu sehen ist. Das erste Kurz darauf erscheinen die MessageBox
Programm soll nur zwei Zahlen addieren und das Debug-Fenster mit dem Ergeb-
und das Ergebnis ausgeben. nis der Addition (Bild 5).
Procedure Addition(Number1,
Number2) Jetzt sollten wir unser Programm noch
Bild 5. Ergebnisanzeige des Programms als mit „File –> Save“ speichern“. PureBasic
Result.d= Number1 + Number2
MessageBox und im Debug-Fenster. erzeugt die Dateiextension nicht auto-
ProcedureReturn
matisch! Gültige Dateiendungen sind:
EndProcedure

Zugegeben, das ist wenig geistreich • *.pb – für den Quellcode


und nicht besonders sinnvoll, es dient • *.pbi – für nicht kompilierte Funkti-
nur dazu, ein wenig an der Syntax von onsbibliotheken (PureBasic-Include)
PureBasic zu schnuppern. Wird ein Befehl • *.pbf – für Grafische Bedienoberflä-
oder eine Prozedur eingetippt, an die chen (PureBasic-Forms)
Parameter übergeben werden müssen, • *.pbp – für Projektdateien
dann werden nach Eintippen der geöff- (PureBasic-Project)
neten Klammer in der Statuszeile die
erwarteten Parameter angezeigt. Nach- Projekte sind Zusammenfassungen meh-
dem unsere Prozedur „Addition“ definiert rerer Programmdateien. Wenn Sie einmal
wurde, bekommen wir diese Unterstüt- Ihren Quellcode nicht finden, dann haben
zung auch dafür zu sehen (Bild 3). Sie ihn wahrscheinlich ohne Dateiendung
Bild 6. Grafische GUI-Entwicklung. Das Programmfenster in Bild 4 zeigt das abgespeichert.

82 März/April 2019 www.elektormagazine.de


Grafische Bedienoberflächen • Nachdem das Zielverzeichnis ange-
Um eine grafische Bedienoberfläche geben wurde, wird das Programm
(GUI) zu erstellen, wählt man einfach im kompiliert. Es ist anschließend sofort
Menü „Form -> New Form“. Es erscheint lauffähig.
ein leeres Fenster, rechts daneben eine
Liste mit den Gadgets und deren Eigen- Die erzeugte EXE-Datei ist nur 60,5 kB
schaften. Die Gadgets können nun frei im groß. Kopieren Sie sie auf einen USB-
Fenster platziert werden (Bild 6). Einige Stick und starten Sie das Programm
Eigenschaften der Gadgets werden nur vom Stick aus auf verschiedenen Rech-
zur Laufzeit richtig angezeigt, zum Bei- nern. Sie werden sehen, dass diese
spiel Schriftartänderungen. Die Laufzeit- kleine EXE-Datei eine funktionsfähige
darstellung erhält man durch Anklicken Windows-Anwendung ohne riesige Lauf-
des Symbols mit dem blauen Pfeil. zeitbibliotheken darstellt!

Dieser visuelle Form-Designer erstellt im Funktion


Hintergrund BASIC-Quellcode, der mit Das Programm sucht beim Start nach
„Form –> Switch Code/Design View“ verfügbaren COM-Ports und zeigt sie Bild 7. Die GUI von COMTest.
angezeigt werden kann. Das Grundge- dann in der ComboBox „Com port“ an
rüst aus Gadgets wird mit Ereignispro- (Bild 7). Zunächst müssen die Über-
zeduren verknüpft. Diese Form-Datei tragungsparameter eingegeben wer-
sollte als *.pbf abgespeichert werden. den, danach unter „Data to send“ ein
Eigenen Code platziert man besser in Befehl, der an das Messgerät geschickt
einer anderen Datei (*.pb), damit der wird und es veranlasst, zu antworten. Mit
Form Designer ihn nicht überschreiben „Send“ wird der Befehl abgeschickt und
kann. Aus Platzgründen kann hier kein mit „Receive“ die Antwort unter „Recei-
Beispiel gezeigt werden. Es gibt aber ein ved data“ angezeigt.
sehr gutes Videotutorial dazu auf You- Der voreingestellte Befehl „:READ?“ veran-
Tube [2], das jedem Interessierten wirk- lasst beispielsweise ein 34401A-Tischmul-
lich sehr zu empfehlen ist. timeter von Agilent, den aktuellen Mess-
wert zu senden.
COMTest als Beispiel
Auf der Elektor-Webseite [3] befindet sich Erweiterungen
ein Programmbeispiel namens „COMTest. PureBasic lässt sich durch eigene Pro-
zip“. Es zeigt, wie Bedienoberflächen gramme (etwa die im Beispiel erzeugte
unter PureBasic programmiert werden EXE-Datei) ergänzen, die auch in die
und wie man auf die serielle Schnittstelle PureBasic-Bedienoberfläche integriert Bild 8. PureBasic kann um externe Tools
zugreift. Das Ganze wird allerdings erst werden (Bild 8). Danach kann die Erwei- erweitert werden.
wirklich verständlich, wenn man das
Video-Tutorial auf YouTube gesehen hat.
Viele Messgeräte mit USB-Anschluss
nutzen für die Datenübertragung eine
virtuelle serielle Schnittstelle (COM-
Port). Sofern man noch Geräte mit
RS232-Schnittstelle hat, stellt sich bei
jedem neuen Gerät die Frage, ob das
Kabel die richtige Steckerbelegung hat.
Daher möchte man zuerst testen, ob die
Datenverbindung funktioniert, bevor mit
dem Programmieren begonnen werden
kann. Dafür wurde „COMTest“ geschrie-
ben, kein reines Demonstrationsbeispiel,
sondern auch ein nützliches Programm.

Kompilieren
• Extrahieren Sie die Dateien aus
dem ZIP-Archiv in ein beliebiges
Verzeichnis.
• Starten Sie PureBasic und laden Sie
die Datei „COMTest.pb“.
• Wählen Sie im Menü „Compiler –>
Create Executable“. Bild 9. COMTest erscheint als Eintrag im Tools-Menü.

www.elektormagazine.de März/April 2019 83


Kosten und Versionen

Auf der PureBasic-Webseite kann eine


Demoversion heruntergeladen werden.
Sie ist voll funktionsfähig, aber
der Codeumfang ist auf 800 Zeilen
begrenzt. Außerdem können keine
DLLs erstellt und genutzt werden.
Die Vollversion kostet 79 €
und umfasst Versionen für alle
Betriebssysteme: Windows, Linux und
MacOS X. Mit der Volllizenz erhält man
zusätzlich kostenlose Updates auf
Lebenszeit.
Die Version für AmigaOS ist inzwischen
open source und wird nicht weiter
gepflegt.

terung vom Tools-Menü aus gestartet einfacher Syntax, der sehr schnellen und
werden. Es lässt sich auch unter ver- kompakten Code erzeugt. Die kompilier-
Deutsche Erstausgabe
schiedenen Bedingungen wählen, bei ten Programme benötigen keine zusätz-
denen unser Tool automatisch gestartet lichen Laufzeitbibliotheken – ein BASIC
wird, zum Beispiel beim Start des Editors. ohne Ballast!

Externes Tool anmelden: Die Zugriffsmöglichkeiten auf externe


Peripherie machen ihn für Elektronik-Ent-
• Im Menü „Tools –> Configure Tools“ wickler interessant. Berücksichtigt man,
wählen. dass Updates kostenlos sind, so ist auch
• Dann „New“ drücken, so dass ein der Preis der Vollversion sehr günstig.

PureBasic
Eine Einführung in die Computer Programmierung
neues Fenster erscheint.
• Dort unter „Commandline“ das Tool
wählen.
Wer sich vorab informieren möchte, kann
sich das 1679 Seiten starke PureBasic
Referenzhandbuch herunterladen [4]
Beta Version • Das Tool muss einen Namen („COM- oder das 258 Seiten umfassende Buch
Aktuelle Informationen zum Projekt unter:
http://www.purebasic.fr/german/viewtopic.php?f=1&t=23627 Test“) erhalten. „PureBasic – Eine Einführung in die Com-
Stand: 01.06.2011, 22:19 Uhr
• Nach Schließen beider Fenster mit puter Programmierung“ von Gary Wil-
Gary Willoughby
„OK“ wurde das Tools-Menü um das loughby [5] (Bild 10).
neue Tool erweitert (Bild 9).
Eine fleißige Fangemeinde hilft in den
Fazit Foren [6] bei kleineren und auch größe-
Bild 10. Dick und deutlich: Die Einführung von Das Programmieren von GUIs mag etwas ren Problemen (aber lassen Sie sich nicht
Gary Willoughby. umständlich sein. Doch ist PureBasic ein als russischer Hacker entlarven ;).
sehr umfangreicher BASIC-Compiler mit (150839 | 180422)

Weblinks
[1] PureBasic-Homepage in deutscher, französischer und englischer Sprache: im elektor-shop
www.purebasic.com
ªBuch-PDF
[2] PureBasic FormDesigner Tutorial: „Visual Basic für
www.youtube.com/watch?v=_Zb8gFIwzpg (Teil 1), Elektroniksteuerungen
www.youtube.com/watch?v=ucN0TYlJxcw (Teil 2) und Entwicklung“
[3] COMTest auf der Projektseite: www.elektormagazine.de/180422-01 [17031]
[4] Referenzhandbuch: www.purebasic.com/documentation/PureBasic.pdf
www.elektor.de/
[5] Einführung: www.purearea.net/pb/download/PureBasicBuch.pdf visual-basic-fur-
[6] PureBasic Supportseite in deutscher und englischer Sprache: elektroniksteuerungen-
und-entwicklung-pdf
www.purearea.net

84 März/April 2019 www.elektormagazine.de


Projekt 2.0
Korrekturen, Updates und Leserbriefe

Temperaturgesteuerte DIY-Lötstation
Heft 01-02/2019, S. 14 (180348)
Bei der deutschen Übersetzung ist uns leider ein grober Fehler unterlaufen: Die Stückliste und die Schaltungsbeschreibung
im Heft beziehen sich noch auf eine alte Version des Projekts. Davon unabhängig enthält der Schaltplan folgende Fehler:
• T4 muss ein PNP-Typ sein, dessen Emitter mit dem Emitter von T2 verbunden ist.
• R22 (560 k) am Ausgang von IC3, nach 0 V, fehlt im Schaltplan.
• D4 als Freilaufdiode über IC1 fehlt im Schaltplan.
• R7 und R9 bilden einen Spannungsteiler zur Messung von VIN mittels Analogeingang A2 des Controllers (in der Soft-
ware nicht genutzt), die beiden Widerstände fehlen im Schaltplan.
Die Platine ist korrekt.
Wir haben ein neues PDF des Artikels erstellt, bei dem alle Fehler beseitigt wurden. Dieses ist für alle Leser kostenlos
downloadbar unter dem Weblink: www.elektormagazine.de/180348-02

+5V
+5V
LCD1
R1 R5
C14 C20 C1 C2
10k

10k
MOSI 100n 10u 10V 10n 10n
L1 ENC1
IO8 OLED_0.96
C16 MH2029-300Y C22
+5V

GND
SDA

VCC
RST

SCL
D/C
R16 D6 IO9
D1 100n 1u
10k

K4 14 34 2 24 44 1 2 3 4 5 6
1 MISO 2
VCC VCC1 UVCC AVCC AVCC1
3 SCK 4 8

D3/SCL
PB0(PCINT0/SS)

MISO

MOSI
SCK
5 RESET 6 13
RESET
IC4 PB1(SCLK/PCINT1)
9 SCK
10 MOSI +5V
ICSP PB2(MOSI/PCINT2/PDI)
CD1206-S01575 1 11 MISO
PE6(AIN0/INT6) PB3(MISO/PCINT3/PDO)
+5V 33 28 IO8 C10
PE2(HWB) PB4(PCINT4/ADC11)
29 IO9 +5V
D3 PB5(PCINT5/OC1A/OC4B/ADC12)
30 100n
BAT54 PB6(PCINT6/OC1B/OC4B/ADC13)
R11
PB7(PCINT7/OC0A/OC1C/RTS) 12 R10
K3
18k
1M

R8
C11 C8 3
10k

D5 31 18 D3/SCL
PC6(OC3A/OC4A) PD0(INT0/SCL/OC0B)

solder tip
R12
32 19 3 2
22u 10V 100n PC7(ICP3/CLK0/OC4A) PD1(INT1/SDA) R13 5k6
20 A0 1
PD2(INT2/RXD1) 5k6 IC2.A 1
F1 21 4
K2 MF-MSMF050-2 PD3(INT3/TXD1)
7 25
VBUS PD4(ICP1/ADC8) R15 R14
22 C13 C12
PTC Resettable Fuse PD5(CTS/XCK1)
10M
100R

1 500mA 26
VBUS R4 PD6(T1/OC4D/ADC9)
2 3 27 D6 10n 10n
D– 22R D– PD7(T0/OC4D/ADC10)
3 4
D+ 22R D+ ATMEGA32U4-AU
4 R6 41
ID PF0(ADC0) VIN
5 42 40
GND AREF PF1(ADC1)
R2 R3 6 39
UCAP PF4(ADC4/TCK)
5 38 A2
UGND PF5(ADC5/TMS)
37 A1 T1
micro USB_B PF6(ADC6/TDO) R17 BC847C IRF9540
EXP PAD 36 A0
PF7(ADC7/TDI) R20 NSPBF
4k7

2x
CG0603MLC-05E GND GND XTAL1 XTAL2 GND GND R18
100R

15 23 17 16 35 43 T2 0R020

KX-7
X1 16MHz
C23 C24 T3 T4 3 4
R19 +5V
D5
10k
100n 1u
D4 C19 C17
BC847C BC857C 5

S1A 22p 22p

K1 NCP1117-5 VIN IC3 C21 C18


VIN +5V R7 INA138
D2 IC1
3 2
10k

100n 10u
5 10V
MBRS540 R21 1
T3G C3 C4 C5 C6 C9 8 C7 A2 A1 7
1 R9
100k IC2.B 2
IC2 6
10u 47u 10u C15
100n 100n 100n 4
2k7

560k

35V 10V 10V



MCP6002 R22
180348-11

www.elektormagazine.de März/April 2019 85


Netzausfall-Detektor
mit SMS-Alarm
Heft 09-10/2018, S. 10 (180344)
Errata und Hinweise zur Stückliste:
• L2 ist vom Typ BLM21AJ601SN1D (nicht
BLM12…).
• MOD2: Das GSM-Modul von Quec-
tel kann sowohl in der Version M95FA-
03STDN als auch in der Version
M95FA-03STN verwendet werden.
• X1 (CSTCC8M00G53-R0, Kera-
mik-Resonator, 8 MHz Murata)
ist zu bekommen bei Farnell, TME,
Mouser, Distrelec und weiteren Distributoren.
• K2: Die Klemme hat das Rastermaß 7,62 mm,
nicht 7,68 mm.

Leuchtturmfeuer 2.0
Heft 01-02/2019, S. 24 (180334)
In einem ausgiebigen Dauertest fiel auf, dass es nach unbestimmter Zeit zu Softwareabstürzen kommen kann. Die
genauere Untersuchung zeigte, dass die Erfassung der Potentiometerwerte innerhalb der DO-LOOP-Schleife das Problem
ist. Eine Verlegung der DO-LOOP-Scheife in einer neuen Softwareversion [siehe www.elektormagazine.de/180334-03]
bewirkt nun, dass die Potentiometerwerte nur noch einmal zum Start des Programms abgefragt werden. Die Schaltung
ist gegebenenfalls um einen Reset zu ergänzen.
Das Einstellen läuft nun wie folgt ab:
Zunächst stellt man alle drei Potis auf den kleinsten Wert.
Nun folgt mit P1 die gewünschte Blitzlänge. Als nächstes R1
C1 +5V
empfiehlt es sich, mit P3 die Anzahl der Blitze/Blinks fest-
10k

8
zulegen. Da auch die Wiederkehr noch auf Minimum steht, P3 VCC 100n
1 6
legt das Programm die Wiederkehrperiode automatisch auf PB5/RST PB1/MISO
P2 10k
einen Wert fest, der 2 Sekunden länger dauert, als alle Blitze/ 2 IC1
PB3
P1 10k ATTINY45
Blinks und die dazugehörigen Unterbrechungen benötigen. 3
PB4 R2
Liegt die Anzahl der Blitze/Blinks fest, so stellt man mit 10k
PB0/MOSI
5
220
7
PB2/SCL
P2 die Dauer der Wiederkehr auf den gewünschten Wert. GND D1
Damit sind die Parameter des Leuchtturms eingestellt. Um 4
die jeweilige Einstellung zu übernehmen, drückt man den
Reset-Taster, damit das Programm neu startet. Oder man
schaltet die Versorgungsspannung aus und wieder ein.
Friedrich Lischeck (Autor)

Wecker mit 3-fach-Anzeige: Update


Heft 11-12/2018. S. 74 (170112)
Ich habe in der Ausgabe Nov/Dez 2018 gelesen, wie in zwei Projekten mühsam Sinus und Cosinüsse berech-
net werden (Wecker und DDS).
In meinen Programmen verwende ich selbst oft die Arcus-Tangens-Funktion, das Ganze läuft auf einer einfachen
8-Bit-MCU ohne viel MHz und Speicher. Zur Berechnung nutze ich den CORDIC-Algorithmus, welcher mathematisch
reichlich kompliziert daherkommt, als C-Code (mit 16-Bit-Integern) ist er aber recht gut verständlich.
Den gleichen Algorithmus kann man auch für Sin/Cos verwenden. Man braucht eine LUT mit N Einträgen, in welcher der
arctan(1/2^i), i = {0..N-1} vorberechnet wird. Während N Iterationen wird nun ein Vektor solange um arctan(1/2^i)
im Uhrzeigersinn oder gegen den Uhrzeigersinn gedreht, bis er ungefähr den gesuchten Winkel erreicht.
Die Genauigkeit und Geschwindigkeit ist direkt abhängig von N. Und es sind nur Additionen und Schiebeoperationen
nötig; alle Zahlen (Winkel, Sin, Cos, usw.) werden interpretiert als Integer.

86 März/April 2019 www.elektormagazine.de


Grob gesagt sieht der Sin/Cos-CORDIC so aus:
for (i=0; i
{
Was hier fehlt, sind neben der LUT die Startwerte für sin, cos und angle. Diese hängen   if (angle < 0)
von der konkreten Situation ab.   {
Der CORDIC kann übrigens noch viel, viel mehr; darum sind auch die Informationen im     int temp = sin;
Web (Wikipedia usw.) recht mathematisch und (für Elektroniker) eher unverständlich.     sin -= cos >> i;
Das Beste was, ich zur Sin/Cos-Version gefunden habe ist das hier:     cos += temp >> i;
http://nonagon.org/ExLibris/sites/default/files/pdf/Cordic-Faster-Sin-Cos.pdf     angle += lut[i];
Noch besser verständlich ist die ähnliche arctan2-Version hier beschrieben:   }
  else
http://bsvi.ru/uploads/CORDIC--_10EBA/cordic.pdf   {
    int temp = sin;
Natürlich hat auch die LUT im Wecker-Artikel Vorteile (Geschwindigkeit). Sie braucht     sin += cos >> i;
aber sehr viel Speicher und ist nicht sehr flexibel. Andererseits sind die sin()/cos()     cos -= temp >> i;
Funktionen aus der math.h Lib sehr langsam und ressourcenhungrig (Floatingpoints).     angle -= lut[i];
Übrigens danke für die tollen Artikel, ich kann immer wieder etwas Neues lernen!
  }
Andreas Dick }

Platino-Transistortester
Heft 03/2015, S. 60 (130544)
Der Platino-Transistortester aus Elektor 03/2015 ist zwar schon ein etwas älteres Projekt, aber meines Erach-
tens spricht nichts gegen Vorschläge, ältere Projekte zu verbessern. Jedenfalls wird die Platine immer noch
im Elektor-Shop angeboten und so erwarb ich sie vor knapp zwei Jahren. Der Aufbau machte keine größeren
Schwierigkeiten, nur mit der Software schien irgend etwas nicht in Ordnung zu sein. Wenn ein Transistor angeschlos-
sen war, wurde er ohne Probleme ausgemessen. Wenn allerdings die Anschlussklemmen ohne DUT waren, gab es keine
Rückmeldung. Zwar schien irgendetwas nach Drücken des Buttons in der ersten Zeile des Displays zu passieren, aber
erst ein dauerhafter Druck auf den Button brachte ein blasses „No transistor“ zum Vorschein.
Die Verbesserung war mit meiner BASCOM-Vollversion schnell eingebaut: Nach der Zeile 320 Lcd "No transistor" die
Zeile Waitms 1000 eingefügt und schon blieb die Anzeige „No transistor“ lesbar. Allerdings wurden danach wieder die
Werte angezeigt, die aus der vorigen Messung mit angeschlossenem Transistor stammten. Also mussten nach der neu
eingefügten Zeile noch die entsprechenden Variablen gelöscht werden:

321: Waitms 1000


322: I = 0
323: T_type = 0
324: Cal_pin = 0

Super, alles funktionierte!


Da ich im Quellcode entdeckt hatte, dass die gemessenen Werte auch über die
serielle Schnittstelle ausgegeben werden (wird im Artikel leider nur ganz kurz
angerissen), hatte ich Blut geleckt. Also ein USB-zu-Seriell-Modul angeschlossen
und ein Terminal-Fenster gestartet. Es dauerte einige Zeit bis ich begriff, dass
die Geschwindigkeit des seriellen Ports im Terminal falsch eingestellt war; es
fehlte schlicht in Zeile 14 des Quellcodes ein Baud = 9600. Einmal eingesetzt und
erneut kompiliert schien alles zu funktionieren. Bis das Kabel zwischen serieller
Schnittstelle und PC gekappt wurde und ein erneuter Test des Transistortesters
zeigte, dass dieser nicht mehr reagierte. An diesem Punkt erinnerte ich mich an
einen Ratschlag von Clemens Valens, der bei meiner Fehlersuche vor 2 Jahren
von einem „floating serial port“ ausging. Also legte ich PD0 (TXD) und PD1 (RXD) des ATmega32 über jeweils einen
Widerstand von 100 kΩ an VCC (Foto). Und siehe da: Alles funktionierte reibungslos.
Hans Schneider

Anmerkung der Redaktion: Die Softwareversion von Hans Schneider (V3.1) ist downloadbar unter:
www.elektormagazine.com/labs/130544-1-platino-transistor-tester (siehe Kommentare)

www.elektormagazine.de März/April 2019 87


Highlights aus dem Elektor-Shop
Messen,
Stromversorgen und
3D-Drucken...
Multimeter mit Bluetooth leicht verlockend erscheint: Mit Blick auf die Solidität und die
Jeder Elektroniker braucht mindestens zwei Dinge, um an elek- elektrische Sicherheit ist es ratsam, nicht unbesehen zum bil-
tronischen Schaltungen zu tüfteln: Ein Multimeter und ein Löt- ligsten Angebot zu greifen.
gerät. Die meisten Elektor-Leser dürften mit diesen Utensilien Das Multimeter MS8238H von Mastech ist ein typisches Mul-
eingedeckt sein. Doch ab und zu entsteht der Wunsch nach timeter mit allen grundlegenden Funktionen, die von einem
etwas Neuem, oder ein zweites Multimeter ist nützlich, um solchen Gerät zu erwarten sind: Spannung und Strom (DC und
mehrere Messungen gleichzeitig vornehmen zu können. Das AC), Widerstand, Diodenmessung und Durchgangsprüfer. Mit
Marktangebot ist riesig, die Preise bewegen sich zwischen ein- dem zugehörigen Thermoelement misst das Gerät auch Tem-
stelligen und vierstelligen Euro-Beträgen. Auch wenn es viel- peraturen. Ferner sind zwei spezielle Einstellungen zum Messen
von Batterien vorhanden (1,5 V und 9 V), und im NCV-Mo-
dus können berührungslos hohe (Netz-)Spannungen erfasst
werden. Einige Stellungen des Drehschalters haben mehrere
Funktionen, sie lassen sich mit dem Taster FUNC umschalten.
Beim Drücken des Tasters HOLD wird die Anzeige im Display
eingefroren. Taster RAN dient zur manuellen Wahl eines Mess-
bereichs, im Normalbetrieb wählt das Multimeter selbsttätig
den am besten passenden Bereich aus.
Der blaue Taster mit der Aufschrift „Link“ und dem Funksymbol
schaltet das integrierte Bluetooth-4-Modul ein. Über Bluetooth
werden der Messwert und die Drehschalterposition einer spe-
ziellen App übergeben, die auf einem Smartphone oder Tab-
let läuft. Für ein Multimeter der Preisklasse um 50 € ist diese
Ausstattung nicht selbstverständlich.
Das 3¾-stellige Display besitzt zwar keine Hintergrundbeleuch-
tung, ist aber auch bei wenig Umgebungslicht gut ablesbar.
Die Grundgenauigkeit beträgt in dieser Preisklasse für DC-Mes-
sungen in der Regel 0,5 %, bei AC-Messungen werden True-
RMS-Werte gebildet.

IM ELEKTOR-SHOP
ªMultimeter Mastech MS8238H
https://bit.ly/2H2G8v4

Strom für Raspberry Pi


HATs (Steckmodule) für die Stromversorgung des Raspberry
Pi sind sicher nicht neu, doch das HAT „StromPi 3“ ist anders.
Das beginnt schon damit, dass es mit Distanzrollen, Schrauben
und Muttern sowie einem informativen Handbuch in deutscher
und englischer Sprache geliefert wird. Die Montage dieses HAT
ist denkbar einfach.
Das StromPi 3 unterstützt den „StromPi 3 Battery HAT“, einen
LiFePO4-Akku mit der Nennspannung 3,2 V und der Kapazität

88 März/April 2019 www.elektormagazine.de


1000 mAh. Auf das StromPi 3 (im spannungslosen Zustand)
Anycubic Photon 3D-Drucker
kann dieser Akku einfach aufgesteckt werden.
Am StromPi 3 befinden sich mehrere Spannungseingänge für Der Anycubic Photon ist ein DLP 3D-Drucker (Digital Light
den Raspberry Pi. An einem Eingang kann die Spannung sogar Processing), der Objekte mit flüssigem Kunstharz druckt. Mit
zwischen 6 V und 61 V liegen. Ein USB-Anschluss mit Puffer- UV-Licht wird eine Vorlage unter einem transparenten Bad mit
kondensator (Kapazität 1 F) und der Anschluss für den LiFePO4- flüssigem Kunstharz projiziert. Dann wird das Objekt Schicht für
Akku sind ebenfalls vorhanden. Zur Ausstattung gehört auch Schicht auf einer Plattform aufgebaut, die sich langsam nach
eine Echtzeituhr (RTC), so dass dem Pi auch bei Strom- oder oben bewegt. Verglichen mit einem herkömmlichen 3D-Dru-
Netzwerkausfall die aktuelle Uhrzeit erhalten bleibt. Mit die- cker mit heißer Düse zum Extrudieren von Kunststofffäden in
sen Eigenschaften ist das HAT StromPi 3 eine leistungsstarke die gewünschte Form ist dies ein einfacher Vorgang ohne viele
Notstromversorgung, wenn der Raspberry Pi an einem Nie- bewegliche Teile (nur das Bad mit dem Kunstharz bewegt sich
derspannungsnetz (12 V, 24 V oder 48 V Gleichspannung) auf und ab).
betrieben werden muss. Mit der mitgelieferten Photon Slicer-Software ist das Drucken
problemlos möglich. Achtung: Der Drucker muss exakt waage-
recht stehen. Das Drucken allein dauert einige Stunden, unab-
hängig von der Anzahl der Objekte, die gleichzeitig gedruckt
werden. Nach dem Drucken muss das Produkt mit Alkohol
gesäubert werden und bei Tageslicht eine Weile aushärten.
Ein Wermutstropfen besteht darin, dass das Kunstharz (in
verschiedenen Farben erhältlich) seinen Preis hat. Wegen
des Preis-Leistungs-Verhältnisses ist dieser Drucker jedoch
eine der besten Optionen, die der aktuelle Druckermarkt
zu bieten hat.
180689-B-02

Für den Fall, dass eine Energiequelle des StromPi 3 ausfällt,


kann die Reihenfolge festgelegt werden, in der die übri-
gen Energiequellen genutzt werden sollen. Vorhanden sind
Durchgangskontaktleisten zum Stapeln mehrerer HATs,
sie durchlaufen auch die PoE-Anschlüsse des Pi 3B+. Zu
erwähnen sind noch der USB-A-Anschluss und
die beiden Micro-USB-Anschlüsse an der Seite.
Dort können Komponenten an den StromPi 3
angeschlossen werden, die mehr als 500 mA
aufnehmen, beispielsweise eine Festplatte.
Der StromPi 3 wurde für den Raspberry Pi
entwickelt, er kann jedoch aufgrund seiner
Konstruktion auch mit anderen SBCs wie dem
BeagleBoneBlack verwendet werden. Einsetzbar
ist er sowohl als universelle Stromversorgung für
den Pi oder andere als auch als USV (zusammen
mit dem StromPi 3 Battery HAT).

IM ELEKTOR-SHOP IM ELEKTOR-SHOP
ªStromPi 3 – Stromversorgung für den RPi ªAnycubic Photon 3D-Drucker
www.elektor.de/strompi-3-power-solution-for-raspberry-pi www.elektor.de/anycubic-photon-uv-resin-dlp-3d-printer

www.elektormagazine.de März/April 2019 89


Hardware-Design
mit (V)HDL (3)
WS2812-LED-Matrix ansteuern
Von Jörg Zollmann

Im letzten Teil der Serie haben wir eine Digitaluhr im Binärformat gebaut. Dieses Mal werden wir die Uhr mit
einer Anzeige ausstatten, und zwar mit einer Matrix aus 64 WS2812-RGB-LEDs. Das Protokoll, mit dem die
WS2812-LEDs angesteuert werden, ist glücklicherweise ein recht simples asynchrones Protokoll. Für unseren
Hardware-Treiber in VHDL setzen wir unter anderem einen Zustandsautomaten ein.

Eine Matrix aus 64 WS2812-RGB-LEDs gibt es bei verschieden Wie bei den vorangegangenen Teilen der Serie kann auch dies-
Online-Händlern schon ab 5 €. Eine WS2812-LED ist mehr als mal die Software von der Webseite zu diesem Artikel herunter-
nur eine RGB-LED. In einem kleinen Gehäuse befinden sich geladen werden [7]. Die Organisation des Sourcecodes und die
neben den drei LEDs auch deren Treiber (die Stromquellen) verwendete Hardware-Plattform haben wir bereits im ersten
und ein kleiner Controller. Diesem Controller kann man über ein Teil [4] beschrieben.
serielles Eindraht-Protokoll mitteilen, wie hell die drei internen
LEDs jeweils leuchten sollen. Im Netz sind viele Mikrocontrol- WS2812-Protokoll
ler-Projekte (und Software-Bibliotheken) zu finden, bei denen Für einen Hardware-Treiber in VHDL, der mit einem externen
WS2812-LEDs angesteuert werden [1][2]. Wir steigen eine digitalen Chip kommunizieren soll, muss man sich mit den
Ebene tiefer ein und „programmieren“ einen Hardware-Trei- internen Details des anzusteuernden Bausteins auseinander-
ber in VHDL, der mit den Controllern kommuniziert, die in die setzen und benötigt detailliertes Wissen über das verwendete
LEDs eingebaut sind. Protokoll. Bei einer WS2812-LED ist das glücklicherweise ein
recht simples asynchrones Protokoll. Dabei lassen sich LEDs
verketten: Jede LED empfängt 24 Bit an Daten über den seri-
Tabelle 1. Data-Transfer-Zeiten.
ellen DIN-Port und reicht die weiteren Bits am DOUT-Ausgang
an die nächste LED weiter [3].
Dauer (TH+TL =
Name Beschreibung Für jede der drei Farben wird ein 8-Bit-Wert zwischen 0 und
1,25 µs ± 150 ns)
255 verwendet; der Wert steuert die Stromstärke des jeweili-
T0H 0 code , high voltage time 0,35 µs
gen eingebauten LED-Treibers. Nach dem Empfang der ersten
T1H 1 code , high voltage time 0,9 µs 24 Bits, die intern zwischengespeichert werden, werden alle
T0L 0 code , low voltage time 0,9 µs weiteren empfangenen Bits am DOUT-Ausgang frisch verstärkt
T1L 1 code , low voltage time 0,35 µs ausgegeben. Durch die Wiederaufbereitung des Signals am
RES Reset-Code, low voltage time > 50 µs Ausgang ist die Datenübertragung sehr robust und es können
theoretisch beliebig viele LEDs in Reihe geschaltet werden. Die
Limitierung liegt dann im Stromverbrauch und der zu errei-
chenden Frame-Update-Rate.
Sequence chart: Die Übernahme der empfangenen Werte erfolgt erst, wenn
0 code T0L ein Reset-Code auf der Leitung erkannt wird, hierfür wird die
T0H Leitung für mehr als 50 µs auf low getrieben. Die Encodierung
der Datenbits erfolgt durch unterschiedlich lange High- und
1 code T1L Low-Pulse (siehe Tabelle 1 und Bild 1). Das Zeitraster für
T1H ein Bit beträgt 1,25 µs. Wenn während dieser Zeit ein 0,35 µs
langer High-Puls und ein 0,9 µs langer Low-Puls gesendet wird,
RET code Treset dann wird dieses Bit als 0 erkannt. Für eine zu übertragende
1 muss die Dauer des High-Pulses 0,9 µs betragen; die restli-
chen 0,35 µs muss die Leitung auf low sein. Die empfangenen
Daten werden in der Reihenfolge Grün, Rot, Blau interpretiert
Bild 1. WS2812-Datenformat [3].
und die Bitreihenfolge geht von MSB nach LSB.

90 März/April 2019 www.elektormagazine.de


ws2812_matrix_driver:led

frame_cntrl_sm:frame_sm
counter:rst_cnt
clk
clk cnt_state data
clk
clk ena tc reset_done reset
rst_n rst_n
counter:led_cnt ws2812_pixel_driver:pixels
clock_to_pixel:to_pix
clk c_r[5..0] clk

ena tc
cnt_state clk enable done
rst_n rst_n data_cycle load_val[23..0] sdat_o sdat_o
watch:watch sdat_o
hrs_r[4..0] load_val[23..0] load
clk hrs_r[4..0] hrs_r[4..0] led_idx[5..0] load rst_n

rst_n min_r[5..0] min_r[5..0] min_r[5..0]


rst_n
sec_r[5..0] rst_n
sec_r[5..0] sec_r[5..0]

Bild 2. WS2812-Watch im RTL-View.

Bei einer Taktfrequenz von 50 MHz beträgt die Zeitauflö- kann (hier gibt es also einigen Raum für eigene Experimente).
sung, die wir mit dem CPLD erreichen können, 20 ns. Beim Die Funktion des Pixel-Treibers kann man so beschreiben: Zu
WS2812-Protokoll wird gefordert, dass die Pulsdauern nicht Beginn eines Pixels wird ein 24-Bit-Schieberegister (do_reg)
mehr als +/- 150 ns von den Sollwerten abweichen. Das sollte mit den Helligkeitswerten der LEDs geladen. Dazu muss das
bei unserer reinen VHDL-Implementierung also einzuhalten sein. Signal load für einen Takt auf 1 gehen, dann wird der Wert vom
Die Erfahrung mit den WS2812-LEDs zeigt ohnehin, dass die Eingangssignal load_val in das Schieberegister kopiert. Dieser
LEDs sehr tolerant gegenüber Timing-Verletzungen im seriellen Inhalt muss nun seriell hinausgetaktet werden (Listing 1).
Protokoll sind. Allerdings dürfen die Low-Pulse nicht zu lang Das Protokoll erfordert allerdings Pulse anstatt direkte 1- und
ausfallen. Auch Pulse, die deutlich kürzer als 50 µs sind, wer- 0-Werte auf der Datenleitung. Dies wird mit zwei Prozessen
den von LED-Controllern mitunter schon als Reset interpretiert. gelöst. Im Prozess code_proc werden kontinuierlich die „Codes“
für eine 0 oder eine 1 erzeugt (Listing 2). Welcher Code dann
Pixel-Treiber auf die Ausgangsleitung getrieben wird, wird durch das höchst-
Der hier vorgestellte WS2812-Treiber zum Anzeigen der Uhr-
zeit im Binärformat ist hierarchisch aufgebaut und besteht aus
mehreren Modulen (Bild 2). Das Top-Level-Modul instanziiert
die Uhr aus dem letzten Artikel [8] und zusätzlich eine Instanz Listing 2. Zero One Code Process.
des Moduls ws2812_matrix_driver. Dieses Modul besitzt als
code_proc: process (rst_n, clk)
Eingangssignale die Daten der Uhr-Register (hrs, sec, min),
begin
die auf dem 8x8-Display angezeigt werden sollen. Innerhalb
  if (rst_n = '0') then
des Matrix-Treiber-Moduls gibt es weitere Komponenten, die
jeweils unterschiedliche Aufgaben erfüllen.     zero_one_count <= 0;
Die ws2812_pixel_driver-Komponente ist so konzipiert, dass sie     one_code <= '1';
auch für LED-Stripes oder größere Matrizen verwendet werden     zero_code <= '1';
  elsif rising_edge(clk) then
    if (enable = '1') then
      if (bit_done)then
Listing 1. Schieberegister.
        zero_one_count <= 0;
shift_proc: process (rst_n, clk)         one_code <= '1';
  begin         zero_code <= '1';
    if (rst_n = '0') then       else
      do_reg <= (others => '0');         zero_one_count <= zero_one_count + 1;
    elsif rising_edge(clk) then         if (zero_one_count >= c_CLKS_T0_H_T1_L)
      if(enable= '1') then then
        if (load = '1') then           zero_code <= '0';
          do_reg <= load_val;         end if;
        else         if (zero_one_count >= c_CLKS_T1_H_T0_L)
          if (bit_done) then then
            do_reg <= do_reg(22 downto 0) & '0';           one_code <= '0';
          end if;         end if;
        end if;       end if;
      end if;     end if;
    end if;      end if;
  end process; end process;

www.elektormagazine.de März/April 2019 91


geschoben wurde und schließlich einen Counter, der angibt,
Listing 3. Ausgangsmux sdat_o.
wann das Pixel fertig ist.
mux : process (all) is
  begin Clock to Pixel
    case (out_sel ) is -- Im ws2812_matrix_driver befinden sich noch zwei weitere
      when "00" => sdat_o <= '0'; Zähler. Ein Zähler zeigt dabei an, wann die Dauer für einen
      when "01" => sdat_o <= zero_code; Reset-Code abgelaufen ist und ein Zähler zählt das aktuelle
      when "10" => sdat_o <= '0';
Pixel, das gerade ausgegeben wird. Da die Pixel der Matrix in
Reihe geschaltet sind, ist jedem der 64 LEDs eine Pixelnummer
      when "11" => sdat_o <= one_code;
zugewiesen. Die eigentliche Umwandlung der Zählerwerte der
      when others => sdat_o <= '0';
Uhr in die jeweiligen 24-Bit-Werte für die Pixel wird vom Modul
    end case;
clock_to_pixel übernommen. Dieses Modul sorgt in einem syn-
  end process; chronen Prozess dafür, dass das Schieberegister im Pixel-Trei-
ber immer wieder mit neuen Daten geladen wird. Dazu wird
die aktuelle Pixelnummer herangezogen und ausgewertet. Ist
die Pixelnummer kleiner oder größer als die Pixelnummern, die
wertige Bit 23 im Schieberegister ausgewählt, danach folgen zur Anzeige der Uhrwerte gedacht sind, wird eine Hintergrund-
die anderen Bits. Dieser Ausgangsmultiplexer (Mux) schaltet farbe led_bg in das Schieberegister geladen. Die Uhrzeitan-
also die Leitung sdat_o abhängig vom Wert im Schieberegister zeige benötigt 4 Pixel für die Stunden und jeweils 6 Pixel für
auf den richtigen Code-Generator (Listing 3). die Minuten- und Sekundenanzeige. Da das Ablesen im Binär-
format ohnehin etwas Übung erfordert, ist für jede Anzeige
Die restliche Logik innerhalb des Pixeltreibers besteht aus Coun- eine ganze Reihe der LED-Matrix vorgesehen. Welche Reihe
tern/Zählern, die wir bereits im letzten Artikel kennengelernt das ist, ist über Konstanten festgelegt (ein Beispiel: constant
haben. Die Zähler sind jeweils mit unterschiedlicher Zählweite c_hrs_idx: natural := 15;).
konfiguriert und zählen unterschiedliche Ereignisse. Es gibt
einen Counter, der anzeigt, wann ein Bit geschoben wurde (also Die Stundenanzeige beginnt also in der dritten Reihe der
alle 1,25 µs), dazu einen Counter der anzeigt, wann ein Byte LED-Matrix (zwei Reihen bleiben frei). Falls der Wert des jewei-
ligen Uhrzeitbits 1 ist, wird ein Gelb (led_on) in das Schiebe-
register geladen, ansonsten ist die LED aus (led_off). Die
Listing 4. Frame Control State-Machine in der übrigen LEDs 5..8 oder 7..8 einer Anzeigereihe sind immer aus.
Ein-Prozess-Schreibweise. Damit der Vergleich der aktuellen Pixelnummer funktioniert,
müssen noch die unterschiedlichen Datentypen, die beim Ver-
-- Build an enumerated type for the state machine
gleich herangezogen werden, beachtet werden. Der Pixelcounter
type state_type is (data_cyc,reset_cyc);
(led_cnt) hat als Ausgangsignal ein Signal vom Typ unsigned,
-- Register to hold the current state
die Konstanten auf die verglichen wird, sind vom Typ natural.
signal frame_state: state_type;
Damit dieser Vergleich erlaubt ist, muss die Funktion to_integer
... aus der Numeric_Std-Bibliothek verwendet werden (... if (to_
frame_ctrl: process (rst_n, clk) integer(led_idx) = c_hrs_idx +0) then ...). Einen nützlichen
  begin Überblick über die in VHDL eingebauten Typkonvertierungen
    if (rst_n = '0') then findet man z.B. unter [5] und [6].
      frame_state <= reset_cyc;
    elsif rising_edge(clk) then Automaten
      case frame_state is Die restliche Funktionsteuerung übernimmt das Modul frame_
        when reset_cyc => -- when current state cntrl_sm, welches einen Zustandsautomaten beschreibt. Ein
Zustandsautomat oder auch (Finite)-State-Machine (FSM) ist
is reset_cyc
eine sequentiell gesteuerte Logikschaltung, die zur Steuerung
          frame_state <= reset_cyc;
wiederkehrender Aufgaben und Abfolgen entwickelt wird. Es
          if(reset_done) then
gibt kaum größere digitale Hardware-Designs, die ohne eine
            frame_state <= data_cyc;
State-Machine auskommen. Ein Automat besteht aus einem
          end if; sequentiellen Teil, einer Reihe von Registern, die den aktuellen
        when data_cyc => -- when current state is Zustand speichern, und aus ein oder zwei kombinatorischen
data_cyc Teilen, die aus dem aktuellen Zustand den Folge-Zustand sowie
          frame_state <= data_cyc; die Ausgänge berechnen. Je nach Anwendung ist es sinnvoll, die
          if(cnt_state) then Eingänge vorher zu synchronisieren und die Ausgänge ebenfalls
            frame_state <= reset_cyc; in einem Register zwischenzuspeichern. Es wird zwischen zwei
          end if; Typen von Automaten unterschieden, dem Moore- und dem
        when others => frame_state <= reset_cyc; Mealy-Automat. Der Unterschied der beiden Automaten liegt in
ihrer Wahrheitstabelle und in den Zustandsübergängen. Wäh-
      end case;
rend die Ausgänge eines Moore-Automaten nur eine Funktion
    end if;
des aktuellen Zustands sind, sind bei einem Mealy-Automa-
  end process;
ten die Ausgänge eine Funktion des aktuellen Zustands und

92 März/April 2019 www.elektormagazine.de


der Eingangsdaten. Beide Automatentypen sind mit Hilfe von

Anzeige
boolescher Algebra ineinander überführbar. In der Praxis spielt
(nach Meinung des Autors) die Unterscheidung der Automa-
ten keine Rolle, da die Lösung eines konkreten Problems im
Vordergrund steht. Erfahrungsgemäß hat eine Moore-Automa-
ten-Implementierung mehr Zustände (= mo(o)re), ist aber in
der Regel einfacher zu verstehen.
Um eine State-Machine in VHDL zu beschreiben gibt es mehrere
Ansätze. Der erste ist der lehrbuchhafte zwei Prozess-Ansatz.
Dabei wird die State-Machine in zwei getrennten Prozessen
beschrieben. Ein Prozess ist nur für das Speichern des neu
berechneten Zustandsvektors zuständig; er ist die Beschrei-
bung des sequentiellen Teils des Automaten. Der zweite Pro-
zess ist die kombinatorische Logik, die zur Berechnung des
Folge-Zustands notwendig ist.
Daneben gibt es den Ansatz, die sequentiellen und kombina-
torischen Teile, die für die Zustands-Berechnung und Speiche-
rung nötig sind, innerhalb eines Prozesses zu beschreiben und
die restliche Logik für die Ausgänge (falls nötig) in einem wei-
teren Prozess. Dieser Ansatz hat den Vorteil, dass er weniger
Schreibaufwand bedeutet, somit kompakter und auch einfa-
cher zu verstehen ist.
Listing 4 zeigt den Sourcecode der State-Machine, die im Trei-
ber die Ablaufsteuerung eines Frames überwacht. Die State-
Machine hat nur zwei Zustände, die anzeigen, ob gerade ein
Pixel ausgegeben wird oder ob der Reset-Code anliegt. Die
Zustände eines Automaten werden in der Regel über Zustands-
diagramme dokumentiert. Für die einzelnen Zustände kann
in VHDL mit dem Schlüsselwort type ein User-defined-Type
erzeugt werden. Die Zeile

type state_type is (data_cyc,reset_cyc);

erzeugt einen neuen Typ namens state_type aus dem


VHDL-Standarddatentyp Enumeration.
Das Zustandsdiagramm der State-Machine für einen Frame
GRATIS Download
ist in Bild 3 zu sehen. Modelsim und Quartus sind ebenfalls in
der Lage, ein Zustandsdiagramm anzuzeigen, vorausgesetzt
• Schaltplansymbole
• PCB-Footprints
data_cyc
• 3D-Modelle
Click & Drop in
reset_done cnt_state
Ihr ECAD-Tool

reset_cyc

mouser.de/ecad
Bild 3. State Machine zur Ablaufsteuerung eines Frames.

www.elektormagazine.de März/April 2019 93


die State-Machines werden als solche erkannt. Wenn man bei type grb_lut is array (0 to 2) of std_logic_vector
Modelsim beim Übersetzen der VHDL-Datei den Command (7 downto 0);
Line Switch +cover angibt, werden die meisten State-Machines constant led_off: grb_lut:= (x"00", x"00", x"00");
erkannt. Bei Quartus muss man sich zusätzlich an vorgegebene –- all off
Coding-Styles halten. Die State-Machine des WS2812-Treibers constant led_bg: grb_lut:= (x"00", x"10", x"00");
wird aber (vermutlich weil sie nur zwei Zustände hat) dennoch
–- decent red
nicht erkannt.
constant led_on : grb_lut:= (x"1F", x"1F", x"1F");
–- decent yellow
Helligkeit
Eine einzige LED kann laut Internetrecherche bei voller Hel-
ligkeit bis zu 20 mA Strom ziehen. Bei 64 x 3 LEDs macht das Der standardmäßig ausgewählte Wert von 31 (= 0x1F) ist völlig
immerhin 3,9 A. Genug also um ein kleines Steckbrett-Netzteil ausreichend. Nun genügen auch die 700 mA Ausgangstrom des
in die Knie zu zwingen. Bei der Entwicklung des Treibers hat der Steckbrett-Netzteils (siehe Bild 4). Die serielle Datenleitung der
Autor also zu Beginn mit einem separaten Netzteil gearbeitet, LED-Matrix wird direkt mit dem Ausgang des CPLDs verbunden
das in der Lage war, genügend Strom zu liefern. Abgesehen (PIN 54 des CPLD = Pin 5 an K1). Laut Datenblatt der LED-Ma-
trix ist dies streng genommen unzulässig,
da die minimale Eingangsspannung für ein
High-Signal 0,7 * VDD = 3,5 V beträgt, was
ungefähr 200 mV über den 3,3 V des LVTTL-Aus-
gangs sind. Je nachdem, welche LED-Matrix vorliegt,
könnte also der Einsatz eines Level-Shifters not-
wendig werden.

Ausblick
In diesem Teil der Serie haben wir zum ersten Mal
eine etwas größere digitale Schaltung betrachtet.
Ein Blick auf die „Fitter Resource Usage Sum-
mary“ im Quartus-Compilation-Report-Fenster
zeigt, dass damit das CPLD zu 36 % gefüllt ist.
Es ist also noch ein wenig Platz für Erweite-
rungen. Im nächsten Teil werden wir kurz die
Timing Constraints behandeln, die für eine
funktionsfähige Schaltung notwendig sind.
Darüber hinaus wollen wir ein kleines Spiel
in Hardware programmieren.
Bild 4. Uhr mit 8x8-Anzeige.
180285-C-01

von dem viel zu hohen Stromverbrauch sind die LEDs, wenn


sie bei voller Helligkeit betrieben werden, zu hell für eine Uhr-
zeitanzeige, weshalb der Helligkeitswert der LEDs reduziert
wurde. Wie stark die LEDs mit welcher Farbe leuchten, ist im im elektor-shop
clock_to_pixel-Modul über Konstanten einstellbar. Dafür wird
ein eigener Array-Type aus std_logic-Vektoren angelegt. So ªCPLD Breakout Board
www.elektor.de/cpld-breakout-board-160425-91
kann für die verschiedenen Farben, die angezeigt werden sol-
len, jeweils eine separate Konstante angelegt werden.

Weblinks
[1] WS2812-Ansteuerung: www.mikrocontroller.net/articles/WS2812_Ansteuerung
[2] „ESP8266-Webserver für NeoPixel-LED-Streifen“, Elektor 09-10/2018: www.elektormagazine.de/180355-04
[3] WS2812-Datenblatt: https://cdn-shop.adafruit.com/datasheets/WS2812.pdf
[4] „Hardware-Design mit (V)HDL (1)“, Elektor 09-10/2018: www.elektormagazine.de/180285-01
[5] VHDL-Typkonvertierung: www.nandland.com/vhdl/tips/tip-convert-numeric-std-logic-vector-to-integer.html
[6] VHDL Vektor-Arithmetik: www.doulos.com/knowhow/vhdl_designers_guide/numeric_std/
[7] Webseite zum Artikel: www.elektormagazine.de/180285-C-01
[8] „Hardware-Design mit (V)HDL (2)“, Elektor 11-12/2018: www.elektormagazine.de/180285-B-01

94 März/April 2019 www.elektormagazine.de


Elektor Labs
Pipeline
Timer und Uhren sind beliebte Themen für Elektronikprojekte. Jeder braucht sie und sie lassen viel Raum für
Kreativität, besonders wenn es um die Anzeige geht.

Posten Sie Ihre Projekte auf Elektor Labs: www.elektor-labs.com

Elektrisch sicherer LED-Lampen-Konverter


Heutzutage ist es üblich, Glühbirnen durch LEDs zu ersetzen. Aber was
ist, wenn man das Gegenteil tun will? Mit diesem Konverter können Sie
einfach die LED durch einen Optokoppler ersetzen, damit dieser die
Lampe ein- und ausschaltet.

@ Elektor Labs: www.elektor-labs.com/1704

Bauen Sie eine Schlafzimmeruhr,


die auch die Außentemperatur anzeigt!
Wenn Sie, bevor Sie unter der warmen Bettdecke hervorkriechen, wis-
sen wollen, wie kalt es draußen ist ... dann ist diese DIY-Uhr genau das
Richtige für Sie. Ein Raspberry Pi mit einem Heimautomation-Server, ein
ESP32-WLAN-Modul mit angeschlossenem DHT22-Sensor und ein wei-
teres ESP32-Modul mit LED-Anzeige ist alles, was Sie benötigen. Klingt
kompliziert? Willkommen im Jahr 2019!
@ Elektor Labs: www.elektor-labs.com/1605

Bauen Sie einen nicht programmierbaren Timer ohne


Funktionen (auch Sanduhr genannt)
„Feature creep“ bedeutet, einem Produkt oder einem Programm Funkti-
onen hinzuzufügen, die für die Bedienung des Produkts oder Programms
nicht erforderlich sind. Beispiele sind Farbauswahlen und Schriftarten-
Optionen in Smartphone-Apps und alle möglichen anderen obskuren
konfigurierbaren Parameter. Dieser kleine Timer leidet mit Sicherheit
nicht unter einer solchen Funktionsüberfrachtung! @ Elektor Labs: www.elektor-labs.com/478

Bauen Sie eine Uhr/Anzeigetafel/Timer mit XL-Ziffern


Wenn Sie ein großes Display benötigen, um die Punktzahl in einem Spiel
anzuzeigen oder einen Zähler für Sportveranstaltungen, ist dieses Projekt
genau die richtige Wahl. Mit seinen vier zehn Zentimeter hohen 7-Seg-
ment-Anzeigen ist es aus der Ferne gut ablesbar. Das Projekt verwendet
LEDitron-Module, 7-Segment-Anzeigen aus LED-Filamenten, wie sie in
modernen Lampen zu finden sind. Und ja, es ist gleichzeitig eine Uhr!

(180571-B-03)
@ Elektor Labs: www.elektor-labs.com/1299

www.elektormagazine.de März/April 2019 95


HOMELAB PROJECT

I²C-Bus Datenleser
Über USB auf den PC-Bildschirm
Von Willem den Hollander

Der I²C-Bus (Inter-Integrated Circuit Bus) wurde als Bussystem für die Kommunikation zwischen integrierten
Schaltkreisen entwickelt. Oft ist es nützlich zu wissen, welche Daten über einen I²C-Bus laufen. Hier stellen
wir einen Datenleser vor, der die Daten auf dem Bus liest und sie über USB an einen PC weitergibt. Der
PC stellt die Daten hexadezimal auf dem Bildschirm dar. Die Daten können gefiltert werden, um aktuell
interessierende Daten zu finden.

Der I2C-Bus arbeitet mit zwei Signalleitungen: Taktleitung SCL Datenpakete über USB, die 64 Bytes lang sind. Zum Lesen
und Datenleitung SDA. Die Daten werden seriell übertragen. von Daten auf dem I2C-Bus im Standard Mode reicht dies aus,
Jede Nachricht besteht aus zwei oder mehr Bytes, daran schließt jedoch nicht im schnellen Fast Mode. Der I2C-Bus Datenleser
sich jeweils ein Bit zur Bestätigung an (Acknowledge). Eine kann zum Lesen von Daten im Fast Mode nur eingesetzt wer-
Startsequenz gibt den Beginn einer Nachricht an, eine Stopp- den, wenn nur gelegentlich Daten auf dem I2C-Bus übertragen
sequenz schließt sie ab. Um die I2C-Daten vollständig zum PC werden. Das kommt jedoch in der Praxis häufig vor.
zu übertragen, muss über USB die doppelte Anzahl an Bytes
transportiert werden. Im Standard Mode beträgt die I2C-Takt- Die Hardware
frequenz 100 kHz, was eine Datengeschwindigkeit von 20 kB Die Schaltung des I2C-Bus Datenlesers (Bild 1) besteht im
pro Sekunde ergibt. Im Fast Mode sind dies 80 kB pro Sekunde. Wesentlichen aus zwei Mikrocontrollern. Der PIC16F1455
Der hier vorgestellte I2C-Bus Datenleser sendet pro Millisekunde (rechts) liest die I2C-Daten und sendet sie über USB an den

+VCC

R1
C1 C2
10k

100n D1 LSG T676 10


R2
16V
1
3k9

1 J2
1
IC2
7 R/W 5 13 2
J1 RA0/ICSPDAT RC5 RA0/D+/ICSPDAT1
USB mini

SDA IN 6 6 12 3
RA1/ICSPCLK RC4 RA1/D-/ICSPCLK1
5 NACK 7 4
IC1 RA2 RC3
SCL IN 4 8 4 5
RA3/MCLR/VPP RC2 RA3/MCLR/VPP
3 SDA 9 3
PIC16F15313 RA4 ICSPDAT/RC1 RA4
2 SCL 10 2
RA5/MCLR ICSPDAT/RC0 RA5

PIC16F1455
8 VUSB_3V3
14 11
C3

470n

180601-002

Bild 1. Die Hardware arbeitet mit zwei Mikrocontrollern aus der PIC-Familie.

96 März/April 2019 www.elektormagazine.de


Bild 2. Die CLCs des PIC16F15313 werden wie hier gezeigt konfiguriert.

PC. Das I2C-Modul dieses Controllers ist als Slave-Empfänger Da der Strombedarf niedrig ist, kann die Hardware aus dem
konfiguriert, um die Daten unter beliebigen Adressen erfas- USB-Port des PC versorgt werden.
sen zu können. Das kann jedoch nur geschehen, wenn das Der Autor hat die Hardware mit SMD-Bauteilen auf einer dop-
Schreib-Bit der ankommenden Daten gesetzt ist. Wenn das pelseitigen Platine aufgebaut, die Abmessungen betragen
Lese-Bit gesetzt ist, werden die Daten ignoriert. Außerdem 14 ∙ 33 mm (siehe Bild 3).
können die Bestätigungsinformationen nicht gelesen werden,
weil das I2C-Modul sie selbst generiert.
Aus diesem Grund ist ein Präprozessor vorgeschaltet, ein
PIC16F15313 (links), der jedes Lese-Bit in ein Schreib-Bit
umwandelt. Die Lese-Bits und die Empfangsbestätigung wer-
den aus dem Datenstrom gefiltert und dem PIC16F1455 sepa-
rat übergeben. Er fügt diese Informationen den empfangenen
I2C-Daten zu und sendet sie über USB an den PC.
Der PIC16F15313 ist ein Mikrocontroller, der mit vier konfigu-
rierbaren logischen Zellen (CLCs) ausgestattet ist. In Bild 2
ist dargestellt, wie sie konfiguriert werden müssen.
Im Mikrocontroller PIC16F1455 ist eine vollwertige USB-Schnitt-
stelle integriert. Der interne Taktoszillator ist genügend genau,
ein externer Quarz ist entbehrlich. Der Mikrocontroller legt die
empfangenen Bytes an den zugehörigen Speicherplätzen ab. Wenn
genügend viele Daten empfangen wurden, sendet er sie an den PC.
Die Firmware beider Mikrocontroller wurde in Assembler
geschrieben, so dass kritisches Timing kontrollierbar ist.
Auch die Konfiguration des USB-Moduls wurde in Assembler
geschrieben. Dieser Teil der Firmware stammt ursprünglich
von Microchip, er ist nach einigen Anpassungen und Fehler-
beseitigungen seit etwa zwölf Jahren beim Autor im Einsatz. Bild 3. Ober- und Unterseite der vom Autor aufgebauten Platine.

www.elektormagazine.de März/April 2019 97


Bild 4. Signale des PIC16F15313, an den gekennzeichneten Stellen ist das Lese-Bit entfernt.

Firmware und Software Dauer eines Bits zum Ausgang. Die gelesenen Informationen
Timer 0 des PIC16F15313 generiert ein Fenster, das 1 Bit breit sind am Ausgang von CLC3 verfügbar (siehe Bild 2 links unten),
ist und das Lese-Bit entfernt, siehe auch Bild 4. Aus Listing 1 sie werden zum Ausgang RA0 weitergeleitet.
geht hervor, wie CLC2 das Lese-Bit auf 0 setzt. Das modifi- Da das SDA-Signal durch die CLCs verzögert wird, muss das
zierte SDA-Signal am Ausgang von CLC2 (siehe rechts oben in SCL-Signal ebenfalls verzögert werden, damit das Timing korrekt
Bild 2), ist mit dem Ausgang RA4 verbunden. RA4 ist ein Open- bleibt. Das geschieht hier mit CLC4. Ein kurzes Programmseg-
Drain-Ausgang mit externem Pullup-Widerstand. Der Wider- ment steuert den Timer und liest das Bestätigungsbit von RA2.
stand ist notwendig, weil der PIC16F1455 nach dem Empfang Bild 5 zeigt die grafische Benutzeroberfläche (GUI) der zuge-
eines Bytes vom PIC16F15313 immer ein Bestätigungssignal hörigen PC-Software. Die Statuszeile unten gibt an, ob der
(ACK) zurückgibt. Der Eingang des PIC16F1455 wird für die I2C-Bus-Datenleser angeschlossen ist und erkannt wurde. Über

Listing 1.

Der Ausschnitt aus dem Quellcode zeigt die Konfiguration


von CLC2 (Bild 2b). Hier wird das Lese-Bit aus dem SDA-
Datenstrom auf 0 gesetzt. Timer 0 wird gestartet, wenn das
Start-Bit erkannt wird.
banksel CLC2GLS0 ; TMR0 ANDed with SDA clears bit 8
movlw 2
movwf  CLC2GLS0
movwf  CLC2GLS1
movwf  CLC2GLS2
movlw  4
movwf  CLC2GLS3
movlw  1      ; SDA input signal
movwf  CLC2SEL0
movlw  0ch    ; TMR0 overflow
movwf  CLC2SEL1
clrf   CLC2SEL2
clrf   CLC2SEL3
clrf   CLC2POL
movlw  82h
Bild 5. Die Benutzeroberfläche ist übersichtlich, sie bietet einige
movwf  CLC2CON
zusätzliche Funktionen.

98 März/April 2019 www.elektormagazine.de


die Schaltfläche Start Acquisition wird das Lesen der I2C-Daten USB-Kabel an den PC anschließen. Zum Download auf der Pro-
eingeleitet. Die LED auf der Platine leuchtet grün, die Schalt- jektseite [1] gehört eine Datei mit der Endung „.inf“. Wählen
fläche hat jetzt die Funktion Stopp. Die Daten des I2C-Bus wer- Sie diese Datei aus, wenn Windows einen Treiber anfordert.
den im Hauptfenster angezeigt. Konform zum gültigen Stan- Der Treiber wird dann von Windows installiert. Das PC-Pro-
dard stehen dort S für Start, R für Read (Lesen), W für Write gramm mit der Benutzeroberfläche installieren Sie, indem Sie
(Schreiben), A für Acknowledge (Bestätigen), N für No Ack- auf die Datei „Setup.exe“ doppelklicken, sie gehört ebenfalls
nowledge (Keine Bestätigung) und P für Stopp. Die gelesenen zum Download. Folgen Sie dann den Anweisungen auf dem
Daten-Bytes werden im hexadezimalen Format dargestellt. Bildschirm.
Mit der Software können die ersten beiden Bytes hexadezimal
oder binär gefiltert werden. Wenn die zu suchenden Bytes in Schlusswort
das vorgesehene Feld eingetragen sind, werden nur Daten Die Besonderheit des I2C-Bus Datenlesers besteht darin, dass
angezeigt, die mit diesen Bytes beginnen. Ist Post Acquisition I2C-Bus-Daten beliebig lange und unbegrenzt gelesen werden
markiert, startet die Datenerfassung erst nach dem Empfang können. So lassen sich auch Fehler erkennen, die nur selten
der eingetragenen Bytes. Beim Filtern im binären Format ist auftreten. Die PC-Software könnte so erweitert werden, dass
es auch möglich, mit Dont Care‘s zu operieren. Dann steht die I2C-Bus-Daten vollständig auf einem Datenträger protokol-
dort ein „X“. liert werden, um sie später zu analysieren.
Die Puffergröße beträgt ungefähr 40 kB. Wenn der Puffer über- (180601)
zulaufen droht, wird ein Teil der Daten am Pufferanfang ver-
worfen. Falls Stop when buffer full markiert ist, findet dies
nicht statt, und die Datenerfassung wird zu diesem Zeitpunkt
gestoppt. Die grüne LED verlischt, sobald die Datenerfassung
beendet wurde.
Wenn die Datenmenge zu umfangreich wird, stoppt die Daten-
erfassung, und die LED leuchtet rot. Die Software wird dann Weblink
selbsttätig in den Ausgangszustand zurückversetzt. Die Daten
[1] Software und Treiber:
im Protokollfenster bleiben erhalten, bis sie gelöscht werden
www.elektormagazine.de/180601-02
oder bis der Puffer voll ist und ein Teil gelöscht wird. Über das
Menü File können die Daten im Fenster ganz oder teilweise auf
einem Datenträger gespeichert oder auch gedruckt werden.
Noch ein Hinweis: Das kontinuierliche Anzeigen der Daten belas-
tet das Betriebssystem Windows in nicht unerheblichem Maß.
Daher ist es ratsam, nicht andere Programme gleichzeitig auf im elektor-shop
dem PC auszuführen.
ªBuch: „Elementary Course BASCOM-AVR“
www.elektor.de/elementary-course-bascom-avr
Installieren
ªBuch: „Make: AVR Programming“
Bevor Sie den I2C-Bus Datenleser nutzen können, müssen Sie
www.elektor.de/make-avr-programming
den USB-Treiber installieren. Das Betriebssystem Windows
erkennt ein neues Gerät, sobald Sie den Datenleser über ein

Anzeige

1.920
× 105.000 ≥ 15
1.536 Hz mK
Detektor 1,3 µm Trigger

Ihr Spezialist für Thermografie


Von der Produktentwicklung
bis zur Qualitätssicherung

„ Gekühlte und ungekühlte High-End-Thermografiekameras zur Lösung komplexer Aufgabenstellungen


„ Detektoren mit bis zu (1.920 × 1.536) nativen IR-Pixeln und Bildraten bis in den Kilohertz-Bereich
„ Modulares Hard- und Software-Konzept für die Anpassung an unterschiedlichste Mess- und Prüfaufgaben
„ Höchste Auflösung durch lichtstarke Präzisions-Wechseloptiken mit exzellenter Übertragungsgüte
„ Komplettlösungen inkl. Software und Zubehör für die Aktiv-Thermografie zur sicheren Lokalisierung von Defekten
„ Erstklassiger Service sichert hohe Systemverfügbarkeit www.InfraTec.de
Qualität aus Deutschland

www.elektormagazine.de März/April 2019 99


Störquellen
im Automotivebereich

Und wie man sie eliminiert!


Von Tam Hanna

Wer der Welt der klassischen Prozessrechner entstammt und irgendwann eine Schaltung für ein Fahrzeug
entwerfen soll, kann leicht in die automotive Falle geraten. Was dabei alles schief gehen kann und welche
Risiken auf den Entwickler und seine Hardware warten, soll dieser Artikel andeuten.

Bevor es ans Eingemachte geht, noch ein Wort vorab: Der anderem - daran, dass man sich ein automotives System unge-
Autor kennt eine Vielzahl von Kleinserien, die teils seit Jahren fähr wie das in Bild 1 gezeigte Netzwerk aus e^-t-Gliedern
im praktischen Einsatz sind und nur wenige oder gar keine der vorstellen muss. Einige Schaltungen sind „näher am Feuer“ und
hier genannten Schutzmaßnahmen aufweisen. Das liegt - unter bekommen den Großteil der Störungen ab, während andere
relativ unbehelligt bleiben. Die zur korrekten Absicherung eines
Designs notwendigen Maßnahmen kosten aber meist nicht die
Welt und sind auf jeden Fall ökonomisch sinnvoll.

Generator brutal
source of
interference Beginnen wir gleich mit der bösartigsten aller Störungen, die in
der Industrie als Lastabwurf (englisch: load shed) bezeichnet
wird. Hierzu müssen wir uns einen Quad oder ein ähnliches
Fahrzeug vorstellen, das mit Karacho über eine Schotterstraße
heizt. Leider ist es mit der Stabilität der Verbindung zwischen
Generator und Batterie nicht besonders gut bestellt. Der Her-
steller hat gespart, der Mechaniker hat geschlafen oder der
e-t e-t e-t Rost ist in die Verbindungselemente der Autobatterie hinein-
gefahren. Wie auch immer, beim Überfahren eines besonders
kernigen Steins kommt, was kommen muss - die Verbindung
zwischen Batterie und Generator geht kurzfristig verloren. Der
Generator will, nein muss aber seine überschüssige Energie
circuit circuit circuit irgendwohin abladen. Zugegeben, das Phänomen tritt erfreu-
licherweise nur sehr selten auf.
An dieser Stelle zeigt sich das erste Mal ein Hindernis, dem
Bild 1. Die Schaltungen sind der Störquelle unterschiedlich stark man im automotiven Bereich häufiger begegnet: Die konkur-
ausgesetzt. rierenden Hersteller spezifizieren mehr oder weniger belie-

100 März/April 2019 www.elektormagazine.de


bige Sachen und nutzen dabei die Auffassungen diverser kon-
kurrierenden Standardisierungsgremien. Das ist es, was man
Dschungel nennt!
Zurück zum Lastabwurf. Es gibt von Seiten der ISO-Gruppe
zwei Spezifikationen: erstens die bis 2010 gültige Norm ISO-
7637-2, die bei einigen Automobilherstellern (zum Beispiel
Ford) nach wie vor angewandt wird und unter [1] zum Down-
load bereitsteht. Und zweitens die aktuell gültige Version ISO-
16750-2, die aber derzeit nur gegen Bezahlung einsehbar ist.
Der Halbleiterhersteller Vishay stellt unter [2] zumindest eine
kurze Übersicht bereit, die die Anforderungen der aktuellen
Norm zusammenfasst. Texas Instruments verrät in [3] den
Aufbau des Pulses, wie er in Bild 2 zu sehen ist.
Unterm Strich bleibt die Feststellung, dass bei einem 12-V-Sys-
tem ein 400 ms anhaltender Puls von bis zu 101 V angelegt Bild 2. Mit diesem Spike ist nicht gut Kirschen essen (Quelle: TI [3]).
werden muss, dessen Widerstand minimal 0,5 Ω und maximal
4 Ω beträgt. Bei einem 24-V-System ist die maximale Dauer
350 ms, die Spannung beträgt 151...202 V, der Innenwider-
stand reicht von 1 Ω bis 8 Ω.
Frei nach Adam Riese ergibt sich daraus für ein 12-V-System Input
eine momentan abzuführende Leistung von 20.400 W, wäh-
rend ein 24-V-System gar mit 40.800 W fertig werden muss. System
Besonders ärgerlich ist in diesem Zusammenhang die sehr kurze e.g. LM9061
OVP
Anstiegszeit (rise time) von rund 10 ms. Eventuelle Schalt-
kreise müssen sehr schnell reagieren, was Bauteile wie Relais
180345-008
von vorneherein ausschließt.
Genauso ärgerlich ist die Forderung der neuen Norm, dass die
Schaltung zehn solcher Impulse innerhalb von zehn Minuten Bild 3. Feige sein kann sich auszahlen!
aushalten muss. Nach der älteren Norm hätte es ausgereicht,
wenn das Gerät einen einzigen solchen Puls überlebt. Diese
Forderung der neuen Norm ist allerdings sinnvoll, denn ein fern zu erleichtern, als dass sie auf beispielsweise 35 V vor-
Vehikel mit korrodierten Batterieklemmen kann Lastabwürfe gespannt wird und so die abfallende Leistung nicht so extrem
en masse produzieren. hoch ausfällt.
Ein klassischer Weg zum „Selbstschutz“ gegen solche Pulse ist TVS-Dioden sind übrigens nicht die einzigen Bauteile, die sich
- neben dem Vorschalten einer massiven Kapazität samt eines um die Bekämpfung diverser Spikes verdient machen. Varisto-
Widerstands - das Einfügen eines sehr schnell reagierenden ren (VDR) beispielsweise sind bidirektionale, spannungsabhän-
„Schutzschalters“, der die zu sichernde Schaltung im Ernstfall gige Widerstände, die im Prinzip ein diodenartiges Verhalten
einfach vom Bordnetz trennt (Bild 3). an den Tag legen. Sie unterscheiden sich von TVS durch eine
Erfreulicherweise ist sich die Halbleiterindustrie der Lästigkeit wesentlich höhere Energiekapazität, schalten allerdings lang-
dieses Problems mehr als bewusst, und bietet diverse Bau- samer und degradieren im Laufe der Zeit (auch wenn Vishay
teile an, die zur Bekämpfung von Transienten geeignet sind. unter [6] von „vernachlässigbarer Degradierung in der SOA“
Als besonders erfolgreich hat sich in diesem Zusammenhang spricht). Problematisch ist in diesem Zusammenhang auch die
das Unternehmen Littelfuse etabliert. Die als TVS (Transient Tendenz zu Durchschlägen bei Metalloxid-Varistoren (MOV).
Voltage Suppressor Diode) bezeichneten und unter [4] kurz
vorgestellten Dioden agieren als eine Art Brechstange, die im
Zweifelsfall die Spannung begrenzt. Aber auch bei STM war man
nicht faul. Die Produktpalette der Suppressordioden, von STM Surges pulses
„Transil“ genannt, ist nach den verschiedenen ISO-Testpulsen
unterteilt, was Entwicklern die Auswahl passender Komponen- 5a Automotive-grade
load-dump protection
ten erleichtert (Bild 4). Vishay bezeichnet die ESD-Schutzdi- 5b
oden als „TransZorb“. ISO 7637-2
Beachten Sie, das Transils so gut wie immer in unidirektionalen 3a
Automotive-grade
und bidirektionalen Varianten angeboten werden. Unidirektio- 2a power-rail TVS protection
1a
nale Transile verhalten sich dabei wie normale Zenerdioden –
kommt der Puls aus der falschen Richtung, so schalten sie sofort
Automotive-grade
durch. Bidirektionale Transile setzen in beiden Richtungen eine ESD dataline ESD protection
gewisse Mindestspannung voraus, bevor sie sich aktivieren.
Der Autor verwendet gerne den halbwegs hochspannungs-
tauglichen Schaltregler LM2576HV aus der Reihe der „Simple
Switcher“ von TI (der allerdings in Sachen Kaltstartspannung Bild 4. STM unterteilt seine Transil-Familie nach der ESD-Resistenz
nicht gerade überragend ist), um der Diode die Arbeit inso- (Quelle: STM [5]).

www.elektormagazine.de März/April 2019 101


to
+12V delicate
rated device
4k7 1k
BAS21

100k
2V7 100n

180345-009

Bild 5. Nicht originell, aber simpel: ein Spannungsbegrenzer mit Z-Diode. Bild 6. Cold Cranking kann ganz schön unangenehm werden (Quelle: TI).

Dem Autor ist mehr als ein System bekannt, das dank eines weiteres Ärgernis sind Spannungsabfälle, die aus diversen
gealterten MOVs eine oder mehrere Spannungsschienen kurz- Gründen auftreten können. Neben dem plötzlichen Einschal-
geschlossen hat. ten eines „schweren“ Verbrauchers ist es auch das Starten
In der Praxis findet man zudem immer wieder Pärchen aus des Verbrennungsmotors bei kalter Außentemperatur. Dieser
einem MOV und einer TVS-Diode mit etwas höherer Durch- im englischen als Cold Crank bezeichnete Zustand ist ziemlich
bruchsspannung. Der Hintergedanke ist eine Kombination aus gefürchtet, da es aufgrund des durch die Kälte degradierten
der schnellen Schaltcharakteristik der TVS-Diode mit der höhe- Verhaltens der Hauptbatterie zum in Bild 6 gezeigten Verlauf
ren thermischen Kapazität des MOVs. Beachten Sie, dass die der Bordnetzspannung führen kann.
Norm IEC 60950-1 die Nutzung von MOVs als Überspannungs- Auf den ersten Blick ist man als Entwickler geneigt, das Cold
schutz vorschreibt und die von Transilen nicht erlaubt! Cranking zu ignorieren. Der Spannungsregler (wie der oben
genannte LM2576) ist ja auch zum Betrieb bei Spannungen von
Böse Spannungen rund 8 V geeignet. Die ISO spezifiziert je nach Kritikalitätsgrad
Neben der Absicherung der Haupt-Spannungsquelle sollten Sie des Systems aber Spannungen von bis zu 3 V.
auch darauf achten, empfindliche Bauteile beziehungsweise Ein- Zur Bekämpfung dieses Problems gibt es mehrere Methoden.
gänge zusätzlich mit Spannungsbegrenzern ausgiebig abzusi- Als erstes fällt einem natürlich das Vorschalten eines möglichst
chern. Ein Klassiker ist die wenig elegante, aber durchaus ihre großen Kondensators ein, der übrigens auch bei schnell stei-
Aufgabe erfüllende Zenerdioden-Schaltung in Bild 5. Bei dieser gender Spannung die Anstiegskurve abschwächt. Die zweite
Absicherung gegen Überspannungen reicht es ironischerweise Möglichkeit besteht darin, das eigene System darauf auszu-
aus, darauf zu achten, dass der Widerstand und die Zenerdi- legen, dass es im Fall eines Cold Cranks „abstürzt“ und bei
ode ausreichend Leistung absorbieren können, um eventuell ausreichender Spannung einfach weiterarbeitet. Diese Vorge-
anfallende Spannungsspitzen im wahrsten Sinne des Wortes hensweise ist allerdings nicht sehr empfehlenswert, denn ins-
zu verheizen. Der Widerstand muss den Zenerstrom auf ein besondere im Fall von komplexen unix-artigen Prozessrechnern
sicheres Maß begrenzen, darf dabei aber nicht verbrennen. führt die lange Startzeit zu massiven Problemen.
Rein theoretisch sollte man in einem 12-V-System mit maximal Eine andere, nicht minder interessante Lösung ist die Nutzung
14 V, vielleicht auch mal mit 15 V rechnen müssen. Leider ist der Buck-Boost-Technologie. Es handelt sich dabei um Schalt-
das in der Praxis nicht so, und wie so oft liegt es an der „Wet- regler, die sowohl steigernd als auch senkend arbeiten können.
ware“, dem Anwender. Ein Klassiker ist es, wenn Personen Texas Instruments gibt dazu in der Application Note 728 [7]
die Batterie ihres Fahrzeugs - sei es aus Nachlässigkeit oder weitere Hinweise. Und wenn der Regler auch wirklich mit 3 V
Dummheit - leerlaufen lassen und dann von einem anderen Eingangsspannung arbeiten kann, muss man sich um das Cold
Fahrzeug Starthilfe in Anspruch nehmen. Überraschenderweise Cranking keine Gedanken mehr machen.
kommt es oft vor, dass ein LKW (mit einer Bordspannung von
24 V) dem PKW mit seinen 12 V Starthilfe gibt. Im angelsäch- Kampf den negativen Pulsen
sischen Raum ist es auch sehr beliebt, zur Starthilfe die zwei Auch wenn man als Entwickler – theoretisch - darüber lachen
Batterien in Serie zu schalten. Wie dem auch sei, achten Sie bei kann, wenn ein Benutzer oder ein Mechaniker die Batterie ver-
der Entwicklung lediglich darauf, dass ihre Schutz-Schaltkreise sehentlich falsch herum anschließt, lachen Sie nicht, es kommt
die 24-V-Bordnetzspannung nicht als einen „zu clampenden“ vor! Erfreulicherweise ist das Absichern gegen Dummheit nicht
Impuls betrachten und versuchen, sie kurzzuschließen. Für besonders schwierig, man muss kein Genie sein, um sein Sys-
einen Schaltregler sollte das kurzfristige Anlegen von 24 V tem wie in Bild 7 mit einer Diode abzusichern. In der Praxis
kein allzu gravierendes Problem darstellen, wenn die Schal- muss allerdings beachtet werden, dass die Ansprüche an diese
tung einigermaßen intelligent ausgelegt ist. „Schutzdiode“ alles andere als gering sind. Ein Fahrzeug ist
nämlich nicht nur eine Serienschaltung diverser e^-t-Glieder,
Misstraue der Spannung! sondern auch eine Ansammlung von verschiedenen induktiven
Das „Außer-Gefecht-setzen“ von Überspannungen ist nur die Verbrauchern, die beim Ein- und Ausschalten diverse Spikes
halbe Miete. Es sind nicht nur Störimpulse, die stören. Ein ausspeien.

102 März/April 2019 www.elektormagazine.de


IPD80P03P4L-07
S D

6A3

System G

2V7

270 R8
V33MLA1206H 33V
35V

4k7
180345-010

180345-006

Bild 7. Das Lösen von Problemen kann ja so einfach sein! Bild 8. An diese Art, einen MOSFET einzusetzen, denkt nicht jeder!

Neben den positiven Spikes, für die TVS-Dioden eingesetzt wer- ISO-Normen sind mit Sicherheit die klassischen Quellen, las-
den, gibt es auch Spikes, die eine Spannung von bis zu -200 V sen sich aber nur recht schwer beschaffen. In Österreich kann
(!) an den Eingang der Elektronik legen. Aus diesem Grund man einige davon im Normeninstitut einsehen, muss dazu aber
muss man bei der Auswahl der Diode extrem vorsichtig sein. die lange und beschwerliche Reise in die Hauptstadt antreten.
Der Autor hat für die Hauptversorgung mit der S5BC-13-F von In Deutschland gibt es eine Vielzahl von Normen-Infopoints,
Diodes Incorporated gute Erfahrungen gemacht, während sich meist in Hochschulen, aber auch in Ämtern und Instituten. Eine
die BAS20 zum Absichern von Attenuatoren (Spannungsab- Übersicht dieser Normenquellen gibt es unter [8].
schwächern) und ähnlichen Schaltungen sehr nützlich machte. Eine nette Alternative zu den Normschriften wird vom amerika-
Klassische Dioden haben aber schon lange kein Monopol mehr nischen Autohersteller Ford unter [9] bereitgestellt. Es handelt
auf dieses Anwendungsszenario. Wegen ihrer vergleichsweise sich dabei um ein Spezifikationsdokument, das eigentlich für
doch hohen Schwellspannung ist es wünschenswert, bei hohen Lieferanten vorgesehen ist, die Komponenten für die Amerika-
Strömen auf effizientere Komponenten zu setzen. Hier haben ner produzieren wollen. Es ist aber auch für andere Entwickler
Entwickler von Transistorschaltungen ein neues Betätigungs- insofern interessant, als dass das Dokument fast komplett
feld sowohl für P- als auch für N-Kanal-Feldeffekttransistoren „alleinstehend“ ist und so das Lesen der einen oder anderen
gefunden. Bild 8 zeigt schematisch, wie man derartige Schal- Norm überflüssig macht.
tungen aufbauen kann.
Wie in der Einleitung gesagt: Es gibt Tausende von Systemen,
Was noch zu sagen wäre die einige oder sogar alle der hier besprochenen Regeln aufs
Dieser Artikel beschränkt sich auf 12-V- und 24-V-Systeme. Gröbste missachten und trotzdem problemlos funktionieren.
Aufgrund der immer komplexer werdenden Fahrzeugelektronik Wer mit einer TVS-Diode und einigen anderen Bauteilen seine
fahren mittlerweile auch Fahrzeuge mit einem 48-V-Bordnetz Entwicklung schützt, darf sich seiner Situation aber im Großen
durch die Gegend. Die Spezifikationen stehen noch nicht voll- und Ganzen sicher sein.
ständig fest – wenden Sie sich im Zweifelsfall an den Herstel- 180345-01
ler des Fahrzeugs.
Automotive ist wahrlich kein Nischenmarkt: Es dürfte niemanden
überraschen, dass es eine Unmenge von Literatur zum Thema
Elektronik in Fahrzeugen gibt. Die in der Einleitung genannten

Weblinks
[1] ISO 7637-2: www.smd.ru/upload/medialibrary/a3d/iso_7637_2.pdf
[2] Load dump protection: www.vishay.com/docs/49748/49748.pdf
[3] Load Dump and Cranking Protection: www.ti.com/lit/an/snva681a/snva681a.pdf
[4] Littelfuse Automotive TVS Diodes: www.littelfuse.com/~/media/electronics/application_notes/littelfuse_tvs_diode_auto-
motive_circuit_protection_using_automotive_tvs_diodes_application_note.pdf.pdf
[5] Automotive Protection Devices:
www.st.com/content/st_com/en/products/protection-devices/automotive-protection-devices.html
[6] Transient Suppressors, a Competitive Look: www.vishay.com/docs/88444/tvscomp.pdf
[7] Output Voltage Regulation During Automotive Cold-Crank: www.ti.com/lit/an/snva728/snva728.pdf
[8] Normen einsehen: www.beuth.de/de/regelwerke/auslegestellen#/
[9] Electromagnetic Compatibility Specification: www.fordemc.com/docs/download/FMC1278.pdf

www.elektormagazine.de März/April 2019 103


Funkstörungen durch LED-Lampen
Sind störende LED-Lampen konform zum EMC-Standard?

Von Johan Jongbloed

Im April 2018 hatten wir unsere Leser aufgerufen,


störende LED-Lampen zur Begutachtung an
die Redaktion zu schicken. Wir haben eine
beachtliche Anzahl unterschiedlicher Typen
erhalten. Um die LED-Lampen gemäß der
europäischen Norm EN 55015 zu prüfen,
hat die EMC-EMF-Kommission in den
Niederlanden angeboten, diese Lampen
einer EMC-Pre-Compliance-Prüfung zu
unterziehen. Die Kommission gehört
zur Association of Experimental
Radio Research (VERON).

Zuerst einige Worte zur EMC-Richtlinie und den Standards: Die Verschlimmernd kommt hinzu, dass moderne Störquellen nicht
EMC-Richtlinie ist im (niederländischen) Telekommunikations- nur kurzzeitig aktiv sind, wie beispielsweise der Staubsauger
gesetz enthalten (die Standards gehören jedoch nicht dazu). In oder die Kaffeemühle. Heute bleiben viele Störquellen stän-
Anlage I wird dort der Begriff „Emission“ wie folgt beschrieben: dig eingeschaltet, sie sind rund um die Uhr im Dauerbetrieb.
Die erzeugten elektromagnetischen Störungen dürfen ein Niveau
nicht übersteigen, bei dem Funk- und Telekommunikationsge- Wurde etwas unternommen?
räte nicht mehr bestimmungsgemäß funktionieren können. Die zuständigen Gremien haben nicht vorausgesehen, dass
Wie ist dies zu verstehen? Wenn ein Rundfunkempfänger nicht die Funkkommunikation so schnell in massive Mitleidenschaft
mehr bestimmungsgemäß im Sinn der Richtlinie funktioniert, gezogen wird, wie dies geschehen ist. Die Entwicklung verlief
also kein Empfang von Rundfunksendern möglich ist, wird das im Hintergrund, ohne dass dies besonders auffiel. An vorders-
Gerät definitiv gestört. Doch setzt das voraus, dass zwischen ter Front haben die Funkamateure vor einer „Verschmutzung“
Störquelle und Empfänger ein Mindestabstand eingehalten wird? des elektromagnetischen Spektrums gewarnt. Funkamateure
Die Grenzwerte und Messaufbauten wurden in den 1970er Jah- operieren häufig am Rand des Rauschpegels, sie bemerken
ren mit den damals bekannten Störquellen wie Kollektormotor Veränderungen im elektromagnetischen Spektrum zuerst.
(Staubsauger und Kaffeemühle) und Zündung des Ottomotors Die EMV-Bestimmungen gehen davon aus, dass nur ein ein-
(Kraftfahrzug) festgelegt. Zu jener Zeit gab es noch keine Com- zelnes Produkt die Standards erfüllen muss. Tatsächlich sind
puter, Mobiltelefone, Schaltnetzteile, LED-Beleuchtungen oder oft viele störende Geräte gleichzeitig an benachbarten Orten
Solarsysteme. Die Väter der Richtlinie gingen davon aus, dass in Betrieb. Wie in einem gut besuchten Café, in dem sich viele
die Störquellen außerhalb des Einflussbereichs des Einzelnen Menschen gleichzeitig unterhalten, steigt der Störgeräusch-
zu lokalisieren sind, beispielsweise beim Wohnungsnachbar. pegel beträchtlich an.
Deshalb wurde ein Messabstand von 10 m zwischen einem Vielleicht ist es an der Zeit, die Standards zu überarbeiten. Zum
potentiell gestörten Gerät und einer Störquelle gewählt. Beispiel könnten die Grenzwerte der Produkte abhängig von der
Art des einzelnen Produkts um einige dB herabgesetzt werden.
Gibt es wachsende Einsicht?
Nicht wirklich. Die Welt hat sich geändert, aber de facto wurden Der Test: Warum EMC-Konformität?
die Standards in den 1970er Jahren eingefroren. Die Anzahl der Für Geräteentwickler ist es von Vorteil (vor allem finanziell),
Störquellen ist enorm gestiegen, so dass Funkamateure auch mit im Entwicklungsstadium zunächst einen Pre-Compliance-Test
leistungsstarken Außenantennen kaum noch „in die Luft“ gehen durchführen zu lassen. Eine vollständige Konformitätsprü-
können. Die hausgemachten Störquellen verursachen ungefähr fung oder ein formgemäßer Test ist kostspielig, dies schlägt
70 % der örtlichen Störungen. Der Funkamateur kann sie in eige- mit 1.000 € bis 4.000 € zu Buche. Aus diesem Grund lassen
ner Regie beseitigen, die Störquellen bei den Nachbarn aber nicht! die Hersteller in der Entwicklungsphase zunächst Pre-Com-

104 März/April 2019 www.elektormagazine.de


pliance-Tests mit erheblich niedrigeren Kosten durchführen.
So können EMV-Probleme in einem frühen Entwicklungssta-
dium erkannt und beseitigt werden, noch bevor das Gerät auf
vollständige Konformität getestet wird. Die Chancen für den
Markterfolg werden gesteigert.
Eine EMC-Pre-Compliance-Prüfung sagt bereits viel über das
Strahlungsverhalten eines elektrischen Geräts aus. Im Fall der
eingeschickten LED-Lampen genügt diese Prüfung, um aussage-
fähige Erkenntnisse über das Strahlungsverhalten zu gewinnen.

Arten der Emission


Bei der EMC-Prüfung werden zwei Arten der Strahlungsleistung
unterschieden: Conducted Emission (CE) und Radiated Emission
(RE). Die erste Art bezeichnet die elektromagnetische Ener-
gie, die im Innern eines Geräts entsteht und ihren Weg nach
außen über die 230-V-Netzleitung nimmt. Das Stromnetz eines Bild 1. RE-Messung an einer LED-Lampe, hier wird der Grenzwert deutlich
Gebäudes verhält sich wie eine Langdrahtantenne, sie kann die überschritten.
Signale empfangen und abstrahlen. Die Radiated Emission (RE)
ist die elektromagnetische Energie, die im Innern eines Geräts
erzeugt wird, sie wird jedoch über die Luft abgestrahlt. Dieser Tabelle 1. Messwerte der LED-Lampen
Fehler tritt häufig bei Geräten auf, die mangelhaft konstruiert CE 0,009 ... 30 MHz 37,5% 0...5 dB unter Grenzwert
sind oder Defekte aufweisen. Die Geräte können Probleme mit CE 0,009 ... 30 MHz 6,25% 5...10 dB unter Grenzwert
anderen Geräten in unmittelbarer Nähe verursachen. CE 0,009 ... 30 MHz 25% 10...15 dB unter Grenzwert
Die Richtlinie EN 55015, die für die Strahlungsleistung zuständig
CE 0,009 ... 30 MHz 31,25% >15 dB unter Grenzwert
ist, schlägt eine alternative Methode zum Messen der Radia-
CE 30 ... 300 MHz 6,25% 0...5 dB unter Grenzwert
ted Emission vor. Die Emissionsleistung wird dabei mit einem
CE 30 ... 300 MHz 12,5 % 5...10 dB unter Grenzwert
Entkoppelnetzwerk gemessen. Diese Methode wird hier auch
Conducted-Emission-Messung genannt. CE 30 ... 300 MHz 12,5 % 10...15 dB unter Grenzwert
CE 30 ... 300 MHz 68,75% >15 dB unter Grenzwert
Ergebnisse
Bei der CE-Messung ist das Messspektrum in zwei Bereiche
unterteilt: Von 9 kHz bis 30 MHz und von 30 MHz bis 300 MHz. wert. Die übrigen LED-Lampen boten keinen Anlass, genauere
Zu beiden Bereichen gehört jeweils ein spezifischer Messauf- Messungen vorzunehmen. Bei einem Teil der LED-Lampen war
bau. Die RE-Messung wird mit einer Antenne im Abstand von nicht einmal ein Anstieg des Grundrauschens zu beobachten.
3 m oder 10 m von der Störquelle im Frequenzbereich 30 MHz
bis 300 MHz durchgeführt. Fazit
Da die Ärgernisse nicht erst beim Überschreiten der Grenzwerte Obwohl es hier nur um einen EMC-Pre-Compliance-Test ging,
ihren Lauf nehmen, haben wir vier Unterteilungen vorgenom- halten wir es für sicher, dass die stark überwiegende Mehrzahl
men. Diese Gruppierungen entsprechen zwar nicht dem einen der LED-Lampen die gestellten Anforderungen erfüllt. Doch
oder anderen Standard, doch sie führen zu erweiterten Erkennt- wo liegt die dann Ursache der Störungen? Sind es besondere
nissen. Anstatt lediglich anzugeben, ob die Lampe den Standard Umstände, beispielsweise die verstärkende Antennenwirkung
erfüllt oder nicht, geben wir in drei Stufen an, um welchen Wert von Stromnetz-Hausinstallationen? Liegt es an der starken
die Emission unter dem Standard liegt. In Tabelle 1 sind die Konzentration vieler LED-Lampen oder anderer Störquellen auf
Ergebnisse der CE-Messungen zusammengefasst. engem Raum? Ist die Störempfindlichkeit der Geräte generell
Wir waren überrascht, dass die Strahlung aller getesteten gestiegen? Hat die Forschung auf diesem Gebiet Nachholbe-
LED-Lampen bei der CE-Messung unter dem Grenzwert lag. darf? Wenn Sie Antworten haben sind wir darauf gespannt:
Allerdings war im Bereich von 9 kHz bis 30 MHz der Abstand redaktion@elektor.de.
zum Grenzwert bei einigen Exemplaren nur gering, er betrug 180608-02
häufig nur 0 dB bis 5 dB. Bei mehr als der Hälfte der LED-Lam-
pen lag die Strahlung jedoch um mehr als 10 dB unter dem
Grenzwert. Im Bereich 30 MHz bis 300 MHz näherten sich nur Weblink
wenige LED-Lampen dem Grenzwert, der Grenzwert wurde
[1] Projektseite zu diesem Beitrag
von keiner LED-Lampe überschritten.
www.elektormagazine.de/180608-02
Bild 1 zeigt das Diagramm einer Messung an einer der beiden
LED-Lampen, die den Grenzwert für die RE-Messung überschrit-
ten hat. Die rote Linie stellt den Grenzwert dar, die grüne Linie
die bei der RE-Messung abgestrahlte Leistung. In diesem Fall
liegt der Spitzenwert um mehr als 10 dB über dem maximal
im elektor-shop
zulässigen Wert. Dies war jedoch die Ausnahme, die die Regel ªBuch: „EMC for Product Designers“
bestätigt: Nur zwei Lampen überschritten den Grenzwert, eine www.elektor.de/emc-for-product-designers-5th-edition
Lampe befand sich innerhalb des Abstands 5 dB vom Grenz-

www.elektormagazine.de März/April 2019 105


RETRONIK

Schätze der Grafik-Abteilung


Von Hand gezeichnete Illustrationen und Cartoons
aus Elektor
Von Jan Buiting

Heute sind so gut wie alle Grafiken, Illustrationen und Texte digitalen Ursprungs – egal ob wir sie auf Papier
oder auf dem Bildschirm betrachten. Sie entstehen zwar nicht ohne menschliches Zutun, aber „irgendwie“ mit
Hilfe eines Computers. Dank CAD ist das „Handwerk“ der Erstellung von Schaltplänen, Platinen-Layouts und
Zeichnungen mit Hilfe von Zeichentisch, Abdeckband, Radiergummi und Stiften – also echt von Hand – praktisch
ausgestorben. Aus nicht nur nostalgischen Gründen fand ich für diese eher grafisch dominierte Retronik-Ausgabe
einige der frühen Elektor-Kunstwerke interessant genug, um sie zu zeigen und zu beschreiben. Viel Spaß damit!

Nach einer „Umverteilung“ von Mitar- Mitte der 1960er Jahre wuchs das Per- dass er mit Hilfe der Fertig-Symbole
beitern, Funktionen und Büroräumen bei sonal in der Zeichenabteilung stetig und eine Schaltungsskizze aus dem Labor
Elektor im vergangenen Jahr und dem erreichte um 1980 einen Höchststand in einen Schaltplan im originalen Elek-
damit verbundenen „Ausmisten“ von von etwa zehn Mitarbeitern, von denen tor-Stil für den Druck der Zeitschrift(en)
Schränken zeigte mir Kollege Patrick aus räumlichen Gründen nicht jeder das verwandelte. Die druckreifen Schaltpläne
Wielders drei fette und schwere Ordner Glück hatte, einen eigenen Schreibtisch wurden gänzlich durch Abreiben von
aus der ehemaligen Elektor-Zeichenabtei- zu haben, geschweige denn einen Zei- Bauteile-Symbolen und Leitungen aus
lung. Diese Ordner hatten in den letzten chentisch. Ich muss jedoch hinzufügen, Letraset-Blättern erstellt. Neue Bauteile
25 Jahren auf wundersame Weise alle dass diese Zehn auch für das Seitenlay- wurden im Handumdrehen gezeichnet
Umzüge, Reorganisationen und allgemei- out zuständig waren. Darunter befanden und von Hand eingeklebt. In der Regel
nen Optimierungen der Elektor-Grafik- sich auch ein „Titelseitenkünstler“ und wurden die Arbeiten bei einer Vergröße-
abteilung überlebt und waren sogar der mehrere Zeichner, die Illustrationen wie rung von 200 % durchgeführt.
bewussten Entsorgung des kompletten Explosionszeichnungen und zugegebe- Während der Produktion jedes Zeitschrif-
Papierarchivs der Grafikabteilung im Jahr nermaßen auch witzigere Dinge anfer- tenartikels mussten Labor-Ingenieure
2005 entgangen. tigten. Um ihr Vermächtnis soll es hier und zuständige Redakteure das direkt
gehen. neben den Lötkolben gemalte Gekrit-
Historisches Der Stil der Elektor-Schaltpläne reifte zel mit den von Grafikern produzierten
Kurz nach seiner Gründung im Jahr zunächst recht organisch, wurde aber Kunstwerken auf Übereinstimmung und
1961 begann Elektuur (später Elektor) um 1970 zu einem gewissen Grad for- Lesbarkeit prüfen. Anschließend wurde
als damals noch rein holländischer Ver- malisiert, als die heute berühmten Bau- die geprüfte Grafik auf 100 % reduziert.
lag damit, engagierte Mitarbeiter für die teile-Symbole und sogar Leiterbahn- und Dabei wurden Fehler entdeckt (oder
Erstellung von „technischen Grafiken“ Pad-Formen erstellt und auf Abreibefo- übersehen) und es folgten (manchmal
wie Schalt- und Verdrahtungsplänen lien für den internen Gebrauch gedruckt mehrere) Korrekturrunden. Der gesamte
einzustellen. Diese jongens (und gele- wurden. Damit war der Stil nicht nur in Prozess basierte auf einer hauseigenen
gentlich auch meisjes) waren Ingeni- Stein gemeißelt, sondern auch etwas lithografischen Reproduktion und Kle-
eure mit Elektronik-Hintergrund, intern Besonderes. Er wurde (und wird bis betechniken mit heißem Bienenwachs,
geschult und angewiesen, besonders auf heute) selbst von unseren damaligen um Papierstücke auf Trägerblättern zu
die Lesbarkeit der Schaltpläne zu achten. Konkurrenten bewundert. Von jedem sichern.
Von bescheidenen zwei, drei „Grafikern“ technischen Zeichner wurde erwartet, Während einer Firmenreorganisation um
1985 schloss sich ein Großteil der Mit-
arbeiter der Elektor-Grafikabteilung zu
Retronik ist eine Rubrik, die antiker Elektronik und
einer Art Spin-off zusammen, um unter
legendären Elektor-Schaltungen ihre Reverenz erweist.
dem neuen Namen GBS (Grafisch Bureau
Beiträge, Vorschläge und Anfragen telegrafieren Sie bitte
www.elektor.tv Sinke) eigenständig, aber mit Elektor als
an Jan Buiting (editor@elektor.com).
Hauptkunden, zu firmieren. Einige Zeich-

106 März/April 2019 www.elektormagazine.de


ner und der Titelseitenkünstler blieben Sprachen. Der Großteil der Freihand- ten von Bauteilen und Montagemetho-
aber bei Elektor. zeichnungen, die echte „technische den sowie Jaap Kuiper bei den Cartoons
Kunst“ waren, wurden für die Zeitschrift konnte ich leider nicht alle Urheber die-
Belebte Artikel „Elex“ verwendet, welche zwischen 1980 ser wunderbaren Illustrationen eindeu-
Ich war begeistert, da die drei Ordner und 1992 erschien und sich an junge tig identifizieren. Alle aber wurden von
Hunderte der 200%igen originalen Gra- Leser richtete. Aufgrund ihres jugendli- Hand in schönem Schwarz-Weiß mit Hilfe
fiken enthielten, die (geschätzt) zwi- chen Publikums wollte die Elex-Redaktion von Rotring-Stiften hergestellt, an deren
schen 1980 und 1990 entstanden sind. die Technik etwas spielerischer vermit- klickendes Geräusch ich mich noch gut
Mit ihnen wurde die Zeitschrift Elektor teln, als das bei Elektor üblich war, wo erinnere, da die Zeichner sie zur Verflüs-
angereichert und die hie und da schwer ja ein eher anspruchsvolleres Publikum sigung der Tinte immer leicht schüttel-
zu verstehenden Beiträgen etwas aufge- adressiert wurde. Aus den über einen ten. In einigen Zeichnungen können Sie
lockert. Die Bauteile-Symbole und einige Zeitraum von etwa 20 Jahren entstan- die Signaturen „LM“ und „JAAP“ finden.
„3D-Ansichten“ von Bauteilen und elek- denen humorvolleren Kunstwerken sta- Ich verbeuge mich an dieser Stelle!
tronischen Baugruppen wurden für alle chen verständlicherweise die Cartoons 180574-B-02
Elektor-Publikationen erstellt, d.h. auch am meisten hervor.
für die Bücher und Zeitschriften in allen Außer Laurent Martin bei den 3D-Ansich-

Bauteile

Elegant wie ein tanzendes Paa


r, nicht wahr? Wie montier
(oder TUPs?) auf einer Plat t man zwei TUNs
ine als Pseudo-IC? Ist das eine
ein Stromspiegel oder ein disk Stromquelle,
reter Darlington? Schwer zu
entscheiden…

sofortigem
Elektor seine Leser vor
Hin und wieder wollte auf gru nd hoher
hm lich kei ten
Tod und anderen Unanne nge n warnen.
öffentlichten Schaltu
Spannungen bei den ver

Spulen und das Selbstwicke


ln waren für viele Elektor-Lese
irgendwas zwischen schwarze r
r Magie und Mutprobe – im
Gegensatz zu Funkamateuren,
die den Buchstaben „L“ lieb
Bei Ferritringkernen war die ten.
Wickelrichtung wichtig, so
dass eine
schöne, illustrative Zeichnu
ng erstellt wurde.

www.elektormagazine.de März/April 2019 107


Bestückung in 3D

verblüfften viele
Ts der BF9xx-Serie
Die Dual-Gate-MOSFE ge “ in einem Loch. Noch
rsenkte Monta
Leser durch ihre „ve schreibung eines
tstand durch die Be
mehr Verwirrung en ondensators
tlosen Entkopplungsk
keramischen, kontak r Pla tin e neben dem
einem Schlitz de
im Sarg-Stil, der in ation ersparte den
Das war wohl der Beginn so mancher
Elektroniker-
war. Hilfe! Die Illustr
Source-Pin platziert t – und konnte
Karriere: Die Versorgung eines 6-V-G
lühbirnchens mit einer
ens 100 Worte an Tex
Redakteuren mindest 4,5-V-Flachbatterie. Schön sind auch
die Krokodilklemmen
eugen.
dennoch nicht überz und die Fassung! Dieses Juwel stam
mt aus Kapitel 1 der
beliebten Buchserie Elektronik 1-2-
3 der 1970er und 80er
Jahre. Heute stellt sich die Frage, ob
alle CEOs und CFOs der
Elektronikindustrie dieses „Experim
ent“ durchführen könnten.

Das Geheimnis des


gemeinen Kippschalters ist
gelüftet. Wie Sie vielleicht
beim Debuggen Ihrer
Verdrahtungen schon einmal
bemerkt haben, befinden
sich die geschlossenen
Kontakte – überraschend und
kontraintuitiv – nicht auf der
Seite, auf die der Hebel gelegt
wird! Hier der Grund…

etwas von 6-pF-


Erzählen Sie mal einem Nicht-HFler
n), geko ppel ten Spulen oder
PTFE-Trimmern (mit Teflo
kond ensa toren – er oder sie wird mehr von
Entkopplungs
1 kWor ten auf Papier.
einer Zeichnung profitieren als von

Viele „praktische“ Löt-Tipps von Elektor. Ob das alles state of the art war?

108 März/April 2019 www.elektormagazine.de


Gab’s das wirkich?

Als Surround-Sound gerade hip war, wollten einige Elektroniker ihre


eigenen Systeme bauen. Geeignete ICs gab es oft nicht, dafür aber
Einfallsreichtum und viel Phantasie, womit der „Sound“ ein wenig
geformt und gebogen wurde, um Surround-Effekte zu erzielen.

Elektor präsentierte einen Drucksensor in IC-Form – möglicherweise einer der ersten


überhaupt. Auf jeden Fall hatte das Ding auf dem IC-Gehäuse hohen künstlerischen
Wert. Später war diese Zeichnung Inspiration für ein völlig gefaktes Bild vom „CD4711
Programmierbarer Geruchsgenerator“, einer der erfolgreichsten Gecks von Elektor in
einem der jährlichen Halbleiterhefte „mit über 100 Schaltungen“.

Musik-Szene

Schaltungen und Projekte im Bereich Audio und


Musikinstrumente waren lange wichtige, wenn nicht sogar
dominante Schwerpunkte in Elektor. Um auch Nochnicht-
Vollblutelektroniker für trockene Elektronik zu begeistern,
müssen auch bekannte Dinge dargestellt werden – sogenannte
„Köder“. Bei Elektor hat kein Thema mehr „Fachfremde“ für
Elektronik interessiert als Audioverstärker und Hi-Fi.

In den 1980er Jahren war es schick, Elektronik für


Gitarreneffekte zu bauen. Wohl auch um Mädchen zu
beeindrucken oder die eigene Unfähigkeit beim Musikmachen
zu übertünchen. Hier ist ein Hippie-Fuß, der vermutlich als
Wah-Wah-Pedal fungiert. Immerhin: Keine Hose mit „Schlag“.

www.elektormagazine.de März/April 2019 109


Cartoons
Einen Cartoon erklärt man nicht. Es waren aber viele Cartoons auf den niederländischen Elex-Markt ausgerichtet. Daher ergibt
sich 20 bis 30 Jahre nach ihrer Herstellung schon irgendwie die Notwendigkeit von Erläuterungen für internationale Leser von
Elektor. Hinweis: Jede Ähnlichkeit zwischen den in den Cartoons abgebildeten Personen und Elektor-Mitarbeitern ist rein zufällig.

Hmm, wie spielt man dieses Stück auf


einem elektronischen Instrument?

Ganz klar: Ein Video-Splitter!

Lauflicht!
AAN ist niederländisch für ein,
UIT für aus.

110 März/April 2019 www.elektormagazine.de


Der Elektronik-Dschungel ist gefährlich.
Man braucht Mut, Helfer und
Laborausrüstung!

Ein „Kühler“ für


Leistungstransistoren!

Rösten und „in die Luft jagen“ von Bauteilen


und Geräten macht (manchmal) Spaß. Oft
ist das aber beunruhigend und unerwünscht.
Schalten Sie also bei der Messung hoher
Spannungen das Multimeter niemals in den
Widerstandsbereich!

www.elektormagazine.de März/April 2019 111


Willkommen in Ihrem
E-SHOP Elektor-Bestseller
1. Miniware TS100 Lötstation
www.elektor.de/miniware-ts100
ELEKTOR EMPFIEHLT

MonoDAQ-U-X –
Multifunktionales USB-Datenerfassungssystem
Mit seinem galvanisch getrennten USB-C-Anschluss und
seinem robusten Aluminiumgehäuse ist der MonoDAQ-
U-X ein robustes und vielseitiges Datenerfassungsgerät.
MonoDAQ-U-X verfügt über 8 Ports, die individuell als
analoger oder digitaler Ein- oder Ausgang konfiguriert 2. Mikrocontroller-Technik
werden können. Analogeingänge können auch gruppiert www.elektor.de/
mikrocontroller-technik
werden, um Differenzeingänge zu erzeugen. Neben diesen
8 konfigurierbaren Ports steht ein bidirektionaler Digital-Port zur Verfügung, der das 3. Mastech MS8911
1-Wire-Protokoll unterstützt. Auch ein Analogausgang zur Ansteuerung von Sensoren Smart SMD-Tester
www.elektor.de/mastech-ms8911
oder zur Versorgung eines Subsystems (bis 24 V,
max. 1 W) wurde nicht vergessen. Darüber 4. Raspberry Pi 3A+
hinaus sind im MonoDAQ-U-X ein www.elektor.de/rpi-3a-plus
Temperatur- und Feuchtesensor 5. PoE HAT für Raspberry Pi 3B+
und eine sechsachsige IMU www.elektor.de/poe-hat-rpi-3-plus
integriert. 6. Bakeey UM25C USB-Tester
www.elektor.de/bakeey-um25c
Clemens Valens
7. Raspberry Pi 3B+
(Elektor Labs)
www.elektor.de/rpi-3-plus
8. Das ESP32-Praxisbuch
www.elektor.de/monodaq www.elektor.de/das-esp32-praxisbuch

Mikrocontroller-Module 8-Bit-Mikrocontroller JoyPi – Experimentierkoffer für


Raspberry Pi

Dieses Buch gibt eine umfassende Einführung in die Welt Dieses Buch beschäftigt sich ausschließlich mit 8-Bit- Der JoyPi ist ein Experimentierkoffer basierend auf dem
der Controller-Technik mit all ihren Facetten, von der Mikrocontrollern – und zwar mit Mikrocontrollern der 8-Bit- Raspberry Pi und eignet sich hervorragend für den Einstieg
einfachen Steuerung über die Sensor-Technik bis hin zur PIC- und der 8-Bit-AVR-Mikrocontroller-Linien. Bei der PIC- in die Elektrotechnik und Programmierung. Das durchdachte
Datenübertragung in das Internet. Als Basis dafür dient das Familie handelt es sich dabei um PIC10, PIC12, PIC16 und Koffersystem bietet hierbei eine perfekte All-in-One-
von Elektor entwickelte AVR-Playground-Board. Das Board PIC18; bei der AVR-Familie um ATtiny, ATmega und ATxmega. Umgebung und macht Schluss mit vielen fummeligen
kann mit Controllern der ATmega-Familie bestückt werden und Die vorgestellten 8-Bit-Chips sind für sehr viele Anwendungen Kleinteillösungen und Kabelchaos auf dem Arbeitstisch.
ist mit dem bekannten Arduino-System kompatibel. vollkommen ausreichend und preislich auch attraktiv.

Mitgliederpreis: 34,80 € Mitgliederpreis: 34,80 € Mitgliederpreis: 224,10 €

www.elektor.de/mikrocontroller-technik www.elektor.de/8-bit-mikrocontroller www.elektor.de/joypi

112 März/April 2019 www.elektormagazine.de


SHOPPING BÜCHER DEV-TOOLS PROJEKTE DVD

NEU

Das SDR-Praxisbuch
Das Elektor SDR-Shield ist ein vielseitiger Kurzwellenempfänger bis
30 MHz. Zusammen mit einem Arduino-Board und der passenden
Software lassen sich nicht nur Rundfunkstationen empfangen,
sondern auch Morsesignale, SSB-Stationen und digitale Signale.
Der Erfolgsautor und begeisterter Amateurfunker Burkhard Kainka
beschreibt in diesem Buch die moderne Praxis des Software
Defined Radios mithilfe des Elektor SDR-Shields. Dabei vermittelt
er nicht nur den theoretischen Background, sondern erklärt auch
zahlreiche Software-Werkzeuge aus dem Open-Source-Bereich,
die heute die Kurzwellentechnik zu einem absolut spannenden und
hochmodernen Hobby machen.

Mitgliederpreis: 29,80 € (frei Haus)


www.elektor.de/das-sdr-praxisbuch

JOY-iT DPS5005 Motorsteuerung NixieCron-M4 –


Programmierbares Labornetzteil mit Arduino und Raspberry Pi 4-stellige LED-Nixie-Uhr

Dieses Netzteil zeichnet sich durch seine hervorragende Dieses Buch beschäftigt sich mit DC-Elektromotoren und Der NixieCron-M4 bietet einen hochpräzisen Uhrenchip, der
Präzision und Genauigkeit aus und kombiniert analoge und deren Einsatz in Arduino und RPi Zero W-Projekten. Das Buch mit einer Abweichung von nur wenigen Sekunden pro Monat
digitale Technologien in einem fortschrittlichen Design. Der enthält zahlreiche Motorsteuerungsprojekte, wobei jedes temperaturkompensiert ist. Es wird mit einem Soundmodul
verstellbare Ausgang reicht bis 50 V bzw. 5 A und lässt sich in Projekt denselben Aufbau besitzt: • Projekttitel • Beschreibung geliefert, das den Stundengong spielt und die aktuelle
10 mV bzw. 1 mA Schritten präzise konfigurieren. des Projekts • Blockschaltbild • Schaltplan • Zusammenbau Uhrzeit auf Knopfdruck anzeigt. Siekönnen ihn auch mit
• Vollständiges Programmlisting • Umfassende Erläuterung dem Temperatursensor DS18B20 verbinden und über einen
des Programms. Drehknopf konfigurieren.

Mitgliederpreis: 38,66 € Mitgliederpreis: 32,80 € Mitgliederpreis: 134,10 €

www.elektor.de/dps5005 www.elektor.de/motorsteuerung-buch www.elektor.de/nixiecron-m4

www.elektormagazine.de März/April 2019 113


mitmachen und gewinnen

Hexadoku Sudoku für Elektroniker


Wie in jeder Ausgabe finden Sie auch in diesem Heft unser ganz spezielles Sudoku. PC, Oszilloskop und
Lötkolben können sich erholen, während Ihre kleinen grauen Zellen auf Hochtouren arbeiten. Wenn Sie alle
Hex-Ziffern in den grauen Kästchen herausgefunden haben, sollten Sie uns diese gleich zumailen – denn hier
warten fünf Elektor-Gutscheine!

Die Regeln dieses Rätsels sind ganz einfach zu verstehen: und in jedem Fach mit 4 x 4 Kästchen (markiert durch die
Bei einem Hexadoku werden die Hexadezimalzahlen 0 bis dickeren schwarzen Linien) genau einmal vorkommen.
F verwendet, was für Elektroniker und Programmierer ja Einige Zahlen sind bereits eingetragen, was die Ausgangs-
durchaus passend ist. Füllen Sie das Diagramm mit seinen situation des Rätsels bestimmt. Wer das Rätsel löst – sprich
16 x 16 Kästchen so aus, dass alle Hexadezimalzahlen von die Zahlen in den grauen Kästchen herausfindet – kann
0 bis F (also 0 bis 9 und A bis F) in jeder Reihe, jeder Spalte einen von fünf Gutscheinen im Wert von 50 Euro gewinnen!

Einsenden Fax: 0241 / 955 09-013


Schicken Sie die Lösung (die Zah- E-Mail: hexadoku@elektor.de
len in den grauen Kästchen) per
Als Betreff bitte nur die Ziffern der
E-Mail, Fax oder Post an:
Lösung angeben!
Elektor Redaktion
Kackertstr. 10 Einsendeschluss ist der
52072 Aachen 18. März 2019.

Die Gewinner des Hexadokus aus der Januar/Februar-Ausgabe stehen fest!


Die richtige Lösung ist: 6A258.
Einen Elektor-Wertgutschein über je 50 € haben gewonnen:
Siegfried Keep, Mehmet Can Cakar, Per Troelsen, Lucien Zadikian und Vladimir Koci.
Herzlichen Glückwunsch!

Der Rechtsweg ist ausgeschlossen. Mitarbeiter der in der Unternehmensgruppe Elektor International Media B.V. zusammengeschlossenen Verlage und deren Angehörige sind von der Teilnahme ausgeschlossen.

114 März/April 2019 www.elektormagazine.de


Entdecken Sie Ihre Möglichkeiten
Mehr Flexibilität bei der Wahl der gewünschten Stromversorgungslösung

Microchip ist ein führender Anbieter mit einem umfassenden Portfolio an Power-
Management- und Energieüberwachungs-ICs, das Ihnen die Möglichkeit,
Flexibilität und das Vertrauen bietet, die richtige Stromversorgungslösung für
Ihr Design auszuwählen.

Das Power Management Ihres Systems ist entscheidend, um die


Leistungsfähigkeit zu erreichen, die für Ihr Design erforderlich ist. Unser
Angebot an Energieüberwachungs-ICs ermöglicht die genaue Messung der
Wirk-, Blind- und Scheinleistung, des Effektivstroms, der Effektivspannung,
Netzfrequenz und des Leistungsfaktors. Mit unserer großen Auswahl an Power-
Management-ICs, einschließlich DC/DC-Controller und -Regler, MOSFETs und
MOSFET-Treibern, Spannungsüberwachungs-ICs, Spannungsreferenzen und
Stromversorgungsmodulen, lässt sich eine effiziente Lösung entwickeln, um den
Strombedarf Ihres Systems zu decken.

Von Referenzdesigns über Evaluierungsboards bis hin zu Simulationstools: Mit


Microchips umfassender Unterstützung verkürzen Sie die Entwicklungsdauer und
minimieren das Risiko.

Entdecken Sie Ihre Möglichkeiten unter


www.microchip.com/PowerSolutions

Der Name Microchip und das Microchip-Logo sind eingetragene Warenzeichen der Microchip Technology Incorporated in den USA und in anderen Ländern.
Alle anderen Marken sind im Besitz der jeweiligen Eigentümer.
© 2019 Microchip Technology Inc. Alle Rechte vorbehalten. DS20006065A. MEC2230Ger01/19
E T E T O P
C O M P TA R T U
O U R S
N C H Y
LA U
@
PRODUCTRONICA 2019

p-ffwd 2019 – Jetzt teilnehmen!


12. - 15. November 2019
Messe München

Productronica Fast Forward is brought to you by


Mehr Infos:
www.elektormagazine.de/p-ffwd
INNOVATION STARTUP TRADE

Das könnte Ihnen auch gefallen