Ciao a tutti,
mi sono appena inscritto al forum, per chiedere aiuto per un progetto che sto facendo.
sto restaurando un vecchio orologio con un motore dc da 40 V.
Per far funzionare l'orologio, occorre invertire la polarità del motore ogni minuto, in modo da far muovere le lancette.
per far ciò utilizzo un Arduino uno, un RTC (ds1307) ed un relè dc con due contatti. Inoltre sono presenti un interruttore per fermare l'orologio ed un pulsante per mandarlo avanti.
Tutto funziona correttamente, tranne per il fatto che dopo qualche ora l'Arduino si blocca, e non riesco a capirne il motivo.
c'è qualcuno che mi sa aiutare ?
Per facilitare la comprensione allego lo schema elettrico e lo sketch.
Grazie,
Probabilmente colpa dei disturbi provocati dal relè ...
Intanto NON mi piace come lo piloti, NON vedo un diodo per proteggere il mosfet dalle extracorrenti provocate dalla bobina del relè e anche il mosfet non mi piace come è connesso (manca una resistenza in serie da un 100Ω sul gate verso Arduino ed una da un 22KΩ, sempre sul gate verso massa).
Poi, se fai un po' di ricerche qui sul forum (visto che dell'argomento se ne è parlato centinaia di volte), scoprirai che noi consigliamo sempre di SEPARARE le alimentazioni ... ovvero usare relè optoisolati con l'alimentazione di Arduino separata dall'alimentazione del relè ... proprio per evitare il ritorno di disturbi elettromagnetici.
Ma sei sicuro che devi alimentare di continuo il motore? non basta dargli un impulso breve a polaritá alternata ogni minuto?
Ma il pulsante S2 non ha una resistenza Pullup?
È sbagliato usare un interrupt per leggere un pulsante. Il pulsante non produce un passaggio pulito tra i 2 stati ma un treno di impulsi. Questo effetto deve essere sanato (vedi debounce).
È vietatissimo mettere una ciclo bloccante in una routine di interrupt.