• 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



    1. void process_power_data(int16_t channel) {
    2. int32_t sample_V, sample_I, signed_V, signed_I;
    3.  
    4. // ----------------------------------------
    5. // Voltage
    6. if (channel == 0) sample_V = ADC_DMA_BUFF[0];
    7. if (channel == 1) sample_V = ADC_DMA_BUFF[1];
    8. if (channel == 2) sample_V = ADC_DMA_BUFF[2];
    9. signed_V = sample_V - MID_ADC_READING;
    10. sum_V[channel] += signed_V;
    11. sum_V_sq[channel] += signed_V * signed_V;
    12.  
    13. // ----------------------------------------
    14. // Current
    15. if (channel == 0) sample_I = ADC_DMA_BUFF[3];
    16. if (channel == 1) sample_I = ADC_DMA_BUFF[4];
    17. if (channel == 2) sample_I = ADC_DMA_BUFF[5];
    18. signed_I = sample_I - MID_ADC_READING;
    19. sum_I[channel] += signed_I;
    20. sum_I_sq[channel] += signed_I * signed_I;
    21.  
    22. // ----------------------------------------
    23. // Power
    24. sum_P[channel] += signed_V * signed_I;
    25.  
    26. count[channel] ++;
    27.  
    28. // ----------------------------------------
    29. // Zero crossing detection
    30. last_positive_V[channel] = positive_V[channel];
    31. if (signed_V > 0) positive_V[channel] = true; else positive_V[channel] = false;
    32. if (last_positive_V[channel] != positive_V[channel]) cycles[channel]++;
    33.  
    34. // ----------------------------------------
    35. // Cycle count == cycle set (MAX_CYCLES)
    36. if (cycles[channel] >= MAX_CYCLES) {
    37. cycles[channel] = 0;
    38.  
    39. double Vmean = sum_V[channel] * (1.0 / count[channel]);
    40. double Imean = sum_I[channel] * (1.0 / count[channel]);
    41.  
    42. sum_V_sq[channel] *= (1.0 / count[channel]);
    43. sum_V_sq[channel] -= (Vmean * Vmean);
    44. Vrms[channel] = V_RATIO[channel] * sqrt((double)sum_V_sq[channel]);
    45. sum_V[channel] = 0;
    46. sum_V_sq[channel] = 0;
    47.  
    48. sum_I_sq[channel] *= (1.0 / count[channel]);
    49. sum_I_sq[channel] -= (Imean * Imean);
    50. Irms[channel] = I_RATIO[channel] * sqrt((double)sum_I_sq[channel]);
    51. sum_I[channel] = 0;
    52. sum_I_sq[channel] = 0;
    53.  
    54. double mean_P = (sum_P[channel] * (1.0 / count[channel])) - (Vmean * Imean);
    55. sum_P[channel] = 0;
    56. count[channel] = 0;
    57.  
    58. realPower[channel] = V_RATIO[channel] * I_RATIO[channel] * mean_P;
    59. apparentPower[channel] = Vrms[channel] * Irms[channel];
    60. powerFactor[channel] = realPower[channel] / apparentPower[channel];
    61.  
    62. endMillis[channel] = HAL_GetTick();
    63. unsigned long timeMs = (endMillis[channel] - startMillis[channel]);
    64. WattHour[channel] += realPower[channel] * ((double) timeMs / 3600000); // Watt-Hour
    65. startMillis[channel] = HAL_GetTick();
    66.  
    67. readings_ready = true;
    68. }
    69. }

    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

    Facebook Twitter
    IoT
    STM32

    Related Posts

    • Smart Socket Power Meter IoT
      Sedikit intermezzo dulu kali ya, soalnya sudah cukup lama blog ini tidak update lantaran
    • Sistem Keamanan Rumah Berbasis IoT Dengan Sensor Gerak [Motion Detection]
      Sesuai dengan judul artikel kali ini akan membahas tentang project IoT atau In
    • Kontrol Lampu Dengan Suara Menggunakan Android Melalui Internet [Speech Recognition]
      Pada kesempatan kali ini saya akan membahas sebuah teknologi yang menarik untuk di bahas
    MUHAMMAD ILHAM

    MUHAMMAD ILHAM

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

  • Arduino Tutorial : Digital Input Output Arduino [LED dan Push Button]
    Arduino Tutorial : Pengenalan Arduino dan Program LED Berkedip/Blink

    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
    • Categories

    Popular Posts

    • Download Cadsoft Eagle Professional 7.2.0 Full
    • Membuat Mobil Remote Control dengan Arduino [RC Car Control with Bluetooth]
    • Cara Mudah Cek HP Android Asli atau Palsu
    • Cara Mudah Membuat Layout PCB Dengan Menggunakan Lotion Anti Nyamuk
    • Membuat Gerbang Otomatis [Arduino Controlled Gate Barrier with Ultrasonic Sensor HC-SR04]

    Categories

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

    Recent Posts

    Arduino Tutorial : Analog Input Potentiometer
    Arduino Tutorial : Digital Input Output Arduino [LED dan Push Button]
    Monitoring Daya Listrik 3 Phase [3 Phase AC Power Monitoring] - Data Logger
    Arduino Tutorial : Pengenalan Arduino dan Program LED Berkedip/Blink
    Sistem Keamanan Rumah Berbasis IoT Dengan Sensor Gerak [Motion Detection]
     
    Copyright © 2025 MUHILHAM • Electronics Hobbyist and Maker. All Rights Reserved.