Hallo alle zusammen,
so bin mal wieder dran an einer Phasenanschittsteuerung.....
Ich hab' hier mal die pdf vom attiny13 als Literatur zugrunde liegend, aber ich komm' nicht
richtig rein.
Einstieg:
Diesmal ist es ein Ladegerät und es soll nur eine elegante Strombegrenzung realisiert werden.
Der Thyristor ist, ich muss es erwähnen, ein 50 A / 600 V-Kollege, ein Monster.
Seine Aufgabe bisher, bestand darin durchzuschalten und bei ubatt>14,4 V abzuschalten.
Jetzt gibts' bei jedem Einschalten immer einen ordentlichen Bumms, welche ich nun mit Phasenanschnitt unterdrücken möchte.
Es geht einfacher, aber es dient den Umständen entsprechend als Lernträger.
kurze Übersicht:
*Attiny13
*Thyristor hängt über ein Optokoppler an Pin 5, PB0, schaltet auch durch
*Gleichrichter OHNE Kapazität, also 100 Hz , Graetz-Brücke
*Graetz-Plus / Thyristor-Anode am Pin3, PB4, ADC2, PCINT4 zum Nullspannungsdetektieren
// ob das die richtige Wahl war wusste ich beim Verdrahten noch nicht
*Neben Batterie/ Thyristor-Kathode an Pin2, PB3, ADC3 zum Abschalten bei Ubat > 14,4 V
/*
Thyristor aus: PORTB &= ~(1 << Ausgang);
Thyristor an: PORTB |= (1 << Ausgang);
*/
Hier hängts' gerade.....
ISR(PCINT0_vect) // interrupt service routine
{
Was muss hier hin ???
kurze Anregungen helfen schon....
INT0 regagiert auf Flankenwechsel, aber der PCINT auf Pinchange...
Könnte man auch über den adc-Eingang einen Wert verarbeiten lassen und dann einen Interrupt auslösen lassen?
Hardware-mäßig könnte ich noch die Idee, hatte jemand an anderer Stelle genannt, mit einem Optkoppler an der Wecheselspannung nutzen.
Dieser kippt dann beim Nulldurchgang...
Über den Spannungsteile bekomme ich je nach Sinuslage Werte zwischen 0 V und 2 V....
}
Im Hauptprogramm:
GIMSK |= (1<<PCIE); // enable PCINT interrupt
PCMSK |= (1<<PCINT4); // pin change mask: listen to portb bit 2
sei(); // enable all interrupts
Ist das alles scho mal richtig ?
Gruß
Ralf
so bin mal wieder dran an einer Phasenanschittsteuerung.....
Ich hab' hier mal die pdf vom attiny13 als Literatur zugrunde liegend, aber ich komm' nicht
richtig rein.
Einstieg:
Diesmal ist es ein Ladegerät und es soll nur eine elegante Strombegrenzung realisiert werden.
Der Thyristor ist, ich muss es erwähnen, ein 50 A / 600 V-Kollege, ein Monster.
Seine Aufgabe bisher, bestand darin durchzuschalten und bei ubatt>14,4 V abzuschalten.
Jetzt gibts' bei jedem Einschalten immer einen ordentlichen Bumms, welche ich nun mit Phasenanschnitt unterdrücken möchte.
Es geht einfacher, aber es dient den Umständen entsprechend als Lernträger.
kurze Übersicht:
*Attiny13
*Thyristor hängt über ein Optokoppler an Pin 5, PB0, schaltet auch durch
*Gleichrichter OHNE Kapazität, also 100 Hz , Graetz-Brücke
*Graetz-Plus / Thyristor-Anode am Pin3, PB4, ADC2, PCINT4 zum Nullspannungsdetektieren
// ob das die richtige Wahl war wusste ich beim Verdrahten noch nicht
*Neben Batterie/ Thyristor-Kathode an Pin2, PB3, ADC3 zum Abschalten bei Ubat > 14,4 V
/*
Thyristor aus: PORTB &= ~(1 << Ausgang);
Thyristor an: PORTB |= (1 << Ausgang);
*/
Hier hängts' gerade.....
ISR(PCINT0_vect) // interrupt service routine
{
Was muss hier hin ???
kurze Anregungen helfen schon....
INT0 regagiert auf Flankenwechsel, aber der PCINT auf Pinchange...
Könnte man auch über den adc-Eingang einen Wert verarbeiten lassen und dann einen Interrupt auslösen lassen?
Hardware-mäßig könnte ich noch die Idee, hatte jemand an anderer Stelle genannt, mit einem Optkoppler an der Wecheselspannung nutzen.
Dieser kippt dann beim Nulldurchgang...
Über den Spannungsteile bekomme ich je nach Sinuslage Werte zwischen 0 V und 2 V....
}
Im Hauptprogramm:
GIMSK |= (1<<PCIE); // enable PCINT interrupt
PCMSK |= (1<<PCINT4); // pin change mask: listen to portb bit 2
sei(); // enable all interrupts
Ist das alles scho mal richtig ?
Gruß
Ralf