Dimmer Futurístico

Testei e realmente funciona...
Apenas algumas alterações de componentes pois não achei os da lista.....

Lista original:

  • 4 resistores de 47K (R1 a R4)
  • 1 resistor de 10k (R5) (se não tiver 1k e 10k não é eletrônica!)
  • 2 resistores 330 (R6 e R7)
  • TRIAC BTA16
  • 1 isolador 4N35
  • 1 isolador MOC3021

O que eu usei

  • 2 resistores 340 (R6 e R7)
  • TRIAC BT139

Resultado:
https://sites.google.com/a/astronomoamador.com.br/www/outfile.flv?attredirects=0

Percebi que com o dimmer consigo 98% eficiência pois quando estava a 100% a rede possui 124 Volts e a saída do dimmer estava 122 Volts. Será que tem como melhorar ?

Amanha vou postar o codigo que usei... Obrigado Vinicius Senger pelo projeto

Parabéns!

Estou espantado em ver algo com este grau de profissionalismo. Um esquema eléctrico (ao contrário daquelas "fotos" de breadboard feitas numa espécie de paint) bem desenhado, seguro e correcto.
Muito bom mesmo.

Para terminar, gostaria apenas de dizer que com um pouco de pesquisa na família dos MOC, conseguias encontrar um que detectasse a passagem por zero. No entanto, dificultava imenso para fazer o PWM de forma correcta. É só mais uma infromacãozinha para quem quiser, por exemplo, fazer um switch de lâmpada electrónico.

usei este codigo, quero opinião e sugestão....

int AC_pin = 3;
int buttonPin = 4; // the pin that the pushbutton is attached to

volatile long dim = 3;
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int bandeira = 1;

void setup(){
pinMode(AC_pin, OUTPUT);
attachInterrupt(0, light, CHANGE);
pinMode(buttonPin, INPUT);
Serial.begin(9600);

}

void light(){
if(dim<130) {
long dimtime = (dim*60); // eval the proper pause to fire the triac
dimtime = (dimtime-30) ;
delayMicroseconds(dimtime); // delay the dim time
digitalWrite(AC_pin, HIGH); // fire the Triac
delayMicroseconds(30); // pause briefly to ensure the triac turned on
digitalWrite(AC_pin, LOW); // turn off the Triac gate (triac will not turn off until next zero cross)
} else {
digitalWrite(AC_pin, LOW); // turn off the Triac gate (triac will not turn off until next zero cross)
}
}

void loop(){
// read the pushbutton input pin:
Serial.println(buttonState);
Serial.println(dim);
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH ) {
if ( bandeira == 1 ){
bandeira = 0 ;
}
else { bandeira = 1; }
}
lastButtonState = buttonState;
}
if (buttonState == HIGH && bandeira == 1) {
if (dim < 130) {
dim=dim+2;
}
}
if (buttonState == HIGH && bandeira == 0) {
if (dim > 4) {
dim=dim-2;
}
}
}