[CONSIGLIO] Per Power On Reset di Arduino

Ragà consigliatemi un pò qualche IC per il POR di un ATMega a 5V.

Ho un circuito, impiegato con soddisfazione in un apparato industriale, che a causa di alcuni relè di uscita molto vicini al Processore, e a numerosi teleruttori intorno, ogni tanto mi da i numeri e si resetta da solo.

Sembra che ho risolto abbassando la resistenza di PullUp sul piedino 1 di Reset, portandola da 10K a 4K7 e, inoltre, ho sostituito i relè meccanici con altri relè a stato solido. Però non mi fido... e siccome devo uscire dallo stato prototipale per fare un oggetto finito, volevo usare un chip apposito per questo compito, da integrare nella versione finale del master del PCB.

Che tensione di Trip si può usare per un ATMega? Chip ne ho visti diversi, ma qualcuno di voi ha già un buon feedback da qualche IC in particolare?

Tanks

Giusto per capirci, un coso così:

Io non credo tu abbia bisogno di un Power on reset, perchè il 328 o in genere la serie ATmega non ne ha bisogno.
Ci sarebbe da indagare circa le cause del reset, comunque puoi sperimentare con un bjt il cui collettore è collegato al reset, in questo modo dovresti avere una bassa impedenza sul pin reset e per resettare dovrai polarizzare il bjt con tensione positiva, ma non è detto che non si ripresenti il problema.

Anche il layout del PCB è importante, quindi un prototipo industriale lo devi comunque fare, poi magari metti il tutto in un contenitore metallico e vai sul sicuro.

Ciao.

Grazie Mauro.

Ma già che ci sono, e visto che costa "na sega", almeno un oggetto del genere lo uso. Male non fa...

MauroTec:
Io non credo tu abbia bisogno di un Power on reset, perchè il 328 o in genere la serie ATmega non ne ha bisogno.
Ci sarebbe da indagare circa le cause del reset, comunque puoi sperimentare con un bjt il cui collettore è collegato al reset, in questo modo dovresti avere una bassa impedenza sul pin reset e per resettare dovrai polarizzare il bjt con tensione positiva, ma non è detto che non si ripresenti il problema.

Anche il layout del PCB è importante, quindi un prototipo industriale lo devi comunque fare, poi magari metti il tutto in un contenitore metallico e vai sul sicuro.

Ciao.

Ho pensato al discorso del BJT sul pin di reset, ed efettivamente, anche a mio avviso, è un problema di alta impedenza che "prende" disturbi sulla linea.

Il circuito originale, come causa primaria del fault, era la vicinanza fisica con dei piccoli relè a 24V. Infatti allontando il coperchio che ospitava il 328, dal contenitore dove invece erano montati i relè, era sufficiente per interrompere il malfunzionamento. Quindi disturbi da induzione.

Ho sostituito i relè meccanici con dei dispositivi a stato solido, optoisolati. Si accendono con un led interno e hanno due MOS in push pull che possono essere assimilati ad un contatto chiuso fisico, almeno in continua, ed in entrambe le direzioni (questi contatti gestiscono una 24V e vanno ad un PLC).

Ora ho in comune la 24V dei PLC con i 5V della MPU (c'è in mezzo solo un IC switching step-down a 5V) e l'ingresso è disaccoppiato dai sensori da una sola rete di diodi di clamper (più un partitore e uno zener per ridurre il segnale 24V > 5V).

La versione definitiva sarà optoisolata in ingresso, optoisolata in uscita e avrà un convertitore DC-DC con masse separate galvanicamente. Dovrei ridurre i disturbi di linea ad un fattore prossimo allo zero. Sono fiducioso... ma non troppo. :drooling_face:

Che utilità ha un integrato che resetta il microcontrollore se il microcontrollore già si resetta di suo? :sweat_smile:

Secondo me sono proprio gli spike dei relé il problema. Magari dovresti filtrare l'alimentazione del microcontrollore, aggiungendo un filtro sulla linea di alimentazione del microcontrollore con un induttore ed una coppia di C (elettr.+cer.) prima e dopo di esso. Indispensabile poi il C da 100 nF posto vicinissimo al pin VCC.

BaBBuino:
Ragà consigliatemi un pò qualche IC per il POR di un ATMega a 5V.

L'ATmega 328 ha già la circuiteria di POR, e anche di BOR con livello programmabile, internamente al micro non serve a nulla mettere un IC esterno per questa funzione, si usa solo con i micro non dotati di POR/BOR integrato.
Il tuo problema si chiama "GND fatta con i piedi" :slight_smile:
Devi rivedere tutta la parte circuitale della massa e disaccoppiare quella della logica da quella degli azionamenti, inoltre devi prevedere un adeguato filtraggio sulla alimentazione.

Un chip di quel tipo svolge la funzione di mantere il piedino di reset alto (o basso) fintanto che la tensione da esso monitorata non risulta stabile.
Si usa con microcontroller 8051, vecchi Renesans e in gerene su quei microcontroller che non hanno una circuitazione interna POR.

Stiamo parlando di schede industriali e il rischio di scrivere cazzate è alto, principalmente per mancanza di informazioni dettagliate sul progetto.

Quindi do per scontato che ciò che scrivo di seguito sono cazzate:

Cosa succede se la tua scheda si guasta, si blocca?
Queste cose accadono, e se la conseguenza può essere causa di danni a persone si devono prendere delle precauzioni.

In tal caso si usa far cambiare stato ad un pin continuamente durante il normale svolgimento del programma, un circuito esterno connesso monitorizza il cambio di stato e ne segnala l'anomalia. Oppure il segnale viene connesso ad un PLC.

Vedi tu se ci sono rischi e in tal caso procedi senza premura, se hai tempi stretti assumi qualcuno di esterno che si occupi della sicurezza.

Come dice Astro, il percorso di massa non è banale, tanto che può richiedere più prototipi, comunque se applichi tutte le regole per un buon layout sei già a metà strada.

Ciao.

Grazie dei suggerimenti, è sempre piacevole parlare con persone competenti di elettronica, specie Analogica, che pare siano tutti "morti" gli Analogici...

Il prototipo è stato realizzato con molta fretta (messa dal cliente) ma non è stato costruito proprio con i piedi. Avevamo un concorrente che ha presentato un oggetto che faceva uso di diversi integrati digitali (roba da anni '80...) ad un modico costo di 15.000e (per diverse macchine) Noi abbiamo presentato un processore con visualizzazione a display dei comandi, una telecamera con acquisizione dati per rilevare un raro ed infinitesimale problema del macchinario e una serie di comandi accessori da Fantascienza. E ad un prezzo di molto inferiore.
Naturalmente questo ha fatto ottima presa sul cliente (visto anche il prodotto osceno della concorrenza), ma come accade spesso: "lo voglio pronto per IERI!"

I piani di massa sono estesi a doppia faccia e, da buon Analogico di derivazione audio, tutte le masse le ho fatte a punto stellare.

Purtroppo non avevo optoisolatori e un DC-DC isolato sottomano, quindi ho dovuto utilizzare accorgimenti "analogici" sapendo di dover incrociare le dita.

I condensatori da 100n sulle alimentazioni della MCU, e VICINISSIMI, sono ovvi. Quelli IN e OUT sullo Switching anche.

Avrei preferito un regolatore Low Drop, ma purtroppo la tensione di partenza era abbastanza elevata (24V) Gli switching sono il mio pane, ma non mi sono troppo simpatici, perchè sono primaria fonte di problemi con apparecchiature digitali.

Insomma, l'oggetto soddisfa ampiamente il cliente, anche se ho dovuto aprirlo e richiuderlo alcune volte, sostituendo, come già detto, i relè meccanici con più amichevoli cosi così:

Ho anche abbassato la R di reset, da 10.000 a 4700 Ohm. Dopo questi interventi non ha più ripresentato gli occasionali auto-Reset (oramai da diversi giorni), però non ho una sensazione di tranquillità raggiunta...

Cmq vedo in giro altre MCU che usano questo genere di IC di reset...

Adesso decido per il BJT abbassa impedenza alla Mauro oppure uno di questi DS1233 (il mio spacciatore di Hardware me li mette 0.25 per piccoli lotti da 20).

Ci sono varie soluzioni per pilotare il pin di reset, la più semplice è connetterlo a Vcc con una R da 100 e c di bypass, e non usi il reset. Quando devi programmarlo togli un jumper che rimuove la R da 100 e rimane quella da 4.7k.

Soluzioni più complesse non ne vedo la necessità. Se decidi per il bjt tieni conto che per programmare tramite ISP devi utilizzare un'altro bjt, perchè il programmatore mette il pin RESET a GND.

Oppure puoi decidere per diodi, varisistori ecc sulla linea reset per tirare fuori un soppressore di transitori. Pensa che se al pin dai 12 volt passi alla modalità programmazione HV.

Il manuale di quel DS1233 non l'ho letto, devi vedere cosa accade con il treno in corsa, ciò in teoria il chip dovrebbe lavorare solo durante la fase di accensione, non so se monitora anche la tensione continuamente.

Io eviterei, meno cose ci sono, meno se ne possono rompere.

Ciao.

MauroTec:
Ci sono varie soluzioni per pilotare il pin di reset, la più semplice è connetterlo a Vcc con una R da 100 e c di bypass, e non usi il reset.

Il micro non resetta perché il relativo pin va 0 logico, a meno che non siano state fatte delle grosse castronerie circuitali, il micro resetta perché gli arriva qualche spike ad alta tensione tramite GND/Vdd, quella è la causa primaria dei reset.
Il primo componente di qualunque scheda è il pcb stesso, il secondo lo stadio di alimentazione, se questi due non sono realizzati a regola d'arte è normale avere un sacco di problemi apparentemente misteriosi.

@astro
Sono daccordo, il fatto è che dice di aver risolto riducendo la R di pull-up sul reset e questo mi ha fatto pensare che ai capi di una resistenza possono esserci tensioni indotte, magari è il suo caso. Oppure nei paraggi ha una induttanza su pacco girata nel verso sbagliato. :stuck_out_tongue:

Io non penso che abbia commesso grossolani errori, ma tutto può capitare, io ne ho fatte di cotte e di crude :smiley:

Ciao.

il DS1233 fa un pò di cose, non malvage:

FEATURES
- Automatically restarts microprocessor after power failure
- Monitors pushbutton for external override
- Internal circuitry debounces pushbutton switch
- Maintains reset for 350ms after VCC returns to an in-tolerance condition or pushbutton released
- Accurate 5%, 10%, or 15% microprocessor 5V power supply monitoring

  • Reduces need for discrete components
    - Precision temperature-compensated voltage reference and voltage sensor
    - Low-cost TO-92 package or surface-mount SOT-223 package
    - Internal 5kpull-up resistor
    - Operating temperature of -40C to +85C

Quella sottolineata mi pare interessante.

BaBBuino:
il DS1233 fa un pò di cose, non malvage:

Leggere il data sheet del micro sempre troppa fatica ? :slight_smile:
Guarda cosa fa il POR/BOR del 328 e capirai da solo che non serve nessun ic esterno per il controllo del reset.

Visto anche l'ultimo commento di Astro, possiamo dire che quel chip fa più fumo (scena) che arrosto (nel contesto), se è questo che ti serve procedi con l'acquisto.

Ciao.

BaBBuino:
I piani di massa sono estesi a doppia faccia e, da buon Analogico di derivazione audio, tutte le masse le ho fatte a punto stellare.

Scusate le domande, ma cosa sono i piani di massa? e come si fanno le masse a punto stellare?

I piani di massa sono le aree ramate che vanno ad occupare gli spazi inutilizzati del PCB e che sono collegati a massa. Servono per isolare il circuito dai disturbi elettromagnetici. Un buon piano di massa è interrotto il meno possibile.

La massa a punto stellare significa che tutti i terminali a massa dei componenti tendono a convergere verso un unico punto.

La questione dei due condensatori ( elettrolitico e ceramico ) l'ho già visto su un circuito. Ma se il ceramico ( va bene lo stesso in poliestere? ) ha tipo un valore di 100 nF, quello elettrolitico che valore deve avere?

La coppia di 2 condensatori elettrolitico+ceramico si usa per filtrare disturbi di diversa frequenza: gli elettrolitici ad alta capacità si usano per filtrare disturbi a bassa frequenza mentre i ceramici quelli ad alta frequenza (sono più indicati dei poliestere per questo compito).
Si usano agli ingressi delle alimentazioni per filtrare nonché per dare stabilità all'alimentazione stessa. Per questo spesso si mette un grosso C elettrolitico da 100 uF abbinato al C ceramico da 100 nF.
Intorno ai regolatori di tensione si usano spesso 2 coppie, una prima ed una dopo: quella sul pin in ingresso la si compone con un C elettrolitico ed un C ceramico (quest'ultimo più vicino al pin IN) mentre in uscita la coppia si replica con le stesse posizioni (C ceramico vicino al pin OUT e poi dopo l'elettrolitico): entrambi i C ceramici vanno bene da 100 nF mentre gli elettrolitici li dimensioni in base al consumo del circuito, considerando che per evitare che disturbino il regolatore, il C in ingresso deve essere normalmente più grande di quello in uscita. Io uso il rapporto 10/1, esempio: 100 uF + 10 uF oppure 10 uF + 1 uF.