Arduino Uno si riavvia da solo

Egregi,
vi ringrazio per tutti i contributi costruttivi utili alla risoluzione del seguente problema:

la scheda di ARDUINO UNO si riavvia da sola.
la configurazione Hardware è la seguente:

ai pin dal 2 al 7 (compresi) sono pilotati direttamente 1 led per ogni pin (6 led)
da questo deduco --> la corrente assorbita da un led dovrebbe essere circa 15 mA, totale =15*6 = 90 mA.

sul pin 10 è invece pilotato un tranistor BJT. esso pilota una striscia di led e sul collettore del transitor scorrono 0,6 ampere.

in totale quindi, dovrei avere un cosumo totale di 100 mA da parte dell'ATmega328. Questo mi porterebbe ad escludere che il problema del riavvio possa essere dovuto ad un'eccessiva erogazione di corrente, che ne pensate?

ai pin 12 e 13 invece sono collegati 2 tasti (uno per ogni pin) che servono da ingresso (switchano lo stato dei led e della striscia di led).
per evitare corto circuiti questi ultimi sono dichiarati come INPUT_PULLUP senza resistenza di PULL_UP appunto.

Unica nota SOFTWARE degna di nota:
ho 2 variabili dichiarate globalmente impostate a TRUE (quando sono vere i led e la striscia di led sono accesi) perchè ho bisogno che appena inizia il void loop (appena accendo arduino) di default i led e la striscia di led siano ACCESI.
queste 2 variabili però cambiano stato in base alla pressione dei tasti normalmente aperti poco fa citati (ho tolto il problema delle alee meccaniche con un delay di 250 ms dopo il digitalRead sul pulsante).
vi chiedo quindi: una volta entrato nel void loop il processore non tenta mai più di riportare le variabili allo stato globale (true) andando in conflitto con la lettura dei tasti N/O? è corretto come ho fatto io di dichiararle globalmente? se le avessi dichiarate = true nel void loop avrei avuto il problema che ad ogni ciclo di void loop le due variabili sarebbero tornate true causando l'errata accensione dei led e della striscia di led.

ultima considerazione: sulla base del transistor che pilota la striscia di led ho messo una resistenza da 1MOhm, potrebbe essere troppo elevata e quindi la corrente sulla base non manda in saturazione il transitor?
il transitor lo piloto con un analogWrite per usufruire della PWM con conseguente regolazione della luminosità sulla striscia di led.

vi ringrazio molto!

Si riavvia da sola ogni quanto ? E' regolare o con tempi a caso ?

Inoltre utile uno schema dei collegamenti e lo sketch.

Concordo con quanto espresso da nid69ita ma nel frattempo mi è balzata all'occhio questa tua frase

adm91:
ai pin dal 2 al 7 (compresi) sono pilotati direttamente 1 led per ogni pin (6 led)
da questo deduco --> la corrente assorbita da un led dovrebbe essere circa 15 mA, totale =15*6 = 90 mA.

D'accordo i calcoli ma quel "pilotati direttamente" mi fa pensare, hai messo le resistenze o davvero piloti direttamente i led?

nid69ita:
Si riavvia da sola ogni quanto ? E' regolare o con tempi a caso ?

Inoltre utile uno schema dei collegamenti e lo sketch.

si riavvia ogni 15 - 20 secondi circa,
appena posso posto lo sketch, grazie

fabpolli:
Concordo con quanto espresso da nid69ita ma nel frattempo mi è balzata all'occhio questa tua fraseD'accordo i calcoli ma quel "pilotati direttamente" mi fa pensare, hai messo le resistenze o davvero piloti direttamente i led?

si cerrto, ho messo resistenze da 240 ohm,
per pilotati direttamente intendo alimentati direttamente dai pin di Arduino

QUANTI led comunque piloti con Arduno? Che assorbimenti hai sia per singolo pin che complessivamente che sulla linea +5V?

Perché se si resetta, escludendo errori di programmazione, o disturbi eletromagetici (in caso di carichi induttivi), è perché si assorbe troppo, la tensione scende e interviene il BOD (Brown-Out Detector).

Guglielmo

gpb01:
QUANTI led comunque piloti con Arduno? Che assorbimenti hai sia per singolo pin che complessivamente che sulla linea +5V?

Perché se si resetta, escludendo errori di programmazione, o disturbi eletromagetici (in caso di carichi induttivi), è perché si assorbe troppo, la tensione scende e interviene il BOD (Brown-Out Detector).

Guglielmo

Caro Guglielmo, intanto grazie della risposta, avevi ragione,
Il riavvio era dovuto ad un eccessivo assorbimento di corrente. Ieri sera tester alla mano ho constatato che 6 led mi consumavano 0,3 ampere 300 mA.
Ho staccato i led che ahimé erano già saldati alla scheda e tutto rifunziona.

Detto questo vorrei utilizzare un ULN2003 per i miei 6 led.
A questo punto chiedo: come funziona esattamente quel circuito integrato?
Ha bisogno di una resistenza su ogni ingresso dei pin di ingresso per regolare la corrente sulla base dei transistor?
Credi che sia la scelta giusta quel circuito integrato?

il ULN2003 lo colleghi direttamente lato Arduino mentre, ovviamente, in uscita, in serie ad ogni LED metti la sua resistenza.

L'alimentazione dei LED la devi fornire direttamente e NON prelevarla dal pin 5V di Arduno, altrimenti hai sempre il problema dell'assorbimento. :wink:

Guglielmo

gpb01:
il ULN2003 lo colleghi direttamente lato Arduino mentre, ovviamente, in uscita, in serie ad ogni LED metti la sua resistenza.

L'alimentazione dei LED la devi fornire direttamente e NON prelevarla dal pin 5V di Arduno, altrimenti hai sempre il problema dell'assorbimento. :wink:

Guglielmo

Ok grazie ma all ingresso di ogni pin dell ULN serve la resistenza? Per la corrente sulla base del transistor.
Grazie ancora e buona Domenica

ma all ingresso di ogni pin dell ULN serve la resistenza?

No, la resistenza va messa tra l'uscita e il Led, oppure tra il positivo e l'anodo del led e il catodo direttamente sull'uscita

adm91:
Ok grazie ma all ingresso di ogni pin dell ULN serve la resistenza?

... scusa, ma io cosa ho scritto qui: :o :o :o

gpb01:
il ULN2003 lo colleghi direttamente lato Arduino mentre, ovviamente, in uscita, in serie ad ogni LED metti la sua resistenza.

Guglielmo

adm91:
ma all ingresso di ogni pin dell ULN...

Si prende il datasheet (google: uln2003 pdf → secondo risultato) e a pagina 2 si vede lo schema delle porte dove risulta già presente una resistenza da 2.7k sulla base dei transistor interni.


* * Post 1000 :grin: * *

Claudio_FF:
* * Post 1000 :grin: * *

Guglielmo

gpb01:
... scusa, ma io cosa ho scritto qui: :o :o :o
Guglielmo

si ok Guglielmo ma intentevo quella per i transistor, ho letto quello che ha scritto Claudio.. chiarissimo , grazie!

Claudio_FF:
Si prende il datasheet (google: uln2003 pdf → secondo risultato) e a pagina 2 si vede lo schema delle porte dove risulta già presente una resistenza da 2.7k sulla base dei transistor interni.


* * Post 1000 :grin: * *

ottimo era quello che cercavo,
scusate devo prendere il via a leggermi i datasheet!

grazie mille a tutti!!