Search Code

Tutorial ESP32 55/55 - Cara mengukur tegangan DC 12V, 24V, atau 100V | Kit Pembelajaran IoT ESP32 SunFounder

Tutorial ESP32 55/55 - Cara mengukur tegangan DC 12V, 24V, atau 100V | Kit Pembelajaran IoT ESP32 SunFounder

Dalam tutorial ini, kita akan mempelajari cara menggunakan ESP32 untuk mengukur berbagai tegangan DC, termasuk 12V, 24V, dan bahkan hingga 100V. Dengan memanfaatkan rangkaian pembagi tegangan yang terbuat dari dua resistor, kita dapat mengukur tegangan yang lebih tinggi dengan aman tanpa risiko merusak mikrokontroler ESP32. Proyek ini akan menunjukkan cara membaca tegangan-tegangan ini dan menampilkannya pada serial monitor, memberikan wawasan berharga tentang sumber daya Anda.

ESP32-55-any-voltage-main

Tonton video untuk penjelasan yang komprehensif (di video pada 00:00). Kita akan menggunakan konfigurasi pembagi tegangan sederhana untuk mencapai ini, memastikan bahwa kita dapat mengukur tegangan yang melebihi level input maksimum ESP32 dengan aman. Tutorial ini sangat cocok bagi mereka yang ingin memperluas pengetahuan tentang ESP32 dan kemampuannya.

Rumus untuk menghitung tegangan

ESP32-55_any-voltrage-formula

Penjelasan Perangkat Keras

Komponen utama untuk proyek ini termasuk mikrokontroler ESP32, dua resistor yang membentuk pembagi tegangan, dan sumber daya yang ingin Anda ukur. ESP32 dilengkapi dengan kemampuan Wi-Fi dan Bluetooth bawaan, menjadikannya pilihan serbaguna untuk proyek IoT. Pembagi tegangan, yang terdiri dari dua resistor, memungkinkan kita untuk menurunkan tegangan ke level aman yang dapat diproses oleh ESP32.

Dalam pengaturan ini, satu resistor, R1, ditetapkan pada 10kΩ, sementara resistor kedua, R2, dapat bervariasi tergantung pada tegangan maksimum yang ingin Anda ukur. Tegangan di R1 adalah yang akan kita baca menggunakan pin input analog ESP32, memungkinkan kita untuk menghitung tegangan asli dari sumber daya.

 

  • Pastikan resistor memiliki toleransi 1% untuk pengukuran yang akurat.
  • Gunakan pembagi tegangan untuk mencegah melebihi rating tegangan input ESP32.
  • Pertahankan R1 pada 10kΩ dan sesuaikan R2 berdasarkan rentang tegangan.
  • Periksa koneksi untuk menghindari input mengambang yang dapat menyebabkan pembacaan tidak akurat.
  • Gunakan sumber daya yang stabil untuk pengukuran tegangan yang konsisten.

Instruksi Pengkabelan

Untuk mengkabel rangkaian, mulailah dengan menghubungkan salah satu ujung resistor R1 (10kΩ) ke sumber tegangan Anda, dan ujung lainnya ke pin GPIO 35 ESP32. Pin ini akan membaca tegangan di R1. Selanjutnya, hubungkan resistor R2 (yang bisa 100kΩ atau nilai lain tergantung kebutuhan Anda) antara titik sambungan R1 dan ground. Pastikan ground dari sumber daya juga terhubung ke ground ESP32.

Misalnya, jika mengukur 24V, hubungkan terminal positif catu daya ke R1, lalu hubungkan ujung lain dari R1 ke pin 35 dan titik sambungan kedua resistor. Ujung bebas dari R2 harus menuju ground. Konfigurasi ini akan memungkinkan ESP32 membaca tegangan yang diturunkan dengan aman.

Contoh Kode & Penjelasan

const int R1 = 10000; // Nilai Resistor 1
const int R2 = 100000; // Nilai Resistor 2
const int VinPin = 35; // Pin input tegangan

Dalam kutipan ini, kita mendefinisikan nilai untuk resistor kita, R1 dan R2, serta pin analog VinPin yang akan kita gunakan untuk membaca tegangan. Konstanta ini sangat penting untuk perhitungan tegangan kita.

void readVoltage() {
  uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Baca dalam milivolt
  VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}

Fungsi ini membaca tegangan dalam milivolt dari pin yang ditentukan dan menghitung tegangan aktual VB1 menggunakan rumus pembagi tegangan. Ini penting untuk menerjemahkan tegangan yang diturunkan kembali ke nilai aslinya.

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

Di sini, kita mendefinisikan fungsi untuk menghitung dan mencetak tegangan maksimum yang dapat diukur dengan aman berdasarkan nilai resistor. Fungsi ini sangat penting untuk memastikan kita tidak melebihi batas tegangan ESP32.

Demonstrasi / Apa yang Diharapkan

Ketika Anda menjalankan kode, Anda akan melihat tegangan yang diukur ditampilkan pada serial monitor. Saat Anda menyesuaikan tegangan input, pembacaan harus mencerminkan perubahan ini secara real-time, menunjukkan kemampuan ESP32 untuk mengukur berbagai tegangan DC secara akurat. Jika Anda mengalami fluktuasi dalam pembacaan, pertimbangkan untuk merata-ratakan beberapa sampel untuk mencapai hasil yang lebih stabil (di video pada 12:30).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:59 Pengenalan proyek
  • 5:45 Pembagi tegangan
  • 7:33 Pengkabelan dijelaskan
  • 9:14 Kode Arduino dijelaskan
  • 14:45 Memilih papan ESP32 dan Port COM di Arduino IDE
  • 16:27 Demonstrasi mengukur 30V menggunakan ESP32
  • 21:36 Mengubah R2 menjadi 330k ohm
  • 22:33 Pengukuran tegangan minimum

Gambar

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
Bahasa: 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);
}

Sumber daya & referensi

Belum ada sumber daya.

Berkas📁

Tidak ada file tersedia.