Go Down

Topic: Problema di affidabilità (Read 2280 times) previous topic - next topic

foglia

Io uso un Arduino UNO per gestire un acquario e in particolare lo uso a monitorare la temperatura (Onowire), la corrente assorbita (sensore analogico) e a pilotare dei relè per accendere e spengere ventole, luci , ecc....
I dati li leggo su un display 20x4 con I2C.
Ho notato però che alcune volte che manca la corrente, alla riaccensione a volte "si pianta" e non riesce ad eseguire correttamente lo strach.
Avete qualche suggerimento su cosa verificare o qualche alternativa (tipo auto reset) ?
Grazie
Mauro

uwefed

Sí ho un suggerimento:
Dacci lo schema del circuito e il sketch.
Ciao Uwe

foglia

ecco il codice, purtoppo non ho uno schema da postare

leo72

Intanto potresti dire ad esempio dove si pianta, esattamente.
Usi la seriale per il debug, ma il PC ha un gruppo di continuità o si spenge anch'esso se va via l'elettricità di casa?

foglia

è alimentato con un'alimentatore stabilizzato a 12 v , l'alimentazione 5V dell'LCD la prende direttamente da Arduino mentre i relè sono pilotati con un BC 317 e sono a 12v. Si pianta già nel loader e non logga nulla . Si verifica quasi sistematicamente quanto ritorna la corrente e si "risolve" facendo un reser con il tastino.
L'unica cosa che mi vene in mente è che ci possa essere una relazione con il fatto che uso uno secondo alimentatore a 48v per alimentare dei led attraverso dei driver PWM e per poterli gestire i due alimentatori hanno le masse in comune. La cosa strana ivece è che questo problema ha iniziato a manifestarsi solo quando ho aggiunto l'LDC. Ho un secondo arduino (mega) con lo stesso SW ma senza LCD e il problema non lo da

uwefed

Avevo problemi con la partenza di un Arduino NANO quando ho messo dei condensatori aggiuntivi da 470/1000µF sui 5V.
Come soluzione potresti prendere uno stabilizzatore da 5V e alimentare tramite quello il display.
Ciao Uwe

leo72

Cosa intendi per "loader" nel tuo programma? Il setup?
Hai provato a fare un pò di debug via seriale simulando l'assenza di alimentazione, ossia scollegando e ricollegando l'alimentatore dell'Arduino, per vedere cosa succede?
Potresti mettere un pò di Serial.print in vari punti del setup per capire dov'è che si pianta.

foglia

di preciso non so dove si pianta, sul display non appare nulla, i vari print nel loop non loggano nulla. Provo a mettere un po di print su setup ..... :-(

foglia

uwefed, scusa non ho capito se hai risolto il problema mettendo i condensatori o se sono stati la causa del problema

uwefed

Il condensatore era la causa del problema. Lasciandolo via partiva bene.
Probabilmente se la tensione si alza troppo lentamente il circuito di reset di accensione non funziona in modo affidabile percui non lo resettava.
Ciao Uwe

leo72


Provo a mettere un po di print su setup ..... :-(


E' lì che dicevo

m_ri

non so se ti può essere utile,ma diverse librerie per lcd tendono ad aspettare la risposta prima di inviare comandi,x evitare di intasare l'LCD di comandi..e possono piantarsi se l'arduino nn riceve risposte(es:arriva la corrente,l'arduino si accende,manda comandi allo schermo LCD che si sta accendendo,LCD nn manda indietro ack e tutto si pianta)..nn so se è il tuo caso

Michele Menniti

Non è da trascurare il picco di assorbimento dell'LCD, soprattutto della retroilluminazione; naturalmente ha ragione Uwe nel chiedere uno schema ma visto che non è disponibile, bisogna andare per tentativi. Quindi prova almeno a togliere la retroilluminazione e vedi cosa succede quando c'è un black-out
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

m_ri

sì,può anche essere..
se vuoi un autoreset, basta che cerchi in giro watchdog..
oppure,una soluzione macchinosa:nel setup,leggi la tensione di alimentazione(collegandola ai pin analogici attraverso un partitore di tensione)..se è sotto una certa soglia,aspetti qlk secondo e poi continui(o resetti l'arduino giocando nuovamente col watchdog)

veseo

Imposta il watchdog ad 8 secondi, se effettivamente il codice entra in un loop infinito, questo risolverà il problema.

Saluti,
Dario.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Go Up