Go Down

Topic: Dubbio su dimmer lampadina con TRIAC (Read 3139 times) previous topic - next topic

Michele Menniti

azzz, ti credevi una sorta di Babbusauro superstite? :smiley-yell:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

tonid

Quote
Bravo! Vedo che gli "Analogici" non sono tutti morti...

Ahaha....no,no,qualcuno vivo c'è ancora 8)

BaBBuino


azzz, ti credevi una sorta di Babbusauro superstite? :smiley-yell:


Ma no, ma vedo anche qua da me che giovani bravi ingegneri digitali c'è nè tanti, ma nessuno che conosce bene l'elettronica 'gnorante. Addirittura ho qualche giovane delle scuole professionali che dà dei punti a certi ingegneri, quanto a capacità di "aggeggiamento elettronico". Ma la colpa, ovviamente, è del sistema scolastico, moltro lontano dalle esigenze di Azienda. I più bravi sono sempre quelli che hanno un percorso da autodidatta, che va oltre quanto appreso a scuola. Il nostro è un mestiere per appassionati. Chi sceglie Elettronica, così tanto per... fa poca o nessuna strada.

Tonando al circuito:

questo prosegue con un Trigger di Schmitt con CD40106..



..per squadrare bene l'onda (dal Transistor esce molto lontana dall'essere quadra) e adattarsi al livello di tensione dellATMega. Se ne mettono due in cascata per recuperare la fase corretta.

Poi si entra dentro il piedino 4 (a memoria mi pare il D2 = INT0) e si apre un'istanza di INTERRUPT sul fronte di salita (RISE), e da lì si fa partire il contatore di ritardo di un impulso tipo:

digitalWrite(outTriac, HIGH);   // accende il TRIAC
delayMicroseconds(5);             // rimane a 1 per 5 uSec
digitalWrite(outTriac, LOW);    // il TRIAC CMQ NON SI SPEGNE fino al successivo passaggio per lo zero

Il delay è un tempo critico, perchè va considerata la capacità del gate del TRIAC, e non sempre 5 uSec sono sufficienti ad accenderlo. Con certi TRIAC sono dovuto salire fino a 10 uSec. Cmq sui Datasheet si trova il Tmin per l'impulso di accensione.

Considerando che una semionda a 50Hz dura 10 mSec,  il tempo di ritardo va da 0 uS, fino a non oltre 8-9000 uS, pena il non-sganciamento del TRIAC al passaggio per lo zero.

Ovviamente si può legare il tempo di ritardo ad una variabile, magari manipolabile da un ingresso analogico (potenzimetro) o come nel mio caso, una variabile AJAX che prende il valore da uno slider su una pagina Web il valore di dimmer (il progetto Domo- BaBBuino!)

pablos

#18
Feb 11, 2013, 10:40 am Last Edit: Feb 11, 2013, 11:43 am by pablos Reason: 1
Che poi è la stessa identica solfa che hai detto a dicembre del 2011.

http://arduino.cc/forum/index.php/topic,80971.0.html
http://sound.westhost.com/appnotes/an005.htm
http://it.wikipedia.org/wiki/Dimmer

Secondo me fornire i link dove ci sono discussioni utili di pro e contro a quello che dici non farebbe male, se ne è già discusso con molti dettagli, perchè ripetere il tutto?

no comment

Michele Menniti

niente da fare, è proprio amore a prima vista :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Un altro post OT e sono costretto ad intervenire.

pablos


Un altro post OT e sono costretto ad intervenire.

Dove sarebbe l'OT scusa, l'argomento è sempre sui dimmer o no?
no comment

leo72

Non intervengo per l'OT ma per gli screzi fra utenti.

Guglio

Grazie mille per le risposte... ho un dubbio sul codice però: non dovrebbe invece essere una cosa del genere?
Code: [Select]

void zero_crossed(){//Viene chiamato quando la fase passa per lo 0 cioè quando la quadra in ingresso è a LOW
delay(9);//L'onda dovrebbe essere quasi sulla cresta più alta
delay(var);//dove 0<var<10;
digitalWrite(outTriac, HIGH);   // accende il TRIAC
delayMicroseconds(5);   
digitalWrite(outTriac, LOW);    // il TRIAC NON SI SPEGNE fino al successivo passaggio per lo zero
}


var tende a 10 quando la luce tende a 0... o non ho capito una cippa?
ArduMAP: Mappa degli utenti che utilizzano Arduino.
http://www.guglio.net/ArduMAP

Go Up