Arduino Pro Mini e pulsante reset esterno.

Salve ragazzi!
Ho appena acquistato il mio primo Pro Mini (5V 16mhz ) per un piccolo progettino.
La scheda è dotata di un micro pulsantino di reset , che per il mio progetto è abbastanza scomodo, in quanto la scheda va inclusa in una piccola scatolina elettrica , e non è possibile premerlo . Per questo ho pensato di aggiungere un pulsante di reset cablato esternamente, in modo che possa essere piazzato fuori dalla scatola. Questo mi serve principalmente per sopperire all'inconveniente del caricamento su scheda , che ogni tanto si inchioda, e riprende a funzionare correttamente con una procedura empirica trovata online ( premere il tasto di reset mentre si compila lo sketch, rilasciarlo appena parte il caricamento) . Secondo voi è fattibile piazzare un reset esterno? come va collegato ? Reset( arduino) ----> pushbutton ----> 10k resistenza --- > GND( arduino) ?
In questo modo vorrei evitare di dover smontare la scatola ogniqualvolta ci siano delle correzioni software da effettuare....

Grazie per il vostro tempo :slight_smile:

funksoulbrother:
In questo modo vorrei evitare di dover smontare la scatola ogniqualvolta ci siano delle correzioni software da effettuare....

Basta che monti un pulsante tra RESET e GND, non serve altro.
Il motivo per cui devi premere il tasto di reset per caricare uno sketch è perché non hai previsto un delay di un paio di secondi all'avvio del programma e invii fin da subito dati sulla seriale, questo crea problemi alla procedura di programmazione e rende necessario il reset manuale.
Basta che aggiungi il delay, nel setup(), prima di iniziare ad inviare dati e il pulsante di reset esterno diventa quasi inutile.

Grazie mille astrobeed, tenterò sicuramente il tuo consiglio, per ora nel setup è presente un delay ma di solo 300 millisecondi.

A questo punto approfitto della tua gentilezza per chiedere un altro consiglio. La scheda viene alimentata da un alimentatore 12V in cascata con un regolatore 7805 , che porta i 5V direttamente sul pin VCC della scheda, per intenderci quello "di lato" , non quello del header di programmazione. Ora, per la programmazione, io scollego l'alimentazione 12V e faccio alimentare la scheda dal programmatore FTDI ( VCC GND RX TX) . Il problema è che essendo tutti i VCC collegati in comune , mi ritrovo una stramba situazione sul 7805 ovvero : circuito aperto in ingresso ----- 5V in uscita..... secondo te/voi può provocare dei problemi?

funksoulbrother:
programmatore FTDI ( VCC GND RX TX) . Il problema è che essendo tutti i VCC collegati in comune , mi ritrovo una stramba situazione sul 7805 ovvero : circuito aperto in ingresso ----- 5V in uscita..... secondo te/voi può provocare dei problemi?

Basta che metti sul 7805 un diodo, contropolarizzato, tra Vin e Vout dopo di che sei a posto.

Il problema è che quel diodo tra ingresso e uscita, durante il normale funzionamento, mi bypassa il regolatore.....
Ho fatto un rapidissimo schema delle 2 situazioni e allego la foto . Il diodo D1 è già previsto per evitare problemi con la polarità dell'alimentatore ( center positive) . Il D2 è quello contropolarizzato che mi hai suggerito. P.s Ho omesso i condensatori solo per praticità, ma ci sono :slight_smile:

Quello che astrobeed intendeva con "contropolarizzato" è che devi invertire il senso del diodo D2, proprio per non bypassare la funzione del regolatore.

Come mai non hai utilizzato il regolatore onboard di Arduino Pro?

Una alternativa al tuo problema: lasci fissa l'alimentazione tramite il 7805, e non colleghi il terminale della Vcc del programmatore.

Fermo restando l'utilità di avere un pulsante di reset esterno, io ti consiglio di collegare anche il terminale DTR del programmatore FTDI in moto tale che venga sincronizzato l'upload dello sketch.

Se hai acceso quel circuito hai dato ca 11V al ATmega e quello é defunto.

Innanzitutto lelebum, grazie anche a te per la risposta.

Quello che astrobeed intendeva con "contropolarizzato" è che devi invertire il senso del diodo D2, proprio per non bypassare la funzione del regolatore.

Si , effettivamente ho disegnato senza pensare. Girando il D2 effettivamente ho che quei 5V sull'uscita mi finiscono direttamente sui terminali aperti della linea senza entrare nel regolatore, ma anche di nuovo in ingresso al regolatore ( e soprattutto " intrappolata" tra i due diodi) .

@uwefed : no, fortunatamente ho avuto solo troppa fretta di disegnare, non ho acceso ancora nulla :slight_smile:

Come mai non hai utilizzato il regolatore onboard di Arduino Pro?

La mia applicazione richiama abbastanza corrente ( piccoli motori ecc ) , ho preferito utilizzare un regolatore esterno anche per quanto riguarda la dissipazione del calore , senza gravare sulla Pro Mini

Una alternativa al tuo problema: lasci fissa l'alimentazione tramite il 7805, e non colleghi il terminale della Vcc del programmatore.

A questo avevo pensato, ma come scrivevo sopra, quell'alimentazione mi comanda anche altra roba,avrei bisogno di poter programmare la scheda mentre i motori e il resto sono spenti. L'ideale sarebbe avere proprio 2 alimentazioni separate , ma non posso, quindi mi arrangio con quel che ho :smiley:

Fermo restando l'utilità di avere un pulsante di reset esterno, io ti consiglio di collegare anche il terminale DTR del programmatore FTDI in moto tale che venga sincronizzato l'upload dello sketch.

Purtroppo l'FTDI di cui dispongo è una cinesata e ha solo 5 pin ( 5V, 3V3, RX,TX,GND)

Aggiornamento @ astrobeed :

Ho allungato il delay iniziale dentro il setup ma nulla è cambiato ( ogni tanto si programma senza reset, ogni tanto con , usando lo stesso codice come riferimento , ma ho provato anche con altri codici tipo " blink" e fa uguale, credo che il problema stia nell'assenza del pin DTR sul mio programmatore )

funksoulbrother:
credo che il problema stia nell'assenza del pin DTR sul mio programmatore )

Senza DTR, che comanda il reset, non puoi programmare Arduino senza premere manualmente il reset.

In genere tutti i convertitori USB/RS232 hanno un terminale DTR.
Con l'aiuto del data-sheet del convertitore puoi individuare il terminale che magari è stato lasciato abbanodnato sullo stampato.

Purtroppo essendo una cinesata ho trovato poco a livello di datasheet.

Comunque per tagliare la testa al toro, ho pensato a un modo drastico per evitare il corto Vin -Vout del 7805 quando è in fase di programmazione ( senza diodo, e alimentazione data dal connettore del progammatore) .Ho pensato di mettere un interruttore doppio (DPST o DPDT) in modo che, quando voglio programmare , la linea mi si "tagli" sia sui 12 volt prima del regolatore , sia sui 5V dopo il regolatore , in maniera da avere il regolatore completamente scollegato da tutto ed evitare il corto ( in questo modo ho motori e altra parte del circuito spenta, e nessun corto sul 7805). Alla chiusura dell'interruttore, su Vout ci sono 5 Volt memorizzati su un condensatore che è messo a valle di esso , mentre su Vin ci sono i 12V memorizzati su un condensatore a monte di esso. In questo modo non si creata la situazione che distrugge il 7805 , ovvero Vout > Vin.
Se qualcosa non fila in questo ragionamento fatemelo notare perchè sono convintissimo e potrei prendere un mega-abbaglio :smiley:

Schizzo veloce( questa volta i condensatori li hho messi)

non ho capito bene cosa vuoi fare, ma se il tuo intento e' quello di evitare che Vout > Vin, basta un diodo in serie (D3) e un'altro diodo uguale (D2) che alza il riferimento sul 7805

diod_7805.png

Intanto, grazie ancora a tutti per le risposte.
Cerco di essere piu chiaro , e carico lo schema "originale" come lo avevo pensato io, quindi ancora col problema.

In condizioni normali , il circuito funziona tutto alimentato a 12 Volt , come nello schema, e arduino riceve i suoi 5V dal regolatore 7805. Notare che i 5V di arduino arrivano su un pin laterale e non su quello dell'header
Ora, la mia necessità è quello di poter riprogrammare arduino nel caso ci siano delle modifiche software da effettuare. E avrei bisogno di farlo, mentre tutto il resto del circuito resta spento ( motori luci ecc ) . Per fare questo, pensavo di alimentare arduino in questa fase tramite l'header e il programmatore FTDI, e scollegare completamente i 12V. Ma siccome i pin VCC della scheda sono collegati tra loro , alimentando la pro mini dall'header, mi ritrovo 5V anche sul pin Vcc "Laterale" . quindi 5V mi vanno anche sui condensatori C2 e C3 , in uscita al 7805. A sinistra invece ho un C1 che è rimasto a 12V ed è rimasto collegato alla parte motori luce ecc , mentre l'alimentazione è interrotta . Quindi presumibilmente , quel condensatore tenderà a scaricarsi , fino al punto da creare la pericolosa Vin < Vout . Mettendo il diodo contropolarizzato consigliato da astrobeed , mando in corto i 5V di C2 e C3 con i 12 di C1.
Ho pensato al DPDT in modo da tagliare entrambe le linee (12V e 5V ) a monte e a valle del 7805. Ma la mia è una soluzione drastica in quanto di altre non me ne venivano in mente .
@Brunello: con i Diodi D2 e D3 dello schema che hai allegato, non perdo gli 0,7V sulla linea ?

con i Diodi D2 e D3 dello schema che hai allegato, non perdo gli 0,7V sulla linea ?

Il D2 serve proprio per alzare il riferimento GND del regolatore, in modo che l'uscita del 7805 sia a 5,7V. Proprio per compensare la caduta sul diodo D3

e comunque un diodo "contropolarizzato" e' messo cosi'... e serve proprio a proteggere il regolatore

diod_7805_1.png

Ammetto tutta la mia ignoranza in fatto di protezione del 7805 ...ma ve ne sarete gia accorti.. :blush:

Quindi, se mettessi tutti e 4 i diodi ( in ingresso, in riferimento, in uscita, e contropolarizzato ) potrei porre rimedio al mio problema senza bisogno di tagliare la linea in due punti? La cosa principale che voglio ottenere è non sfasciare il 7805