Sensori analogici e lowpower

Ciao a tutti,
vorrei utilizzare un sensore analogico con la libreria lowpower. L'ho già utilizzata con i sensori digitali, accendendo e spegnendo i pin di alimentazione per ottenere il massimo risparmio energetico, ma nel caso dei sensori analogici devo alimentarli con il pin Vcc. Come posso gestirlo? Posso accenderlo e spegnerlo o devo rassegnarmi e alimentare continuamente il sensore? L'idea è quella di svegliare arduino ogni 10 minuti...

Piazzi un bel transistor tra l'alimentazione e il sensore/sensori, lo piloti con un pin digitale, prima di andare in sleep spegni il transistor (tendenzialmente portando a LOW il pin di controllo) e hai risolto

grazie! Però non ho transistor a disposizione, non esistono altri modi per risolvere il problema? non si può gestire l'alimentazione del sensore analogico in altri modi?

Di che sensori stiamo parlando? metti il link al datasheet del sensore in uso se possibile

E' un sensore per misurare i la quantità di solidi disciolti in acqua (TDS):

https://www.dfrobot.com/product-1662.html?search=tds&description=true

https://wiki.dfrobot.com/Gravity__Analog_TDS_Sensor___Meter_For_Arduino_SKU__SEN0244

Sto provando ad alimentarlo con un PIN digitale (pin HIGH, leggi analogico, pin LOW), ma non ottengo il valore corretto..

A questo punto mi sa che devi attendere l'intervento di qualcuno che sia più esperto su questo fronte.
Il sensore in oggetto consuma 6ma quindi rientra nel range della massima corrente erogabile da un pin.
Il fatto che tu non ottenga un valore corretto potrebbe dipendere (forse) dal fatto che dopo esere stato alimentato ha necessità di un intervallo di tempo per leggere correttamente il valore oppure che la lettura dal pin analogico avvenga senza dar tempo al condensatore dell'Adc di caricarsi a seguito dello sleep.
Giusto per fare una prova se al risveglio della MCI fai una cosa del tipo:

delay(1000);
analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin); 
analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin);

Ottieni il valore corretto? Se no aumentando a due,tre,cinque,dieci secondi l'atesa ottieni il valore corretto?

ho provato ad escludere la funzione sleep, e ad aumentare i tempi, seguendo il tuo suggerimento.

Ho inoltre provato ad utilizzare diversi liquidi, e il problema è nel fatto che non solo il valore non è corretto, ma non varia al variare del liquido. Forse è concettualmente sbagliato sperare di alimentare in questo modo il sensore?

Non sarei cosa dirti, se torni ad alimentare il sensore dal pin +5V e ad un certo punto lo stacchi, aspetti qualch secondo e lo riattacchi leggendo di continuo i valori in questo modo dopo averlo alimentato di nuovo i valori tornano ad essere normali? Se si allora hai la risposta che cercavi, ovvero alimentarlo dal pin non puoi e ti servirà un transistor. Questo almeno è ciò sono in grado di dirti, quel sensore non lo conosco proprio

Sto usando una MKRWAN1300, alimentando da Vcc funziona bene, da pin no, però questo schema mi indica che si potrebbe fare:

In ogni caso ti ringrazio! Aspetto eventuali ulteriori pareri, per provare a capirci qualcosa di più!

Purtroppo su internet si trova un sacco di schemi e guite che sono un vero immondezaio (Es. led colleagti senza resistenza, ecc.) quindi bisogna sempre andarci cauti con quel che si trova. Magari in questo caso all'utente funzionava e potrebbe essere un modo corretto di procedere... ma non so dirlo :slight_smile:

La MKR monta un SAMD21, i pin sono a 3.3V e non sono in grado di alimentare nulla …
… le alimentazioni si mettono e si tolgono controllando un transistor (… personalmente perefisco un MOSFET) che fa da interruttore e accende e spegne ciò che va acceso/spento.

Guglielmo

È sbagliato usare dei pin di segnale come alimentazione di circuiti. Non sono fatti per questo.

Poi ha senso mettere in sleep un MKRWAN1300. Si riduce la corrente in modo significativo?

Ciao Uwe

Ecco vedi, sono stato pigro e non ho approfondito le specifiche della scheda indicata nel post #8 errore consegunte al primo errore di non chiedere che scheda stesse usando l'OP

Ho fatto lo stesso con delle schede MKRFOX1200 e stanno lavorando perfettamente da 8 mesi. Diversamente la batteria sarebbe già terminata. In quel caso ho utilizzato sensori digitali alimentati dai pin. In questo caso sto replicando il lavoro utilizzando la rete LoRaWAN anziché SIGFOX e aggiungendo questo sensore analogico. Non ho transistor e devo fare tutto entro questa settimana. Mi aspettavo di poter gestire il pin allo stesso modo, ma così non sembra possibile. Vorrei allora capire se la libreria lowpower, in realtà, mi aiuta a gestire questo aspetto (spegnere e accendere Vcc). Potete aiutarmi? grazie!

La libreria lowpower non può nulla su un pin che è collegato direttamente alla fonte di alimentazione, come ti ha ribadito Guglielmo al post #10 l'unica via è il transistor

grazie mille, ora è chiaro

Ti ribadisco che i SAMD21:

  1. erogano pochissima corrente sui pin (pochi mA), assorbimenti più alti possono danneggiarli o danneggiare la MCU.

  2. I pin NON sono nati per "alimentare" oggetti e lo fai a tuo rischio e pericolo (anche di malfunzionamenti).

  3. il Vcc NON si può controllare ... è l'alimentazione, o la metti o la levi.

  4. le varie cose si accendono e si spengono usando o BJT o MOSFET (... mio semiconduttore preferito), ma NON direttamente da pin.

Detto questo, le schede sono tue, fai un po' tu ... noi ti abbiamo avvisato ... ::slight_smile:

Guglielmo

grazie. potete indicarmi quale modello di transistor scegliere? anche un link andrebbe bene. Grazie!

Mah ... penso che, se vuoi stare sui BJT, un semplice BC337 dovrebbe andare ... ::slight_smile:

Guglielmo

grazie!