Batteria tampone e segnalazione quando entra in funzione

Ciao a tutta la comunità, ho un problema che non riesco a risolvere, ho collegato all’arduino una batteria tampone da 4.2 , quando l’alimentazione principale, fornita dalla USB viene a mancare , mi dovrebbe segnalare l’entrata in funzione della batteria tampone, che ho collegato a Vin, ma questo non accade, con arduino alimentato a 4.2 non ottengo il risultato sperato , credo che il motivo sia la mancanza di una tensione di riferimento (AREF) , come posso risolvere, hardware o software ?
( dal positivo a A0 , le ho provate tutte, resistenze da 10K a 47K , diodo, condensatori )

int valore;  //dichiaro la variabile valore che memorizzerà il valore dato dal convertitore analogico-digitale

const int led2 = D2;
const int led1 = D1;

void setup()
{
  Serial.begin(115200);
  Serial.println();


  pinMode(led2, OUTPUT);
  pinMode(led1, OUTPUT);
  delay(10);
}
void loop()
{
  delay(100); //aspetto(100 millisecondi);
  digitalWrite(led2, LOW);
  digitalWrite(led1, LOW);
  sireteu();


}

void sireteu () {
  int sensorValue = analogRead(A0); //Leggo il valore analogico alla porta A0 e lo metto dentro "valore"
  float valore = sensorValue * (5.0 / 1023.0);
  Serial.println(valore);
  if (valore < 5.0) //se valore minore di 5V allora....
  {
    digitalWrite(led2, LOW);
    digitalWrite(led1, HIGH);
    sireteu();
  }

  else {
    sirete();

  }
}


void sirete () {
  int sensorValue = analogRead(A0); //Leggo il valore analogico alla porta A0 e lo metto dentro "valore"
  float valore = sensorValue * (5.0 / 1023.0);
  Serial.println(valore);
  if (valore < 4.0) //se valore minore di 4V allora segnalo batteria scarica
  {
    digitalWrite(led1, LOW);
    delay(200);
    digitalWrite(led2, HIGH);
  }


}

Non indichi che scheda stai usando, quindi assumiamo un Arduino 'standard'. Non puoi alimentare con quella tensione da Vin, Vin è posto a monte del regolatore di tensione, quindi richiede una tensione maggiore di 6V per regolare funzionamento. E questo è già un primo problema. Poi vai a leggere con l'ADC collegato in pratica alla tensione di alimentazione, e questo è il secondo errore, essendo la tensione di alimentazione anche il reference di default dell'ADC, quindi mi aspetto che tu legga sempre 1023 o giù di li.
Inizia con il sistemare queste cose, poi vediamo il resto.

Ciao, Ale.

Ciao Ale,
esatto

( Poi vai a leggere con l'ADC collegato in pratica alla tensione di alimentazione, e questo è il secondo errore, essendo la tensione di alimentazione anche il reference di default dell'ADC, quindi mi aspetto che tu legga sempre 1023 o giù di li. )

il mio problema è proprio questo e non riesco a trovare una soluzione

schede per il test : Arduino uno e wemos d1 mini

Hint : partitore di tensione e analogReference().

Ciao Ale.

genovese64: ... perdona ma .. mi accorgo solo ora che tu, pur essendo un vecchio utente del forum :), NON hai mai inserito la tua presentazione nell'apposito thread, per cui, come scrivo a tutti ... nel rispetto del regolamento della sezione Italiana del forum (punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO (... che, in tutti questi anni, è parechhio cambiato)... Grazie mille :wink:

Guglielmo

Scusami Guglielmo , ero convinto di averlo fatto anni fa, ho subito provveduto

Ciao
Poiché vuoi fare misure della tensione di alimentazione, non puoi usare la tensione di riferimento presa dall'alimentazione stessa! Devi selezionare le tensione di riferimento interna a 1,1V (+/-10%):
analogReference (INTERNAL);

Inoltre non puoi aggiungere brutalmente una batteria al litio ad Arduino Uno senza modificare il circuito, perché bisogna commutare le alimentazioni.

genovese64:
il mio problema è proprio questo e non riesco a trovare una soluzione

Per Arduino (UNO, MEGA, Leonardo, ... vecchi AVR) la soluzione c'è ed è molto semplice ... si usa il "voltmetro segreto" :smiley: ... cerca su Google "arduino secret voltmeter" e troverai un'infinità di esempi e spiegazioni :wink:

NON so se cosa simile esista invece ESP ... ma non credo ... ::slight_smile:

Guglielmo

Guarda, colleghi un led: anodo al + della pila catodo al + alimentazione
Alimentatore attivo diodo interdetto
Alimentatore non attivo diodo sarebbe in conduzione, ma forse il circuito è aperto
Per garantire la conduzione metti resistenza di valore elevato 4k7 ad esempio tra + alimentatore e gnd

Fare due conti per confermare valori corrente e il gioco è fatto

Uh???...!!!

Per ottenere una segnalazione

Diverso sarebbe rilevare da arduino la presenza o assenza e far fare qualcosa ad arduino

posta uno schema di come hai collegato la batteria ... che magari c'e' una soluzione migliore ... :wink:

Con Arduino Uno, senza modificare il circuito, credo che si possa solo usare uno di quei power bank che permettono di essere usati come gruppi di continuità (molti tolgono tensione all'uscita durante la carica).

Standardoil:
Guarda, colleghi un led: anodo al + della pila catodo al + alimentazione
Alimentatore attivo diodo interdetto
Alimentatore non attivo diodo sarebbe in conduzione, ma forse il circuito è aperto
Per garantire la conduzione metti resistenza di valore elevato 4k7 ad esempio tra + alimentatore e gnd

Fare due conti per confermare valori corrente e il gioco è fatto

Il Tuo suggerimento é errato. Non puoi mettere MAI un LED senza un dispositivo di limitazione corrente.
Ciao Uwe

Metterei la batteria con un diodo skottky sul pin 5V. Il diodo col anodo verso la batteria.
Cosí alimenta Arduino quando mancano i 5V dal USB.

D'altra parte la tensione sotto i 4V é fuori specifica per un Arduino UNO a 16Mhz.

La comutazione si piú verficare con il Voltimetro segreto come Ti é giá stato segnalto. In pratica misuri la tensione di riferimento interna e a secondo della tensione di aliemtnazione che fa da rifeimento per il ADc avrai una lettura diversa. Da questo puoi calcolare la tensione di alimentazione.

Come detto un Power pack potrebbe essere la soluzione migliore.
Ciao Uwe

Arduino Uno non prevede una batteria di backup. Qualcuno, però, dovrebbe averne inventato una versione apposita (roba ittica...) :slight_smile:

uwefed:
Il Tuo suggerimento é errato. Non puoi mettere MAI un LED senza un dispositivo di limitazione corrente.
Ciao Uwe

Errato:

C'è scritto, e tu hai citato:

Fare due conti per confermare valore corrente

Secondo me significa:
Controlla il dimensionamento della resistenza della quale ti ho messo il valore

Poi senza uno schema... di più non potevo dire

Premesso che per alimentare il tutto a batteria sarebbe meglio non passare dal regolatore a bordo di arduino ... vedrei un sistema del genere, per avere la garanzia di un funzionamento continuo (tipo "ups-fai-da-te", se non si vuole usare una delle tante schede gia disponibili tipo conrad, industrialshields, circuitcrush ed altre simili) ...

batteria litio o pacco batterie Ni-MH o piombo (quello che si preferisce), connessa ad arduino tramite un piccolo convertitore dc-dc (anche qui, scelto adatto al tipo di batteria) che fornisca direttamente i 5V stabilizzati e ben filtrati (suggerisco il convertitore perche' cosi si puo sfruttare al meglio la batteria, e se si usa un buck-boost o sepic, anche quando la tensione di batteria va sotto quella necessaria) ... alla batteria, connesso anche un secondo circuito di carica (scelto in base al tipo di batteria desiderata) che la mantiene ad una carica ottimale, oltre a fornire energia anche al convertitore dc-dc quando la rete e' presente ... poi, a piacere, un sistema, che potrebbe perfino essere un fototransistor sul led dell'alimentatore, se non ci fosse nulla di meglio, per "dire" ad arduino se l'alimentatore e' acceso o spento, in modo che sappia quando va a rete e quando a batteria ...

E' quasi piu difficile scriverlo che assemblarlo ... :wink:

Prima di tutto,grazie per i consigli,

Il mio Wemos collegato così non ha nessun problema a funzionare, ( ho fatto una piccola modifica sulla schedina che ricarica la LIPO, un diodo ) staccando USB continua a funzionare senza nessuna anomalia.
Il grosso problema che la Wemos non dispone del (AREF) e se è l'unica soluzione, mi sa tanto che dovrò studiare lo schema e modificare la Wemos, speravo in qualche scappatoia via software.

Quel link a me rimanda all'interno del tuo account, per cui chiede la tua password (che ovviamente noi non possiamo avere) ... se vuoi pubblicare immagini le devi mettere in area pubblica, oppure caricarle prima su un host di immagini (ad esempio, imgur.com, o roba simile) ... :wink: