Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Protezione ingressi ADC Atmega328

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[1] Protezione ingressi ADC Atmega328

Messaggioda Foto Utentelucaking » 26 nov 2025, 1:15

Ciao a tutti,
premetto che stavo usando gli ingressi analogici di un arduino uno per monitorare la corrente sui rami del mio piccolo carico elettronico autocostruito, e mentre provavo a "tirargli un po' il collo" si è bruciato un mosfet.
Ho staccato subito tutto e, ad una prima analisi sembrano essere saltati solo un IRFP250 e un resistore da 0.02 ohm.
Anche Arduino sembra a posto, ma grazie all' incidente, mi sono posto il problema.
Per semplicità, qui sotto disegno solo lo schema di un ramo del carico:

In teoria, al massimo della regolazione del potenziometro dovrebbero scorrere nel mosfet una decina di ampere, e Q1 dovrebbe intervenire se per qualche motivo scorressero piu di 30 A in Rshu e di conseguenza anche nel mosfet.
Però, se qualcosa di brutto dovesse accadere, sul pin analogico dell' Atmega potrei trovare delle tensioni prossime a quella dell' alimentatore o della batteria sotto test, e quindi ben superiori a quelle tollerate da dal micro di Arduino.
E qui arriva la prima domanda: se ho ben capito, l' Atmega328 tollera una tensione massima in igresso sui pin di 0.5 V maggiore della tensione di alimentazione, quindi nel mio caso 5.5 V. (5 + 0.5), questo è vero anche se uso il riferimento interno per l' ADC di 1,1 V?
Cosa succede, oltre ad "andare a fondo scala" e leggere sempre 1023, quando con 10 A circolanti sul pin dell' ADC arrivano 1,2 V?
Ha senso prevedere una protezione su suddetti pin, se si, di quale tipo?
Ho letto diverse scuole di pensiero e diversi pareri sui difetti/ inutilità della classica protezione con diodo zener da 5.1 V.
In altri scritti si suggeriva una soluzione con due diodi schottky, inversamente polarizzati, collegati uno tra pin e riferimento e l' altro tra il pin e positivo dell' alimentizone.
In definitiva, come al solito sono piu confuso che prima. #-o
Avatar utente
Foto Utentelucaking
1.651 4 5 8
Expert
Expert
 
Messaggi: 1445
Iscritto il: 29 mag 2015, 14:28

1
voti

[2] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto UtenteMarcoD » 26 nov 2025, 9:42

E qui arriva la prima domanda: se ho ben capito, l' Atmega328 tollera una tensione massima in igresso sui pin di 0.5 V maggiore della tensione di alimentazione, quindi nel mio caso 5.5 V. (5 + 0.5), questo è vero anche se uso il riferimento interno per l' ADC di 1,1 V?
Cosa succede, oltre ad "andare a fondo scala" e leggere sempre 1023, quando con 10 A circolanti sul pin dell' ADC arrivano 1,2 V?
Ha senso prevedere una protezione su suddetti pin, se si, di quale tipo?

Le domande sono corrette.
Rispondo, ma chiedo conferma da altri partecipanti.
Per quanto ne so, la protezione dell' ingresso analogico interna all'ATMEL dovrebbe consistere in due diodi connessi internamente al +5V e al GND, I diodi dovrebbero sopportare una corrente massima di almeno 10 mA.
Tale protezione dovrebbe essere la stessa per il fondo scala di 5 V e di 1,1 V.

Se la tensione massima nel circuito in prova è +12 V metterei una resistenza in serie all'ingresso analogico di valore:
(12 V - 5 V)/ 10 mA = circa 700 ohm.
Tale valore è molto più basso del valore di 10 Mohm ( o qualche uA) che dovrebbe essere la resistenza di ingresso del canale analogico e quindi non dovrebbe introdurre una caduta significativa nella misura di tensione.
Avatar utente
Foto UtenteMarcoD
12,2k 5 9 13
Master EY
Master EY
 
Messaggi: 6696
Iscritto il: 9 lug 2015, 16:58
Località: Torino

1
voti

[3] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto Utentegvee » 26 nov 2025, 10:44

lucaking ha scritto:E qui arriva la prima domanda: se ho ben capito, l' Atmega328 tollera una tensione massima in igresso sui pin di 0.5 V maggiore della tensione di alimentazione, quindi nel mio caso 5.5 V. (5 + 0.5), questo è vero anche se uso il riferimento interno per l' ADC di 1,1 V?

La risposta te la da il datasheet: https://ww1.microchip.com/downloads/en/ ... asheet.pdf, pag. 265 sezione 28.9 ADC Characteristics.

Input voltage Max = Vref. Vref Max = AVcc = Vcc + 0.3.

Questo dovrebbe rispondere alla tua seconda domanda.
lucaking ha scritto:Cosa succede, oltre ad "andare a fondo scala" e leggere sempre 1023, quando con 10 A circolanti sul pin dell' ADC arrivano 1,2 V?
Ha senso prevedere una protezione su suddetti pin, se si, di quale tipo?


Nel tuo schema hai messo due terminali (+ e -) su DUT. Ma sembra incompleto perché non hai messo i valori.
Avatar utente
Foto Utentegvee
1.470 5 7
Sostenitore
Sostenitore
 
Messaggi: 525
Iscritto il: 11 feb 2018, 20:34

2
voti

[4] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto UtentePietroBaima » 26 nov 2025, 11:54

Un modo efficace di proteggere gli ingressi dell'ADC senza alzare troppo la Z di ingresso (che deve essere contenuta a meno di un errore di partizione in ingresso di 1LSB, per fare le cose bene) è quello di mettere un inseguitore di tensione con due resistenze in serie ai pin invertente e non e uno schottky che realizza un clipper a 5V sul morsetto non invertente. Meglio se si usa un OPAMP con ingressi a FET.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[5] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto Utentelucaking » 26 nov 2025, 12:12

Prima di tutto, grazie per le risposte.

gvee ha scritto:La risposta te la da il datasheet: https://ww1.microchip.com/downloads/en/ ... asheet.pdf, pag. 265 sezione 28.9 ADC Characteristics.
Input voltage Max = Vref. Vref Max = AVcc = Vcc + 0.3.

Ok, avevo visto il datasheet, ma non essendo certo di aver capito, ho cercato anche altro in rete ed ho trovato fonti che parlavano di +0.5V invece che 0.3.
Tuttavia ho i miei limiti e non sono ancora sicuro di aver capito:
Input voltage Max = Vref: quindi se come Vref uso il riferimento interno di 1,1 V la massima tensione ammissibile sugli input dell' ADC è 1.1 V, e se la eccedo cosa succede?
Rovino il micro o come è normale che sia "saturo" il convertitore a 10 bit e leggo 1023 (fondoscala) e basta?
Vref Max = AVcc = Vcc + 0.3.A : questo credo di averlo capito, se alimento a 5V, in teoria su Vref posso avere fino a 5.3V e di conseguenza l' ADC arriva a fondoscala con questo valore di tensione che a questo punto dovrebbe essere anche il limite strutturale del micro.
Secondo voi è corretto?


gvee ha scritto:Nel tuo schema hai messo due terminali (+ e -) su DUT. Ma sembra incompleto perché non hai messo i valori.

Come dicevo sopra, si tratta un carico elettronico e i DUT possono essere diversi, solitamente alimentatori o batterie con tensioni diverse.


MarcoD ha scritto:Per quanto ne so, la protezione dell' ingresso analogico interna all'ATMEL dovrebbe consistere in due diodi connessi internamente al +5V e al GND, I diodi dovrebbero sopportare una corrente massima di almeno 10 mA.
Tale protezione dovrebbe essere la stessa per il fondo scala di 5 V e di 1,1 V.

Esatto, da cio che ho capito qualcuno preferisce usare due shottky esterni, piu che per preservare i diodi interni del micro per avere una soglia di intervento piu bassa rispetto ai normali diodi.
A dire il vero non mi è ben chiaro se questo tipo di protezione interna sia anche sui pin cosi detti analogici o solo sugli altri.


MarcoD ha scritto:Se la tensione massima nel circuito in prova è +12 V metterei una resistenza in serie all'ingresso analogico di valore:
(12 V - 5 V)/ 10 mA = circa 700 ohm.
Tale valore è molto più basso del valore di 10 Mohm ( o qualche uA) che dovrebbe essere la resistenza di ingresso del canale analogico e quindi non dovrebbe introdurre una caduta significativa nella misura di tensione.

Come dicevo sopra, il problema è proprio questo, 12V è si la tensione con cui alimento l' operazionale che pilota il carico e quindi è la massima tensione che puo localizzarsi sul gate dei mosfet nel caso l' operazionale saturi, ma la tesione delle sorgenti collegate al carico puo arrivare a valori ben piu alti, e nel caso si guasti un mosfet credo dovrei preoccuparmi di quella giusto?


P.s.:
Foto UtentePietroBaima: leggo solo ora il tuo suggerimento, che come al solito, con le mie conoscienze avra bisogno di tempo per essere approfondito e digerito, quindi per ora ti ringrazio e mi riservo eventuali domande a riguardo.
Avatar utente
Foto Utentelucaking
1.651 4 5 8
Expert
Expert
 
Messaggi: 1445
Iscritto il: 29 mag 2015, 14:28

3
voti

[6] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto Utentestefanopc » 26 nov 2025, 12:14

Qualche tempo fa ho realizzato un semplice "strumento con display " per misurare corrente tensione e potenza quando utilizzo il carico fittizio.
viewtopic.php?f=48&t=87717
In questo caso per misurare la corrente ho preferito utilizzare un sensore ad effetto Hall ACS712 5A bidirezionale.
Ne esistono di svariate tipologie anche monidirezionali anche con portate maggiori.
Con questo componente proteggi sicuramente il Micro perché sei disaccoppiato galvanicamente.
Poi volendo potresti mette anche un Adc esterno per aumentare la risoluzione.
Ciao
600 Elettra
Avatar utente
Foto Utentestefanopc
13,3k 5 9 13
Master EY
Master EY
 
Messaggi: 5566
Iscritto il: 4 ago 2020, 9:11

1
voti

[7] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto UtenteEtemenanki » 26 nov 2025, 12:32

In genere le MCU di Atmel funzionano senza problemi anche con 10k di resistenza in serie al pin analogico ... o per essere piu precisi, viene consigliato che l'impedenza di uscita della sorgente da collegare ai pin analogici sia di massimo 10k per avere la massima reattivita', poi se i segnali non sono di microsecondi, funziona tranquillamente anche con valori molto superiori, solo piu lentamente (ad esempio, controllo livello batteria a consumo minimo, funziona tranquillamente anche con 200 o 300 k, basta ricordarsi che non reagira' con la stessa velocita' di un pin pilotato con 10k, ma ci mettera' qualche millisecondo in piu), quindi puoi, come prima cosa, usare una resistenza da 10K in serie, e collegare fra il pin e GND uno zener ... dato che usi il riferimento ad 1.1V interno, un qualsiasi zenere tipo c3v3, c3v9 o c4v7 e' adeguato (non interferisce con la lettura fatta con il riferimento ad 1.1V, ed interviene prima dei 5V)

Se invece serve l'isolamento galvanico, gli ACS suggeriti da Foto Utentestefanopc sono la soluzione migliore, e ci sono anche con fondoscala di 10, 20, 30 e 50 A, sia bidirezionali che unidirezionali (serie ACS724), mentre la serie ACS770 va da 50 a 200 A.
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
Avatar utente
Foto UtenteEtemenanki
9.507 3 6 10
Master
Master
 
Messaggi: 5935
Iscritto il: 2 apr 2021, 23:42
Località: Dalle parti di un grande lago ... :)

2
voti

[8] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto UtentePietroBaima » 26 nov 2025, 12:33

Indendevo codesto coso: :D

Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[9] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto Utentelucaking » 26 nov 2025, 13:24

Si, all' incirca avevo capito, ma hai fatto bene a disegnarlo perché io non ci avrei messo il resistore tra uscita e ingresso invertente.
E a dirla tutta non ne capisco nemmeno il funzionamento.
Il resistore in alto immagino serva a limitare la corrente che scorre nello schottky se la tensione supera i 5 V, ma quello in basso proprio non lo so.
Avatar utente
Foto Utentelucaking
1.651 4 5 8
Expert
Expert
 
Messaggi: 1445
Iscritto il: 29 mag 2015, 14:28

6
voti

[10] Re: Protezione ingressi ADC Atmega328

Messaggioda Foto UtentePietroBaima » 26 nov 2025, 13:47

Dovrei fare una lunga dissertazione (che ti risparmio) su quanto sia difficile ottenere tutta la risoluzione dell'ADC.

Il micro che usi tu ha una risoluzione di 12 bit, che su una scala di 5V significa che la risoluzione di 1LSB= 5V/2^12 cioè 1.2mV circa :!:

Questo significa che per sfruttare bene tutti i 12bit disponibili, il rumore e l'errore di ingresso all'ADC deve essere trascurabile rispetto a 1.2mV. Quanto trascurabile? Questo dipende.

Se hai bisogno davvero di tutti i 12bit allora dovrai stare circa 40dB sotto in tensione, altrimenti se ti basta una risoluzione inferiore calcoli la risoluzione che ti serve, tiri fuori il numero di bit necessari e scarti gli ultimi LSB che non ti servono (se ti servissero, per esempio, solo 8 bit campionando a 12bit scarteresti i 4bit meno significativi).

1.2mV-40dB significa che l'errore che fai deve essere non superiore a 12 uV.
Ottenere una precisione del genere non è banale.

Il primo fattore che devi considerare è che se inserisci una Z di ingresso in serie all'ADC questa finirà per realizzare un partitore di tensione con la Z di ingresso del microcontrollore.
Se la Z di ingresso del micro fosse stabile potresti considerarla e correggerla dopo, ma il problema è che, leggendo il data sheet, troverai dei valori compresi fra un minimo ed un massimo, che ti daranno una incertezza non compensabile.
Per questo è necessario inserire in serie all'ingresso una impedenza che, anche nel caso peggiore, generi un contributo trascurabile.
Per questo in genere si inserisce un OPAMP con una bassa Z di uscita oppure, in molti casi, un condensatore in parallelo all'ingresso che, nella banda di utilizzo, abbassi la Z complessiva.

A questo punto però, come capita sempre, inserendo qualcosa si inseriscono anche altri problemi.
Uno di questi è la non idealità dell'OPAMP.
E' vero che gli ingressi di un OPAMP non assorbono corrente? No.
Assorbono una corrente piccola, ma non nulla.
Se voglio usare tutti i 12 bit (cioè, ricordo, l'errore deve stare dalle parti di 12uV) non posso più trascurare questa corrente, detta "corrente di bias".

Ti risparmio i calcoli, ma ti riporto i risultati. Per minimizzare l'effetto della corrente di bias sull'uscita di un OPAMP le Z ai suoi ingressi devono essere più basse possibili e più uguali possibili fra di loro.

Sul morsetto invertente dobbiamo inserire una resistenza per realizzare il clipper, e quella non la possiamo proprio evitare, per cui, per minimizzare l'effetto sull'uscita, siamo costretti a metterne una uguale anche dall'altra parte.

Gli ingressi a FET di cui parlavo servono poi per rendere le correnti di bias piccole, che male non fa di certo.

Già con 12 bit queste considerazioni diventano importanti.
Poi ci sono considerazioni sul PCB, sulla EMC e molto altro.
Dove lavoro ci sono dei progettisti analogici che si occupano solo di elettronica front-end.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

Prossimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti