Problema assorbimento Arduino Nano

Ciao a tutti! Sono un neofita di Arduino ma con tantissima dedizione e pazienza sto riuscendo ad ottenere risultati mai raggiunti con Pic&Mplab :slight_smile:

Sono a lavoro su un progetto riguardante una ecig o meglio un circuito per boxmod (una ecig in una box di alluminio) che conterrà due batterie LiMn 18650 in serie, un display oled pilotato in i2c e un sensorino effetto hall.
Diciamo che sono al buono, in poche parole tramite la lettura dal sensore e alcuni calcoli vado a regolare il duty cycle del pwm che piloterà un nmos ed erogherà corrente al carico. Non ho problemi a far tutto ciò se non fosse che sono in stallo per il problema più stupido.
Solo la board dell'arduino nano consuma 50mA a riposo.. alimento il dispositivo tra Vin e Gnd con una tensione tra i 8,4V e 7,4V.
Ho assoluta necessità di disattivare l'elettronica per ridurre al minimo i consumi nel momento in cui via codice spengo il display e blocco le funzioni, ma un assorbimento costante di 50mA "distrugge" tutto cio' a cui sto lavorando vista l'impossibilità di inserire un commutatore/interruttore di accensione. Cosi facendo non potrei lasciare la box a riposo con le batterie inserite.
Il dispositivo infatti monterà esclusivamente un pulsante "fire" e due pulsanti per la regolazione della potenza di uscita.

Scusate la lungaggine! xD

Buona giornata a tutti!

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Per il tuo problema, io non sò consigliarti. Attendi pazientemente, qualche esperto che bazzica il forum saprà consigliarti certamente. :smiley:

scusami Nid pensavo di aver gia' fatto la presentazione perchè ero iscritto da un po', ho provveduto immediatamente :slight_smile:

Grazie per i .pdf allegati, sono molto utili, alcuni già li avevo ma noto che sono aumentati e quindi conservo!

Qualche idea per il mio problema?

Grazie anticipatamente

La cosa migliore è quella di realizzare uno stand-alone, se non è un problema far lavorare il micro a 1MHz, potresti ridurre l'alimentazione a 3V ed usare le varie modalità di sleep, considera che un micro atmel a riposto totale può arrivare a consumare solo 50pA :wink:

Michele ti ringrazio, mi hai illuminato.. mi sto divorando la tua guida sulla programmazione via ISP con e senza bootloader, fantastica. Presumo che quindi il problema derivi dai 16MHz del 328 e dall'FTDI sempre alimentato..
Ti faccio solo una domanda se posso, ho qualche problema se realizzo un pcb con 328 standalone e utilizzo i pin dedicati alla programmazione come I/O? ti chiedo questo perche' parlando di PIC (forse per mia inesperienza), se i pin dedicati all'ISP erano sfruttati per il progetto e quindi connessi a componenti esterni al 328 non riuscivo a concludere nessuna programmazione.
Dovevo necessariamente isolarli dal pcb (con uno scompenso di tempo e pazienza terribile) e riprogrammare.
Mi piacerebbe realizzare uno standalone con connettore ISP, sarebbe il top

Grazie mille!

chiedi pure quello che vuoi, nei limiti delle conoscenze avrai risposta :slight_smile:
un consiglio: la guida leggila con molta calma, purtroppo molti cercano di andare rapidamente "al sodo" e saltano passaggi importanti, e poi non funziona nulla; una su tutte: la guida è impostata per l'IDE 0022, le impostazioni hardware sono identiche, ma per la parte board virtuali e caricamento sketch bisogna NECESSARIAMENTE studiare l'apposito capitolo integrativo sull'IDE 1.0.X, altrimenti non riuscirai a programmare nulla!
Purtroppo il discorso dei pin ISP è come per i PIC, se sono collegati a componenti facilmente la programmazione viene disturbata e non va a buon fine, però.....
1 - non so se sei al corrente che i pin analogici A0-A5 possono essere usati come normalissimi pin I/O digitali chiamandoli 14÷20.
2 - in una situazione in cui non potevo proprio fare a meno di usare i pin ISP (19-18-17 fisici del micro) ho fatto ricorso allo stratagenmma degli switch o jumper in serie: in pratica ho collegato i pin al collettore ISP e poi ai vari componenti del circuito, solo che tra il connettore ed i componenti ho interrotto i tre segnali mediante un dip-switch a tre vie (ma puoi mettere tre jumper), così normalmente stanno su ON e lavora il circuito, se devo programmarlo li metto su OFF e isolo i pin dal circuito stesso, facile no? :wink:

Grazie!
no, non sapevo che i pin analogici potessero essere usati come digitali, buono a sapersi :smiley:
Il discorso jumper o dip switch è validissimo.. questa volta penso che comunque li lascerò di proposito liberi, arrivo dal pic16 e su questo bel 328 ci sono un sacco di pin disponibili!
Il capitolo integrativo è incluso nella tua guida? pag 26,56 e 76?

sì, sono le pagine in cui si parla espressamente di IDE 1.0.1, soprattutto le 76-77.
Se in futuro ti servissero bestiole più grandi del 328P non hai che da chiedere, qui abbiamo programmato, con la stessa tecnica anche i mega644P e 1284P (64k/128k flash e 40 pin totali a testa XD).

ahaha ad ora mi spaventa solo il pensiero!
comunque procedo con lo standalone, deciso.. quell'assorbimento per me rappresenta uno scoglio da sorpassare obbligatoriamente!
Grazie ancora

Figurati, buon proseguimento :slight_smile:

Ciao Michele, scusa il disturbo innanzitutto, se posso chiederti avrei bisogno di qualche chiarimento..
Ovviamente il messaggio e' indirizzato a tutti gli utenti, non solo a Michele che gentilmente mi ha dato una gran mano.

Sto realizzando su eagle 2 progetti, uno riguarda il pcb finale, quindi atmega328au (32pin come quello del nano) con tutta la componentistica necessaria al funzionamento, oled etc etc e connettore ISP su pin riservati che non mi servono (;)) e uno da "laboratorio", un semplice pcb che mi servirà per caricare il bootloader all'interno del 328au vergine, quindi come la chiami tu, una board standard corredata di oscillatore 16MHz, 2 condensatori, pensavo a 18pF, led e resistenza e connettore ISP.
Non potendo comprare il proibitivo adattatore tqfp ho pensato alla realizzazione di questo pcb, anche se non molto pratico cmq.. si tratta di saldare e dissaldare una volta il micro nuovo.
Avrei qualche dubbio nel procedimento: programmo l'arduino uno come ISP programmer, connetto il mio pcb "standard" all'uno, e carico il bootloader dell'arduino nano (primo dubbio) nel 328 vergine?
Dopodiche' dovrei creare la board virtuale per farlo girare a 1Mhz, posso usare l'esempio nella tua guida atmega standalone @ 1Mhz anche per il 328au 32pin?
Posso quindi montare il micro con bootloader del nano sul mio pcb finale e caricare lo sketch via connettore ISP --- Arduino uno as ISP programmer? Leggevo pero' che al caricamento di uno sketch il bootloader si cancella, sbaglio vero?? se cosi fosse tornerebbe al default? Ho bisogno di mantenere 1MHz di freq.

Scusate la lungaggine come sempre.. ma e' il primo standalone e spero di investire tempo in qualcosa di funzionale xD

grazie anticipatamente,
Enzo

Se il chip è vergine, ossia arriva direttamente dala fabbrica, è già di serie preimpostato a 1 MHz. Devi solo scrivere il tuo sketch, non serve che tu faccia la preventiva scrittura del bootloader per impostarlo a 1 MHz. Salta questo passaggio ed invia direttamente il programma (compilato ovviamente con board a 1 MHz)

a siiiiiiiii :smiley: :smiley: :smiley: ???????? e allora perche' tutta la procedura descritta nella guida?
mi hai allietato la serata, un pcb in meno

La guida copre una serie di casistiche, poi sta alla persona adattarla al proprio caso.
Se il chip è vergine, è già impostato a 1MHz, è inutile che tu gli flashi sopra il bootloader per impostarlo ad 1 MHz, :wink:
Non è detto però che il secondo PCB non ti serva: ad esempio, se hai un chip impostato per lavorare col quarzo esterno, se glielo levi poi NON riuscirai a programmarlo in nessuna maniera. Ti serve obbligatoriamente una fonte di clock esterna, quindi il PCB diventa indispensabile.

Però la procedura per programmarlo via ISP quella va sempre bene: sketch ArduinoISP sulla Uno, collegamenti, invio sketch.

Evolve:
a siiiiiiiii :smiley: :smiley: :smiley: ???????? e allora perche' tutta la procedura descritta nella guida?
mi hai allietato la serata, un pcb in meno

Scusami carissimo, è come pretendere, alla fine della lettura della ricetta per trasformare un uovo fresco in uovo fritto, di trovare una postilla del tipo: "attenzione, se il vostro uovo è già fritto non lo dovete friggere di nuovo" :grin:
Battute a parte, nella guida è spiegato che l'operazione del bootloader serve per settare i fuse, a me è sembrato ovvio non dover specificare che se i fuse fossero già settati (nel tuo caso chip vergine a 1MHz) l'operazione diventa inutile; quella operazione è spiegata per chi possieda un chip settato a 8 o 16MHz e lo voglia "riportare" a 1MHz. Mi spiace se l'equivoco ti abbia fatto perdere del tempo.

La mia non vuole essere una domanda "irriverente", ho letto la guida e probabilmente ho saltato quella frase fondamentale dove c'e' scritto, un atmega328 nuovo esce di default per funzionamento ad 1MHz.
Mea culpa assoluta! vi ringrazio ancora per i preziosi consigli e suggerimenti!!!!!

Evolve:
probabilmente ho saltato quella frase fondamentale dove c'e' scritto, un atmega328 nuovo esce di default per funzionamento ad 1MHz.

Si, l'hai saltata, ma ... nel leggere il datasheet ... ]:smiley: ]:smiley: ]:smiley:

... pagina 27, punto 9.2.1, Default Clock Source :

The device is shipped with internal RC oscillator at 8.0MHz and with the fuse CKDIV8 programmed, resulting in 1.0MHz system clock. The startup time is set to maximum and time-out period enabled. (CKSEL = "0010", SUT = "10", CKDIV8 = "0"). The default setting ensures that all users can make their desired clock source setting using any available programming interface.

Guglielmo

Non si contraddice di sicuro, il nostro caro Guglielmo, quando in firma scrive:
Search is Your friend ... or I am Your enemy !

Guglielmo non voglio essere tuo enemy! xD
Avete ragione, spero di rientrare ancora nella vostre grazie, per i suggerimenti ovviamente! :blush:

:grin: :grin: :grin: :grin:

Guglielmo