Oke ..... pulang shift 3 dan belum bisa tidur juga daripada insom gak jelas mending saya lanjutin postingan kemarin tentang OCR 1 Fasa Part 1 . Jika kemarin kita sudah mengenal wiring, cara kerja sensor dan sedikit teori tentang sensor TA12-100 maka postingan kali ini saya akan membahas lebih lanjut mengenai sketch dan seluk beluk penggunaan sensor TA12-100.
Ok langsung saja kita mulai bahasan yang pertama yaitu mengenai akuisisi data dari sensor, sensor TA12-100 adalah sensor tegangan AC sementara arduino merupakan alat yang hanya membaca tegangan DC. terus gimana donk? alatnya gagal? ...hmmmm kalo kalian menyerah sudah pasti gagal, tapi berhubung ini dulu proyek yang dibayar ya saya gak menyerah donk hehehe... umtuk mengatasi perbedaan jenis tegangan yang dihasilkan bisa dilakukan dengan 2 cara, yang pertama akuisisi data secara software atau modifikasi output sensor dengan AC - DC Converter. nah kali ini saya akan menggunakan metode yang pertama, karena selain lebih hemat juga lebih praktis. Sebelum kita lanjut perhatikan gambar dibawah ini.
pada gambar diatas, kita bisa melihat bahwa satu siklus tegangan AC terdiri atas 2 kurva sinusoidal. kurva positif dan kurva negatif. pada kurva positif kita bisa melihat ada average atau tegangan rata-rata, RMS atau tegangan efektif dan Peak atau tegangan puncak. Nah untuk akuisisi data pada sensor TA 12 -100 ini kita bisa memanfaatkan tegangan puncak untuk mendapatkan nilai tegangan Rms yang bisa kita proses untuk melakukan pembacaan arus yang lewat pada sensor. oke mari kita lihat sketch untuk melakukan hal tersebut.
pada bagian kode diatas fungsi getcurrent memiliki alur proses sebagai berikut
1. selama 1 detik arduino akan melakukan sampling data untuk menghasilkan v max
2. setelah itu data hasil akan disimpan di variable result
3. variable result akan dikonversi dari data digital ke format tegangan 5v
4. lalu konversi tegangan adc ke arus max dalam mA
5. konversi arus max ke arus efektif
6. konversi ke arus efektif aktual
7.konversi ke arus aktual dalam Ampere
Cukup panjang juga ya alur proses akuisisi datanya hehehe....oke mari kita lanjut ke blok fungsi selanjutnya.
Fungsi diatas digunakan untuk melakukan perhitungan delay sebelum relay off pada arduino, nah perhitungannya menggunakan rumus yang biasa dipakai di OCR berdasarkan type karakternya yaitu
1.Normaly Inverse
2.Very Inverse
3.Extremely Inverse
4.Long Inverse
untuk penjelasaan masing masing karakter akan saya bahas lain kali... hehehe males ngalor ngidul soalnya. oke kembali ke topik. pada fungsi diatas pertama kali arduino akan mengecek apakah nilai arus sensor sudah melebihi setingan , jika ya maka arduino akan mengecek type karakter yang dipakai lalu melakukan perhitungan. Namun jika ternyata arus tidak melebihi setingan maka periode delay yang dihasilkan adalah 0. gimana sudah paham 2 blok utama program ini ? kalo sudah saya tutup pos ini ya... soalnya sudah ngantuk hehehehe kita lanjut dipos berikutnya
Ok langsung saja kita mulai bahasan yang pertama yaitu mengenai akuisisi data dari sensor, sensor TA12-100 adalah sensor tegangan AC sementara arduino merupakan alat yang hanya membaca tegangan DC. terus gimana donk? alatnya gagal? ...hmmmm kalo kalian menyerah sudah pasti gagal, tapi berhubung ini dulu proyek yang dibayar ya saya gak menyerah donk hehehe... umtuk mengatasi perbedaan jenis tegangan yang dihasilkan bisa dilakukan dengan 2 cara, yang pertama akuisisi data secara software atau modifikasi output sensor dengan AC - DC Converter. nah kali ini saya akan menggunakan metode yang pertama, karena selain lebih hemat juga lebih praktis. Sebelum kita lanjut perhatikan gambar dibawah ini.
float getCurrent()
{
float result;
int readValue; //value read from the sensor
int maxValue = 0; // store max value here
uint32_t start_time = millis();
while((millis()-start_time) < 1000) //sample for 1 Sec
{
readValue = analogRead(A0);
// see if you have a new maxValue
if (readValue > maxValue)
{
/*record the maximum sensor value*/
maxValue = readValue;
}
}
result = (maxValue * 5.0)/1024.0; // Convert the digital data to a voltage
result = (result/200) * 1000; //Use Ohms law to calculate current across resistor and express in mA
result = result * 0.707; // nilai I RMS dari hasil perhitungan
result = result * 1000; // ratio perbandingan 1000 : 1 pada CT sehingga nilai akhir sbb
result = result/1000; //nilai arus dalam A
return result;
}
pada bagian kode diatas fungsi getcurrent memiliki alur proses sebagai berikut
1. selama 1 detik arduino akan melakukan sampling data untuk menghasilkan v max
2. setelah itu data hasil akan disimpan di variable result
3. variable result akan dikonversi dari data digital ke format tegangan 5v
4. lalu konversi tegangan adc ke arus max dalam mA
5. konversi arus max ke arus efektif
6. konversi ke arus efektif aktual
7.konversi ke arus aktual dalam Ampere
Cukup panjang juga ya alur proses akuisisi datanya hehehe....oke mari kita lanjut ke blok fungsi selanjutnya.
float getInterval(){
float num;// Fungsi Pengolah Interval delay aktifasi relay
if ( adcOCR > settOCR){
switch(type){
case 1 :
curr = adcOCR / settOCR;
curr = pow(curr,expfactor1);
curr = curr - 1;
interval = TMS * k1;
interval = interval / curr ;
interval = interval * 1000;
num = interval;
break;
case 2 :
curr = adcOCR / settOCR;
curr = curr - 1;
interval = TMS * k2;
interval = interval / curr ;
interval = interval * 1000;
num = interval;
break;
case 3:
curr = adcOCR / settOCR;
curr = pow(curr,expfactor2);
curr = curr - 1;
interval = TMS * k3;
interval = interval / curr ;
interval = interval * 1000;
num = interval;
break;
case 4:
curr = adcOCR / settOCR;
curr = curr - 1;
interval = TMS * k4;
interval = interval / curr ;
interval = interval * 1000;
num = interval;
break;
default:
interval = 0;
num = interval;
break;
}
}
else if (adcOCR <= settOCR){
interval = 0;
num = interval *1000;
}
return num;
}
Fungsi diatas digunakan untuk melakukan perhitungan delay sebelum relay off pada arduino, nah perhitungannya menggunakan rumus yang biasa dipakai di OCR berdasarkan type karakternya yaitu
1.Normaly Inverse
2.Very Inverse
3.Extremely Inverse
4.Long Inverse
untuk penjelasaan masing masing karakter akan saya bahas lain kali... hehehe males ngalor ngidul soalnya. oke kembali ke topik. pada fungsi diatas pertama kali arduino akan mengecek apakah nilai arus sensor sudah melebihi setingan , jika ya maka arduino akan mengecek type karakter yang dipakai lalu melakukan perhitungan. Namun jika ternyata arus tidak melebihi setingan maka periode delay yang dihasilkan adalah 0. gimana sudah paham 2 blok utama program ini ? kalo sudah saya tutup pos ini ya... soalnya sudah ngantuk hehehehe kita lanjut dipos berikutnya
Emoticon Emoticon