24 January 2018

Pengukuran RPM menggunakan Arduino: Kasus Anemometer


Dalam tulisan ini rotasi per menit (selanjutnya disingkat RPM) diukur menggunakan Arduino dengan memanfaatkan sinyal pulsa yang dibangkitkan oleh sensor. Sensor RPM yang digunakan telah terintegrasi pada anemometer untuk kebutuhan pengukuran kecepatan angin. Agar RPM dapat diukur maka dapat digunakan perangkat keras Real Time Clock sehingga variable waktu juga diketahui.


Sensor RPM yang tersedia dipasaran memiliki banyak jenis, sebagai contoh, untuk mengukur kecepatan putar motor listrik bisa digunakan optokopler yang dipakai bersamaan dengan piringan berlubang[1] atau dengan menggunakan saklar yang teraktivasi akibat medan magnet[2]. Kedua buah sensor yang dicontohkan di atas sudah pasti memiliki kelebihan dan kekurang, namun demikian prinsip kerjanya memiliki kesamaan.

Didalam tulisan ini dibahas mengenai metode pengukuran RPM. Sensor yang digunakan telah terintegrasi pada anemometer Argent Data System seperti terlihat pada gambar 1. RPM tersebut kemudian dapat digunakan untuk mengukur kecepatan angin.

Gambar 1 anemometer Argent Data System

Prinsip kerja dari beberapa sensor RPM pada umumnya memiliki kesamaan, yakni membangkitkan suatu pulsa elektrik ketika telah terjadinya 1,1/2,1/4, atau lebih putaran. Pulsa yang tersebut kemudian dapat dimanfaatkan untuk perhitungan kecepatan putar, seperti terlihat pada gambar 2.

Gambar 2. Pengukuran RPM dengan memanfaatkan sinyal pulsa [3]

Terdapat beberapa metode pengukuran RPM, misalnya menghitung waktu yang terjadi tiap munculnya sinyal pulsa [2], namun  perhitungan yang diterapkan pada percobaan ini didasarkan atas konsep rotasi per menit, yakni menghitung jumlah rotasi yang dilakukan peralatan selama satu menit, jumlah rotasi tersebut dapat diketahui dengan menghitung jumlah pulsa yang dibangkitkan oleh sensor. Agar didapatkannya waktu pembacaan yang lebih cepat maka dapat dilakukan pengukuran dalam waktu singkat namun dikompensasi dengan faktor pengali. 

Dalam percobaan ini, pengukuran dilakukan tiap 10 detik (menggunakan RTC) dengan faktor pengalian 6, sehingga estimasi rotasi per 60 detik (1 menit) bisa didapatkan. Sensor yang digunakan akan memberikan pulsa sebanyak 2 kali per 1 putaran, sehingga pulsa yang terhitung dapat dibagi dua terlebih dahulu, atau dua pulsa dapat dihitung sebagai 1 pulsa. 

Untuk mendapatkan pulsa tersebut maka digunakan rangkaian tambahan sederhana seperti gambar 3.

Gambar 3. Rangkaian sederhana pembangkit pulsa

Arduino dapat digunakan untuk mengetahui kecepatan angin, adapun kode yang dapat dipakai adalah sebagai berikut:

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Wire.h>
#include <DS1307.h>
int signalanemo=2;
int anemostate=0;
int count=0;
int rise=1;
int full=0;
int a=1;
int detik, detik1;
String dataWaktu;
float rpm, wind;
void setup()
{
  Serial.begin(9600);
  pinMode(signalanemo, INPUT);
}
void loop()
{
  dataWaktu = String(RTC.get(DS1307_DATE,false))+"/"+
              String(RTC.get(DS1307_MTH,false))+"/"+
              String(RTC.get(DS1307_YR,false))+" "+
              String(RTC.get(DS1307_HR,true))+":"+
              String(RTC.get(DS1307_MIN,false))+":"+
              String(RTC.get(DS1307_SEC,false))+" ";
             
  detik=(RTC.get(DS1307_SEC,false));
  anemostate = digitalRead(signalanemo);
   if (anemostate==1 && rise==1){
       full=full+1;
       rise=0;
       }
   else if (anemostate==0 && rise==0){
       rise=1;
       }

   if (full==2){
       count=count+1;
       full=0;
       }
   else {}
   if (detik==10 && a==1){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=a+1;
       }
    else if (detik==20 && a==2){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=a+1;
       }
    else if (detik==30 && a==3){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=a+1;
       }
    else if (detik==40 && a==4){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=a+1;
       }
    else if (detik==50 && a==5){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=a+1;
       }
    else if (detik==0 && a==6){
       rpm=6*count;
       wind=rpm/50.748803;
       count=0;
       Serial.print(wind);
       Serial.print(" m/s ");
       Serial.println(rpm);
       a=1;
       }
}

Hasil pengukuran RPM terlihat seperti gambar 4, apabila RPM tersebut dibagi dengan konstanta 50.748803 [2], maka kecepatan angin dalam satuan meter per sekon yang terbaca oleh anemometer dapat dikatahui 

Gambar 4 hasil pembacaan Anemometer

Metode pengukuran RPM pada tulisan ini adalah dengan menghitung jumlah pulsa yang dibangkitkan selama satu menit (rotasi per menit). Metode ini dapat diterapkan pada sensor pengukuran kecepatan putar yang berbasis pembangkitan pulsa, misalnya sensor pengukuran kecepatan angin seperti yang telah dibahas pada tulisan ini.

Referensi

1. Aplikasi-002. Pengukur Kecepatan Putaran Motor (Seri Pemantauan Rotasi [I]) Available online:
http://depokinstruments.com/2010/08/10/aplikasi-002-pengukur-kecepatan-putaran-motor-seri-pemantauan-kecepatan-i-masih-dalam-pengembangan/

2. ArgentDataSystemsWindAmpRainSensorAssembly80422. Available online:  http://www.digitalbees.info/pmwiki.php\

3. Tachometer Signals and Transducers. Available online: http://zone.ni.com/reference/en-XX/help/372416B-01/svtconcepts/tacho_sig/

No comments:

Post a Comment