Ho progettato avviatori statici utilizzando i processori PIC16C74A / F77. Lo zero crossing può essere complicato se devi lavorare anche in ambienti rumorosi.
Se non è necessario che il processore sia isolato dalla linea, non c'è nulla di sbagliato nel fatto che un paio di resistori di alto valore alimentano un pin della CPU. Vorrei usare un paio di diodi shottky per aumentare i diodi di protezione interna solo per una questione di robustezza, ma funzionerà bene. Se è necessario l'isolamento, utilizzare un optoisolatore di uscita a transistor. Prestare attenzione alla velocità di commutazione dell'opto e ridurre al minimo la corrente del collettore a transistor per massimizzare la velocità di commutazione.
Detto questo, passiamo al rumore. Se stai controllando in fase qualsiasi cosa diversa dal riscaldamento resistivo, avrai a che fare con il rumore, il che significa che è molto probabile che avrai a che fare con zero-crossing noise. Non fare l'errore da principiante di alimentare l'ingresso zero crossing a un pin di interrupt; questo trasformerà il tuo software in una massa fumosa di cattiveria quando il processore cerca di gestire interruzioni di gas. (Parlo per esperienza.) Lanciare un filtro passa-basso o più avanzato sulla linea introdurrà solo lo sfasamento. Se ci riesci, fantastico. Altrimenti (ho dovuto fare i conti con i sistemi 50/60 e 400Hz), allora devi provare altri mezzi.
Nel mio progetto, mi sono occupato del software eseguendo il polling della linea e essenzialmente facendo una procedura di voto che ignorava i transitori. Lo sfasamento rientrava in ciò che potevo gestire, era veloce e non si sarebbe schiantato nemmeno con un forte rumore. (Testato in una struttura in cui hanno rimosso i tappi del filtro da una fornace a induzione, non avevo mai visto una linea così rumorosa prima!) Se dovessi riprogettarla penso che potrei provare una soluzione esterna che implichi un colpo solo che " agganciare "la croce zero e quindi il microcontrollore lo riconoscerebbe prima che potesse essere impostato l'interruzione successiva.
Detto ciò, penso che trovare in modo affidabile il passaggio per lo zero reale in qualsiasi situazione pratica sia stato uno dei pezzi più complicati del design del soft starter. Chiudere il circuito di controllo era secondario, ma era principalmente solo sintonizzazione. Sembra una cosa semplicissima da fare ma ho imparato parecchio sulla differenza tra teoria e pratica durante quel periodo. :-)
modifica per descrivere la routine di "voto":
Se ricordo bene, avevo una linea I / O che era alta quando la linea era sopra lo zero e bassa quando la linea era sotto lo zero. La routine di voto ha semplicemente eseguito il polling di quella linea e se 2 degli ultimi 3 campioni erano uguali, ho accettato il fatto che la linea avesse attraversato lo zero. È molto simile al circuito di voto di UART per rilevare il segno e lo spazio. Il vantaggio di un circuito come questo è che il tuo sfasamento è fisso (frequenza di campionamento 2 *) e puoi sintonizzarlo per il tipo di rumore che stai vivendo. Non ricordo di persona quanto velocemente fosse il polling, ma se dovessi mettere a rischio un'ipotesi direi 8kHz, dato che quel numero sporge nella mia mente.