salve a tutti
ho creato un progetto di domotica tramite iot di arduino,
ho come scheda un mkr1010 collegata tramite un multiplexer 16ch ad appunto 16 rele da 10 ampere, messi in parallelo ai pulsanti di casa che comandano i relè della finder di potenza,
in pratica manovro il tutto tramite implusi di 30millisecondi sia da arduino e da casa manualmente, ogni lampada è collegata a un sensore di carico di ritorno in input all'arduino dove a sua volta mi aggiorna il cloud sullo stato delle luci in tempo reale.
MA....
il problema si pone che se va via la corrente e ritorna prima che l'arduino entri nel loop, mi accende tutti i relè anche se io ho settato tutto basso ogni pin.
di per sè non è un grosso problema, xchè in futuro vorrei aggingere x casa dei sensori di rivelamento presenza a micronde, in modo che se accidentalmente rimane accesa una luce me la spegne.
Ma siccome questo problema mi si presenta ad ogni avvio di qualsiasi arduino, cioè che per 1 secondo mi manda alti tutti i pin, c'è un modo x evitarlo??
ciao!
lo prendo dal normalmente aperto,
in pratica simula il lavoro del pulsante di casa, per chiude il circuito x un breve lasso di tempo, permettendo al rele finder di scattare per chiudere il circuito della lampada.
il normalmente chiuso terrebbe in tesione la bobina del finder con il rischio di bruciarsi.
in questi giorni sto riscontrando altre noie, per far capire ad arduino che una lampada rimane accesa ho montato sul ritorno del rele finder un sensore "zmpt101b", mi sta facendo impazzire, uso una libreria la "EmonLibrary examples openenergymonitor.org", io uso un ingresso analogico, funziona bene ... x un po dopodichè crolla secondo lui la tensione va giu, ma non è cosi, credo dipenda dalla libreria forse, sto provando diversi metodi.
per completare i problemi ci si mette anche l'mkr1010 che a random si resetta tra le 6 ~ 10 ore di funzionamento, rinizzalizzando il tutto legge di botta il loop e dove trova una digitalWrite alta sul relè , lo fa scattare accendendo cosi le luci.
di per se non è un problema anche se fastidioso si dovrebbe correggere quando interroga il cloud trovando le variabili a 0 , certo! ma con i zmpt che collassano è impossibile far funzionare delle logiche!
sicuramente sarà dovuto da disturbi sui pin ma non ci posso fare niente, non sono un elettronico, fino a un cero punto ci capisco, ma se si tratta di utilizzare oscilloscopi , induttanze, correnti spurie mi incasino.
E un hobby il mio lo faccio a tempo perso, ma essendo cocciuto ci penso e ci ripenso, ma stavolta ho bisogno di un confronto con qualcun altro.
ciao grazie
Ho un progetto simile a casa, senza il controllo della corrente assorbita (mi sono limitato ad una resistenza fotoelettrica ) e inizialmente avevo usato il contatto NC e la logica del relè inversa (incasinato lo so, ma non sapevo come funzionavano i relè)....
Comunque...
La libreria è quella che ti permette di mandare i dati al cloud giusto? Le letture a zero dei sensori li vedi sul cloud o direttamente dall'analogica?
Per il riavvio randomico dell'arduino sembrerebbe un problema di alimentazione... Se non ricordo male si mette un condensatore tra il pin di reset e il GND, ma controlla bene perchè non sono sicuro!!!
Ultima osservazione: perchè non metti la lettura dei dati nel cloud direttamente nel SETUP?
In questo modo entri nel loop con la condizione della variabili già in ordine
L'idea della resistenza fotoelettrica è una bella idea, sicuramente è piu agevole gestirla,
io la volevo usare per dimmerare le luci di casa in base alla luce solare per uniformare i punti bui di casa.
Comunque cio lavorato fino adesso, e sono le 4:30 ma ne sono venuto a capo.
ho risolto tutto ma è stata molto dura.
in pratica ho :
1 - cambiato arduino e ho messo un nano iot 33 , non si resetta piu.
2 - ho analizzato il comportamento dello zmpt101b, (il bastardo all'avvio partiva alto e mi faceva sbroccare la logica nel loop, ho capito che impiega almeno 10 secondi per azzerasi o quasi).
Quindi ora i relè arduinici non leggono piu logiche forbianti e restano inermi.
3 - cambiando le logiche di stato iniziali, ho dovuto cambiare tutto l'algoritmo nel loop.
(ho risolto con 2 IF a 3 condizioni ciascuna dove si dove si considera lo stato iniziale dopo il 1°avvio , il tempo di attesa di scarico dei sensori, e i comandi provenienti dal cloud.)
ho aggiunto infine altre 2 IF molto semplici che mi riaggiornano il cloud dopo aver manovrato il pulsante classico da muratura, senza creare ritondanze.
per effettuare aggiornamenti bisogna aspettare che arduino si connetta in wifi e al cloud
e non è una cosa immediata...
la libreria dei sensori di ritorno lampada è
#include "EmonLib.h"
non lho voluta approfondire mi sono limitato ad usare il valore Irms della tensione rivelata,
all'inizio pensavo bastasse una solo una lettura analogica, ma non si notavano differenze sostanziali fra acceso e spento.
devo solo corregere alcune latenze di comunicazione con il cloud e poi ho finito, sicuramente con il tempo affinero il codice .
Grazie per avermi consigliato approfondiro questi reset dell mkr1010,
ciao!