Modul Sensor PZEM-004T V3

PZEM-004T adalah perangkat untuk mengukur parameter elektrikal, meliputi tegangan, daya, energi dan arus. Tersedia 2 macam versi, ada yang 10 ampere dan 100 ampere.

Foto versi 100 A

Versi 100 ampere menggunakan trafo arus untuk menurunkan arus dari 100A ke nilai yang lebih kecil.

PZEM-004T-V3-100A tampak bawah
PZEM-004T-V3-100A tampak bawah

 

PZEM-004T-V3-100A tampak atas
PZEM-004T-V3-100A tampak atas

Foto versi 10 A

Verso 10 A tidak memerlukan trafo arus

tampak atas

tampak bawah

Skema rangkaian modul

Website resmi produk ini tidak mencantumkan rangkaian di dalamnya. Ada yang melakukan reverse engineering untuk membuat skema rangkaiannya.  Berikut ini rangkaian versi original:

Komponen utama pengukur parameter elektrikal adalah chip V9881D buatan Vango Technologies Inc..

User Manual

Manual tersedia dalam bentuk hardcopy dalam kemasan pembelian, dan tersedia juga dalam bentuk softcopy di situs produsennya.

Berikut ini user manual hasil scan dari manual hardcopy

Berikut ini manual softcopy: User Manual PZEM-004T-V3.0-Datasheet-User-Manual (PDF)

Referensi

Sensor Ketinggian Air Dengan Tekanan

 

Sensor ketinggian air (water level sensor) yang menggunakan tekanan air untuk mengetahui ketinggian air. Prinsip fisika yang dipakai adalah hidrostatika, di mana tekanan dalam suatu wadah berisi cairan sebanding dengan kedalaman dan massa jenis cairan tersebut.

 

 

Sensor tekanan air
Sensor tekanan air

Berikut ini contoh pinout sensor ketinggian air yang sudah dilengkapi dengan antar muka RS-485

 

Sensor ini sudah dilengkapi dengan kompensasi tekanan udara. Caranya adalah dengan adanya selang udara kecil di dalam kabel penghubung ke sensor tersebut. Dengan demikian maka dapat diketahui perbedaan tekanan di dalam air dan tekanan udara di luar tangki. Dari perbedaan tekanan tersebut dapat dihitung ketinggian air pada tangki atau wadah air.

 

Sensor CO2 MH-Z19B

Sensor Winsen MH-Z19B berfungsi mengukur kadar CO2 di udara. Prinsip pengukuran menggunakan NDIR (Non Dispersive Infrared). Fitur utama: selektivitas tinggi, tidak tergantung oksigen, masa pakai panjang. Di dalamnya sudah ada kompensasi temperatur. Outputnya tersedia 3 macam, berupa sinyal digital serial asinkron, sinyal digital PWM (pulse width modulation) dan tegangan analog.

Kadar CO2 di udara dapat dipakai untuk indikator kualitas ventilasi di suatu ruangan. Ventilasi yang baik ini penting untuk mengurangi penularan COVID-19.

Spesifikasi

Product Model MH-Z19B
Target Gas
CO2
Working voltage 4.5~ 5.5 V DC
Average current < 60mA(@5V)
Peak current 150mA (@5V)
Interface level 3.3 V(Compatible with 5V)
Measuring range refer to Table 2
Output signal
UART(TTL interface level 3.3V)
PWM
DAC(default 0.4-2V)
Preheat time 3 min
Response Time T90< 120 s
Working temperature
0 ~ 50 ℃
Working humidity 0~ 90% RH (No condensation)
Dimension 33 mm×20 mm×9 mm (L×W×H)
Weight 5g
Lifespan > 5 years
 

Penampakan

Berikut ini contoh sensor MH-Z19B yang dihubungkan ke prosesor ESP32 DevkitC. Pertimbangan menggunakan DevkitC adalah karena tegangan sinyal sensor adalah 3 volt namun juga memerlukan tegangan Vcc sebesar 5 volt. Board ESP32 Lolin32 Lite tidak memiliki output 5 volt, jadi agak sulit digunakan pada aplikasi ini.

Contoh Kode

Berikut ini contoh pembacaan sensor melalui port serial.

Konfigurasi port serial di ESP32 menggunakan pin 22 sebagai RXD dan pin 23 sebagai TXD. Jalur port serial dihubungkan melalui resistor 100 ohm untuk perlindungan kalau terjadi kesalahan polaritas pin TX dan RX.

// https://circuits4you.com/2018/12/31/esp32-hardware-serial2-example/

#define RXD2 22
#define TXD2 23

// These constants won't change. They're used to give names to the pins used:

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

#define LED_BUILTIN 2

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
  Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
  Serial.println("Start Devkit");
  Serial.println("Start Devkit");

  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(21, OUTPUT);
}

void loop() {
  char cmd;

  Serial2.print((char)0xff); // 0 : start byte
  Serial2.print((char)0x01);
  Serial2.print((char)0x86);
  Serial2.print((char)0x00);
  Serial2.print((char)0x00);
  Serial2.print((char)0x00);
  Serial2.print((char)0x00);
  Serial2.print((char)0x00);
  Serial2.print((char)0x79); // 8: checksum

  int counter = 0;
  int co2_high, co2_low;
  int available;
  available = Serial2.available();
  while (available > 0) {

    // read the incoming byte:
    int incomingByte = Serial2.read();

    // say what you got:
    Serial.print(">>:");
    Serial.println(incomingByte, DEC);

    if (counter == 2) {
      co2_high = incomingByte;
    }
    if (counter == 3) {
      co2_low = incomingByte;
    }
    available = Serial2.available();

    counter++;
  }
  Serial.print("CO2: ");
  Serial.println(co2_high * 256 + co2_low);

  //  Serial.print("available: ");
  //  Serial.println(available);

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(21, HIGH);
  delay(500);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(21, LOW);    // turn the LED off by making the voltage LOW
  delay(500);
}

Referensi

 

Mengukur kadar Karbondioksida Dengan Sensor CJMCU-8118

Kode

 

// https://github.com/adafruit/Adafruit_CCS811/blob/master/examples/CCS811_test/CCS811_test.ino
// https://github.com/closedcube/ClosedCube_HDC1080_Arduino
// https://github.com/closedcube/ClosedCube_HDC1080_Arduino/blob/master/examples/hdc1080measurement/hdc1080measurement.ino

#define I2C_SDA 15
#define I2C_SCL 13
#define LED_ONBOARD 22

#include "Adafruit_CCS811.h"
#include <Arduino.h>
#include <Wire.h>
#include "ClosedCube_HDC1080.h"

Adafruit_CCS811 ccs;
ClosedCube_HDC1080 hdc1080;

void setup() {
  pinMode(LED_ONBOARD, OUTPUT);
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(1000);

  //wait for serial connection to open (only necessary on some boards)
  while (!Serial);

  Wire.begin(I2C_SDA, I2C_SCL);

  I2C_Scan() ; // just for verifying

  // check CCS811
  Serial.println("CCS811 test");
  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1);
  } else {
    Serial.println("CCS811 ready");
  }


  hdc1080.begin(0x40);
  Serial.println("HDC1080");
  Serial.print("Manufacturer ID=0x");
  Serial.println(hdc1080.readManufacturerId(), HEX); // 0x5449 ID of Texas Instruments
  Serial.print("Device ID=0x");
  Serial.println(hdc1080.readDeviceId(), HEX); // 0x1050 ID of the device

  hdc1080.setResolution(HDC1080_RESOLUTION_11BIT, HDC1080_RESOLUTION_11BIT);

}

void loop() {
  float temperature = 25;
  float pressure = 0;
  float humidity = 60; // default humidity
  float co2 = 0;
  float tvoc = 0;



  temperature = hdc1080.readTemperature();
  humidity = hdc1080.readHumidity();

  ccs.setEnvironmentalData( humidity, temperature );

  if (ccs.available()) {
    if (!ccs.readData()) {
      //      Serial.print("CO2: ");
      //Serial.print(ccs.geteCO2());
      //Serial.print("ppm, TVOC: ");
      //Serial.println(ccs.getTVOC());
      co2 = ccs.geteCO2();
      tvoc =   ccs.getTVOC();
    }
  }

  Serial.print("Temp\t");
  Serial.print(temperature);
  Serial.print("\t");

  Serial.print("Humidity\t");
  Serial.print(humidity);
  Serial.print("\t");

  Serial.print("CO2\t");
  Serial.print(co2);
  Serial.print("\t");
  Serial.print("TVOC\t");
  Serial.print(tvoc);
  Serial.println("");
  delay(500);
  digitalWrite(LED_ONBOARD, HIGH);
  delay(500);
  digitalWrite(LED_ONBOARD, LOW);
}

void I2C_Scan() {
  byte error, address;

  int nDevices;
  Serial.println("I2C Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknow error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  }
  else {
    Serial.println("done\n");
  }
}

Referensi

 

Mengukur Kadar Karbondioksida Dengan Sensor CCS811 dan Mikrokontroler ESP32

Pada percobaan ini dilakukan pengukuran kadar gas CO2  (karbon dioksida) di udara dengan sensor CCS811.

Mikrokontroler yang digunakan adalah modul ESP32 Lolin32 Lite

Modul CJMCU-811 tidak dilengkapi sensor temperatur & kelembaban, sehingga perlu tambahan sensor BME280.

Kompensasi temperatur dan kelembaban untuk sensor CCS811 menggunakan sensor BME280

Berikut ini foto perangkat keras yang digunakan

Berikut ini rangkaian sistem mikroprosesornya

Berikut ini source code program yang dipakai (dengan Arduino)

// https://bitbucket.org/christandlg/bmx280mi/src/master/examples/BMx280_I2C/BMx280_I2C.ino
// BMx280_I2C.ino
//
// shows how to use the BMP280 / BMx280 library with the sensor connected using I2C.
//
// Copyright (c) 2018 Gregor Christandl
//
// connect the AS3935 to the Arduino like this:
//
// Arduino - BMP280 / BME280
// 3.3V ---- VCC
// GND ----- GND
// SDA ----- SDA
// SCL ----- SCL
// some BMP280/BME280 modules break out the CSB and SDO pins as well:
// 5V ------ CSB (enables the I2C interface)
// GND ----- SDO (I2C Address 0x76)
// 5V ------ SDO (I2C Address 0x77)
// other pins can be left unconnected.


// https://github.com/adafruit/Adafruit_CCS811
// https://github.com/adafruit/Adafruit_CCS811/blob/master/examples/CCS811_test/CCS811_test.ino


#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;

#include <Arduino.h>
#include <Wire.h>

#define I2C_SDA 15
#define I2C_SCL 13


#include <BMx280I2C.h>

#define I2C_ADDRESS 0x76

//create a BMx280I2C object using the I2C interface with I2C Address 0x76
BMx280I2C bmx280(I2C_ADDRESS);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(1000);

  //wait for serial connection to open (only necessary on some boards)
  while (!Serial);

  //  Wire.begin();
  Wire.begin(I2C_SDA, I2C_SCL);

  I2C_Scan() ; // just for verifying

  // check CCS811
  Serial.println("CCS811 test");
  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1);
  } else {
    Serial.println("CCS811 ready");
  }

  //begin() checks the Interface, reads the sensor ID (to differentiate between BMP280 and BME280)
  //and reads compensation parameters.
  if (!bmx280.begin())
  {
    Serial.println("begin() failed. check your BMx280 Interface and I2C Address.");
    while (1);
  }

  if (bmx280.isBME280())
    Serial.println("sensor is a BME280");
  else
    Serial.println("sensor is a BMP280");

  //reset sensor to default parameters.
  bmx280.resetToDefaults();

  //by default sensing is disabled and must be enabled by setting a non-zero
  //oversampling setting.
  //set an oversampling setting for pressure and temperature measurements.
  bmx280.writeOversamplingPressure(BMx280MI::OSRS_P_x16);
  bmx280.writeOversamplingTemperature(BMx280MI::OSRS_T_x16);

  //if sensor is a BME280, set an oversampling setting for humidity measurements.
  if (bmx280.isBME280())
    bmx280.writeOversamplingHumidity(BMx280MI::OSRS_H_x16);
}

void loop() {
  float temperature = 0;
  float pressure = 0;
  float humidity = 60; // default humidity
  float co2 = 0;
  float tvoc = 0;

  delay(1000);

  //start a measurement
  if (!bmx280.measure())
  {
    Serial.println("could not start measurement, is a measurement already running?");
    return;
  }

  //wait for the measurement to finish
  do
  {
    delay(100);
  } while (!bmx280.hasValue());

  //  Serial.print("Pressure: "); Serial.println(bmx280.getPressure());
  //  Serial.print("Pressure (64 bit): "); Serial.println(bmx280.getPressure64());
  //  Serial.print("Temperature: "); Serial.println(bmx280.getTemperature());

  pressure = bmx280.getPressure();
  temperature = bmx280.getTemperature();

  //important: measurement data is read from the sensor in function hasValue() only.
  //make sure to call get*() functions only after hasValue() has returned true.
  if (bmx280.isBME280())
  {
    //    Serial.print("Humidity: ");
    //    Serial.println(bmx280.getHumidity());
    humidity = bmx280.getHumidity();
  }

  ccs.setEnvironmentalData( humidity, temperature );

  if (ccs.available()) {
    if (!ccs.readData()) {
      //      Serial.print("CO2: ");
      //Serial.print(ccs.geteCO2());
      //Serial.print("ppm, TVOC: ");
      //Serial.println(ccs.getTVOC());



      co2 = ccs.geteCO2();
      tvoc =   ccs.getTVOC();
    }
  }

  Serial.print("Temp\t");
  Serial.print(temperature);
  Serial.print("\t");

  Serial.print("Humidity\t");
  Serial.print(humidity);
  Serial.print("\t");

  Serial.print("Pressure\t");
  Serial.print(pressure);
  Serial.print("\t");

  Serial.print("CO2\t");
  Serial.print(co2);
  Serial.print("\t");
  Serial.print("TVOC\t");
  Serial.print(tvoc);
  Serial.println("");
}

void I2C_Scan() {
  byte error, address;

  int nDevices;
  Serial.println("I2C Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknow error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  }
  else {
    Serial.println("done\n");
  }
}

Berikut ini software versi lain

// pengukuran CO2, tanpa wifi

// https://bitbucket.org/christandlg/bmx280mi/src/master/examples/BMx280_I2C/BMx280_I2C.ino
// BMx280_I2C.ino
//
// shows how to use the BMP280 / BMx280 library with the sensor connected using I2C.
//
// Copyright (c) 2018 Gregor Christandl
//
// connect the AS3935 to the Arduino like this:
//
// Arduino - BMP280 / BME280
// 3.3V ---- VCC
// GND ----- GND
// SDA ----- SDA
// SCL ----- SCL
// some BMP280/BME280 modules break out the CSB and SDO pins as well:
// 5V ------ CSB (enables the I2C interface)
// GND ----- SDO (I2C Address 0x76)
// 5V ------ SDO (I2C Address 0x77)
// other pins can be left unconnected.


// https://github.com/adafruit/Adafruit_CCS811
// https://github.com/adafruit/Adafruit_CCS811/blob/master/examples/CCS811_test/CCS811_test.ino


#include "Adafruit_CCS811.h"
Adafruit_CCS811 ccs;

#include <Arduino.h>
#include <Wire.h>
#include <BMx280I2C.h>
#include "ClosedCube_HDC1080.h"

#define I2C_SDA 15
#define I2C_SCL 13
#define I2C_ADDRESS 0x76
#define LED_ONBOARD 22

const char *ssid     = "First";
const char *password = "satu2345";

//create a BMx280I2C object using the I2C interface with I2C Address 0x76
BMx280I2C bmx280(I2C_ADDRESS);
ClosedCube_HDC1080 hdc1080;

char mac_str[20];
byte mac_byte[6];

void setup() {
  pinMode(LED_ONBOARD, OUTPUT);
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(1000);

  //wait for serial connection to open (only necessary on some boards)
  while (!Serial);

  //  Wire.begin();
  Wire.begin(I2C_SDA, I2C_SCL);

  I2C_Scan() ; // just for verifying

  // check CCS811
  Serial.println("CCS811 test");
  if (!ccs.begin()) {
    Serial.println("Failed to start sensor! Please check your wiring.");
    while (1);
  } else {
    Serial.println("CCS811 ready");
  }
  SetupBME280();
  SetupHDC1080();
}

void SetupBME280() {
  //begin() checks the Interface, reads the sensor ID (to differentiate between BMP280 and BME280)
  //and reads compensation parameters.
  if (!bmx280.begin())
  {
    Serial.println("begin() failed. check your BMx280 Interface and I2C Address.");
    while (1);
  }

  if (bmx280.isBME280())
    Serial.println("sensor is a BME280");
  else
    Serial.println("sensor is a BMP280");

  //reset sensor to default parameters.
  bmx280.resetToDefaults();

  //by default sensing is disabled and must be enabled by setting a non-zero
  //oversampling setting.
  //set an oversampling setting for pressure and temperature measurements.
  bmx280.writeOversamplingPressure(BMx280MI::OSRS_P_x16);
  bmx280.writeOversamplingTemperature(BMx280MI::OSRS_T_x16);

  //if sensor is a BME280, set an oversampling setting for humidity measurements.
  if (bmx280.isBME280())
    bmx280.writeOversamplingHumidity(BMx280MI::OSRS_H_x16);
}

void SetupHDC1080() {

  hdc1080.begin(0x40);
  Serial.println("HDC1080");
  Serial.print("Manufacturer ID=0x");
  Serial.println(hdc1080.readManufacturerId(), HEX); // 0x5449 ID of Texas Instruments
  Serial.print("Device ID=0x");
  Serial.println(hdc1080.readDeviceId(), HEX); // 0x1050 ID of the device
  hdc1080.setResolution(HDC1080_RESOLUTION_11BIT, HDC1080_RESOLUTION_11BIT);
}

void loop() {
  float temperature = 0;
  float pressure = 0;
  float humidity = 60; // default humidity
  float co2 = 0;
  float tvoc = 0;

  if (1) {
    //start a measurement
    if (!bmx280.measure())
    {
      Serial.println("could not start measurement, is a measurement already running?");
    }
    do
    {
      delay(100);
    } while (!bmx280.hasValue());

    pressure = bmx280.getPressure();
    temperature = bmx280.getTemperature();
    //important: measurement data is read from the sensor in function hasValue() only.
    //make sure to call get*() functions only after hasValue() has returned true.
    if (bmx280.isBME280())
    {
      humidity = bmx280.getHumidity();
    }
  }
  ccs.setEnvironmentalData( humidity, temperature ); // kompensasi humidity & temperature

  if (ccs.available()) {
    if (!ccs.readData()) {
      //      Serial.print("CO2: ");
      //Serial.print(ccs.geteCO2());
      //Serial.print("ppm, TVOC: ");
      //Serial.println(ccs.getTVOC());
      co2 = ccs.geteCO2();
      tvoc =   ccs.getTVOC();
    }
  }

  Serial.print("Temp\t");
  Serial.print(temperature);
  Serial.print("\t");

  Serial.print("Humidity\t");
  Serial.print(humidity);
  Serial.print("\t");

  Serial.print("Pressure\t");
  Serial.print(pressure);
  Serial.print("\t");

  Serial.print("CO2\t");
  Serial.print(co2);
  Serial.print("\t");
  Serial.print("TVOC\t");
  Serial.print(tvoc);
  Serial.println("");

  delay(500);
  digitalWrite(LED_ONBOARD, HIGH);
  delay(500);
  digitalWrite(LED_ONBOARD, LOW);
}

void I2C_Scan() {
  byte error, address;

  int nDevices;
  Serial.println("I2C Scanning...");
  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknow error at address 0x");
      if (address < 16) {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  }
  else {
    Serial.println("done\n");
  }
}

Berikut ini contoh tampilan outputnya

13:08:18.861 -> I2C Scanning...
13:08:18.861 -> I2C device found at address 0x5A
13:08:18.896 -> I2C device found at address 0x76
13:08:18.931 -> done
13:08:18.931 -> 
13:08:18.931 -> CCS811 test
13:08:19.101 -> CCS811 ready
13:08:19.101 -> sensor is a BME280
13:08:19.135 -> HDC1080
13:08:19.135 -> Manufacturer ID=0xFFFF
13:08:19.135 -> Device ID=0xFFFF
13:08:19.239 -> Temp	30.83	Humidity	50.10	Pressure	87156.00	CO2	0.00	TVOC	0.00
13:08:20.368 -> Temp	30.83	Humidity	50.29	Pressure	91715.00	CO2	0.00	TVOC	0.00
13:08:21.464 -> Temp	30.84	Humidity	50.37	Pressure	91714.00	CO2	0.00	TVOC	0.00

 

Referensi

 

Sensor Ketinggian Air Untuk Arduino

Ada banyak cara untuk mengukur ketinggian air dengan mikroprosesor Arduino

Sensor Ultrasonik

Cara pertama adalah dengan menggunakan pengukur jarak ultrasonik. Sensor ini mengukur waktu propagasi sinyal dari pemancar sampai kembali lagi ke penerima. Waktu propagasi sebanding dengan jarak tempuh. Perlu diperhatikan bahwa kecepatan suara di udara terpengaruh oleh temperatur dan kelembaban.

Salah satu sensor ultrasonik yang populer adalah HC-SR04. Sensor ini murah meriah dan sangat populer, namun agak kurang akurat, dan tidak tahan air. Kalau dipakai mengukur air terus-menerus kemungkinan akan kena korosi dari air.

HC SR04 sensor jarak ultrasonik
HC SR04 sensor jarak ultrasonik

Sensor lain yang lebih baik adalah JSN-SR04T. Sensor ultrasonik ini kedap air, namun bagian elektroniknya harus diletakkan di tempat kering.

Sensor Kapasitif

Sensor jenis ini memanfaatkan sifat kapasitif untuk mendeteksi adanya air.

Sensor kapasitif XKC-Y25-V
Sensor kapasitif XKC-Y25-V

Sensor ini mesti dipasang di dinding luar wadah air. Wadahnya harus non logam. Cairan harus konduktif. Prinsip kerjanya jika ada air di dekat sensor, maka akan ada perubahan kapasitansi yang dapat dideteksi oleh rangkaian di dalamnya.

Pemasangan sensor XKC-Y25-T12V
Pemasangan sensor XKC-Y25-T12V

Sensor ini cocok untuk cairan yang sama sekali tidak boleh disentuh , misalnya bahan-bahan asam atau korosif lainnya.

Sensor ini hanya memberi indikasi ada / tidaknya cairan, namun tidak dapat memberikan informasi ketinggian cairan tersebut.

Sumber: https://wiki.dfrobot.com/Non-contact_Liquid_Level_Sensor_XKC-Y25-T12V_SKU__SEN0204

Pelampung

Berikut ini sensor ketinggian air dengan pelampung. Sensor dengan pelampung biasanya hanya memberikan indikasi on-off, tidak memberikan data ketinggian secara detail.

Pelampung sensor ketinggian air
Pelampung sensor ketinggian air

Sensor di atas mengukur ketinggian air dengan batas atas dan batas bawah.

Berikut ini sensor ketinggian air dengan menggunakan magnet.

Pelampung sensor ketinggian air
Pelampung sensor ketinggian air

Pada bagian busa yang bergerak di dalamnya terdapat magnet, sedangkan di bagian yang diam terdapat relay magnetik (reed relay). Dari gerakan pelampung akan menyebabkan relay membuka/ menutup tergantung ketinggian air. Kondisi relay ini dapat dibaca oleh Arduino sebagai ketinggian air.

Tekanan Air

Berikut ini beberapa sensor yang menggunakan prinsip hidrostatika.

Sensor tekanan air lengkap
Sensor tekanan air lengkap

Sensor tekanan air di atas mengukur tekanan air pada pipa 1/4 inch. Outputnya berupa tegangan analog. Tegangan ini dapat dibaca oleh ADC di Arduino untuk kemudian diterjemahkan menjadi ketinggian air.

 

Sensor tekanan air
Sensor tekanan air

Sensor di atas mengukur tekanan air. Sensor ini lebih profesional, dilengkapi dengan output dengan protokol current loop 4 ~ 20 mA atau RTU Modbus (RS485).

 

Load Cell LC-PB-100kg

Berikut ini adalah sensor Load Cell dengan kapasitas 100 kg. Unit ini cocok dipakai sebagai sensor berat pada timbangan digital. Input memerlukan power supply 5 ~ 12 volt DC. Outputnya adalah tegangan differensial dengan tegangan sekitar 2 volt DC. 

Penampakan

Load Cell Wisner LC-PB-100kg
Load Cell Wisner LC-PB-100kg

 

Load Cell Wisner LC-PB-100kg
Load Cell Wisner LC-PB-100kg

Datasheet

Datasheet load cell LC-PB-100kg
Datasheet load cell LC-PB-100kg

Percobaan

Load cell ini cocoknya dipasangkan dengan modul amplifier & ADC HX711

Referensi

 

Sensor Tekanan Air Untuk Mengukur Kompresi Mesin Motor

Salah satu parameter yang perlu diukur pada motor bakar adalah tekanan kompresi. Pertanyaan yang akan dicoba dijawab: apakah sensor tekanan air dapat dipakai mengukur tekanan kompresi , mengingat pengukur tekanan ini sangat berguna untuk dipakai di bengkel motor.

Pertama mari cek dulu apa yang terjadi pada kompresi motor bakar.

Ketika terjadi kompresi, maka tentu saja tekanan akan meningkat, dan juga temperatur ruang bakar meningkat. Peningkatannya dapat dihitung dengan rumus P.V = n.R.T , namun hasil pengukuran mungkin tidak tepat 100% dengan perhitungan karena ada ketidak idealan di sana-sini.

Tekanan awal ruang bakar adalah 1 atmosfer, ketika kompresi tekanan akan naik sesuai dengan rasio kompresi. Motor biasanya rasio kompresi antara 9,5 sampai 11,6, sehingga anggap saja tekanan akan naik dari 1 atmosfer menjadi 11,6 atmosfer. Temperatur juga akan naik, dari beberapa referensi angka temperatur sekitar 300 derajat Celcius.

Selanjutnya mari cek spesifikasi sensor tekanan air yang dimaksud. Datasheetnya kurang lebih seperti pada tautan berikut: https://media.digikey.com/pdf/Data%20Sheets/Seeed%20Technology/114991178_Web.pdf

 

Sensor tekanan air
Sensor tekanan air

Spesifikasi penting menurut datasheet  tersebut:

  • Wokring Voltage: DC 5±0.5V
  • Working Current: ≤10mA (DC 5V)
  • Working Voltage: DC 0.5~4.5V
  • Working Pressure Rate Range: 0~1.2Mpa
  • Max. Pressure: 2.4Mpa
  • Destructive pressure: 3.0Mpa
  • Working Temperature: -20~+ 105Ԩ
  • Storage Temperature: -20~+ 105Ԩ
  • Measurement Accuracy: ±1.5%FS
  • Response Time: ≤2.0ms
  • IP65
  • Cycle Life: 1,000,000 pcs

Batas tekanan adalah 1,2 Mpa, atau 1,2 x 9,86923 = 11.843976 Atmosphere , sedangkan tekanan kompresi adalah 11,6 atmosfer, jadi sensor ini masih memenuhi syarat dari sisi temperatur.

Batas temperatur adalah 105 derajat Celcius, jadi sensor ini tidak dapat dipakai karena temperatur ruang bakar dapat mencapai 300 derajat Celcius.

Sensor Sudut P3022-V1-CW360 Berbasis Efek Hall

Tampak samping P3022
Tampak samping P3022

Tampak depan P3022
Tampak depan P3022

Terminal pada P3022
Terminal pada P3022

P3022 dengan bracket terpasang
P3022 dengan bracket terpasang

P3022 dengan bracket
P3022 dengan bracket

Sensor ini menggunakan konektor jenis ‘turret tag’, yang cara menyambungnya adalah dengan disolder, seperti berikut ini:

Turret terminal dengan solder
Turret terminal dengan solder

Informasi Teknis

P3022-V1-CW360 Deskripsi
P3022-V1-CW360 Deskripsi

 

The Hall Angle Sensor is a miniature 360 degree sensor which works based on the principle of the Hall effect. It is compatible with the DFRobot Gravity sensor interface, and works with a 5V DC power supply. The analog output is also 0~5V so it can work directly with Arduino.

The Hall angle sensor works by converting its angle information to an electrical signal. When the rotation angle of the object is passed to the axis of rotation sensors, it outputs an electrical signal that is proportional to the rotational angle.

The angular sensor shell is constructed from robust aluminum alloy, using Hall-type non-contact technology. It includes high-quality imported high-speed stainless steel bearings and other components for reduced frictional resistance when taking readings.

The unit offers a long service life and is compact, with a high resolution, smooth rotation and dynamic noise. This unit is guarantees performance in various harsh industrial environments and is protected from electromagnetic interference, water, oil, vibration and shock. A typical application is crank angle sensing and steering angle measurement.

 

P3022-V1-CW360 Technical Information
P3022-V1-CW360 Technical Information

 

  • Mechanical Angle: 0-360° (No stop)
  • Operating Voltage: 5V ± 10%
  • Operating Current: <13.5mA
  • Output Signal: 0-5V DC (Ratio)
  • Resolution: 0.088° (12-bit ADC)
  • Accuracy: ± 0.3% FS
  • Output Shaft Dimension: 6 mm (D Sharp)
  • Rotational Torque: <5mN·m
  • Refresh Rate: 0.6ms / 0.2ms (high speed)
  • Operating Temperature: -30 ℃ ~ +80 ℃
  • Allowable Axial Load: Horizontal <5N; Vertical <10N
  • Protection Class: IP40
  • Mechanical Life:> 50 million revolutions
  • Weight: 36g

 

P3022-V1-CW360
P3022-V1-CW360

P3022-V1-CW360 Dimensi
P3022-V1-CW360 Dimensi

 

Referensi

Analisis Pengendali Temperatur TEW IL-80EN

Foto menurut http://olx.co.id/iklan/thermo-controller-il-80en-tew-IDkZBJk.html

Kardus TEW IL-80EN
Kardus TEW IL-80EN

Tampak depan TEW IL-80EN dan sensor Thermocouple
Tampak depan TEW IL-80EN dan sensor Thermocouple

Tampak belakang TEW-IL-80EN
Tampak belakang TEW-IL-80EN

Tampak Belakang TEW IL-80EN
Tampak Belakang TEW IL-80EN

Analisis gambar:

  • Terminal 1 & 2 dipakai untuk memasang sensor thermocouple (singkatan TC)
  • Terminal 3 & 5 dipakai untuk dipasang ke jala-jala listrik 220 volt
  • Terminal 7 & 8 dipakai untuk ke beban (pemanas) 220 volt
  • Terminal 6 , 7 & 8 di dalam terhubung ke suatu relay, yang merupakan sakelar listrik. Sakelar ini diatur ON jika temperatur terlalu dingin (supaya pemanas menyala), dan OFF jika temperatur sudah cukup panas. Normalnya pemanas dipasang antara 7 & 8.

Prosedur ujicoba yang disarankan, pertama-tama cek dulu apakah pengendali bekerja normal, dan sensor bekerja normal.

  1. Jangan dipasang ke jala-jala 220 volt dulu
  2. Cek dengan multitester, apakah terminal 6 & 7 terhubung, atau 7 & 8 terhubung. Menurut gambar di atas, pada kondisi normal, terminal 6 & 7 terhubung, sedangkan 7 & 8 tidak terhubung.
  3. 6, 7 & 8 jangan disambung dulu ke jala-jala listrik
  4. pasang sensor thermocouple ke terminal 1 & 2
  5. pasang jala-jala listrik 220 volt ke terminal 3 & 4
  6. Ubah-ubah setelan temperatur di panel depan. Ketika setelan temperatur di bawah temperatur kamar, seharusnya relay terhubung antara 6 & 7, sedangkan kalau setelan temperatur di atas temperatur kamar (misal 50 derajat), maka seharusnya relay ON (7 & 8 tersambung) untuk menyalakan pemanas. Biasanya perubahan ON/OFF ini dapat terdengar suaranya dari relay yang bekerja, atau dapat diukur dengan mengecek sambungan di terminal 6,7 & 8
  7. Jika percobaan point 6 berhasil, dapat disimpulkan pengendali temperatur sudah bekerja dengan baik, sensor sudah terpasang dengan benar

Prosedur instalasin dengan pemanas

  • Sama seperti percobaan sebelumnya, hanya di sini terminal 7 disambung ke salah satu kabel 220 volt, dan terminal 8 disambung ke pemanas. Terminal pemanas yang lainnya disambung ke kabel 220 volt yang satunya (seperti pada skema tersebut).

Save

Save

Optical Incremental Rotary Encoder G40B-6-400-2-24

Sensor ini adalah sensor putaran dari jenis optical incremental rotary encoder. Optical artinya prinsip kerjanya dengan menggunakan piringan transparan yang diberi garis hitam dengan sumber cahaya LED dan sensor cahaya photodiode. Gerakan pada poros akan mengakibatkan gerakan garis hitam, sehingga akan timbul pulsa pada sensor photodiode. Incremental artinya sensor ini hanya mengukur gerakan relatif, bukan mengukur posisi absolut poros.

Rotary Encoder G40B-6-400
Rotary Encoder G40B-6-400

Manualnya tersedia di http://www.coron.com.cn/En/products.asp?cid=699&flg=11

Arti dari tipe tersebut menuru situs Coron:

  • G40: diameter luar 40 mm
  • B:
  • 6: diameter poros 6mm
  • 400: resolusi 1 putaran
  • 2: jumlah fase output A/B
  • 24: Tegangan kerja dari 8 volt sampai 30 volt

Keterangan menurut artikel di ebay:

Features :
400 p/r (Single-phase 400 pulses /R,Two phase 4 frequency doubling to 1600 pulses)
Power source: DC5-24V
Shaft: 6*13mm/0.23*0.51″
Size: 38*35.5mm/1.49*1.39″
Output :AB 2phase output rectangular orthogonal pulse circuit, the output for the NPN open collector output type
Maximum mechanical speed: 5000 R / min
Response frequency: 0-20KHz
Cable length: 1.5 meter
Notice:AB 2phase output must not be directly connected with VCC, otherwise, will burn the output triode
Because different batches, and may not have the terminal

Package included: 1 X Incremental Rotary Encoder

Connection:
Green = A phase, white = B phase, red = Vcc power supply, black = V0
Application:
Is used to measure the rotational speed, Angle and acceleration of the object and the length measurement
Suitable for intelligent control of various displacement measurement, automatic fixed-length leather automatic guillotine machines, steel cut length control, civil measured height human scale, Students racing robots

Notice:
1.Please allow 1-3mm error due to manual measurement.
pls make sure you do not mind before you bid.
2.The colors may have different as the difference display,pls understand.

Keterangan menurut situs mechashop

Performance: 400 pulses per revolution.
Working voltage : 24VDC
Maximum mechanical speed of 1000 rev / minute
Dimensions: the encoder body size: | O~; 38mm; shaft &O-;6 x 13mm; axis platform: high-5mm &Oslash; 20 mm; fixing holes: M3 screws, three mounting holes round of 30, three mounting holes in round 28; side of the outlet.
Output: the output circuit NPN open collector output type; pulse of A, B two-way;

Wiring: Vcc positive supply, 0V to A-phase, B-phase, shielded cable.
Degree of protection :; IP54
<div>Model: 400P / R incremental rotary encoder, AB two-phase. Can identify the direction of the count pulse signal generated by the rotation of the grating disc and optocoupler
<div>&nbsp; &nbsp;Performance: 400 pulses per revolution. Working voltage :5-24V, maximum mechanical speed of 1000 rev / minute Dimensions: the encoder body size: | &Otilde; 38mm; shaft &Oslash;6 x 13mm; axis platform: high-5mm &Oslash; 20 mm; fixing holes: M3 screws, three mounting holes round of 30, three mounting holes in round 28; side of the outlet.
Output: the output circuit NPN open collector output type; pulse of A, B two-way;
Wiring: Vcc positive supply, 0V to A-phase, B-phase, shielded cable.
Note: AB two-phase outputs must not be connected directly to the power supply VCC, otherwise, they will burn the output transistor.
VCC ………….RED
0V………………BLACK
A ……………….YELLOW
B ……………….GREEN
F.G ……………shielding

Referensi:

  • http://www.coron.com.cn/En/products.asp?cid=699&flg=11
  • http://www.ebay.com/itm/400P-R-Rotary-Encoder-6mm-Incremental-Optical-Shaft-Working-Measurement-5-24V-US-/361402482978
  • http://mechashop.weloveshopping.com/store/product/view/%E0%B9%80%E0%B8%AD%E0%B9%87%E0%B8%99%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94%E0%B9%80%E0%B8%94%E0%B8%AD%E0%B8%A3%E0%B9%8C_Incremental_optical_rotary_encoder_400_pulse_24VDC-26240951-th.html

TTP229 16 Key Touch button

TTP229 adalah IC buatan TonTouch yang fungsinya untuk keypad 16 tombol dengan tombol sentuh kapasitif. Modul TTP229 yang siap pakai banyak dijual di eBay dan AliExpress. Berikut ini modul jadi TTP229 yang siap pakai. Modul ini cukup mudah untuk dihubungkan ke Arduino.

TTP229 Keypad
TTP229 Keypad

Modul keypad ini tanpa modifikasi hanya dapat mendeteksi tombol 1 ~ 8 saja. Untuk mengaktifkan dari 1 ~ 16, perlu ada beberapa jalur yang disolder [Ref: http://itimewaste.blogspot.co.id/2014/12/arduino-code-for-ttp229-touch-16-button.html].

Berikut ini modul yang sudah ditambah jalur yang disolder di konektor P1 dan P2

TTP229 yang dengan jalur sudah disolder
TTP229 yang dengan jalur yang sudah disolder

Setelah disolder maka modul TTP229 ini siap diuji dengan Arduino.

TTP229 dengan Arduino
TTP229 dengan Arduino

Software Arduino yang dapat dipakai dapat diambil di https://www.dropbox.com/s/15h3znv4hxid23r/TouchButton16.ino?dl=0

Output Arduino dapat dilihat pada gambar berikut:

Output TTP229 ke port serial
Output TTP229 ke port serial

 

Referensi

Geiger Counter

Geiger counter
Sensor radiasi Geiger counter

MODEL:NGMC-V1
  • Arduino Compatible Board
  • Geiger Tube is included !
  • Could be connected to PC directly to do realtime moniting.
     we also provide free matlab source code to do moniting and analysis.
Testing Video:
 This Nuclear Radiation DIY Detector Kit. Arduino compatible kit. Can drive M4011,STS-5, SBM20 or
J305 Geiger tubes on the PCB. Has voltage compatibility with all popular GM Tubes that requires anode voltage 350-500V.
The kit has visual and sound indication of the radiation and can be used as detector of dangerous radiation levels or radioactive materials in your environment. Excellent cheap solution for Arduino COSM monitoring station.
Good kit for MCU software developers that just want to drive Geiger Tube for their own software. Include PDF manual with instruction and Arduino code examples. The kit is compatible with “Radiation Logger” via Arduino SPI.
This eBay lot for one (1) assembled soldered calibrated board of radiation detector with GM Tube(M4011).
Piking list:
1 x  Assembled Radiation Detector system
1 x  GM Tube(M4011), already assembled on PCB board.
1 x  Power supply cable
1 x  Materials are sent through email address.
1 x  Battery Holder (without batteries)
3 x  Jumper Wires

Arduino circuit
Arduino circuit

Technical specifications:
Geiger Tube PCB Compatibility: M4011, STS-5, SBM-20, J305
Geiger Tube Voltage Compatibility: All General GM Tubes with anode voltage 350-480V
Sound and Visual Indication
Arduino Compatible
Supply Voltage: 5V; 3x 1.5V Battery; 4x 1.2V Battery
Include high impedance voltage divider
Supply Current: 12mA – 30mA
Dimensions: 120 x 50 mm
Shipping Weight: 150gr
Arduino MCU Communication:
The PCB has 3 pins for communication with MCU: INT, GND, 5V. You can power up the kit from 5V Arduino board directly. Or,
if you use batteries for Geiger Kit, you have to connect only 2 pins to Arduino: INT and GND.
There is many different application you can use this kit, especially if you are software developer. The board send 500 uS
high-low-high interrupts to Arduino. We offer 2 simple sketches as an example, please modify it for your needs. We do not provide technical support for Arduino code.
You can learn more at home page of arduino.
Actually its possible to use this kit with any other microcontroller, not only Arduino boards because it has the same principles, but if you are beginner it will be easy to start with Arduino.
M4011 Geiger Tube Specification:
Tin oxide Cathode, Coaxial cylindrical thin shell structure(Wall density 50±10cg/cm2),Application of pulse type halogen tube
application temperature:-40°C~55°C
Could be used for :γRay 20mR/h~120mR/h
               and β Ray in range  100~1800 ChangingIndex/minutes·CM2 soft β Ray
               (Both beta and gamma radiation detetion)
Working Voltage: 380-450V
Working Current: 0,015-0,02 mA
Sensivity to Gamma Radiation: 0.1 MeV
Own Background: 0,2 Pulses/s
Length:  88mm

Diameter: 10mmM4011 Geiger Tube Characteristic Curve:

M4011 Geiger tube characteristic curve
M4011 Geiger tube characteristic curve

Referensi