Translate

Monitor Flow Rate Udara dan Tekanan Udara MPX5100DP

Monitor Flow Rate Udara dan Tekanan Udara MPX5100DP 


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor flow rate udara dan tekanan udara, alat ini menggunakan sensor flow dan MPX5100DP dan juga dibekali powerbank untuk powernya. untuk lebih jelasnya berikut adalah komponen dan programnya.


a. Arduino Uno




b. Sensor Flow




c. Sensor Tekanan MPX5100DP





d. Program Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h> //library lcd
LiquidCrystal_I2C lcd(0x27, 16,2); //address lcd i2c 

byte sensorInterrupt = 0;  // 0 = digital pin 2
byte sensorPin       = 2;

float calibrationFactor = 4.5;

volatile byte pulseCount;

unsigned int frac;
float flowRate;
unsigned int flowMilliLitres;
float totalMilliLitres;

unsigned long oldTime;
float pressure_pascal;
float pressure_bar;
int presure;
int dataadc;
int x;
float v;
float kpa;
float vol;
float bar;

void setup() {
  
  lcd.clear();
  lcd.begin();
  lcd.noCursor();
  Serial.begin(9600);

  pinMode(sensorPin, INPUT);
  digitalWrite(sensorPin, HIGH);

  pulseCount        = 0;
  flowRate          = 0.0;
  flowMilliLitres   = 0;
  totalMilliLitres  = 0;
  oldTime           = 0;

  attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

}

void loop(){

if((millis() - oldTime) > 1000) 
  {

    detachInterrupt(sensorInterrupt);
    flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;
    oldTime = millis();
    flowMilliLitres = (flowRate / 60) * 1000;
    totalMilliLitres += flowMilliLitres;
    frac = (flowRate - int(flowRate)) * 10;
    pulseCount = 0;
   
    attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
  }

  /*
  x = analogRead(A0);
  v = x*(5.0/1023.0);

  pressure_pascal = (3.0*(v-0.47))*1000000.0;
  pressure_bar = pressure_pascal/10e5;
  presure = pressure_bar;
  */
   
  dataadc = analogRead(A0);
  vol = dataadc * (5.0 / 1023.0);
  kpa = (( vol - 0.2) / 0.045 )* 0.1971621298;
  bar = kpa/100.0;
  
  if(bar < 0){
  bar = 0;  
  }
   
  lcd.setCursor(0, 0);
  lcd.print("Bar= ");
  lcd.print(bar);
  lcd.print("   ");
      
  lcd.setCursor(0, 1);
  lcd.print("L/min= ");
  lcd.print(flowRate);
  lcd.print("   ");
 
  delay(200);  
}

void pulseCounter()
{
  pulseCount++;
}



e. VIDEO HASILNYA






No comments:

Post a Comment