Agustus, 2022

Sensor HCSR04

PZEM-004T

Sensor ultrasonik tipe HCSR04 merupakan perangkat yang digunakan untuk mengukur jarak dari suatu objek. Kisaran jarak yang dapat diukur sekitar 2-450 cm. Perangkat ini menggunakan dua pin digital untuk mengkomunikasikan jarak yang terbaca.

Spesifikasi PZEM-004T

  1. Voltage
    • Operating Voltage:3V
    • Input Voltage(recommended):7-12V
    • Input Voltage(limit):6-20V
  2. Input/Output
    • Digital I/O Pins:54
    • Analog Inputs Pins:12
    • Analog Outputs Pins:2 (DAC)
  3. Current
    • DC Current for 3,3 V Pin:800mA
    • DC Current for 5V Pin:800mA

Prinsip Kerja

Diagram Blok PZEM-004T

Diagram Rangkaian

Diagram Blok PZEM-004T

Program ArduinoUNO

                
    const int triggerPin_1 = 13;
    const int echoPin_1 = 12;
    unsigned int duration_1;
    unsigned int distance_1;
    const int triggerPin_2 = 11;
    const int echoPin_2 = 10;
    unsigned int duration_2;
    unsigned int distance_2;
    const int triggerPin_3 = 9;
    const int echoPin_3 = 8;
    unsigned int duration_3;
    unsigned int distance_3;
    const int triggerPin_4 = 7;
    const int echoPin_4 = 6;
    unsigned int duration_4;
    unsigned int distance_4;
    int Relay = 5;
    void setup() {
      pinMode (Relay, OUTPUT);
      pinMode(triggerPin_1, OUTPUT);
      pinMode(echoPin_1, INPUT);
      pinMode(triggerPin_2, OUTPUT);
      pinMode(echoPin_2, INPUT);
      pinMode(triggerPin_3, OUTPUT);
      pinMode(echoPin_3, INPUT);
      pinMode(triggerPin_4, OUTPUT);
      pinMode(echoPin_4, INPUT);
      Serial.begin(9600);
    }
    void loop() {
      readSensor_1();
      readSensor_2();
      readSensor_3();
      readSensor_4();
      relayActivated();
      Serial.println(" ");
      delay(500);
    }
    void readSensor_1() {
      digitalWrite(triggerPin_1, LOW);
      delayMicroseconds(2);
      digitalWrite(triggerPin_1, HIGH);
      delayMicroseconds(10);
      digitalWrite(triggerPin_1, LOW);
      duration_1 = pulseIn(echoPin_1, HIGH);
      distance_1 = (duration_1 / 2) / 28.5;
      Serial.print("Sensor 1 = ");
      Serial.print(distance_1);
      Serial.println(" cm");
    }
    void readSensor_2() {
      digitalWrite(triggerPin_2, LOW);
      delayMicroseconds(2);
      digitalWrite(triggerPin_2, HIGH);
      delayMicroseconds(10);
      digitalWrite(triggerPin_2, LOW);
      duration_2 = pulseIn(echoPin_2, HIGH);
      distance_2 = (duration_2 / 2) / 28.5;
      Serial.print("Sensor 2 = ");
      Serial.print(distance_2);
      Serial.println(" cm");
    }
    void readSensor_3() {
      digitalWrite(triggerPin_3, LOW);
      delayMicroseconds(2);
      digitalWrite(triggerPin_3, HIGH);
      delayMicroseconds(10);
      digitalWrite(triggerPin_3, LOW);
      duration_3 = pulseIn(echoPin_3, HIGH);
      distance_3 = (duration_3 / 2) / 28.5;
      Serial.print("Sensor 3 = ");
      Serial.print(distance_3);
      Serial.println(" cm");
    }
    void readSensor_4() {
      digitalWrite(triggerPin_4, LOW);
      delayMicroseconds(2);
      digitalWrite(triggerPin_4, HIGH);
      delayMicroseconds(10);
      digitalWrite(triggerPin_4, LOW);
      duration_4 = pulseIn(echoPin_4, HIGH);
      distance_4 = (duration_4 / 2) / 28.5;
      Serial.print("Sensor 4 = ");
      Serial.print(distance_4);
      Serial.println(" cm");
    }
    void relayActivated() {
      if (distance_1 < 50 && distance_2 < 50 && distance_3 < 50 && distance_4 < 50){
        digitalWrite (Relay, LOW);
      }else {
        digitalWrite (Relay, HIGH);
      }
    }