Forum: Mikrocontroller und Digitale Elektronik TRIAC ansteuern: Frage zu AVR-Timern


von Andi M. (rootsquash)


Lesenswert?

Hallo, hier habe ich schon einen Hinweis bekommen wie ich einen TRIAC 
als Phasenanschnittsdimmer  nutzen kann. Ausgangsfrage war ob schon 
jemand Erfahrungen mit "Triac Phase Control"-Bausteinen gesamemlt hat:

Matthias Lipinsky schrieb:
> Du hast den falschen Ansatz.
>
> Die Nulldurchgangserkennung kommt an ICP. Jetzt kannst du per
> durchlaufendem Timer die Zeit zwischen zwei ICP-Interrupts messen und
> als 100% ansehen. Weiterhin rechnest du deine Verzögerung (bzgl. des
> gewüunschten Dimmwertes) in Timertakten aus und schreibst das in das OCR
> Register. Dessen Interrupt setzt dann den Triac, welcher durch den
> ICP-Int zurückgenommen wird. So entsteht eine PWM, die synchron zum Netz
> ist.
>
> Optional kannst du beim ICP-Int auch den Timerwert auf Null setzen.

Wenn ich das richtig verstanden habe würde man das ungefähr so bauen:
1
  TCCR1A = 0x00;
2
  TCCR1B = 0x0B;     //Prescaler 64 (1+2) + CTC1 (8) = 11 == 0x0B
3
  GIMSK |= (1<<INT0);  //Externen Interrup anschalten, Nulldurchgang mit Schmitt-Triggern zu Puls formen
4
  MCUCR |= (1<<ISC11);  //ISC11 = 1 --> Signal-Flanke erzeugt Interrupt, siehe ISC10
5
  MCUCR &= ~(1<<ISC10);  //ISC10 = 0 --> fallende Flanke erzeugt Interrupt / ISC10 = 1 --> steigende Flanke erzeugt Interrupt
6
7
ISR(INT0_vect)
8
{
9
  TRIAC_PORT &= ~(1 << TRIAC_PIN);   //TRIAC aus
10
  TCNT1 = 0x0000;        //Timer auf Null
11
  OCR1A = dimmer_wert;      //Startzeit setzen
12
  TIMSK |= (1<<OCIE1A);      //Compare Interrupt erlauben
13
}
14
15
/*Alternativ könnte man doch vielleicht auch den TRIAC-Anschluss nicht erst mit der INT0-ISR löschen sondern den Ausgang schon ein paar
16
Millieskunden nach dem Setzen wieder ausmachen, der TRIAC läuft doch, nachdem er gezündet wurde, bis zum nächsten Nulldurchgang weiter, oder?*/
17
18
ISR(TIMER1_COMPA_vect)
19
{
20
  TRIAC_PORT |= (1 << TRIAC_PIN);   //TRIAC an
21
  TIMSK &= ~(1<<OCIE1A);      //Compare Interrupt aus
22
}

Kommt das so ungefähr hin?

Dann wäre die nächste Frage wie ich das am geschicktesten umsetze, wenn 
ich TCNT1, OCRIA und ISR(TIMER1_COMPA_vect) derzeit benutze um 
Millisekunden zu zählen.
Ich möchte vermutlich vom ATMega8 auf einen ATMega16 wechseln, da könnte 
ich dann auch gleich einen ATMega162 nehmen. Wenn ich das richtig 
gelesen habe hat der 2 vollständig unabhängige 16 Bit Timer mit CTC usw.
Liest sich das als wäre es halbwegs sinnvoll oder kann man das auch 
bequem mit nur einem Timer machen?

von Andi M. (rootsquash)


Lesenswert?

So, mal wieder zuhause gewesen und den µC gestreichelt.

Es scheint so als würde es tun was es soll, aber entspricht es dem 
Vorschalg von Matthias Lipinsky oder habe ich das falsch verstanden und 
mache es mir viel zu kompliziert?
1
ISR(TIMER1_CAPT_vect)
2
{
3
  //ICP aus, LED aus, Timer Stopp
4
  TIMSK &= ~(1<<TICIE1);      //ICP Aus
5
  TRIAC_PORT &= ~(1 << TRIAC_PIN);  //TRIAC aus
6
  TCCR1B &= ~( (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Timer Stopp
7
8
  //Timer auf Null setzen, Zeit einstellen, CTC-Modus an, Timer starten
9
  TCNT1 = 0x0000;        //Timer auf Null
10
  OCR1A = 100;      //Startzeit setzen
11
  TIMSK |= (1<<OCIE1A);      //Compare Interrupt erlauben
12
  TCCR1B |= ( (1<<WGM12) | (1<<CS12) | (1<<CS10) );  //Timer Start: CPU-Takt / 1024
13
}
14
15
ISR(TIMER1_COMPA_vect)
16
{
17
  //Timer stoppen, CTC-Modus aus, LED an, ICP an
18
  TCCR1B &= ~( (1<<WGM12) | (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Timer Stopp
19
  TIMSK &= ~(1<<OCIE1A);      //Compare Interrupt aus
20
  TRIAC_PORT |= (1 << TRIAC_PIN);    //TRIAC an
21
  TCCR1B |= ( (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Externer Pin T1, steigende Flanke
22
  TIMSK |= (1<<TICIE1);      //ICP An
23
}
24
25
int main(void)
26
{
27
  TCCR1A = 0x00;
28
  TCCR1B |= ( (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Externer Pin T1, steigende Flanke
29
  MCUCR |= (1<<ISC11);      //ISC11 = 1 --> Signal-Flanke erzeugt Interrupt, siehe ISC10
30
  MCUCR &= ~(1<<ISC10);      //ISC10 = 0 --> fallende Flanke erzeugt Interrupt / ISC10 = 1 --> steigende Flanke erzeugt Interrupt
31
  TRIAC_DDR |= (1<<TRIAC_PIN);
32
  TRIAC_PORT |= (1 << TRIAC_PIN);    //TRIAC an
33
  sei();
34
  TIMSK &= ~(1<<OCIE1A);      //Compare Interrupt aus
35
  TIMSK |= (1<<TICIE1);      //ICP An
36
  TIMSK |= (1<<ICNC1);      //Noise cancelling
37
  while(1){}
38
}


/edit: die LED flackert noch, da scheint irgendwas nicht zu stimmen: Ich 
gebe Spannung auf ICP, die LED geht kurz aus, kurz wieder an und dann 
wieder aus, bevor sie wieder dauerhaft an geht.

von Matthias L. (Gast)


Lesenswert?

Warum tust du in den zwei ISRs die Timer stoppen und die IRQs neu 
konfigurieren? Das reicht doch einmal aus. TImer durchlaufen lassen...

1
  TCCR1B |= ( (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Externer Pin T1, steigende Flanke
das würe kürzer zu schreiben und übersichtlicher:
1
  TCCR1B |= ( (7<<CS10);

Aber warum externer Pin?

Nimm den internen Takt. DU willst 20ms überbrücken. Also muss das Zählen 
bis 2^16 mindestens 20ms dauern, sonst passt die Rechnung nicht
=> 2^16/20ms = 3,2...MHz

Also den Voreiler so einstellen, dass die Timer-Freq kleiner ist.

Welchen Quartz nimmst du?

von Andi M. (rootsquash)


Lesenswert?

Matthias Lipinsky schrieb:
> Warum tust du in den zwei ISRs die Timer stoppen und die IRQs neu
> konfigurieren? Das reicht doch einmal aus. TImer durchlaufen lassen...
>
>
1
>   TCCR1B |= ( (1<<CS12) | (1<<CS11) | (1<<CS10) );  //Externer Pin T1,
2
> steigende Flanke
3
>
> das würe kürzer zu schreiben und übersichtlicher:
>
1
>   TCCR1B |= ( (7<<CS10);
2
>
>
> Aber warum externer Pin?
>
> Nimm den internen Takt. DU willst 20ms überbrücken. Also muss das Zählen
> bis 2^16 mindestens 20ms dauern, sonst passt die Rechnung nicht
> => 2^16/20ms = 3,2...MHz
>
> Also den Voreiler so einstellen, dass die Timer-Freq kleiner ist.
>
> Welchen Quartz nimmst du?

Hallo,

erstmal viel Dank für die Antwort.

Ich baue gerade zum ersten Mal selbst etwas mit den Timern. Bisher habe 
ich die Einstellungen nur aus Vorlagen übernommen:
- jede Millisekunde eine ISR aufzurufen (DCF-77)
und
- PWM in Software (Soft-PWM-Artikel)

Über den Eingang soll der Nulldurchgang des Netz-Sinus ermittelt werden.
Da ich nicht weiß wie lang der µC und die Netzspannung synchron laufen, 
mache ich die Interrupts in diesem ersten Versuch immer wieder aus, so 
dass der TRIAC (oder hier: die LED) nur an geht, wenn ein Nulldurchgang 
detektiert wurde.  Das ist also quasi als "Sicherheitsmaßnahme" gedacht, 
auch wenn die hier ja nicht viel bringt: solang kein neuer Nulldurchgang 
detektiert wird bleibt der TRIAC ja einfach an, tut also genau das 
Gegenteil von dem was später passieren soll, das müsste ich natürlich 
noch ändern.

>> /*Alternativ könnte man doch vielleicht auch den TRIAC-Anschluss
>> nicht erst mit der INT0-ISR [Hier meinte ich wohl ICP] löschen sondern den 
Ausgang schon ein
>> paar Millieskunden nach dem Setzen wieder ausmachen, der TRIAC
>> läuft doch, nachdem er gezündet wurde, bis zum nächsten Nulldurchgang
>> weiter, oder?*/

Bei diesem Test läuft der µC mit der internen Taktquelle auf 1 MHz, in 
der geplanten Anwendung wird das Gerät an einem 8 MHz, oder, wenn es 
dann noch schnell genug für 1-wire und anderes ist, an einem 4 MHz 
Quarzoszillator laufen.

Wenn ich deine Erläuterungen jetzt richtig verstanden habe schlägst du 
vor, dass der Timer mit der gleichen Periodendauer läuft wie die 
Netzspannung (oder vielleicht mit der halben wenn ich beide Halbwellen 
nutzen möchte) und das möglichst ohne Phasenverschiebung.
Der Timer läuft dann bis zu seinem entsprechend gesetzten Maximum hoch, 
irgedwo auf dem Weg "matcht" er den eingestellten Wert, macht den TRIAC 
an aber "cleart" den Timer noch nicht, sondern lässt ihn einfach 
überlaufen.
Das "Abschalten" des TRIACs mache ich dann wenn ich per ICP wieder einen 
Nulldurchgang sehe.

Das hört sich jetzt erstmal nicht so schlecht an, aber da das Gerät 24/7 
laufen soll möchte ich zumindest ab und zu mal sicherstellen dass die 
Netzspannung und der Timer noch synchron laufen.

von Karl H. (kbuchegg)


Lesenswert?

Andi M. schrieb:

> und mache es mir viel zu kompliziert?

Ich würde sagen: ja

Lass doch den Timer durchlaufen. Wozu willst du denn den immer wieder 
Stoppen?
Wenn du den Timer so einstellst, dass er für einmal durchzählen von 0 
bis 65535 länger als die bewussten 20ms braucht, dann kann es dir nicht 
passieren, dass der Timer überläuft.

Die Synchronisierung mit den Nulldurchgängen macht dir der ICP 
Interrupt. Sobald der den 0-Durchgang erkennt, setzt du den Timer auf 0 
zurück.

-> der Timer zählt laufend von 0 bis zu einer Zahl. Die Zahl ist also 
ein Mass für den zeitlichen Abstand zwischen 2 0-Durchgängen.

Soweit so gut.

Wenn du den Triac gleichzeitig im ICP Interrupt einschaltest, dann 
beginnt hier der Ausgangssstrom zu laufen. Die Frage ist daher: Wann 
muss der TRIAC wieder abgeschaltet werden?

ABgeschaltet werden muss er zu irgendeinem Zeitpunkt zwischen 0 (oder 
einer Zahl etwas größer als 0) und der Zahl, die du für die Zeit 
zwischen 2 0-Durchgängen festgestellt hast. Für die ersten Versuche 
würde ich die sogar als konstant annahmen und rechnerisch ermitteln. Wir 
wissen ja, dass das 20ms sind.

d.h. du hast

im ICP Interrupt
    TRIAC einschalten
    Timer auf 0 setzen

im Compare Match Interrupt
    TRIAC abschalten


Und im Prinzip brauchst du auch nicht mehr. Mit dem ICP Interrupt 
beginnt die 'Phase' und im Compare Match wird er wieder abgeschaltet. 
Dadurch dass der ICP den Timer-Wert wieder auf 0 setzt, synchronisiert 
sich das ganz von alleine.

Und wenn die Netzspannung ausbleibt, gibt es auch keine 0-Durchgänge 
mehr und der TRIAC wird auch nie gezündet.


Der Rest ist dann nur noch berechnen, bei welchem Zählerstand (und damit 
bei welcher Zeit nach dem Einschalten des Triacs) der Triac wieder 
ausgeschaltet werden soll, wenn die Phase zu x Prozent angeschnitten 
werden soll.

von Matthias L. (Gast)


Lesenswert?

@Karl Heinz Buchegger (kbuchegg) (Moderator)

Erwischt ;-)

Triac abschalten ist nicht unmöglich, aber schwierig ;-)


>Andi M. (rootsquash)

Als erstes rate ich dir, den Quartz einzusetzen, den du später nutzen 
willst. Somit schaffst du klare Vorraussetzungen für später.

Ob du den Timer im ICP nullst oder nicht, spielt keine Rolle. Der 
einzige Unterschied wäre das Setzen des OCR wertes:
1
ISR(ICP)
2
{
3
 TCNT = 0
4
 OCR  = 100// die 100 ist symbolisch für die Verzögerung
5
 Triac aus
6
}
7
ISR(OCP)
8
{
9
 Triac ein 
10
}
11
ISR(OVP)
12
{
13
 // Netzausfall
14
}
oder
1
ISR(ICP)
2
{
3
 OCR  = TCNT + 100  // die 100 ist symbolisch für die Verzögerung
4
 Triac aus
5
}
6
ISR(OCP)
7
{
8
 Triac ein 
9
}

Wie gesagt, entscheidend ist die richtige Geschwindigkeit des Timers. 
Das habe ich oben schon mathematisch beschrieben. Bei 8MHz QUartz bietet 
sich ein Vorteiler durch acht an. Das ergibt 1MHz. Somit läuft der Timer 
65,.. ms bis zum Überlauf

von Andi M. (rootsquash)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Andi M. schrieb:
>
>> und mache es mir viel zu kompliziert?
>
> Ich würde sagen: ja
>
> Lass doch den Timer durchlaufen. Wozu willst du denn den immer wieder
> Stoppen?
> Wenn du den Timer so einstellst, dass er für einmal durchzählen von 0
> bis 65535 länger als die bewussten 20ms braucht, dann kann es dir nicht
> passieren, dass der Timer überläuft.
>
> Die Synchronisierung mit den Nulldurchgängen macht dir der ICP
> Interrupt. Sobald der den 0-Durchgang erkennt, setzt du den Timer auf 0
> zurück.
>
> -> der Timer zählt laufend von 0 bis zu einer Zahl. Die Zahl ist also
> ein Mass für den zeitlichen Abstand zwischen 2 0-Durchgängen.
>
> Soweit so gut.
>
> Wenn du den Triac gleichzeitig im ICP Interrupt einschaltest, dann
> beginnt hier der Ausgangssstrom zu laufen. Die Frage ist daher: Wann
> muss der TRIAC wieder abgeschaltet werden?
>

Das sieht nach einer Phasen- ab -schinttsteuerung aus.
Das ist technisch weniger trivial, da TRIACs IIRC eigentlich "an" 
bleiben wenn sie erstmal gezündet sind, bis die Netzspannung einen 
Nulldurchgang macht, dabei "löscht" sich der TRIAC dann selbst.

Was ich hier noch garnicht geschrieben habe: Der Dimmer ist für eine 
Heizung gedacht (Heizkabel, Heizmatte oder Heizstrahler, das ist noch 
nicht raus) und somit für eher induktive Lasten, da ist eine Phasen- 
an -schnittsteuerung die freundlichere Variante.

> ABgeschaltet werden muss er zu irgendeinem Zeitpunkt zwischen 0 (oder
> einer Zahl etwas größer als 0) und der Zahl, die du für die Zeit
> zwischen 2 0-Durchgängen festgestellt hast. Für die ersten Versuche
> würde ich die sogar als konstant annahmen und rechnerisch ermitteln. Wir
> wissen ja, dass das 20ms sind.
>
> d.h. du hast
>
> im ICP Interrupt
>     TRIAC einschalten
>     Timer auf 0 setzen
>
> im Compare Match Interrupt
>     TRIAC abschalten
>
>
> Und im Prinzip brauchst du auch nicht mehr. Mit dem ICP Interrupt
> beginnt die 'Phase' und im Compare Match wird er wieder abgeschaltet.
> Dadurch dass der ICP den Timer-Wert wieder auf 0 setzt, synchronisiert
> sich das ganz von alleine.
>
> Und wenn die Netzspannung ausbleibt, gibt es auch keine 0-Durchgänge
> mehr und der TRIAC wird auch nie gezündet.
>
>
> Der Rest ist dann nur noch berechnen, bei welchem Zählerstand (und damit
> bei welcher Zeit nach dem Einschalten des Triacs) der Triac wieder
> ausgeschaltet werden soll, wenn die Phase zu x Prozent angeschnitten
> werden soll.


Matthias Lipinsky schrieb:
> @Karl Heinz Buchegger (kbuchegg) (Moderator)
>
> Erwischt ;-)
>
>
>
>
>


Den Timer durchlaufen lassen und nur auf Null zu setzen oder den 
Vergleichswert anpassen hört sich nicht so schlecht an, das werde ich 
mir dann mal angucken wenn ich wieder zuhaus bin, also frühestens 
Donnerstag abend.
Dann vielleicht auch mit Oszilloskop und Wechselspannung.

von Matthias L. (Gast)


Lesenswert?

>Der Dimmer ist für eine Heizung gedacht


Möööp.

Für Heizungen oder andere sehr träge Verbraucher ist zwingend eine 
Wellenpaketsteuerung einzusetzen.

Das ist noch einfacher. Da brauchst du nur den (pos.) Nulldurchgang und 
schaltest in diesem Zu und irgendwann Ab. Das Verhältnis gibt die 
(Heiz)Leistung an.

Also 100Nulldurchgänge Ein und 100Nulldurchgänge aus, macht 50%

von Andi M. (rootsquash)


Lesenswert?

Mh, das verwundert mich. Ist das ständige Erwärmen und Abkühlen nicht 
eher schädlich?

Wenn es um die Leistung geht: Es geht nicht darum einen ganzen Raum zu 
heizen, sondern nur um einen Glaskasten mit ein paar hundert Litern 
Luft. "Terrarium" soll ich hier ja nicht mehr schreiben ;-)

/e: Man könnte natürlich recht kurze Wellenpakete nehmen, dann fällt das 
nicht mehr so auf. Diese Lösung wäre natürlich schön einfach und liesse 
sich vermutlich auch ohne große Änderungen in das bestehende Projekt 
einbauen.
Trotzdem: Geht es nur um die zu regelnde Leistung oder gibt es noch 
andere Gründe warum man keine Phasenanschnittsteuerung nehmen "darf"?

von Matthias L. (Gast)


Lesenswert?

Phasenschnitt ist schlecht für das Netz. Das erzeugt jede Menge 
Oberschwingungen. Und wird von den Energieversorgern nur geduldet, da 
Wellenpaketsteuerung bei Glühlampen zum Flackern führt. Bei Heizungen 
aber nicht. Und auch deine Luft ist träge genug, damit die nicht 
erkennt, dass die Heizung 5Sek an und 5sek aus ist. SIe denkt, die läuft 
mit 50%

von Andi M. (rootsquash)


Lesenswert?

Matthias Lipinsky schrieb:
> Phasenschnitt ist schlecht für das Netz. Das erzeugt jede Menge
> Oberschwingungen. Und wird von den Energieversorgern nur geduldet, da
> Wellenpaketsteuerung bei Glühlampen zum Flackern führt. Bei Heizungen
> aber nicht. Und auch deine Luft ist träge genug, damit die nicht
> erkennt, dass die Heizung 5Sek an und 5sek aus ist. SIe denkt, die läuft
> mit 50%

Mh, Heizkabel und Heizmatten geben ihre Wärme ja vermutlich primär über 
Wärmeleitung ab, da ist häufiges An- und Abschalten vermutlich kein 
großes Problem.
Bei diesen Keramik-Heizstrahlern bin ich mir nicht sicher wie groß die 
Zeitkonstante ist, da würde ich dann vermutlich nicht alle paar Sekunden 
schalten sondern "PWM" mit einer Periodendauer <= 1 s.

Mh, den Dimmer kriege ich also hin, das sollte jetzt nicht mehr so 
kompliziert sein, vielen Dank für die Hilfe! :)


Jetzt fehlt noch der Regel-Algorithmus.
Und die Termperaturen die meine DS18S20 zeigen scheinen mir zu hoch zu 
sein, 25°C Raumtemperatur die sich nicht so anfühlen, während der Typ K 
am MM 22°C oder so anzeigt.

von Matthias L. (Gast)


Lesenswert?

>Jetzt fehlt noch der Regel-Algorithmus.

Ja, dazu brauchst Du erstmal eine (mathematische) Beschreibung der 
Regelstrecke


;-)

von Karl H. (kbuchegg)


Lesenswert?

Matthias Lipinsky schrieb:
>>Jetzt fehlt noch der Regel-Algorithmus.
>
> Ja, dazu brauchst Du erstmal eine (mathematische) Beschreibung der
> Regelstrecke

Für eine Raumheizung?

Mehr als 5 grad zu kalt: volle Pulle
weniger als 5 Grad zu kalt: halbe Kraft
zu warm: aus

:-)

von Matthias L. (Gast)


Lesenswert?

>Mehr als 5 grad zu kalt: volle Pulle
>weniger als 5 Grad zu kalt: halbe Kraft
>zu warm: aus


Viel zu einfach.

von Andi M. (rootsquash)


Lesenswert?

Mh, ein klein wenig mehr Aufwand darf es schon sein.
Das Programm ist jetzt etwas mehr als 7 kB groß. Da ich (schon allein 
aufgrund der wesentlich hübscheren Pin-Anordornung) auf einen ATMega16 
übersiedeln werde, ist da noch genug Platz ;-)

Ich weiß nicht wie sehr sich das kleine Krabbeltier daran stört, aber 
eine nicht allzu schnell schwankende Lufttemperatur ist bei 
wechselwarmen Tieren vermutlich eher positiv als negativ zu sehen.

von Karl H. (kbuchegg)


Lesenswert?

Andi M. schrieb:

> Ich weiß nicht wie sehr sich das kleine Krabbeltier daran stört, aber
> eine nicht allzu schnell schwankende Lufttemperatur ist bei
> wechselwarmen Tieren vermutlich eher positiv als negativ zu sehen.


Du hast bei Heizungen, ausser im gut isolierten kleinen Schuhkarton, 
sowieso nie eine homogene Temperaturverteilung im beheizten Luftvolumen. 
Das Ansinnen auf 1° genau zu regeln scheitert schon alleine daran, das 
es davon abhängt wo genau man im Volumen misst. Bei 10 Messstationen 
kriegt man 10 unterschiedliche Werte.

Was machen denn die lieben Kleinen draussen in der Natur, wenn es in der 
Nacht ein paar Grad kälter wird oder sich Wolken vor die Sonne schieben?

von Andi M. (rootsquash)


Lesenswert?

Natürlich wird es einen Temperaturgradienten geben und natürlich 
schwankt die Temperatur in der Natur, ich möchte nur keinen harmonisch 
schwingenden Wärmestrahler, die Tierchen sind ja nicht sonderlich 
intelligent und assoziieren eigentlich auch Wärme mit Licht. Ausserdem 
könnte ich eine halbwegs exakte Temperaturregelung vielleicht auch 
Wiederverwenden, z.B. falls es mal Eier auszubrüten gibt.

Und es macht natürlich emrh Spaß eine "ordentliche" Regelung zu bauen 
als so ein 3-Stufen-Ding. Da hat man nachher doch das Gefühl geschlampt 
zu haben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.