Arduino Nano + NRF24L01 problema con alimentazione NiCd

Salve a tutti,

sto facendo un progetto per l'università, sto usando un arduino Uno (connesso al pc per vedere i dati dal serial monitor) come ricevitore usando un modulo nrf24l01 con PA e LNA (alimentato a 5V usando un breakout adapter 3.3V).

Il trasmettitore è un arduino nano che invia i dati con un modulo nrf24l01 senza PA, né LNA né un breakout adapter, ma connesso con capacitore da 10uF tra Vcc e Gnd, l'alimentazione è fornita da due pacchetti di batterie NiCd da 3,6V ciascuno (nichel-cadmio perchè volevo un'alimentazione che fosse ricaricabile), i dati che legge e invia all'arduino Uno sono di 4 FSRs (force sensitive resistors) collegati in serie a un ingresso analogico, tutte queste parti sono chiuse in una scatoletta compatta perché il trasmettitore dev'essere il più piccolo possibile e autonomo. (i trasmettitori che lavorano sono due, inviano i dati dei 4 FSRs, uno alla volta evitando l'invio simultaneo dei dati).

Ho usato un modulo nrf24l01+ (con PA e LNA) per il ricevitore e invece un nrf24l01 "normale" per il trasmettitore per questioni di spazio, il ricevitore può essere grande quanto voglio mentre il trasmettitore dev'essere il più piccolo possibile. A livello di compatiblità non so se è il massimo per raggiungere distanze elevate, però da test che ho fatto amatorialmente questa combinazione è quella che mi dava i risultati migliori.

Per quanto riguarda l'alimentazione del trasmettitore, per fare in modo che i due pacchi di pile siano ricaricate quando l'arduino nano è alimentato tramite usb, sono collegate in questo modo: un pacchetto ha il "-" collegato al GND della scheda e il "+" a un pin digitale impostato come HIGH, per far si che arrivi a 5V circa e quindi superando il voltaggio di 3.6V del pacchetto batteria lo ricarichi. Il secondo pacchetto invece ha il "-" collegato al GND (ma solo durante la ricarica), e il "+" al Vin della scheda. Quando l'arduino nano è collegato ai 4 sensori FSRs le pile vanno in serie e alimentano la scheda.

Immagino che il metodo di ricarica non sia il migliore per il tipo di batterie che utilizzo, (però è l'unica soluzione che ho trovato che fosse compatta e ricaricabile, se esistesse qualcosa di così compatto, un pacchetto è 2cmx1cmx1cm circa, anche non ricaricabile ma più efficiente mi andrebbe bene).

I problemi maggiori sono 2: le batterie si scaricano molto velocemente (anche appena comprate e utilizzate) non so se dovuto dal modulo nrf24l01 o dal circuito non corretto, dopo circa 3-4 minuti il voltaggio crolla significativamente.
Inoltre ho raggiunto non più di 30m come distanza massima che il trasmettitore può raggiungere dal ricevitore, vorrei raggiungere almeno 100m (da fabbrica l'nrf24l01+ promette 1000m e l'nrf24l01 250m circa) visto che li utilizzo in campo aperto.

Allego uno schema fatto al volo del circuito usato per il trasmettitore (arduino Nano).

Questi invece i "settaggi" dei moduli nrf24l01 sia per arduino Uno che Nano:

void setup()  
{
  radio.begin();
  radio.setPALevel(RF24_PA_MAX);
  radio.setChannel(108);
  radio.setDataRate(RF24_2MBPS);  
  radio.openReadingPipe(1, 0xF0F0F0F0AA);  (radio.openWritingPipe(0xF0F0F0F0AA); nel codice del trasmettitore 1)
  radio.openReadingPipe(2, 0xF0F0F0F066);  (radio.openWritingPipe(0xF0F0F0F066); nel codice del trasmettitore 2)
  radio.startListening();
  
}

Grazie,
Luca.

Buongiorno,
essendo il tuo primo post, 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 ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Ciao!

Scusami hai ragione,
sono un neofita non avevo letto.

Grazie,
Luca.

lucalaz:
dopo circa 3-4 minuti il voltaggio crolla significativamente.

:o
Ma le batterie da quanti mAh sono? E che età hanno?
Io sospetto un problema elettrico ma potrebbe essere che stai utilizzando un bottone o delle batterie morte.

Innanzitutto grazie per avermi risposto e letto il papiro che ho scritto!

Le batterie sono da 40mAh ciascuna, comprate nuove al negozio di elettronica (mi sono sbagliato, non sono NiCd ma Ni-MH).

Non so se può influire sulla durata delle batterie, ma nel codice arduino i due pin (ai quali son collegati i "+" delle batterie) sono sempre settati su HIGH, non solo durante la ricarica ma anche quando leggono e inviano i dati.

Non mi tornano i conti. Una NiMh a piena carica mi pare sia 1.4V, ne metti in serie due e hai 2.8V ma tu parli di 3.6, non è che hai una LiPo?

Non sono un esperto elettronico ma il circuito di ricarica non mi convince. Inoltre non ho capito da dove vengono i 5V per Arduino a partire dai 3.6 o 2.8V, usi un DC-DC, cioè una board che genera i 5V a partire da tensioni inferiori?

Scusa forse non ho spiegato bene nel post,
un pacchetto batteria è composto da 3 molto piccole "pile bottone" da 1.2V l'una, impilate una sopra l'altra. Quindi un pacchetto è da 3.6V (in realtà completamente carico arriva a 3.9V circa), io ne uso 2, collegati in serie quando utilizzo arduino per inviare i dati dei FSR, mentre quando le ricarico (anch'io credo non vada benissimo il modo in cui le ricarico) sono indipendenti e quindi un pin da 5V superando il voltaggio del pacchetto lo ricarica.

Per adesso lasciamo perdere la ricarica.

Come alimenti il nano?

Il Nano va a 5V (il pro mini a 8MHz va a 3.3V), se lo alimenti a tensioni inferiori dovrebbe andare lo stesso ma il datasheet dice che con tensioni inferiori dovrebbe usare clock inferiori


2 bottoni da 1.4V in serie fanno 2.8, dovresti andare a 10MHz. Poi c'è gente che è riuscita a far funzionare dei pro mini 16Mhz alimentandoli a 3.3V ma non so cosa succede ai consumi e non so per quanto tempo.

Hai verificato il consumo del trasmettitore con antenna e tutto il resto?
Ho letto in giro che rf24l01 con PA e LNA in trasmissione può consumare non meno di 110mA + arduino e tutto il resto, non è poco per batterie da 40mAh.
Verò, però, che 3 minuti di autonomia sono decisamente pochi per cui ci sarà sicuramente qualche anomalia in giro.

Quando devi ricaricare le batterie devi cambiare l'impedenza dei pin portandoli da input a output e anche modificare fisicamente il circuito con dei jumper, dei connettori, degli switch di qualche tipo giusto?
E poi riportare tutto come prima una volta ricaricato per ripartire con il lavoro.

I test di carica, presumo, tu li abbia fatti con caricamento esterno tramite dispositivi appositi, giusto per essere sicuri della corretta piena carica?

Diciamo che ci sono tanti fattori casuali che potrebbero intervenire in una soluzione di questo tipo per poter fare una diagnosi affidabile senza monitorare in modo preciso le varie condizioni di test.

Io ancora non ho capito se l'Atmega328 alimentato dalle batterie vada a 5V o meno, con 2 sole batterie hai massimo 2.8V (quando sono cariche cariche dovrebbero essere a 1.4V), forse anche per pochi minuti.

La soluzione sarebbe una LiPo da caricare opportunamente e un Arduino a 3.3V. La LiPo sarebbe da ordinare perché dubito che si possa trovare in negozio in Italia. Forse in quelli da modellismo.

Grazie per le risposte!

L'arduino Nano che ho va a 5V, ed è alimentato da 7.2V dati da due pacchetti batteria in serie da 3.6V ciascuno (composti ciascuno da 3 pile da 1.2V l'una).

Non ho verificato il consumo di arduino con NRF24L01 (nel nano non ho PA ne LNA quindi consuma un pò meno), perchè non so come si faccia, dovrei provare a farlo, provo a guardare in internet.

Per quanto riguarda la ricarica, fino a ieri lasciavo sempre l'impedenza dei pin a HIGH, quindi impostati come output (per non stare a cambiare ogni volta il codice dell'arduino nano), anche quando l'arduino leggeva e inviava i dati (oggi ho provato a lasciare i pin come input mentre "lavora" e ad impostarli output solo per la ricarica, ma non ho notato nessuna differenza di durata della batteria). Durante la ricarica uso dei connettori in modo da avere le due batterie indipendenti e non più in serie (unico dubbio è per una delle due batterie che rimane sempre attaccata al VIN dell'arduino nano, si ricarica però non vorrei si danneggiasse la batteria, potrei fare in modo che quella batteria si colleghi al VIN solo quando arduino "lavora").

Non ho fatto alcun test di carica con dispositivi esterni, sono davvero ignorante in materia, semplicemente controllo la tensione ai capi del pacchetto batteria che so dev'essere 3.6V (carica al massimo sono arrivato a leggere anche 3.9V).

Avevo pensato a delle LiPo e potrebbero essere una soluzione, però hanno diversi problemi:
sono più grosse delle NiMH che sto usando, sono da 3.7V quelle "piccole" quindi dovrei utilizzare un arduino nano da 3.3V che per l'NRF24L01 non è un problema ma per gli FSR non è il massimo, oppure usarne 2 in serie arrivando a 7.4V ma aumenterebbe il problema grandezza, infine per caricarle serve un dispositivo apposito quindi ogni volta per ricaricarle devono essere scollegate da arduino nano. Però se non ne vengo a capo con le NiMH penso siano l'unica soluzione.

La tua soluzione è il Torpedo ... attacchi la batteria LiPo, quando serve attacchi la USB/il Jack (che ricarica la batteria e alimenta anche l'uscita) e lui ti genera comunque in uscita una tensione stabile di 5V.

Guglielmo