www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verzweifle mit Dimmer


Autor: Steffen Abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nachdem ich meinen IR-Empfänger nun am laufen habe, kommt schon das
nächste Problem. Ich bekomme einfach keine vernünftige
Phasenanschnittssteuerung zum Laufen.. :(

Vielleicht könnt ihr mir auf die Sprünge helfen:

SIGNAL (SIG_OVERFLOW1) {
  TCNT1=61536;
  dim_timer++;
  if ( (dim_timer==dimmer) || (dim_timer==(dimmer+10)) )
  {
    PORTD&=~(1<<PD0);
  }

  if ((dim_timer==10) || (dim_timer==20))
  {
    PORTD|=(1<<PD0);
  }
}

SIGNAL (SIG_INTERRUPT1) {
  dim_timer=0;
}

int main(void) {
  dimmer=9;
  DDRD=0x01;
  GIMSK |= (1<<INT1);
  MCUCR |= ((1<<ISC10) | (1<<ISC11));
  TIMSK |= (1<<TOIE1);
  TCCR1B |= (1<<CS10);
  TCNT1=61536;

  sei();
}

Der Externe Interrupt wird durch einen Optokoppler generiert, der immer
bei Nulldurchgang ein High Signal ausgibt, also ein Signal mit 20Hz.
Damit soll die variable dim_timer auf Null gesetzt werden. Ab diesem
Zeitpunkt wird dann gezählt, wieviel Zeit seit Nulldurchgang vergangen
ist (in ms) und dann entsprechend das Lastrelais eingeschaltet (an
PD0). In der Theorie schön und gut, aber ich bekomme keine gedimmte
Lampe sondern eine blinkende Lampe :(

Der Prozessor, ein 2313 ist mit 4Mhz getaktet, also muss ich den Timer
mit 61536 vorladen und mit voller Taktfrequenz betreiben um ein exaktes
1000Hz Signal bekommen. Aber irgendwas ist bei meiner Theorie faul.

Ich hab hier im Forum auch schon viel geblättert und gesucht, aber ich
habe keine Lösung gefunden.

Danke schonmal!
Steffen

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen!
Wieso bekommst Du ein Signal mit 20Hz? Wenn Du den Nulldurchgang
auswertest, kriegst Du 100 Hz raus. Und wofür brauchst Du das 1000Hz
Signal? Leider kenne ich mich mit der Sprache C nicht aus und kann
dadurch das PRG nicht deuten.

MfG Paul

Autor: Steffen Abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomme nur jeden zweiten Nulldurchgang ein High-Signal, aber ich
hatte mich verschrieben, natürlich ein Signal, das alle 20ms auftritt
meinte ich! Also ein 50Hz Signal.

Das 1000Hz Signal brauche ich, um den Einschaltzeitpunkt des Lastrelais
zu bestimmen. Ich muss ja regeln können, dass ich von 0-10ms nach dem
Nulldurchgang das Relais schalte, um eine variable Ausgangsleistung zu
erzeugen...

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen!
Das ist richtig. Mit den 1000Hz komme ich aber nicht klar, weil man ja
eigentlich als Zündimuls auch nur 50Hz-weise den Triac ansteuern muß.
Nur der Start des Impulses muß sich im Bereich zwischen 0 und 10ms ver
scheiben lassen.


MfG paul

Autor: Steffen Abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und genau dazu brauche ich die 1000Hz, damit im Bereich von 0-10ms
verschieben kann. Allerdings vermute ich, dass mein Problem ganz wo
anders liegt; es scheint so, als würde ich kein sauberes Signal vom
Optokoppler auf meinen externen Interrupt bekommen. Ich werde der Sache
mal auf den Grund gehen...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen, neuer Ansatz.
Nimm eine Gleichrichterbrücke vor deinen Opto, dann hast du 100Hz
Impulse. Ab damit auf den Input-Capture. Rechenbeispiel Quartz 8MHz,
Timer 1 Vorteiler auf 8, Takt damit 1 MHz, bei einem Rechteck aus dem
Opto von 100 Hz steht damit der Zähler des Timer 1 bei ca. 10000 (etwas
weniger wegen der Nulldurchgänge). Nun das Output-Compare Register laden
und die meiste Arbeit ist getan.
Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.