Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Kleine Farbenlehre

Das RGB-Farbmodell wird über die Grundfarben Rot, Grün und Blau definiert und ist additiv, was so viel bedeutet, dass sich überlagernde Farben das Bild heller machen. Dem gegenüber steht die subtraktive Farbmischung, die jeder von uns noch aus der Schulzeit mit dem Tuschkasten kennt. Mischt man alle Farben zusammen, entsteht ein schmutziges Grau, im Idealfall aber schwarz.

Auf Computern sind die RGB-Farbräume die am häufigsten benutzen, da die meisten Geräte das RGB-System unterstützen.

Abbildung 1 - RGB-Farbmodell

Die Farben in diesem Modell werden durch Zahlentripel (R, G, B) angegeben, wobei jede einzelne Farbe Werte zwischen 0 und 255 annehmen kann.

Fasst man das RGB-Modell als Farbraum auf, dann lassen sich die drei Grundfarben Rot (x), Grün(y) und Blau (z) auf den drei Raumachsen x, y und z auftragen und über einen Einheitswürfel darstellen.

Rot entspricht im Farbraum der Darstellung (1,0,0), Blau (0,0,1), Grün (0,1,0) und Schwarz(0,0,0). Die Koordinaten der Farbe Weiß sind (1,1,1) und alle Werte auf der Geraden zwischen (0,0,0) Schwarz und (1,1,1) Weiß entsprechen Grautönen.

Abbildung 2 - RGB Farbraum dargestellt am Einheitswürfel

Neben dem RGB-Farbmodell gibt es eine Reihe weiterer Farbmodelle, die hier nur genannt werden können: CMY (cyan, magenta, gelb), CMYK (cyan, magenta, gelb, schwarz), YUV (Luminanz und Chrominanz), HSV (hue, saturation, luminance) und HSL (hue, saturation, brightness).

 

Kommen wir noch einmal zurück zum RGB-Modell und dem Sensor TCS230, der im ersten Versuch eingesetzt wird. Bei diesem Sensor lassen sich die drei eingebauten Fotodioden mit den Farbfiltern Rot, Grün und Blau einzeln ein- bzw. ausschalten. So erfasst die eingeschaltete rote Fotodiode die Lichtintensität der roten Farbanteile eines Objektes; entsprechendes gilt für die Fotodioden mit blauem und grünem Filter. Aus diesen drei ermittelten Werten, nennen wir sie R, G und B, lässt sich dann die Farbe des angestrahlten Objektes über die Intensität des reflektierten Lichtes ermitteln.

Mit einer RGB-LED werden wir erst einmal versuchen die RGB-Farben "herzustellen".

2 - RGB-LED Leuchte

RGB-LEDs gibt es in unterschiedlichen Ausführungsformen. Zwei mögliche Formen als 6- und 4-polige Ausführung zeigt das linke Bild, während rechts die im folgenden Versuch benutzte 4-polige Form mit Anschlussbelegung dargestellt ist.

Über die herausgeführten Elektroden lassen sich die drei Farbdioden Rot, Grün und Blau einzeln ansteuern.

RGB-LED Leuchte
Material
  • 1x  Prop-BoE oder Prop-AB
  • 1x  USB-Verbindungskabel
  • 1x  Steckernetzteil
  • 1x  RGB-LED
  • 3x  Widerstand 220 Ohm
  • 5x  Steckdraht
Aufgaben
  • Baue die Schaltung nach Schaltskizze auf dem Steckbrett auf.
  • Übertrage das Programm RGB_LED_Leuchte.c in den Editor und speichere es ab.
  • Versuche dir Schritt-für-Schritt klar zu machen, wie das Programm arbeitet.
  • Starte das Programm. Überprüfe, ob deine Überlegungen vom Programm auch so umgesetzt werden.

Schaltungsaufbau

Das Programm RGB_LED_Leuchte.c

Wie arbeitet das Programm RGB_LED_Leuchte.c?

Die Anschlussbelegungen der RGB-LED werden über die Direktive #define (Zeilen 7-9) eingetragen. Einer Variablen k wird in Zeile 11 der Wert 2500 zugewiesen und anschließend die benutzten Funktionen mit Wertübergabe als forward-Deklarationen eingetragen (Zeilen 13 - 15).

Das Hauptprogramm ist in eine Endlosschleife (while(1)) eingebettet und besteht aus drei Funktionsaufrufen (Zeilen 17 - 25).

Zur Darstellung aller RGB-Farben benutzen wir das PWM-Verfahren und schalten jeweils zwei Dioden gleichzeitig an. Während die Helligkeit der einen Diode zunimmt, nimmt bei der anderen die Helligkeit entsprechend ab. Bei drei Farben r, g und b gibt es drei verschiedene Möglichkeiten Paare zu bilden, wenn es nicht auf die Reihenfolge ankommt: rb, rg und bg. Diese Farbkombinationen werden mit den drei Funktionsaufrufen abgearbeitet; der Übergabeparameter k an die Funktionen regelt die Impulslänge und damit die Helligkeit der LEDs.

  • void pulse_out(int pin, int time)

mit den Parametern

  • pin     I/O Pin des Controllers
  • time   Impulslänge in der Einheit Mikrosekunden

Die Funktion pulse_out überträgt einen Impuls bestimmter Länge an einen I/O Pin.

In der FOR...-Schleife mit Laufparameter r und Übergabeparameter k werden an die rote LED Impulse mit einer Länge von 0 bis 2500µs und an die blaue LED gleichzeitig von 2500µs bis 0 gelegt. Das Farbenspiel startet von blau über violett zu rot. Die zweite Funktion greift den Endzustand der ersten Funktion auf und führt das Farbspiel weiter von rot über orange zu grün, um mit der letzten Funktion von grün über cyan wieder zu blau zu gelangen. Damit schließt sich der Kreis. Wer einen schnelleren Farbwechsel vorzieht, muss nur den Wert der Variablen k (Impulslänge) verkleinern.

 

Wir wissen jetzt wie man eine RGB-LED beschaltet und RGB-Farben mit ihr herstellen kann. Im folgenden Projekt werden wir RGB-Lichtmessungen an farbigen Objekten durchführen und auf diesem Weg versuchen die Zusammensetzung der Farbe aus den drei Farbanteilen Rot, Grün und Blau zu bestimmen. Dazu werden zwei verschiedene Sensoren eingesetzt: TCS230 und ColorPAL.

3 - Projekt Licht-Frequenz-Wandler TCS230

In diesem Projekt werden wir uns mit dem Thema Licht und RGB-Lichtmessung ein wenig auseinandersetzen. Die Ablauffolge umfasst:

  1. Kenndaten des Sensorbausteins TCS230 aus dem Datenblatt entnehmen, die Pinbelegung des Bausteins benennen, die Anschlussdaten herausfinden und etwas über den Aufbau des Sensors zusammenzutragen. Es muss geklärt werden, was unter RGB zu verstehen ist, welchen Farbbereichen ungefähr welche Wellenlängen entsprechen, in welcher Einheit sie angegeben werden und wo die Anwendungsfelder für einen solchen Sensorbaustein liegen.
  2. Eine erste Schaltung aufbauen, die uns mit der Arbeitsweise des Sensors vertraut macht und aufzeigt, welche Vorkehrungen zu treffen sind, damit Messungen reproduzierbar werden. Hier kommt auch ein USB-Oszilloskop zum Einsatz. Dazu muss ein entsprechendes Programm geschrieben werden.
  3. Eine zweite Schaltung aufbauen, die die Ergebnisse des vorherigen Schrittes einschließt und reproduzierbare Ergebnisse liefert und den Quellcode dazu anpassen. Fehlerbetrachtungen einbeziehen.
  4. Nutzung eines Farberkennungsmoduls und Überprüfung auf Genauigkeit. Was ist zu tun, wenn die gemessenen RGB-Farbwerte nicht mit der Vorlage übereinstimmen?

Der programmierbare Licht-Frequenz-Wandler Baustein der Firma TAOS verbindet konfigurierbare Fotodioden mit einem Strom-Frequenz-Wandler auf einem einzigen CMOS Chip. Am Ausgang steht eine Rechteckspannung (Tastverhältnis: 50%), deren Frequenz direkt proportional zur einfallenden Strahlungsintensität (Bestrahlungsstärke) ist.  Es gilt:

Die maximale Ausgangsfrequenz kann über zwei Eingabekanäle auf drei verschiedene Stufen abgesenkt werden. Die digitalen Ein- und Ausgänge lassen sich direkt mit einem Mikrocontroller verbinden. OE (Output Enable) macht den Ausgang hochohmig.

Die Peaks der spektralen Ansprechempfindlichkeiten der vier Fotodioden liegen bei

  • Rot:     ca. 680nm
    
    Blau:    ca. 480nm und 820nm
    
    Grün:    ca. 540nm und 815nm
    
    Klar:    ca. 690nm
    
Abbildung 3 - Farbsensor TCS230

Der Licht-Frequenz-Wandler liest ein 8 x 8 Array von Fotodioden aus. Jeweils 16 Fotodioden tragen die Filter blau, grün und rot, während 16 weitere Fotodioden ohne Filter sind. Die Farbdioden sind auf der Fläche gestreut verteilt, um die einfallende Strahlung möglichst gleichmäßig zu erfassen. Die 16 gleichfarbigen Dioden sind jeweils parallel geschaltet und lassen sich während einer Messung über die Pinauswahl steuern.

Abbildung 4 - Pinbelegung des Sensors TCS230 der Firma TAOS

Die Anschlussdaten

Alle weiteren Daten können dem Datenblatt entnommen werden.

4 - Eine erste Messung

Mit den Informationen aus dem Datenblatt lässt sich eine erste Messung durchführen. Mit dem Oszilloskop machen wir die am Ausgang stehenden Signale sichtbar.

Eine erste Messung mit dem TSC230
Material
  • 1x  Prop-BoE, Prop-AB, BASIC Stamp 2 oder Arduino UNO
  • 1x  USB-Verbindungskabel
  • 1x  TCS230
  • 8x  Steckdraht
  • 1x  USB-Oszilloskop
Aufgaben
  • Baue die Schaltung nach Abb. 3 auf. Achtung! Der kleine Punkt auf dem IC-Gehäuse, der Pin 1 markiert, ist nur schwer erkennbar.
  • Übertrage das Programm RGB_Farbsensor1.c in den SimpleIDE Editor und speichere es ab.
  • Schalte das Oszilloskop ein und verbinde die Messsonde mit Pin 6 des Sensors.
  • Starte das Programm.

Schaltungsaufbau

Abbildung 5 - Aufbau auf dem Steckbrett für Propeller Boards, BASIC Stamp und Arduino UNO. Die Bezeichnungen in diesem Bild beziehen sich auf die Beschriftung auf den Propeller Boards.

Das Programm RGB_Farbsensor1.c

Wie arbeitet das Programm RGB_Farbmessung_tcs230.c?

Im Kopfteil des Programms werden die Textersetzungen vorgenommen, die sich über das Datenblatt ergeben. Alle Pinnamen erscheinen dort mit den entsprechenden I/O Portzuordnungen am Controller. Dadurch wird das Programm lesbarer und man muss nicht mehr ständig nachschlagen, welcher Pin mit welchem Port verbunden ist. Das Hauptprogramm besteht aus wenigen Zeilen.

  • Zeile 15

Die Ausgabe der Impulsfolgen wird gestartet; P3 wird auf LOW gesetzt wg. /OE active low.

  • Zeile 16

Aufruf der Funktion skalierung2. Sie skaliert die Ausgangsfrequenz in diesem Fall auf 2% oder 12kHz nach Vorgaben aus dem Datenblatt. Wer nachlesen möchte, wie man eine Funktion in C schreibt und aufruft, kann das hier tun -> Funktionen

  • Zeilen 18 - 21

In der Endlosschleife wird die Funktion farbe_gruen aufgerufen. In dieser Funktion sind die Parameterwerte so eingestellt, dass nur die grünen Fotodioden eingeschaltet sind. Fotodioden in den  Farben rot und blau lassen sich durch entsprechende Funktionen aufrufen.

Das Programm RGB_Farbsensor1.ino

Wie arbeitet das Programm?

Auch in diesem C-Programm erscheint in den ersten Zeilen die Textersetzung und macht den Programmcode lesbarer. Die Methode setup() legt die Ein- und Ausgangspin fest und initialisiert den Sensor über die Einstellungswerte nach Vorgabe aus dem Datenblatt.

Die Methode loop() als Endlosschleife enthält keinen Befehl, da der Sensor bereits in der Methode setup() eingeschaltet und so modifiziert wurde, dass er eine bestimmte Arbeit ausführen kann.

 

Die Oszillogramme

Die beiden Oszillogramme zeigen die Impulsfolge am Ausgang des Sensors für zwei verschiedene Farbeinstellungen. In der Lineallegende sind die Messpunkte aufgeführt und unten rechts im Fenster kann man die sich daraus errechnete Frequenz ablesen. Kleinste Veränderungen in der Beleuchtung führen zu deutlichen Änderungen der Frequenz.

Abbildung 6 - Impulsfolge für die Einstellung 2%, rote Fotodioden bei weißem LED-Licht aufgenommen, f = 799,6Hz
Abbildung 7 - Impulsfolge für die Einstellung 2%, blaue Fotodioden bei weißem LED-Licht aufgenommen; f = 3,968kHz

Die Reaktion auf Lichtschwankungen, unterschiedliche Farbtöne usw. ist über das Oszilloskop gut zu beobachten. Ebenso sieht man sehr gut, wie sich die Frequenz bei steigender oder fallender Lichtintensität erhöht bzw. erniedrigt.

Unbefriedigend bleibt, dass man mit dem Oszilloskop keine vernünftigen Messungen über alle vier Farben (rot, grün, blau und klar) vornehmen kann. Einfacher wäre es, wenn wir einen Frequenzzähler einschalteten, der über einen bestimmten Zeitraum die Frequenz mittelt und im Terminal ausgibt.

5 - Frequenzzähler

Für einen Frequenzzähler wird ein Befehl benötigt, der die Anzahl der Impulse zählt, die vom Ausgang des Sensor an den Eingang des Controllers gelangen. Der Zähler soll entweder auf die steigende oder fallende Flanke eines Impulses reagieren und die Anzahl der so gezählten Impulse in einem Speicher ablegen. Dazu stellt die Bibliothek simpletools eine Funktion count bereit:

  • long count(int pin, long duration)
    

mit den Parametern

  • pin       I/O Pin
    
    duration  Zeitraum, in dem die Impulse gezählt werden
    
  • Rückgabewert                                             Anzahl der LOW - HIGH Übergänge (steigende Flanke)
    
Frequenzzählung
Aufgaben
  • Übertrage das Programm rgb_farbmessung_tcs230_2.c in den Editor und speichere es ab.
  • Überlege vorher, was das Programm in welcher Programmzeile macht.
  • Starte das Programm und überprüfe, ob die Vorhersage mit der Realität übereinstimmt.

Das Programm rgb_farbmessung_tcs230_2.c

Die Terminalausgabe

Die Messung mit jedem Farbarray dauert 1s, der jeweilige Ausgabewert ist gemittelt. Das Prinzip der RGB-Farbmessung basiert auf der Messung der einfallenden Lichtintensität auf der mit einem Farbfilter versehenen Fotodiode. Bisher fiel nur das Umgebungslicht auf den Sensor; die Frequenzmessungen der drei Fotodioden mit Farbfiltern ergaben unterschiedliche Intensitäten der drei Farbanteile R, G und B.

Im folgenden Versuch, mit einem anderen Sensor, wird das Umgebungslicht so weit wie möglich ausgeschaltet. Das System arbeitet mit einer eigenen weißen Lichtquelle und die Fotodiode untersucht das vom Körper reflektierte Licht auf seine Farbanteile.

6 - ColorPAL (Farb- und Umgebungslicht-Sensor, Farbgenerator)

Mit diesem Modul der Fa. Parallax lassen sich Farben nach der RGB-Farbtabelle aufschlüsseln. Eine in den Modul eingebaute RGB LED beleuchtet das Objekt nacheinander mit den Lichtanteilen R, G und B und fängt das reflektierte Licht mit einem Licht-Spannungs-Wandler auf. Aus der Menge der vom Objekt reflektierten Lichtanteile rot, grün und blau lässt sich dann die Farbe des Objektes bestimmen.

Das Lichtmodul enthält einen Lichtsensor TSL13T der Firma TAOS, dessen spektrale Empfindlichkeit als Kurve dem Datenblatt zu entnehmen ist.

Abbildung 8 - Spektrale Ansprechempfindlichkeit des TSL13T (TAOS) - Eingezeichnet sind auch die Wellenlängen der drei vorhandenen LEDs - (Courtesy of Parallax Inc.)

Die Ausgangsspannung des Sensors ist proportional zur Lichtintensität und gewichtet mit der spektralen Empfindlichkeit. Wird also ein Objekt nur mit einer roten LED beleuchtet, dann ist die Ausgangsspannung proportional zum roten Lichtanteil der Objektfarbe und entsprechend gilt das auch für blau und grün.

Abbildung 9 - ColorPAL Modul der Fa. Parallax

7 - Erste Messungen mit dem ColorPAL

Das Modul verfügt über drei Anschlusspin: GND, VDD und Sig. Der Sensor wird mit

+5V versorgt. Der Sig-Anschluss ist ein sogenannter serieller Datenanschluss mit offenem Kollektor.

 

Für Messungen ist es günstiger, ein LCD-Erweiterungskabel zu verwenden; mit ihm lässt sich der  Sensor an verschiedenen Orten sicher und standfest positionieren. Steht dies nicht zur Verfügung, müssen die Objekte später  vor den Messzylinder gehalten werden.

Schaltungsaufbau

Abbildung 10 - Schaltungsaufbau auf einem Steckbrett - Courtesy of Parallax Inc.

Das Testprogramm

Abbildung 11 - Testprogramm für den ColorPAL Sensor (Courtesy of Parallax Inc.)

Die Ausgabe im Terminalfenster

Abbildung 12 - R, G, B Werte für eine violettfarbene Vorlage. Der erste Wert muss gestrichen werden, da der Messkopf noch nicht positioniert war.

Gib die vom ColorPAL Gerät gemessenen Werte in ein Zeichenprogramm ein und überprüfe, wie genau die gemessenen RGB-Werte den tatsächlichen Farbwert treffen.

Als Farb-Messvorlage wurde ein violettfarbenes mattes, etwas rauhes Papier genommen. Die folgende Abbildung zeigt den Farbton, der sich nach Eingabe der RGB-Werte in das Zeichenprogramm ergibt. Er trifft ziemlich genau den Originalfarbton des Papiers.

Abbildung 13 - Durch Eingabe der RGB-Werte in die Tabelle rechts, ergibt sich der Mischton, der vergrößert links im Quadrat erscheint.
Abbildung 14 - R, G, B Werte für einen gelben Merkzettel. Der erste Messwert wird wieder gestrichen.

Im zweiten Versuch wurde ein gelbfarbener Merkzettel vom Block genommen. Gibt man die RGB-Messwerte in das Zeichenprogramm ein, kommt ein eher rosafarbener Ton denn ein Gelbton heraus. Woran das liegt, müssen wir weiter untersuchen. Vorher aber noch ein paar Worte zum Test-Programm.

Abbildung 15 - Die eingegebenen R, G, B Werte aus der Messung ergeben keinen Gelbton.

Wie arbeitet das Programm?

Aus der Bibliothek colorpal.h werden zwei Befehle aufgerufen

  • colorPal_open(int sioPin)

mit den Parametern

  • sioPin        I/O Pin am Prop, der mit dem Sig-Pin vom ColorPAL-Sensor verbunden ist.
    
    Rückgabewert  colorPal Geräte ID für die Funktionen in der colorpal-Bibliothek.
    

Die Funktion öffnet eine Verbindung zum Parallax ColorPAL Sensor.

 

  • colorPal_getRGB((colorPal* device, int* r, int* g, int* b)

mit den Parametern

  • *device        Geräte-ID - Rückgabewert  der colorPal_open Funktion 
    
  • r              Wert für Rot
    
  • g              Wert für Grün
    
  • b              Wert für Blau
    

 

Zeile 10

Die Signalleitung des ColorPAL wird mit P6 des Propeller-Controllers verbunden.

Zeile 15

Öffnet eine Verbindung zum ColorPAL und weist die Geräte ID cpal zu.

In der Endlosschleife WHILE(1) werden in

Zeile 19

die Messwerte für die rote, grüne und blaue LED werden ausgelesen und in Programmzeile 21 ausgedruckt.

8 - Referenzmessungen - Weiß- und Schwarzabgleich

Bei den ersten Farbbestimmungen mussten wir feststellen, dass nicht alle Messungen befriedigende Ergebnisse lieferten (Abb. 15). Während zum Beispiel der lila Farbton relativ gut erkannt wurde, rutschte der Farbwert bei einer gelben Papiervorlage in den rosa Bereich ab. Das Stichwort zu Anpassung bzw. Korrektur der Farbwerte lautet Weiß- und Schwarzabgleich. Darum kümmern wir uns jetzt.

  1. Wenn Streulicht die LED Beleuchtung des Sensors stört, dann kann dieser Effekt dadurch eliminiert werden, dass man eine Messung ohne eingeschaltete LEDs macht und diesen Anteil dann von den Messwerten der roten, blauen und grünen Komponenten abzieht. Vor jeder Farbmessung sollte vorher eine solche Referenzmessung unbedingt durchgeführt werden.
  2. Die LED und der Sensor befinden sich auf dem Modul in unmittelbarer Nachbarschaft. Die kleine Trennwand zwischen den beiden Bauteilen reflektiert selbst etwas Licht, so dass eine Lichtmessung eines komplett schwarzen Körpers nicht Null ist. Experimentell sollte ein Schwarzabgleich für jede Farbkomponente bestimmt werden, die dann ebenfalls von der Messung über alles subtrahiert wird. Diese drei Komponenten Sr, Sg und Sb bezeichnen wir mit Schwarzabgleich. Vor jedem Messvorgang sollte einmal ein Schwarzabgleich durchgeführt werden.
  3. Der TSL13T Lichtsensor reagiert nicht gleich auf die rote, grüne und blaue LEDs und diese LEDs strahlen nicht alle mit der gleichen Lichtintensität bei den unterschiedlichen Wellenlängen für rot, blau und grün. Deshalb muss zusätzlich zur Referenzmessung und dem Schwarzabgleich auch noch ein Weißabgleich durchgeführt werden; seine Komponenten bezeichnen wir mit Wr, Wg und Wb.

Jetzt lässt sich die Farbe eines Objektes aus dem Prozentsatz der Differenz zwischen Weiß- und Schwarzabgleich bestimmen. Dieser Prozentwert wird in einen Wert zwischen 0(0%) und 255(100%) umgerechnet. Für die Farbe Rot gilt dann zum Beispiel:

  • Kr = 255 * (Ur - Sr) / (Wr - Sr)
    

wobei Ur der unkorrigierte und Kr der korrigierte Messwert ist.

Zur Messung des Weiß- und Schwarzabgleichs sollten die Vorlagen von gleicher Textur sein, wie das zu untersuchende Objekt. Da es hier aber nicht um hohe Genauigkeit geht, sondern um das Prinzip der Erfassung, genügt als Vorlage ein einfaches weißes Blatt Papier (100g - 120g) und ein schwarzer Pappdeckel.

Farberkennung mit Weiß- und Schwarzabgleich
Aufgaben
  • Lade das bestehende Programm Test_ColorPAL1.c (Abb. 11) in den Editor und speichere es unter dem neuen Namen Test_ColorPAL2_Korrektur.c ab.
  • Füge die in Abb. 16 markierten neuen Programmzeilen ein und speichere das Programm anschließend erneut ab.
  • Starte das Programm und vergleiche das neue Ergebnis mit der Farbvorlage. Wie gut wird der Farbwert jetzt getroffen. Hat sich eine Verbesserung eingestellt?

Programm Test ColorPAL2_Korrektur.c

Abbildung 16 - Farberkennungsprogramm mit korrigierten Farbwerten durch Schwarz- und Weißabgleich

Terminalausgabe

In Abb. 17 sind die Messergebniss auf gelbem Papier dargestellt. Obwohl der Gelbton immer noch etwas zu rötlich ist im Vergleich zum Original, ist diesmal im Vergleich zu Abb. 15 eine deutliche Verbesserung eingetreten. Eine entsprechende Messung am violetten Papier mit Weiß- und Schwarzabgleich ergab einen etwas dunkleren, nicht ganz so leuchtenden, Violettton.

Abbildung 17 - Durch Eingabe der korrigierten RGB-Werte ergibt sich der Mischton, der vergrößert links im Quadrat erscheint. Der gelbe Farbton wurde ganz gut getroffen und ist eine deutliche Verbesserung zum vorherigen Messwert.
Druckversion | Sitemap
© Reinhard Rahner - Gettorf