Sì, questo è un haiku. (EDIT: risolto ... ora è in realtà un Haiku)
No, non sto sorridendo.
Sto facendo dei test standard; vedere cosa succede quando una delle due barre di alimentazione viene messa in corto circuito su GND su un PCB che ho progettato. Stiamo parlando di un alimentatore da 12 V alimentato da un alimentatore da banco, con un convertitore buck integrato da 5 V che fornisce l'altro binario sul PCB (a cui è collegato il mio ATmega328PB).
La guida da 12 V ha un gruppo di prese a botte DC che saranno esposte agli utenti finali. Quindi, naturalmente, ho deciso di inserire un cacciavite da gioielliere in uno di essi per condurre il mio test di corto circuito.
Ecco, uno sbuffo di fumo dal mio ATmega328PB.
Penso che ciò significhi che è successa una delle seguenti cose:
Tempo schematico
Ecco lo schema delle connessioni all'ATmega328PB:
Ecco tutti gli schemi delle cose nel progetto che hanno una connessione alla guida a 12 V (la guida VBAT +) e che controllano i percorsi di ritorno della corrente GND:
Ed ecco uno schema dei jack a cilindro e dei relativi pin di rilevamento dei jack (si noti che questi si collegano direttamente ad alcuni dei pin di ATmega328PB senza resistenza in serie):
Il piano di corto circuito
Il piano per gestire i cortocircuiti sulla guida a 12 V era semplicemente quello di disattivare il FET del canale N LOAD_FET a causa di una delle due condizioni logiche soddisfatte nel firmware:
- Il campionamento ADC a una frequenza di 1 Hz rileverà la condizione di sovracorrente e causerebbe l'interruzione della conduzione dell'interruttore FET_LOAD, interrompendo così la corrente di corto circuito
- La tensione che alimenta l'ATmega andrebbe in black-out e l'MCU ripristinerebbe e inizializzando l'interruttore FET_LOAD su "off", tagliando così la corrente di corto circuito
Il grande fumo
Ecco una sonda oscilloscopio di ciò che accade alla guida Vbat + su CH1 (giallo) e alla guida +5 su CH2 (blu) quando si collega Vbat + a GND tramite l'applicazione di un cacciavite da gioielliere ai fili esposti di un cavo che è collegato al circuito jack a botte (non ho inserito il cacciavite nella presa ) mentre è alimentato da un alimentatore da banco impostato su 12V @ 5 Amp:
Dopo ciò, l'ATmega si surriscalda semplicemente ogni volta che accendo la scheda e agisce efficacemente come un cortocircuito tra l'ingresso + 5V e la massa del segnale. Ho dissaldato l'ATmega con aria calda e ho testato il FET N-channel FET_LOAD per vedere se era fritto. In effetti aveva fallito in modo tale che non si sarebbe più spento o riacceso quando una tensione di gate era stata applicata a +5 o terra del segnale, ma invece operava da qualche parte nella zona crepuscolare tra. Stava scendendo di circa 2,3 volt mentre conduceva ~ 200 mA indipendentemente dal fatto che fosse "acceso" o "spento" quando un carico veniva inserito nel jack del barilotto.
impressione
Avevo la sensazione che, a causa del danneggiamento della FET, il vettore per danni all'ATmega potesse essere stato causato dalla trasmissione di un'alta tensione attraverso lo scarico della FET al suo gate e all'MCU. Ha effettuato alcuni test successivi con tensioni più basse che alimentano la guida a 12V. Nota che le prime tre immagini sono sostanzialmente le stesse, ma con correnti di picco diverse. Una volta spento l'ATmega (a causa della caduta di tensione sulla guida Vbat +), il segnale LOAD_GND_ENABLE fornito dall'MCU (blu, in basso) a sua volta diventa basso, tagliando l' interruttore FET_LOAD .
Leggenda:
CH1 = Tensione attraverso Rshunt (0,005 ohm) CH2 = Tensione con segnale LOAD_GND_ENABLE (collegato ad ATmega)
Vbat + fornito a 6V:
Vbat + fornito a 7V:
Vbat + fornito a 8V:
Vbat + fornito a 9V:
In quest'ultima, la corrente non ha mai smesso di aumentare e il segnale LOAD_GND_ENABLE ha fatto una danza funky, ma tutto sommato sembrerebbe che i limiti massimi non siano mai stati superati sul pin LOAD_GND_ENABLE (almeno non penso che fossero ... Ho solo un ambito a 2 canali e avrei dovuto misurare la guida + 5V per sapere quale voltaggio su LOAD_GND_ENABLE wrt Vcc).
Prossimi passi
Mi rimane solo 1 tavola che può essere sacrificata, quindi il mio piano è di:
Utilizzare un ATmega328PB vuoto in modo che tutti i suoi pin vengano impostati su un'impedenza elevata senza alcuna periferica configurata / inizializzata. Ripetere il test di corto circuito per vedere se ATmega328PB continua a fumare. Se non va male, allora l'MCU deve essere fallita perché stava provando / affondando troppa corrente da uno dei suoi pin configurati come output mentre stava eseguendo il firmware nei test precedenti.
Prova con un ATmega328PB montato su una scheda breakout (purtroppo questo chip non viene fornito in pacchetti DIP) collegato al PCB tramite flywires. Inizia in modo selettivo a connettere un singolo flywire alla volta, eseguendo il test e vedendo quale flywire è quello responsabile della frittura di ATmega328PB.
Ordinare un nuovo PCB campione con layout alterato in modo tale che tutte le tracce che si collegano all'ATmega328PB siano collegate tramite ponti di saldatura che possono essere saldati a mano durante il test. In questo modo il test di corto circuito (e qualsiasi altro test) può essere condotto con l'ATmega collegato a un numero limitato di segnali alla volta, e semplifica il collegamento di tutti gli altri circuiti esterni a questi ponti di saldatura per controllarli indipendentemente dall'ATmega .
Sì, è davvero una domanda (e)!
E le domande sono:
- qualcuno vede qualcosa qui che io no. È ovvio? Spero non sia ovvio ...
- Quale sarebbe il tuo prossimo passo?