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
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.
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 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;
}
}
}