[ITA] Problema sensore corrente/tensione con esp32

Ciao a tutti, sono nuovo in questo forum, perciò perdonatemi se farò qualche errore.
Ho un esp32 di az delivery a casa, che volevo utilizzare, programmando con l'ide di arduino, per sapere le informazioni di un piccolo fotovoltaico che avevo realizzato a scopi didattici. Ho così comprato dei sensori ACS712 per la corrente e tensione da 0-25V DC, per leggere i valori in analog read per poi interfacciarli sulla piattaforma di Blynk. Sembra funzionare tutto, ma riscontro un problema con i due sensori. Controllando dall'interfaccia di blynk il sensore di corrente da valori incredibili, senza collegarci nulla, mentre il sensore di tensione applicando 3,3v fa lo stesso errore di quello di corrente.
Ovviamente nel codice sono state fatte le dovute operazioni per quanto riguarda la sensibilità dei sensori stessi per avere un risultato accurato. E' un problema dell'esp32 che non accetta input o quale potrebbe essere il problema?

In attesa di una risposta, grazie mille.
Davide.

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

1 Like

A quanto detto da UKHeliBob aggiungo ...

... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

1 Like

Se metti uno schema dei collegamenti che hai fatto e, magari, anche il codice che stai utilizzando (mi raccomando, racchiuso tra gli appositi TAG CODE), sicuramente dai maggiori informazioni a chi vuole aiutarti :wink:

Guglielmo

Come posso pubblicare lo schema dei collegamenti? Scusami, ma sono neofita.
Davide

Guarda, va bene anche se fai un disegno su carta, purché siano chiari i vari collegamenti (incluse le alimentazioni) ... poi lo fotografi (foto nitida) e alleghi la foto :wink:

Guglielmo


Ho cercato di realizzarla nel miglior modo in cui potevo con Paint, spero si capisca.

Per quanto riguarda il codice ecco qui:

/*************************************************************

  You’ll need:
   - Blynk IoT app (download from App Store or Google Play)
   - ESP32 board
   - Decide how to connect to Blynk
     (USB, Ethernet, Wi-Fi, Bluetooth, ...)

  There is a bunch of great example sketches included to show you how to get
  started. Think of them as LEGO bricks  and combine them as you wish.
  For example, take the Ethernet Shield sketch and combine it with the
  Servo example, or choose a USB sketch and add a code from SendData
  example.
 *************************************************************/

// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID ""
#define BLYNK_DEVICE_NAME ""
#define BLYNK_AUTH_TOKEN ""


// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial


#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>

//#include <string>
    
    unsigned long last_time =0;
    unsigned long current_time =0;
    double watth=0;
    double kwh=0;
    int voltpv=18;
    double wattmax=0;
    double co2evitata=0;
    double risparmio=0;
    double ampere=0;
    double voltaccumulo=0;
    double watt=0;
    float sensibilitasensorecorrente=0.066;
    


char auth[] = BLYNK_AUTH_TOKEN;

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "";
char pass[] = ";

BlynkTimer timer; 


void setup()
{
  // Debug console
  Serial.begin(115200);

  Blynk.begin(auth, ssid, pass);
  // You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
  //timer.setInterval(1000L, myTimer); 
  ;
}

void loop()
{
  Blynk.run();
  //timer.run(); 
  // You can inject your own code or combine it with other sketches.
  // Check other examples on how to communicate with Blynk. Remember
  // to avoid delay() function!

  //voltaggio accumulo
  float v=analogRead(34);
  voltaccumulo=map(v, 0, 1023, 0, 12000);

   
   //voltaccumulo=13.2;

  //ampere
  float voltaggiosensorecorrente=analogRead(21)*(5.0/1023.0);
  ampere=(voltaggiosensorecorrente-2.5)/sensibilitasensorecorrente;
  watt=ampere*voltpv;
   
    //campionamento=campionamento/40;
    /* float tensione=(5.0/1023.0)*campionamento;
    float v2=tensione-(0.5*5.0)+0.012;
    float corrente=v2/0.066; */

    

   
   if(watt>wattmax)
      wattmax=watt;
      
    //calcolo kwh, risparmio e co2
    if(watt>0){
   last_time=current_time;
   current_time=millis();
   watth=watth +  watt *(( current_time -last_time) /3600000.0); // calculate power in Watt-Hour // 1 Hour = 60mins x 60 Secs x 1000 Milli Secs
   kwh=watth/1000;
   co2evitata=kwh/0.7;
   risparmio=kwh*0.32;
   }

   //lettura voltaggio accumulo
   /* float temp;
   float vletto=analogRead(34);
   temp=vletto/0.86;
   vletto=(int)temp;
   voltaccumulo=((vletto*100)/10); */

  



   Blynk.virtualWrite(V3, voltaccumulo);
   Blynk.virtualWrite(V2, ampere);
   Blynk.virtualWrite(V1, watt);
   Blynk.virtualWrite(V4, wattmax);
   Blynk.virtualWrite(V5, kwh);
   Blynk.virtualWrite(V6, co2evitata);
   Blynk.virtualWrite(V7, risparmio);
   //Blynk.virtualWrite(V4, ReportAccumulo);

}

Ci sono un bel pò di commenti, questo perché sto facendo varie prove per capire come organizzare il tutto. Alcune variabili non centrano nulla con i sensori, solo per lo sfizio personale di organizzare una piccola pagina con Blynk per avere qualche informazione in più, per completezza.

Davide

Scusa, quella è praticamente una ESP32 Node MCU, per cui ...

...dove vedi che GPIO21 può essere usato come ingresso analogico?

Io, dal pinout, non lo vedo ... :roll_eyes:

Guglielmo

E come faccio a capire quali sono gli ingressi analogici dalla foto? Avevo già provato a cercarmi i pinout ma non ne capisco molto... son proprio alle prime armi :sweat_smile:

Davide

Beh, intanto porpiro perché sei alle prime armi, devi subito imparare a conoscere gli oggetti che usi, quindi ... prenditi il datasheet del ESP32 e almeno dai uno sguardo, se non hai dettagli di funzionamento, almeno alla sua struttura, a cosa contiente e a quali sono le varie porte e i vari pin.

Nell'immagine del pinout della tua scheda vedrai una serie di pin cha hanno funzione di ADC ... ADC è acronimo di Analog to Digital Converter, quindi ... sono i possibili ingressi del convertitore analogico digitale che effettua le conversioni.

Guglielmo

Ho controllato il pinout e la documentazione e ho collegato ai pin ADC come da te descritto. Purtroppo il comportamento dei due sensori rimane uguale, allego la foto dei risultati :

image

Come puoi vedere il primo valore sono gli ampere (com'è possibile 164 se non c'è collegato nulla e se sarebbe dichiarato max 30A il sensore? Il secondo risultato invece riguarda i watt, quindi a*18v ed il risultato è corretto. Quindi deduco che ci sia un problema nel sensore... L'ultimo dato (0) è il sensore di voltaggio, ma non ho modo di testarlo ora.

Davide

Ma hai misurato il valore in uscita dal sensore con un multimetro? Cosa leggi?

Guglielmo

Sì, misura circa 2.30 volt quello di corrente mentre quello di tensione 0 volt.

Davide

... se misuri con un multimetro hai 0V? :open_mouth:

E comunque non capisco che diavolo di sensore sia ... se è un semplice partitore resistivo, perché è alimentato? Se non lo è ... cosa è?

Hai un link al sensore che hai acquistato in cui spiegano cosa vuole in ingresso e cosa da in uscita?

Fino a quando non misuri correttamente, con un multimetro, i valori in uscita sui due sensori ... è inutile che metti le mani sul ESP.

Guglielmo

L'ho acquistato da qui. Il progetto l'ho visto da qualche video online su youtube, che usavano fra l'altro l'esp 32.

Questo è l'az Delivery esp32 che ho io:
https://www.amazon.it/AZDelivery-NodeMCU-Development-Arduino-gratuito/dp/B071P98VTG/ref=sr_1_1_sspa?__mk_it_IT=ÅMÅŽÕÑ&crid=O8Z5HEWRBYNJ&keywords=esp32&qid=1665149157&qu=eyJxc2MiOiI1LjQzIiwicXNhIjoiNC42NiIsInFzcCI6IjQuMTMifQ%3D%3D&sprefix=esp32%2Caps%2C104&sr=8-1-spons&smid=A1X7QLRQH87QA3&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExMlM0TjlRUkdLWUVKJmVuY3J5cHRlZElkPUEwOTQ1NDUxQk5VRk5BNkkzOUlWJmVuY3J5cHRlZEFkSWQ9QTA2MzEwNTcxV1FBRE9YUVkxMDMzJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ&th=1

Mah ... mistero, non capisco a che serva fornirgli alimentazione ... è un volgare partitore resistivo che dovrebbe dividere per 5 la tensione in ingresso (alcune recensioni dicono che NON è vero e che divide per 6.5 ... bisognerrebe leggere esattamente il valore delle due resistenze).

Comunque, ripeto, lascia stare il ESP finché non hai letture che abbiano senso dai sensori usando un multimetro quindi ...

  1. Sensore di tensione: data una tensione in ingresso, misurando con il multimetro tra i terminali '-' e 'S' (prova a non collegare il terminale '+') dovresti avere un valore teoricamente diviso per 5

  2. Sensore di corrente: devi avere Vcc/2 (2.5V) se NON scorre corrente. Questo modulo purtroppo è fatto per lavorare a 5V quindi l'uscita potrebbe danneggiare l'ingresso del ESP se la corrente fosse troppo elevata ed il sensore, in uscita, desse più di 3.3V ... per sicurezza dovrai applicare un paritore resistivo che limiti la tensione massima a 3.3V.

Comunque, per fare le prove solo con il multimetro, usali così collegandoti direttamente alle uscite, ma prima di collegarli all'ESP occorre fare un po' di cacoli.

Guglielmo

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.