Artikel pedia
| Home | Kontakt | Artikel einreichen | Oberseite 50 artikel | Oberseite 50 autors
 
 
Artikel kategorien
Letztes fugte hinzu
    Nennen sie 3 konstruktionsgrundsätze und erklären sie diese
   1 kondensator und spule im wechselstromkreis
   Grundlagen
   Aerodynamik bei flugzeugen
   
   Leitungen
   Ersatzschaltbilder
   5. _bohren, reiben, senken
   Projekt fertigungstechnik pulvermetallurgie, sintern
   Digitale signalverarbeitung
   Analogschalter
   Qualitätswerkzeuge / tools of quality
   Logische elektronik
   Ir-datenübertragung
   Drucker und plotter
alle kategorien




  Dimmer



                                   Realisierung einer mikroprozessorgesteuerten Dimmerschaltung über I2C-Bus mit VisualBasic.                   Inhaltsverzeichnis   2 AUFGABENSTELLUNG 3 3 THEORETISCHE GRUNDLAGEN 3 4 SCHALTUNGEN 4   4.1 Prinzipschaltung 4 4.2 Schaltung für Layout 4 4.3 Layout 5   5 BAUTEILWERTE 5 6 SCHALTUNGSERKLÄRUNG 6 7 DIMENSIONIERUNG 6 8 OSZILLOGRAMME 8 9 PROGRAMME UND FLUßDIAGRAMME 9   9.1 Programmversion von Bögner & Zeman 9 9.

2 Weiterbearbeitung des Bögner & zeman – programmes 12   10 ABSCHLIEßENDE FEHLERBEHEBUNG 18 11 FEHLERANALYSE 19 12 NEUE SCHALTUNG 19   12.1 Prinzipschaltung 19 12.2 Schaltung für Layout 20 12.3 Layout 20   ANHANG 21                  Aufgabenstellung   Weiterbearbeitung der von Bögner & Zeman (5 HNA 97) entwickelten Schaltung einschließlich Fehlerbehebung. In weiterer Folge dann Ansteuerung über I2C-Bus und Benutzeroberfläche mit Visual Basic programmieren.   Nach Aufbau der Schaltung und Programmierung des vorhanden Programmes (aus der Dokumentation von Bögner & Zeman) stellten wir folgende Fehler fest :   ·) Die Lampe flackerte in unregelmäßigen Abständen.

  ·) Die Routine für die Dünkler-Einstellung dauerte länger als jene für die Heller-Einstellung.         Theoretische Grundlagen     Siehe ANHANG A.                                                    Schaltungen   PRINZIPSCHALTUNG                                      In der Prinzipschaltung wurde die Leitung und der R6 (Pull-Up) für die Resetschaltung des uP nicht berücksichtigt. SCHALTUNG FÜR LAYOUT   LAYOUT         Bauteilwerte       Baut. Wert Baut. Wert R1 10k/10W C1 1mF/16V R2 390 k C2 10 nF R3 39 k C3 10 mF R4 330 E C4 40 pF R5 10 k C5 40 pF R6 10 k Z1 5V6 R7 330 E Z2 5V6 R8 10 k D1 1N4004 R9 1 M D2 1N4004 R10 100 k D3 1N4004             Schaltungserklärung   Der erste Teil der Schaltung (R1, Z1, D1, C1) dient dazu, um die Versorgungsspannung für den Inverter zu erzeugen.

Über die Zenerdiode werden die 5,6 V erzeugt und mit dem C1 geglättet. Der zweite Teil (R2, R3, Z2) dient dazu, um das Eingangssignal für den Inverter zu liefern (ca. 50 Hz-Rechteck) und gewährleistet die Nulldurchgangsdetektion. R4 und R6 sind die Vorwiderstände für die LED des Optokopplers bzw. Optotriacs. Über den Optokoppler bzw.

Optotriac wird der Laststromkreis vom mP-Stromkreis getrennt. Da der Optokoppler einen Open-Kollektor-Ausgang hat, wurde R5 als Pull-Up-Widerstand verwendet. C3 wird auf Versorgungsspannung (325 V) geladen. R9 muß genügend groß sein, um zu gewährleisten, daß der Strom durch R9 unter dem Zündstromminimum bleibt. R8 muß so dimensioniert werden, daß der Strom IGT in dem vom Datenblatt gegebenen Bereich liegt. C2 wurde über die im Datenblatt angeführte Impulsbreite dimensioniert.

    Dimensionierung   Für R4 und R6 : Annahme : I = 10 mA UD = 1,5 V Þ R4 = R6 = = 350 W Þ   R4 = R6 = 330 W   R5 gewählt als Pull-Up mit R5 = 10 kW     Dimensionierung des Laststromkreises :     Laut Datenblatt : Typische Haltezeit des Zündstromes : tGT = 2 ms. (Gewählt : 15 ms) Bereich des Zündstromes : IGT = 1..35 mA. (Gewählt : 32,5 mA)     Berechnung : R7 = = 10kW R8 > = 326 kW gewählt R8 = 1 MW   R9 = C2 = = » 10 nF     Berechnung des C3 :   Annahme: t = 8 msec..




...Zeit, welche der Kondensator hat, um sich auf 325 V aufzuladen. U » 325 V (Kondensatorspannung)   = 230 × = 325,269 V (tatsächlicher Spitzenwert)   U = Þ t = = 9,665   t = R × C Þ C3 = = gewählt: C3 = 10 uF      Oszillogramme       Diese Meßergebnisse wurden am 4.2.

98 mit der Programmversion „dimmer5“ aufgenommen. (Bei 200 V Versorgungsspannung)   Programme und Flußdiagramme PROGRAMMVERSION VON BÖGNER & ZEMAN     ***************************************** * PROGRAMM : dimmer1.asm * ***************************************** charin code 3027h ;Char in hide port11 equ 91h ;Port-Pin 1.1 zeitv equ R3 ;Feineinstellung (Tastatur) malzeitv equ 60d ;Grobeinstellung (Konstante)   ;************************************* ISR ***************************************** org 8003h   jmp INTERRUPT   ;****************************** HAUPTPROGRAMM ********************************* org 8200h   mov zeitv,#2d ;Maximale Helligkeit setb port11 ;Finsterniss orl tcon,#01h ;IT0 Flanken-aktiv (neg. Flanke) setb ea ;Alle enabled setb ex0 ;Externer Int. enabled   ABFRAGE:   call charin ;Zeichen einlesen mov R0,A ;Zeichen ins Register retten subb A,#64h ;Wenn Zeichen=d dann A=0 jz DUENKLER ;Wenn A=0 dann DUENKLER   mov A,R0 ;Gerettetes Zeichen wieder in Akku subb A,#68h ;Wenn Zeichen=h dann A=0 jz HELLER ;Wenn A=0 dann HELLER   jmp ABFRAGE ;Wenn keines der beiden dann ABFRAGE   DUENKLER:   mov a,zeitv subb a,#67d ;Kontrolle ob Lampe dunkel jz ABFRAGE ;Wenn ja.

..ABFRAGE   mov a,zeitv inc a ;zeitv um einen Wert vergrößern ® duenkler mov zeitv,a ;wieder zurückschreiben jmp ABFRAGE   HELLER:   mov a,zeitv subb a,#2d ;Kontrolle ob Lampe voll leuchtet jz ABFRAGE ;Wenn ja...ABFRAGE   mov a,zeitv dec a ;zeit um einen Wert verringern ® heller mov zeitv,a ;wieder zurückschreiben jmp ABFRAGE   ;******************************* UNTERPROGRAMM ******************************** INTERRUPT: ;=========   SPRUNG:   mov a,zeitv   TIME0:   dec a ;Zeitverzögerung abhängig von zeitv mov r2,#malzeitv ;Allgemeine Zeitverzögerung (Konstante) ;R2 (Malzeitv) dient als konstante Zeitver- ;zögerung TIME1:   djnz r2,TIME1 ;Malzeitkonstante decrementieren ;Wenn nicht Null dann TIME1 ;Wenn Null dann Kontrolle ob A (zeitv) 0 ist jnz TIME0 ;Wenn nicht Null dann TIME0 ;Wenn A=0 und R2=0 dann : clr port11 ;Ausgabe des Zündimpulses (Leuchtphase) ;(60*zeitv) mov r4,#100d ;Konstante Zeitverzögerung LOOP1: djnz r4,LOOP1 ;Wenn Konstante Verzögerung abgelaufen, dann : setb port11 ;Kein Zündimpuls (Dunkelphase) (100)   mov r5,#255d ;Allgemeine Zeitverzögerung LOOP2: mov r6,#16d LOOP3: djnz r6,LOOP3 djnz r5,LOOP2 ;Verschachtelte Zeitschleife (LOOP2/3)   clr port11 ;Zündimpuls (Leuchtphase) (16*255=4080) mov r4,#100d ;Allgemeine Zeitverzögerung LOOP4: djnz r4,LOOP4 setb port11 ;Kein Zündimpuls (dunkelphase) (100)   RETI   END   WEITERBEARBEITUNG DES BÖGNER & ZEMAN – PROGRAMMES   Dokumentation : Diese Version ist die ursprüngliche Version aus der Dokumentation von Bögner & Zeman.

Aufgetretene Fehler : ·) Lampe flackert in unregelmäßigen Abständen ·) Funktion DÜNKLER dauert länger als HELLER Ursache: ·) Dadurch, daß die Lampe flackert, wurden über die Leitungen aufgetretene Spikes in den Beginn der Schaltung rückgekoppelt ® Lampe flackert. ·) Die Ursache warum DÜNKLER länger dauert als HELLER konnte noch nicht gefunden werden   Fehlerbehebungsversuch : Zuerst versuchten wir, über einen Tiefpaß die Störimpulse wegzufiltern. Da die Spikes aber so kurz waren, daß der Tiefpaß sie nicht wegfiltern konnte, versuchten wir in einer neuen Version des Programmes die im System aufgetretenen Spikes softwaremäßig auszuschalten, indem wir zu Beginn des Interrupts eine Routine einfügten, in der bei einem High-Zustand am Port-Pin 3.2 (externer Interrupt) die Interrupt-Serviceroutine sofort verlassen wird. (Interrupt wird bei Low am Pin 3.2 ausgelöst).



Bei einem Low-Zustand am Pin muß dieser mindestens so lange sein, daß der mP die in den Akku hineingeschriebene Konstante von 10d bis 0d dekrementieren kann ® kurze Spikes werden nicht anerkannt.   Einzufügende Routine nach INTERRUPT :   push acc ;damit Inhalt aus Akku nicht verloren geht mov a,#10d s: jb p3.2,r ;wenn Bit am Port gesetzt (kein Interrupt) - ISR verlassen dec a jnz s ;wenn Akku = 0 dann ISR weiter baerbeiten Und am Ende des Programmes :   r: pop acc ;Inhalt aus Akku wiederherstellen RETI ;ISR verlassen    Dokumentation : Das Flackern blieb trotz Softwareänderung bei 230V gleich. Durch Zufall stellten wir fest, daß die Schaltung bei nur 200V tadellos funktionierte. Daraufhin untersuchten wir, ob dieses Flackern sich auch bei der alten Programmversion durch eine 200V-Versorgung ausschalten läßt. Wir stellten fest, daß die Schaltung mit der alten Programmversion bei 200V-Versorgungsspannung trotzdem noch ein wenig flackerte Þ Softwaremäßige Spikefehlerbehebung war ein voller Erfolg Zu behebende Fehler : ·) Spannungsversorgung 200V ·) DÜNKLER langsamer als HELLER   Fehlerbehebungsversuch  Aufgrund der Tatsache, daß bei Tastendruck auf <d> die Routine für DÜNKLER aus irgendeinem unerklärlichen Grund langsamer durchlaufen wird als HELLER (Festgestellt am Oszilloskop durch die Phasenverschiebung der Impulse zur Netzfrequenz.

..bei <d> langsamer) ließen wir die Tastaturabfrage weg und ließen den mP intern von dünkler auf heller regeln. In diesem neuen Programm wurde die Routine ABFRAGE logischerweise gelöscht.  ***************************************** * PROGRAMM : dimmer3.asm * *****************************************   charin code 3027h ;Char in hide port11 equ 91h ;Port-Pin 1.

1 zeitv equ R3 ;Feineinstellung (Tastatur) malzeitv equ 60d ;Grobeinstellung (Konstante)   ;*********************************** ISR ************************************** org 8003h   jmp INTERRUPT   ;****************************** HAUPTPROGRAMM ********************************* org 8200h   mov zeitv,#3d ;Maximale Helligkeit setb port11 ;Finsterniss orl tcon,#01h ;IT0 Flanken-aktiv (neg. Flanke) setb ea ;Alle enabled setb ex0 ;Externer Int. enabled   DUENKLER:   mov a,zeitv subb a,#67d ;Kontrolle ob Lampe dunkel jz heller ;Wenn ja...wieder heller   mov a,zeitv inc a ;zeitv um einen Wert vergrößern ® duenkler mov zeitv,a ;wieder zurückschreiben   mov r0,#030h ;so oft <d> bis ganz dunkel z11: mov r7,#0ffh z12: djnz r7,z12 djnz r0,z11   jmp duenkler HELLER:   mov a,zeitv subb a,#2d ;Kontrolle ob Lampe voll leuchtet jz duenkler ;Wenn ja.

..wieder duenkler   mov a,zeitv dec a ;zeit um einen Wert verringern -> heller mov zeitv,a ;wieder zurückschreiben   mov r0,#030h ;so oft <d> bis ganz dunkel z21: mov r7,#0ffh z22: djnz r7,z22 djnz r0,z21   jmp heller   ;******************************* UNTERPROGRAMM ******************************** INTERRUPT: ;=========   push acc mov a,#10d s: jb p3.2,r dec a jnz s   SPRUNG:   mov a,zeitv   TIME0:   dec a ;Zeitverzögerung abhängig von zeitv mov r2,#malzeitv ;Allgemeine Zeitverzögerung (Konstante) ;R2 (Malzeitv) dient als konstante Zeitver- ;zögerung TIME1:   djnz r2,TIME1 ;Malzeitkonstante decrementieren ;Wenn nicht Null dann TIME1 ;Wenn Null dann Kontrolle ob A (zeitv) 0 ist jnz TIME0 ;Wenn nicht Null dann TIME0 ;Wenn A=0 und R2=0 dann : clr port11 ;Ausgabe des Zündimpulses (Leuchtphase) ;(60*zeitv) mov r4,#100d ;Konstante Zeitverzögerung LOOP1: djnz r4,LOOP1 ;Wenn Konstante Verzögerung abgelaufen, dann : setb port11 ;Kein Zündimpuls (Dunkelphase) (100)   mov r5,#255d ;Allgemeine Zeitverzögerung LOOP2: mov r6,#16d LOOP3: djnz r6,LOOP3 djnz r5,LOOP2 ;Verschachtelte Zeitschleife (LOOP2/3)   clr port11 ;Zündimpuls (Leuchtphase) (16*255=4080) mov r4,#100d ;Allgemeine Zeitverzögerung LOOP4: djnz r4,LOOP4 setb port11 ;Kein Zündimpuls (dunkelphase) (100)   r: pop acc RETI     END  Dokumentation : · ) Wie erwartet waren bei der automatischen Heller/Dünkler - Einstellung beide Routinen gleich schnell. Daraus folgerten wir, daß der Fehler in der Tastaturabfrage liegen muß (Wir probierten das alte Programm nochmals mit anderen Tasten als <h> und <d> aus, was aber den Fehler nicht beeinflusste). Da wir diesen Fehler aber nur als Feinheit ansahen, wollten wir uns damit nicht allzu lange aufhalten und begannen mit dem I2C-Bus-Programm.



Zu behebende Fehler : · ) Spannungsversorgung 200 V · ) DÜNKLER langsamer als HELLER                           Programmvorbereitung zur I2C-Bus-Ansteuerung  Nachdem eine andere Gruppe unserer Klasse sich schon seit Semesterbeginn mit dem I2C-Bus beschäftigt hat, übernahmen wir das Slave-Programm dieser Gruppe und fügten es in unserer Dimmer-Programm ein. Wir bemerkten, das der Empfang der vom Master geschickten Daten nicht korrekt war. Nach langen Überlegungen kamen wir zu dem Schluß, daß durch die am Ende des Programms vorhandenen Zeitschleifen das Programm ständig in der ISR bleibt und dadurch den Interrupt vom Master nicht bearbeiten kann. Aus diesem Grund versuchten wir, die Zeitschleifen durch Timer zu ersetzen, die dann bei einem Overflow in eine ISR springen. Da diese zweite ISR sehr kurz wäre, würde die Kommunikation zwischen Master und Slave nicht beeinflusst werden. Das Programm ist dem ursprünglichen Programm vom Ablauf her sehr ähnlich, bis auf die Tatsache, daß die Software-Verzögerung und die 10 msec-Verzögerung über das Timer 0 – Interrupt gesteuert werden.

Die Einstellung der Impulsbreite erfolgt nach wie vor über die Zeitschleife.  ***************************************** * PROGRAMM : dimmer5.asm * *****************************************   charin code 3027h ;Char in hide port11 equ 91h ;Port-Pin 1.1 zeitv equ R3 ;Feineinstellung (Tastatur) malzeitv equ 60d ;Grobeinstellung (Konstante) n1 data 21h n2 data 22h   ;*********************************** ISR ************************************** ;********** Exterener Interrupt org 8003h ;Externer Interrupt /INT0 jmp inter1   ;**** Timer0, Mode1 16bit org 800bh ;Timer 0 overflow-Interrupt ljmp inter2   ;****************************** HAUPTPROGRAMM ********************************* org 8200h   mov zeitv,#0d ;Maximale Helligkeit setb port11 ;Finsternis orl tcon,#01h ;IT0 Flanken-aktiv (neg. Flanke) setb ea ;Alle enabled setb ex0 ;Externer Int. enabled ;Timer0 init anl tmod,#11110000b ;Werte für Timer 1 beibehalten orl tmod,#00000001b ;16-bit-Timer anl tcon,#11001100b ;Werte für Timer 1 beibehalten orl tcon,#00000010b ;Interrupt-Edge-Flag setzen   setb et0 ;Timer0 Interrupt enablen ABFRAGE:   call charin ;Zeichen einlesen mov R0,A ;Zeichen ins Register retten mov A,R0 subb A,#64h ;Wenn Zeichen=d dann A=0 jz DUENKLER ;Wenn A=0 dann DUENKLER   mov A,R0 ;Gerettetes Zeichen wieder in Akku subb A,#68h ;Wenn Zeichen=h dann A=0 jz HELLER ;Wenn A=0 dann HELLER   jmp ABFRAGE ;Wenn keines der beiden dann ABFRAGE   DUENKLER:   mov a,zeitv subb a,#24d ;Kontrolle ob Lampe dunkel jz ABFRAGE ;Wenn ja.

..ABFRAGE   mov a,zeitv inc a ;zeitv um einen Wert vergrößern -> duenkler mov zeitv,a ;wieder zurückschreiben jmp ABFRAGE   HELLER:   mov a,zeitv ;Kontrolle ob Lampe voll leuchtet jz ABFRAGE ;Wenn ja...ABFRAGE   mov a,zeitv dec a ;zeit um einen Wert verringern -> heller mov zeitv,a ;wieder zurückschreiben jmp ABFRAGE   ;************************************** ;************** Interrupts *************** ;**************************************   ;********* Periode starten org 8300h ;externer Interrupt.

.. inter1: push acc ;Akku in Stack retten   clr tr0 ;Timer 0 stoppen clr tf0 ;Flag löschen mov a,#5d ;Schleife für Spike-Fehlerbehebung s: jb p3.2,aus ; dec a ; jnz s ;   clr ex0 ;externen Interrupt disablen   mov a,#0ffh ;Softwaremäßige Verzögerung : subb a,zeitv ;In Timer-Register TH0/TL0 werden die neuen Werte geschrieben mov th0,a mov a,#0h mov tl0,a   setb tr0 ;Timer starten   aus: pop acc ;Akkuinhalt wieder aus Stack holen   reti   ;********* Zündimpuls positive Halbwelle + Warten zwischen den beiden Impulsen org 8350h ;Timer 0 – Interrupt ...



inter2: push acc ;Akkuinhalt in Stack retten   clr tr0 ;Timer stoppen clr tf0 ;Timer-Flag löschen   clr port11 ;Zündimpuls mov n1,#100d ;Einstellung der Impulsbreite LOOP2p: djnz n1,loop2p setb port11 ;Zündimpulsende   mov th0,#0dch ;Einstellung der 10 msec Zeitverzögerung über Timer 0 mov tl0,#0efh   setb tr0 ;Starten des Timer 0   mov dptr,#800Ch ;Interrupt auf 8400h verbiegen mov a,#84h movx @dptr,a   mov dptr,#800Dh mov a,#00h movx @dptr,a   pop acc ;Akkuinhalt aus Stack holen   reti   ;********* Zündimpuls positive Halbwelle org 8400h inter3: push acc ;Akkuinhalt in Stack retten   clr tr0 ;Timer 0 stoppen clr tf0 ;Timer-Interrupt-Flag löschen   setb ex0 ;Externen Interrupt wieder zulassen   clr port11 ;Zündimpuls mov n1,#100d ;Einstellung der Impulsbreite LOOP2n: djnz n1,loop2n setb port11 ;kein Zündimpuls   mov dptr,#800Ch ;Interrupt wieder auf 8300h verbiegen mov a,#83h movx @dptr,a   mov dptr,#800Dh mov a,#50h movx @dptr,a   pop acc ;Akkuinhalt wieder aus Stack holen   reti   END                         Abschließende Fehlerbehebung   Nach Abschluß der Vorbereitung des Programmes für die I2C-Bus – Ansteuerung traten trotzdem noch immer die bekannten 2 Fehler auf : ·) Die Versorgungsspannung durfte nicht höher als 215 V sein. ·) Die Funktion Dünkler war langsamer als Heller.  Wir programmierten zuerst einmal die Ansteuerung des mP-Boards über Visual Basic. Bei diesem Programm konnte über einen Regler die Helligkeit der Lampe verstellt werden. Bei diesem Programm trat der Heller-Dünkler-Fehler nicht auf. Da wir in Zukunft ohnehin nur über Visual Basic mit dem mP-Board kommunizieren werden, war dieser Fehler für uns hiermit ausgeschaltet.

Der Versorgungsspannungsfehler konnte nicht so einfach ausgeschaltet werden. Nach langwierigen Schaltungsanalysen bemerkte ich, daß die Leitung für die Gate-Ansteuerung des TRIAC´s wie bei der Prinzipschaltung über der 230 V-Leitung mit den beiden Dioden lag. Interessanterweise stellte ich fest, daß die Lampe auch flackerte, wenn das Programm gar nicht gestartet wurde, d.h. an das Gate des TRIAC´s gar keine Spannung kam. Ich folgerte daraus das das Gate von irgendwo genügend Spannung bekommen muß, daß der TRIAC zünden kann.

Ich trennte den Diodenzweig (D2, D3) auf und stellte fest, daß der TRIAC jetzt nicht mehr zünden konnte. Das Gate des TRIAC´s braucht nur ca. 1,5 V, daß der TRIAC zünden kann. Ich nahm an, daß die notwendige Gatespannung über eben diese Leitung mit den beiden Dioden kommen mußte. Für die Fehlerbehebung konnte ich mit dem Versuchsaufbau auf Lochrasterplatte nicht mehr viel machen, daher entschloß ich mich, das Layout anzufertigen und die Schaltung dann nochmals aufzubauen und zu überprüfen.                       Fehleranalyse  Nachdem die Schaltung mit dem fertigen Layout aufgebaut wurde, stellte ich fest, daß das Verhalten der Schaltung genauso ist, wie bei dem Versuchsaufbau.

Der einzige Ausweg erschien mir, die Schaltung mit dem neuen Opto-Triac BRT 12 H (siehe Datenblätter im Anhang) aufzubauen und dadurch die Ansteuerschaltung des Triac’s BTA 12 CW wegzulassen. Der BRT 12 H ist in der Lage, die Lampe direkt mit den von dem mP erzeugten Signal anzusteuern. Nach dem Aufbau der Schaltung mit dem neuen Opto-Triac funktionierte die Schaltung auf Anhieb einwandfrei.       Neue Schaltung   PRINZIPSCHALTUNG     Bei der Prinzipschaltung wurde wieder auf die Einzeichnung der Resetleitung und des Reset-Pull-Up’s R6 verzichtet.                       SCHALTUNG FÜR LAYOUT Anhang 

Suchen artikel im kategorien
Schlüsselwort
  
Kategorien
  
  
   Zusammenfassung Der Vorleser
   sachtextanalyse
   interpretation zwist
   Fabel interpretation
   literarische charakteristik
   interpretation bender heimkehr
   felix lateinbuch
   interpretation der taucher von schiller
   textbeschreibung
   charakterisierung eduard selicke


Anmerkungen:

* Name:

* Email:

URL:


* Diskussion: (NO HTML)





| impressum | datenschutz

© Copyright Artikelpedia.com