Salve a tutti,
vorrei capire se esiste un modo per poter controllare attraverso un pin, che arduino è "vivo".
Mi spiego meglio:
nella mia centralina di irrigazione che usa un arduino micro ho notato che se per qualsiasi motivo arduino non funziona (ho simulato la cosa semplicemente togliendo a lui corrente) le elettrovalvole rimangono aperte (se lo erano nel momento della "morte" della mcu).
Le elettrovalvole sono comandate da relè bistabili (potete vedere altro mio topic per la descrizione dettagliata) che a loro volta sono comandati da due L293D. Uso uno dei pin di arduino per attivare/disattivare i ponti H, lo avevo fatto credendo che potesse risolvere il problema; infatti quando arduino va down per qualsiasi motivo il pin va in LOW ed il ponteH si disabilita. La disabilitazione credevo implicasse un qualche reset da poter usare , in verità non fa nulla se non impedire di mandare altri comandi.
La mia richiesta quindi è capire se esiste a vostro avviso un metodo per poter "simulare" i quattro impulsi del reset dei relè usando sempre i ponti H. NB: non sto parlando di mancanza di corrente , in quel caso manca corrente anche alle valvole quindi il problema si risolve a monte, parlo dell'impossibilità di usare per qualche motivo arduino (blocco, rottura etc etc), ma il resto del circuito lavora.
ok grazie .. effettivamente al 555 ci avevo pensato , ma preferisco vedere come hanno risolto altri.
Però pensavo ... ma un semplice transistor pnp???
NOn risolverebbe il problema?
In verità quando la base va in LOW fa passare il positivo , quindi lo collegherei ai 4 pin del ponte H che mi determinano il reset .... e si dovrebbero resettare tutti i relè. o NO??
al limite potrei addirittura collegarli ai pin dei relè direttamente
Supponiamo che ci sia un blackout anche lungo: le valvole potrebbero rimanere aperte con il rischio di allagamento.
Ti conviene pensare ad un sistema di batterie in tampone.
Oltre a garantire il funzionamento per un certo tempo, potresti costringere Arduino a chiudere le valvole quando la batteria scende al di sotto di un certo livello.
La presenza di un watchdog, invece, ti consentirebbe di verificare il funzionamento di Arduino e resettarlo se viene superato il tempo prefissato.
Naturalmente, questo non ti garantisce nulla se Arduino si guasta a livello hardware, ma con un hardware aggiuntivo (NE555) potresti far chiudere tutte le valvole se Arduino va in fault.
mi interessa effettivamente il fatto di poter chiudere le valvole se si guasta arduino, più che se manca corrente.
Ho trovato questo topic interessante http://forum.arduino.cc/index.php?topic=211612.30
ma non capisco se con il circuito semplificato spiegato da menniti , la batteria comincia a dare corrente SOLO se manca l'alimentazione.
In ogni caso anche con unabatteria tampone,se arduino si rompe non sono "coperto".
Supponiamo che inserisco la batteria tampone, ma assieme a lei anche un pnp che chiude le valvole al LOW di un pin , nel caso arduino muore allora il pin va a low , il pnp commuta sui pin del reset il + e tutte dovrebbe funzionare. Almeno sulla carta!
Se invece manca alimentazione la batteria alimenta tutto e tutto funziona regolarmente (sino alla scarica della batteria).
Le mie domande allora sono queste:
nel primo caso. Arduino morto e pnp che chiude le valvole. Il pin sarà sempre in LOW , quindi il pnp alimenterà le bobine dei relè ad oltranza giusto (scaricando la batteria)? Come faccio a mandare solo un impulso per la chiusura (sarebbe meglio anche due) se in entrata ho uno stato low perenne?
con arduino ancora in vita ed alimentato dalla batteria, come faccio a capire quando la batteria sta morendo? (e quindi mandare il comando per chiudere tutto)
un bistabile, per commutare ha bisogno di un + e di un -
Tralasciando questo PNP benedetto ( che funziona al contrario di quello che dici ) e supponendo che tu riesca ad Arduino bloccato ( o morto ) a dare il positivo, chi glielo da' il negativo sull'altro pin del bistabile ?
Stai usando dei L293 per pilotare i rele, ma dopo che hai commutato in che stato li metti ?
Comunque, il tuo problema e' che ti si blocca, quindi la cosa migliore sarebbe individuare le cause e sistemare quelle, oppure come ti hanno suggerito , usare il watchdog, che in caso di bloccaggio ti resetta Arduino.
Brunello:
un bistabile, per commutare ha bisogno di un + e di un -
Tralasciando questo PNP benedetto ( che funziona al contrario di quello che dici ) e supponendo che tu riesca ad Arduino bloccato ( o morto ) a dare il positivo, chi glielo da' il negativo sull'altro pin del bistabile ?
Stai usando dei L293 per pilotare i rele, ma dopo che hai commutato in che stato li metti ?
Comunque, il tuo problema e' che ti si blocca, quindi la cosa migliore sarebbe individuare le cause e sistemare quelle, oppure come ti hanno suggerito , usare il watchdog, che in caso di bloccaggio ti resetta Arduino.
"l'oggetto" (ditemi voi cosa serve se il pnp non può funzionare) che deve resettare i relè, prende l'alimentazione dalla batteria tampone, che fornisce anche il gnd, quindi il ponte h ha tutto per resettare i relè. il mio problema è non allagare il giardino . Se per qualche motivo l'arduino muore (e purtroppo da quello che ho potuto vedere a volte accade), vorrei un sistema "esterno" ed indipendente che faccia la semplice cosa di chiudere le valvole se sono aperte , evitandomi 3000 euro di acqua e la piscina di fango per i cani.
Scusate la mia ignoranza in elettronica , (dichiarata nel mio post di presentazione) , vi sarei grato se poteste indicarmi una via percorribile.... poi cerco di cavarmela.
Grazie
Mi pare di capire che il problema sia che con i bistabili non sei in grado di capire se sono accesi o spenti. Altrimenti, con dei monostabili bastava fare sì che il watchdog resettasse Arduino per tornare nella condizione stabile e avere i relé spenti.
Comunque sono del parere che piuttosto che cercare di spegnere le valvole quando si blocca Arduino dovresti capire perché si blocca ed evitare che succeda, perché non è certo una condizione normale...
SukkoPera:
Mi pare di capire che il problema sia che con i bistabili non sei in grado di capire se sono accesi o spenti. Altrimenti, con dei monostabili bastava fare sì che il watchdog resettasse Arduino per tornare nella condizione stabile e avere i relé spenti.
Comunque sono del parere che piuttosto che cercare di spegnere le valvole quando si blocca Arduino dovresti capire perché si blocca ed evitare che succeda, perché non è certo una condizione normale...
Mi devo essere spiegato male ...
a me non si è mai bloccato arduino. E' un mesetto che lo sto provando nella serra e va da dio! Mi sto solo preoccupando di un eventuale blocco hardware di questa scheda, poichè ieri provando un prototipo collegato ad una elettrovalvola simile a quelle che uso, staccando l'alimentazione all'arduino, la valvola continuava a macinare. E' logico essendo bistabile ... ma non ci avevo pensato.
Non mi interessa sapere se sono aperte o chiuse ... io mando l'impulso sui pin del ponte H che le chiude, se sono aperte si chiudono , se sono già chiuse ... non succede nulla.
ma il setup() è su arduino?
quale watchdog... ne ho trovati di molti tipi con 555, tinyxx etc.
Tutto quello che ho trovato ha come obiettivo il reset della scheda o il lancio di un comando .... ma da arduino.
Io sto dando per scontato che arduino non c'è!
OK, allora non avevo capito. Io assumevo che volessi rimediare a un blocco software di Arduino, in cui basta resettarlo (con il watchdog integrato) e riprende il suo lavoro da capo. Nel caso di morte totale di Arduino ovviamente questa soluzione non serve a niente, ma io personalmente non saprei cosa suggerirti.
info_mare vuole un qualche cosa che chiuda il tutto se Arduino "muore" (... e con lui anche il suo watchdog), e quindi un'elettronica esterna che, non ricevendo più un segnale periodico da Arduino, lo consideri morto e chiuda il tutto.
gpb01:
info_mare vuole un qualche cosa che chiuda il tutto se Arduino "muore" (... e con lui anche il suo watchdog), e quindi un'elettronica esterna che, non ricevendo più un segnale periodico da Arduino, lo consideri morto e chiuda il tutto.
SukkoPera:
... ma io personalmente non saprei cosa suggerirti.
Semplicemente nel ciclo di loop() (che non dovrà mai interrompersi o fermarsi), l'invio di un impulso (LOW - HIGH - LOW) su un pin digitale, impulso che resetterà un watchdog esterno (NE555 ?) il quale, se NON resettato ... chiude tutte le valvole.
Guglielmo
P.S.: in questo caso il termine "watchdog" indica un ... volgare timer ... o lo resetti periodicamente o quello scatta e chiude le valvole
è il termine watchdog che effettivamente mi confondeva. In questo caso ora ho capito e non è molto diverso da come lo avevo pensato inizialmente. La mia idea iniziale era collegare un transistor ad un pin che tengo sempre HIGH, nel momento in cui arduino muore, il pin va il LOW ed il transistor chiude tutto. In questo caso avevo il problema degli impulsi, ma probabilmente con il 555 riesco a risolvere.
Mi serviva una piccola conferma se l'indirizzo che stavo prendendo era logico o rischiavo di perdere tempo su una cosa inutile.
grazie
La soluzione che ti ho indicato, specie se la disaccoppi con un condensatore, è molto più affidabile perché, se Arduino dovesse veramente "morire" ... non sai se il pin che usi per la segnalazione rimane LOW o HIGH (... non è possibile sapere quale livello assumerà), mentre un impulso ... è difficile che continui a generalo
gpb01:
La soluzione che ti ho indicato, specie se la disaccoppi con un condensatore, è molto più affidabile perché, se Arduino dovesse veramente "morire" ... non sai se il pin che usi per la segnalazione rimane LOW o HIGH (... non è possibile sapere quale livello assumerà), mentre un impulso ... è difficile che continui a generalo
Guglielmo
si effettivamente è vero ... mi è un poco ostico come gestire il 555 con l'impulso. Ma comincio a studiare questa soluzione
Grazie
Mirko
... dai un'occhiata a QUESTA pagina, ci sono un'infinità di esempi, tra cui un timer, oppure cerca con Google "NE555 timer circuits" e ne trovi quanti ne vuoi
Considera che il tuo segnale può essere l'impulso di reset che fa partire il timer dall'inizio ...
... se non arriva il timer scatta