• MUHILHAM • Electronics Hobbyist and Maker
  • Shop
  • Sitemap
  • Portfolio
  • Jasa Custom Project





  • Home IoT STM32 Monitoring Daya Listrik 3 Phase [3 Phase AC Power Monitoring] - Data Logger

    Monitoring Daya Listrik 3 Phase [3 Phase AC Power Monitoring] - Data Logger

    MUHAMMAD ILHAM Penulis MUHAMMAD ILHAM


    Artikel kali ini akan membahas tentang sebuah alat untuk monitoring listrik 3 phase, project kali ini menggunakan STM32, diharapkan dengan menggunakan mikrokontroler 32-bit dengan resolusi ADC 12-bit ini data pengukuran akan lebih baik dan untuk koneksi ke internet digunakan modul SIM800L. Data hasil pengukuran akan dikirim ke database mysql sebagai datalogging.

    Project untuk mengukur daya listrik 3 phase ini tergolong cukup ribet dan mahal menurut saya, dikarenakan sensor yang digunakan sebanyak 6 buah, dimana digunakan 3 single phase voltage sensor dan juga 3 sensor untuk arusnya.

    Sensor tegangan yang digunakan ZMPT101B dan SCT-013 untuk sensor arus, SCT-013 merupakan sensor arus berjenis non-kontak dengan sistem clamp, sensor ini cukup baik dari segi instalasi, hanya dengan menjepit pada salah satu kabel, artinya tidak perlu memutus atau mengubah instalasi yang sudah ada.

    Komponen yang digunkan
    • Modul STM32F1 Bluepill
    • Modul SIM800L
    • Modul DC-DC Step Down
    • Sensor Tegangan ZMP101B
    • Sensor Arus SCT103 
    • LCD 16x2 + i2c
    • Kapasitor 10uF
    • Resistor 10K
    • Resistor 330R
    Rangkaian/Electrical Circuit


    PCB Design



    Bagian program untuk mengukur daya listrik 3 phase



    void process_power_data(int16_t channel) {
      int32_t sample_V, sample_I, signed_V, signed_I;
    
      // ----------------------------------------
      // Voltage
      if (channel == 0) sample_V = ADC_DMA_BUFF[0];
      if (channel == 1) sample_V = ADC_DMA_BUFF[1];
      if (channel == 2) sample_V = ADC_DMA_BUFF[2];
      signed_V = sample_V - MID_ADC_READING;
      sum_V[channel] += signed_V;
      sum_V_sq[channel] += signed_V * signed_V;
    
      // ----------------------------------------
      // Current
      if (channel == 0) sample_I = ADC_DMA_BUFF[3];
      if (channel == 1) sample_I = ADC_DMA_BUFF[4];
      if (channel == 2) sample_I = ADC_DMA_BUFF[5];
      signed_I = sample_I - MID_ADC_READING;
      sum_I[channel] += signed_I;
      sum_I_sq[channel] += signed_I * signed_I;
    
      // ----------------------------------------
      // Power
      sum_P[channel] += signed_V * signed_I;
    
      count[channel] ++;
    
      // ----------------------------------------
      // Zero crossing detection
      last_positive_V[channel] = positive_V[channel];
      if (signed_V > 0) positive_V[channel] = true; else positive_V[channel] = false;
      if (last_positive_V[channel] != positive_V[channel]) cycles[channel]++;
    
      // ----------------------------------------
      // Cycle count == cycle set (MAX_CYCLES)
      if (cycles[channel] >= MAX_CYCLES) {
        cycles[channel] = 0;
    
        double Vmean = sum_V[channel] * (1.0 / count[channel]);
        double Imean = sum_I[channel] * (1.0 / count[channel]);
    
        sum_V_sq[channel] *= (1.0 / count[channel]);
        sum_V_sq[channel] -= (Vmean * Vmean);
        Vrms[channel] = V_RATIO[channel] * sqrt((double)sum_V_sq[channel]);
        sum_V[channel] = 0;
        sum_V_sq[channel] = 0;
    
        sum_I_sq[channel] *= (1.0 / count[channel]);
        sum_I_sq[channel] -= (Imean * Imean);
        Irms[channel] = I_RATIO[channel] * sqrt((double)sum_I_sq[channel]);
        sum_I[channel] = 0;
        sum_I_sq[channel] = 0;
    
        double mean_P = (sum_P[channel] * (1.0 / count[channel])) - (Vmean * Imean);
        sum_P[channel] = 0;
        count[channel] = 0;
    
        realPower[channel] = V_RATIO[channel] * I_RATIO[channel] * mean_P;
        apparentPower[channel] = Vrms[channel] * Irms[channel];
        powerFactor[channel] = realPower[channel] / apparentPower[channel];
    
        endMillis[channel] = HAL_GetTick();
        unsigned long timeMs = (endMillis[channel] - startMillis[channel]);
        WattHour[channel] += realPower[channel] * ((double) timeMs / 3600000); // Watt-Hour
        startMillis[channel] = HAL_GetTick();
    
        readings_ready = true;
      }
    }
    

    Pemasangan sensor SCT-013 pada kabel fasa



    Pemasangan sensor ZMPT-101B fasa terhadap neutral (L/N)



    Datalogging database mySQL


    Data pengukuran di kirim ke database menggunakan modul GSM dengan mode GPRS, data diterima oleh webserver hosting dan dimasukkan ke database dengan PHP.


    👉 UNTUK PERTANYAAN ATAU CUSTOM PROJECT 👈



    Pengujian Monitoring Daya Listrik

    Untuk interface digunakan LCD16x2 dengan sebuah tombol yang berfungsi sebagai pengubah tampilan layar lcd, terdapat 4 tampilan layar tegangan, arus, daya aktif (watt) dan konsumsi daya (Wh).

    Tampilan tegangan/voltage


    Tampilan arus/current


    Tampilan daya/power


    Tampilan konsumsi daya (watt hours)


    Video 3 Phase Power Monitoring


    Referensi learn.openenergymonitor.org

    IoT
    STM32

    Related Posts

    MUHAMMAD ILHAM

    MUHAMMAD ILHAM

    “ Ikat ilmu dengan menulisnya ”
    ― Ali bin Abi Thalib ―

  • Next Post
    Previous Post

    4 comments

    1. UnknownMay 1, 2020 at 8:42 PM

      Alat ini yg sdh jadi ada gak ya

      ReplyDelete
      Replies
        Reply
    2. UnknownNovember 10, 2020 at 7:00 AM

      Alat ini yg sdh jd ada gak

      ReplyDelete
      Replies
      1. MUHAMMAD ILHAMNovember 10, 2020 at 8:15 AM

        belum ada.

        Delete
        Replies
          Reply
      2. Reply
    3. odingMarch 24, 2022 at 11:03 PM

      mas boleh minta library eagle untuk sensor ZMPT101 dan ACS712?

      ReplyDelete
      Replies
        Reply
    Add comment
    Load more...


    EmoticonEmoticon

    Popular Posts

    • Download Cadsoft Eagle Professional 7.2.0 Full
    • Membuat Running LED Dengan IC 4017 dan Timer NE555
    • Cara Mudah Membuat Layout PCB Dengan Menggunakan Lotion Anti Nyamuk
    • Cara Memperbaiki Kipas Angin Mati Total [Tidak Berputar Sama Sekali]
    • Membuat Mobil Remote Control dengan Arduino [RC Car Control with Bluetooth]

    Categories

    Elektronika Arduino Tips dan Trik Robotic Tutorial IoT Software Arduino Tutorial PCB STM32

    Recent Posts

     
    Copyright © MUHILHAM • Electronics Hobbyist and Maker. All Rights Reserved.