Ciao a tutti,sono nella fase preliminare di progettazione di un dimmer per lampade basato su Attiny84.
Il circuito sarà composto da un fotoaccoppiatore ac per rilevare lo zero della sinusoide e un altro fotoaccoppiatore piloterà un triac per comandare il carico,che in linea di massima sarà una lampadina.
La scelta della MCU ricade sul tiny84 perché non mi serve la potenza di un Atmega e nemmeno tutti i suoi pin:oltre ai due pin per la parte dimmer ne userò un terzo a cui collegare un pulsante in debounce per controllare il dimmer,e altri tre per collegare un transceiver 485 per rematori il controllo in Modbus,visto che questo modulo farà parte del mio sistema domotico su bus 485.
Ok,finiti i preliminari passiamo alle domande:
vorrei gestire tutta la parte relativa al dimmer tramite interrupt,di conseguenza il circuito di zero cross sarà collegato al pin PB2 che può generare l’interrupt INT0.
Il primo dubbio che mi viene è se la funzione attachInterrupt dell’IDE di Arduino è compatibile con il core Tiny…ho fatto un test di compilazione e,in effetti,per compilare compila senza errori,ma non ho testato in realtà se poi il codice generato funziona…per ovviare al problema,nel caso lo fosse,ho scritto una porzione di codice per abilitare l’INT0,che non ho ancora testato e volevo sottoporre al vostro giudizio:
#include <Interrupt.h>
void setup(void)
{
cli();
pinMode(foto_IN,INPUT_PULLUP);
sbi(MCUCR,ISC01);
sbi(MCUCR,ISC00);
sbi(GIMSK,INT0);
sei();
}
void loop(void)
{
//
}
ISR(INT0_vect)
{
//codice di rilevamento zero cross
}
l’ho scritto prendendo come riferimento il datasheet del tiny84,ma non sono sicuro di aver messo tutto il necessario…
OK,questo era il primo quesito…se questo funziona,dovrei poi utilizzare il Timer1 per generare il ritardo una volta rilevato il passaggio a zero della sinusoide per innescare il Triac,ritardo che ovviamente deve essere configurabile per avere diversi valori di dimming…e scrivere questa routine per il Timer la vedo dura per me!!!..grazie in anticipo