- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: Avr Dimmer 230V

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Avr Dimmer 230V

    Hi Leute,
    ich habe vor über meinen Atmega8 230 Volt zu dimmen. Die
    Nulldurchgangserkennung wird mit einem Optokoppler (4N33) + Widerstand
    direkt am Netz angeschlossen. Somit sollte ich am Ausgang ein
    Rechtecksignal erhalten. Das erzeugte Signal geht dann in den AVR an den
    Interrupt-Pin 1.
    Hier wird ein Zähler zurückgesetzt. Der Timer löst nach 39µs aus, somit
    wird dieser aufruf ca. 256 mal pro Halbwelle ausgelöst. Wenn der Timer
    also ausgelöst wird, wird geguckt, ob der aktuelle Zählerstand dem vorgegeben
    Wert entspricht.

    Ist das hier von der Idee her richtig?
    Oder ist das komplett der falsche Ansatz?

    Code:
    #define F_CPU 16000000
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    uint8_t counter, val1, val2;
    
    #define timerpreload_1 178
    
    #define Tri1_OUT DDRD |= (1<<PD7);
    #define Tri2_OUT DDRD |= (1<<PD6);
    
    
    #define Tri1_ON    PORTD |= (1<<PD7);
    #define Tri1_OFF  PORTD &= ~(1<<PD7);
    #define Tri2_ON    PORTD |= (1<<PD6);
    #define Tri2_OFF  PORTD &= ~(1<<PD6);
    
    
    ISR(TIMER2_OVF_vect)
    {
      TCNT2 = timerpreload_1; 
      if (counter < 254)
      {
        counter++;
      }
      if(counter==val1)
      {
        Tri1_ON
      }
      else
      {
        Tri1_OFF
      }
      if(counter==val2)
      {
        Tri2_ON
      }
      else
      {
        Tri2_OFF
      }
      
    
    
    }
    
    /
    ISR (INT1_vect)
    {
      Tri1_OFF
      Tri2_OFF
      TCNT2 = timerpreload_1;
      counter = 0;
      if (val1 == 0)
      {
        Tri1_ON
      }
      if (val2 == 0)
      {
        Tri2_ON
      }
    }
      
    
    int main(void)
    {
      //Timer für die Phasenanschnittberechnung ( alle 39usec )
      TCNT2 = timerpreload_1;
      TCCR2 |= (1<<CS21);
      TIMSK |= (1<<TOIE2);  
      //Timer Ende
      //INT1 ON PHASE SYNC
      MCUCR |= (1<<ISC10); //Fallend / Steigend
      GICR |= (1<<INT1); //Interrupt aktivieren
      //Int1 Ende
      sei();
    
        while(1)
        {
            
        }
    }
    Somit sollte für val=255 die Lampe aus und für 0 an sein.

    MfG Niclas
    Geändert von Niggle (11.05.2016 um 16:07 Uhr)

Ähnliche Themen

  1. Dimmer für Halogenlampe 230V 1.5KW mit PWM
    Von ChRiZ im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 29.11.2011, 16:38
  2. 50 LEDs and ~230V mit Dimmer
    Von tach810i im Forum Elektronik
    Antworten: 130
    Letzter Beitrag: 13.07.2011, 00:16
  3. 230V Dimmer mit Triac
    Von triti im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 08.03.2008, 22:44
  4. 230V dimmer softwarefrage
    Von bastian07 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 12
    Letzter Beitrag: 05.03.2008, 17:05
  5. Dimmer für 230V
    Von Marco78 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 29.11.2006, 20:32

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests