Pretraži kod

ESP32 Tutorijal 55/55 - Kako izmjeriti 12V, 24V ili 100V DC napon | SunFounder-ov ESP32 IoT Learning komplet

ESP32 Tutorijal 55/55 - Kako izmjeriti 12V, 24V ili 100V DC napon | SunFounder-ov ESP32 IoT Learning komplet

U ovom tutorijalu naučit ćemo kako koristiti ESP32 za mjerenje različitih DC napona, uključujući 12V, 24V, pa čak i do 100V. Korištenjem djelitelja napona napravljenog od dva otpornika, možemo sigurno mjeriti više napone bez rizika od oštećenja mikrokontrolera ESP32. Ovaj projekat će demonstrirati kako očitati ove napone i prikazati ih na serijskom monitoru, pružajući vrijedne uvide u vaše izvore napajanja.

ESP32-55-any-voltage-main

Pogledajte video za sveobuhvatno objašnjenje (u videu na 00:00). Koristit ćemo jednostavnu konfiguraciju djelitelja napona da bismo to postigli, osiguravajući da možemo sigurno mjeriti napone koji prelaze maksimalne ulazne nivoe ESP32. Ovaj tutorijal je savršen za one koji žele proširiti svoje znanje o ESP32 i njegovim mogućnostima.

Formula za izračunavanje napona

ESP32-55_any-voltrage-formula

Objašnjenje hardvera

Ključne komponente za ovaj projekat uključuju mikrokontroler ESP32, dva otpornika koji formiraju djelitelj napona i izvor napajanja koji želite mjeriti. ESP32 je opremljen ugrađenim Wi-Fi i Bluetooth mogućnostima, što ga čini svestranim izborom za IoT projekte. Djelitelj napona, sastavljen od dva otpornika, omogućava nam da smanjimo napon na siguran nivo koji ESP32 može obraditi.

U ovoj postavci, jedan otpornik, R1, je fiksiran na 10kΩ, dok drugi otpornik, R2, može varirati ovisno o maksimalnom naponu koji želite mjeriti. Napon na R1 je ono što ćemo očitati koristeći analogni ulazni pin ESP32, što nam omogućava da izračunamo originalni napon iz izvora napajanja.

 

  • Osigurajte da otpornici imaju toleranciju od 1% za tačna mjerenja.
  • Koristite djelitelj napona da spriječite prekoračenje ulaznih naponskih ograničenja ESP32.
  • Držite R1 na 10kΩ i prilagodite R2 na osnovu raspona napona.
  • Provjerite veze da biste izbjegli plutajuće ulaze koji mogu dovesti do netačnih očitanja.
  • Koristite stabilan izvor napajanja za konzistentna mjerenja napona.

Upute za povezivanje

Da biste povezali krug, počnite spajanjem jednog kraja otpornika R1 (10kΩ) na vaš izvor napona, a drugi kraj na GPIO pin 35 ESP32. Ovaj pin će očitati napon na R1. Zatim spojite otpornik R2 (koji može biti 100kΩ ili druga vrijednost ovisno o vašim potrebama) između spojne tačke R1 i mase. Provjerite da je masa izvora napajanja također spojena na masu ESP32.

Na primjer, ako mjerite 24V, spojite pozitivni terminal napajanja na R1, zatim spojite drugi kraj R1 na pin 35 i spojnu tačku dva otpornika. Slobodni kraj R2 treba ići na masu. Ova konfiguracija će omogućiti ESP32 da sigurno očita smanjeni napon.

Primjeri koda i objašnjenje

const int R1 = 10000; // Vrijednost otpornika 1
const int R2 = 100000; // Vrijednost otpornika 2
const int VinPin = 35; // Pin za ulaz napona

U ovom isječku definiramo vrijednosti za naše otpornike, R1 i R2, kao i analogni pin VinPin koji ćemo koristiti za očitavanje napona. Ove konstante su ključne za naše proračune napona.

void readVoltage() {
  uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Očitaj u milivoltima
  VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}

Ova funkcija očitava napon u milivoltima sa navedenog pina i izračunava stvarni napon VB1 koristeći formulu djelitelja napona. Ovo je važno za pretvaranje smanjenog napona nazad u originalnu vrijednost.

void maxVoltage() {
  float maxVoltage = (3.1) * (1 + (float)R2/(float)R1);
}

Ovdje definiramo funkciju za izračunavanje i ispis maksimalnog napona koji se može sigurno mjeriti na osnovu vrijednosti otpornika. Ova funkcija je ključna za osiguravanje da ne prekoračimo naponska ograničenja ESP32.

Demonstracija / Šta očekivati

Kada pokrenete kod, trebali biste vidjeti izmjereni napon prikazan na serijskom monitoru. Dok podešavate ulazni napon, očitanja bi trebala odražavati ove promjene u realnom vremenu, demonstrirajući sposobnost ESP32 da tačno mjeri različite DC napone. Ako primijetite fluktuacije u očitanjima, razmotrite usrednjavanje više uzoraka kako biste postigli stabilniji rezultat (u videu na 12:30).

Vremenske oznake videa

  • 00:00 Početak
  • 1:59 Uvod u projekat
  • 5:45 Djelitelj napona
  • 7:33 Objašnjeno povezivanje
  • 9:14 Objašnjen Arduino kod
  • 14:45 Odabir ESP32 ploče i COM porta u Arduino IDE
  • 16:27 Demonstracija mjerenja 30V koristeći ESP32
  • 21:36 Promijenjen R2 na 330k ohm
  • 22:33 Minimalno mjerenje napona

Slike

ESP32-55_any-voltrage-formula
ESP32-55_any-voltrage-formula
ESP32-55-any-voltage-main
ESP32-55-any-voltage-main
805-ESP32 Tutorial 55/55 - Arduino code to measure 12V, 24V or 100V DC voltage
Jezik: C++
/*
Arduino code for ESP32 to measure any DC voltage
📚⬇️ Download and resource page https://robojax.com/RJT674
written by Ahmad Shamshiri
watch full video explanation https://youtu.be/znBiVlgV9JI
www.robojax.com
Feb 19, 2024
*/
bool debug = false;
const int R1 = 10000;//we read the voltage acrosst this resistor ()
const int R2 = 100000;

const int VinPin = 35; // Potentiometer connected to GPIO14


// PWM settings
const int freq = 5000; // PWM frequency
const int resolution = 12; // PWM resolution (bits)
const int channel = 0; // PWM channel

float VB1;
int mV;

void setup() {
  Serial.begin(115200);
  // Configure PWM
  ledcSetup(channel, freq, resolution);
  //calculatResistor(R1, 24);//10000 ohm and 35.0V

}



void loop() {
   readVoltage();

  Serial.print("VB1 Voltage: ");
  Serial.print(VB1); // Convert millivolts to volts
  Serial.println("V ");


  delay(500);
}

void readVoltage()
{
  uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Read the voltage in millivolts
  if(debug)
  {
    maxVoltage();
    Serial.print("PinVoltage: ");
    Serial.print(voltage_mV);
    Serial.println("mV");
    Serial.println();//this adds a new line
  }
  mV = voltage_mV;
  VB1 = (((float) voltage_mV) / 1000.0)  * (1 + (float)R2/(float)R1);
}

/*
prints maximum volage
*/
void maxVoltage()
{
  float maxVoltage = ( 3.1)  * (1 + (float)R2/(float)R1);
    Serial.print("****Maximum Voltage: ");
    Serial.print(maxVoltage);
    Serial.println("V");

}//maxVoltage() end

void calculatResistor(int r1, float voltage)
{
    Serial.print("Calculating R2 when R1 is :");
    Serial.print(r1);
    Serial.print(" Ohms and Maximum Input Voltage is ");  
    Serial.print(voltage);  
    Serial.println("V");  
    Serial.print("***** R2 Should Be ");  
    float r2 = (voltage - 3.1)/ (3.1/ (float)r1);
    Serial.print(r2 / 1000.0);  
    Serial.println(" kilo Ohms");  
    while(1);
}

Resursi i reference

Još nema resursa.

Datoteke📁

Nema dostupnih datoteka.