Arduino bertugas untuk membaca sensor dan menghitung berapa kali sensor mendeteksi warna hitam dalam selang waktu 15 menit, atau dengan kata lain, berapa banyak jumlah putaran piringan dalam waktu 15 menit. Kemudian Arduino juga akan mengubah jumlah putaran tersebut dalam bentuk nilai daya listrik dan nilai KWHmeter. Rumus untuk menghitung nilai KWH dan daya listriknya adalah sebagai berikut:
KWH = jumlah putaran / 720
di mana angka 720 saya ambil dari nilai perbandingan pada KWHmeter di rumah saya, yang tertulis 720 PUT/KWH atau 720 putaran untuk 1 KWH-nya. Sedangkan 3600 adalah jumlah detik dalam 1 jam, dan 900 adalah jumlah detik dalam 15 menit. Satuan nilai daya listrik pada rumus di atas adalah kiloWatt/detik. Untuk menghasilkan nilai yang lebih "terbaca", maka rumus daya listrik diubah menjadi sebagai berikut:
daya listrik = 1000 x 3600000 x KWH / 900000
dengan satuan daya listrik pada rumus di atas adalah Watt/milidetik.
Berikut kode program untuk Arduino:
#undef int()
int totalRequests = 0;
int revsPerkWh = 720; //nilai perbandingan KWHmeter
unsigned long time;
unsigned long interval;
unsigned long currentPower;
boolean black = false;
unsigned long aggregatedRevCounter;
unsigned long totalRevCounter;
unsigned long kWh;
unsigned long aggregatedInterval = 900000; // 15 menit
unsigned long aggregatedTime;
unsigned long aggregatedPower;
unsigned long reportedAggregatedPower;
int sensorDelay = 20;
int powerPin = 2;
int averageAnalog[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000};
void setup(){
Serial.begin(9600);
Serial.println("starting...");
setupPower();
}
void loop(){
checkPower();
}
void setupPower(){
pinMode(powerPin, OUTPUT);
time = millis();
interval = 0;
currentPower = 0;
aggregatedPower = 0;
aggregatedTime = millis();
aggregatedRevCounter = 0;
Berikut hasil pembacaan sensor yang dilihat menggunakan Serial Monitor pada software Arduino:
Tidak ada komentar:
Posting Komentar