Author Archives: fathurmiftahudin

Membuat Menu pada TFT LCD 2.2″ ILI9340

Pada tutorial kali ini saya akan coba menjelaskan cara membuat menu pada TFT LCD 2.2″ ILI9340 menggunakan Arduino. LCD ini sudah pernah saya gunakan pada tutorial penunjuk jarum Kompas Digital . Tujuan dari tutorial ini sederhana, ketika anda membuat suatu proyek elektronika menggunakan Arduino dan sebuah TFT LCD kemudian anda ingin menampilkan suatu user-interface, maka anda bisa melakukannya!

Sekilas tentang MENU
Pada dasarnya untuk membuat sebuah tampilan menu adalah dengan membuat beberapa halaman. Berapa banyak halaman yang akan dibuat bergantung pada berapa banyak menu atau bahkan sub-menu yang diiinginkan dan juga seberapa interaktif tampilannya.

Sebagai contoh saya berikan sebuah tampilan menu yang akan kita pelajari pada tutorial kali ini, berikut tampilannya.

Tampilan Menu Sederhana

Untuk membuat tampilan menu seperti gambar diatas, maka kita terlebih dahulu harus membuat beberapa halaman. Pada dasarnya gerakan pointer yang dapat berpindah-pindah dari opsi pertama menuju opsi selanjutnya adalah dengan membuat beberapa halaman berisikan posisi pointer yang berbeda-beda. Untuk lebih jelasnya coba perhatikan gambar dibawah ini.

Tampilan Menu yang berisi beberapa halaman

Namun yang perlu diperhatikan pada gambar diatas adalah: kita tidak perlu membuat semua halaman dengan seluruh isi teksnya. Pergerakan menu yang diinginkan dari tampilan diatas hanyalah pointernya saja. Oleh karena itu, pada setiap halaman hanya berisi kode program untuk menampilkan pointer saja, sedangankan untuk teks yang lain cukup dieksekusi sekali, lebih tepatnya tidak masuk dalam void loop namun masuk ke dalam void setup sehingga yang dieksekusi berkali-kali adalah kode program untuk pointernya.

Komponen
[1] Arduino Pro Mini 5V
[1] TFT LCD 2.2″ ILI9340
[1] Push Button
[1] Resistor 1kOhm
[~] Komponen penunjang (breadboard, kabel jumper, dll)

Koneksi Pin

Arduino (Uno, Pro Mini) LCD TFT 2.2″ (ILI9340) Push Button (Pull Up)
5V (VCC) VIN
GND GND
D8 RST
D9 DC
D10 CS
D11 MOSI
D13 SCK
D3 INPUT

Rangkaian

Rangkaian TFT LCD 2.2″ + Arduino Pro Mini 5V

Kode Program

/******************************************************************************
  This is an sketch for the project below
  ----> http://engine-near.com/2018/04/05/membuat-menu-pada-tft-lcd/

  Check out the links below to download specific library used in this project
  ----> https://github.com/adafruit/Adafruit_ILI9340
  ----> https://github.com/adafruit/Adafruit-GFX-Library
 
  All library works with Arduino IDE 1.6.5 version. 

  Written by Fathur Miftahudin for http://engine-near.com
 *****************************************************************************/

#include "SPI.h"
#include "Adafruit_GFX.h" Library for all our adafruit displays
#include "Adafruit_ILI9340.h" // Library for Adafruit TFT LCD 2.2"

#if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
#endif

#define _sclk 13
#define _miso 12
#define _mosi 11
#define _cs 10
#define _dc 9
#define _rst 8

Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
int Button;

void setup() {
  pinMode(3,INPUT); // Digital input from pushButton
  tft.begin(); // TFT display
  pageMenu(); // Show display of page menu
}


void loop() {
  
  Button = digitalRead(3); //read the pushButton value
  
  if (Button == LOW){
    page1(); //--------------------------> Show page 1
    delay(200); // Avoid bounce

    int stoploop = false;
    while(!stoploop){
    Button = digitalRead(3);
    if (Button == LOW){
      stoploop = true;
      page2(); //------------------------> Show page 2
      delay(200);
      
      int stoploop = false;
      while(!stoploop){
      Button = digitalRead(3);
      if (Button == LOW){
        stoploop = true;
        page3(); //----------------------> Show page 3
        delay(200);
        
        int stoploop = false;
        while(!stoploop){
        Button = digitalRead(3);
        if (Button == LOW){
          stoploop = true;
          page4(); //--------------------> Show page 4
          delay(200);
          
            int stoploop = false;
            while(!stoploop){
            Button = digitalRead(3);
            if (Button == LOW){
              stoploop = true;
              page1(); //----------------> Back to page 1
          }      
          }
        }
        }      
      }
      }
    }
    }
  }
}


void pageMenu(){ // Show main page (menu)
  
  tft.fillScreen(ILI9340_BLACK);
  tft.setTextColor(ILI9340_WHITE);
  tft.setTextSize(2);
  
  tft.setCursor(55, 10);
  tft.print("MENU EXAMPLE");

  tft.drawLine(0, 32, 240, 32, ILI9340_WHITE); 
  
  tft.setCursor(75, 50);
  tft.print("Option 1");
  
  tft.setCursor(75, 95);
  tft.print("Option 2");
  
  tft.setCursor(75, 140);
  tft.print("Option 3"); 
  
  tft.setCursor(75, 185);
  tft.print("Option 4");

  tft.drawLine(0, 220, 240, 220, ILI9340_WHITE);
 
}

void page1(){
  
  tft.fillTriangle(45,187,45,197,55,192,ILI9340_BLACK); // Erase pointer option4
  tft.fillTriangle(45,52,45,62,55,57,ILI9340_WHITE); // Print pointer option1
  
}

void page2(){

  tft.fillTriangle(45,52,45,62,55,57,ILI9340_BLACK); // Erase pointer option1
  tft.fillTriangle(45,97,45,107,55,102,ILI9340_WHITE); // Print pointer option2
  
}

void page3(){

  tft.fillTriangle(45,97,45,107,55,102,ILI9340_BLACK); // Erase pointer option2
  tft.fillTriangle(45,142,45,152,55,147,ILI9340_WHITE); // Print pointer option3

}

void page4(){
  
  tft.fillTriangle(45,142,45,152,55,147,ILI9340_BLACK); // Erase pointer option3
  tft.fillTriangle(45,187,45,197,55,192,ILI9340_WHITE); // Print pointer option4
  
}

Jarum Penunjuk Kompas Digital HMC5883L + TFT LCD 2.2″

Jarum Penunjuk Kompas Digital HMC5883L + TFT LCD 2.2″

Pada tutorial kali ini, saya akan berbagi pengalaman membuat  kompas digital dengan tampilan berupa jarum penunjuk yang ditampilkan pada LCD. LCD yang digunakan bukanlah LCD  (16×2) yang umum digunakan pada proyek elektronika, melainkan menggunakan TFT LCD 2.2″. Jarum penunjuk ditampilkan dalam bentuk animasi yang nantinya akan selalu menunjuk ke arah utara layaknya jarum pada kompas analog, sehingga kemanapun sensor kompas (pengguna) berputar maka jarum akan selalu menunjuk ke arah utara.

Sekilas tentang kompas
Pada dasarnya jarum penunjuk pada kompas akan selalu menunjuk ke arah kutub utara magnetis bumi. Oleh karena itu, untuk membuat kompas digital yang selalu menunjuk ke arah utara layaknya kompas konvensional adalah dengan membuat suatu algoritma. Algoritma tersebut sebagai berikut: berapapun heading sensor kompas maka heading penunjuk arah utara akan memiliki nilai yang sama dengan heading sensor namun arahnya berkebalikan. Algoritma tersebut dibuat menggunakan circular function atau yang biasa disebut dengan fungsi trigonometri.

sincos-75

Circular Function (mathdemos.org)

Pergerakan heading oleh sensor merupakan representasi dari unit lingkaran dengan koordinat (sin θ, cos θ) yang pergerakannya searah dengan jarum jam (CW). Untuk membuat jarum (animasi) bergerak berlawanan dengan arah jarum jam (CCW) adalah dengan menggunakan hubungan koordinat kartesius terhadap koordinat kutub, yakni (cos θ, sin θ).

Dengan menggunakan koordinat (cos θ, sin θ) maka jarum bergerak sebesar heading sensor namun arahnya berkebalikan.

Dengan demikian, berapapun besar heading sensor kompas maka pergerakan jarum akan selalu menunjuk ke arah utara magnetis bumi yang secara definitif menunjuk ke arah 0°. Sebagai contoh, ketika sensor menghadap (heading) sebesar 30° maka jarum akan melakukan heading yang sama namun arahnya berkebalikan, hal inilah yang membuat tampilan jarum selalu menunjuk ke arah 0° alias arah utara.

K3

Heading sensor kompas sebesar 30°

Komponen
[1] Arduino Pro Mini 5V
[1] Sensor Kompas HMC5883L
[1] TFT LCD 2.2″ ILI9340
[~] Komponen penunjang (breadboard, kabel jumper, dll)

Koneksi Pin

Arduino (Pro Mini, Uno) HMC5883L (GY-271 breakout) LCD TFT 2.2″ (ILI9340)
5V (VCC) VCC VIN
GND GND GND
A4 (SDA) SDA
A5 (SCL) SCL
D8 RST
D9 DC
D10 CS
D11 MOSI
D13 SCK

Rangkaian

Rangkaian Kompas Digital HMC5883L + TFT LCD 2.2″ + Arduino Pro Mini 5V

Kode Program

/******************************************************************************
  This is an sketch for the project below
  ----> http://engine-near.com

  Check out the links below to download specific library used in this project
  ----> https://github.com/platisd/HMC5883L
  ----> https://github.com/adafruit/Adafruit_ILI9340
  ----> https://github.com/adafruit/Adafruit-GFX-Library
 
  All library works with Arduino IDE 1.6.5 version. If using the above version
  please click 'tools' and select 'fix encoding & reload'

  Written by Fathur Miftahudin for http://engine-near.com
 *****************************************************************************/


#include <Wire.h>      // Library for I2C Communication
#include <HMC5883L.h>  // Library for Compass HMC5883L
#include "SPI.h"
#include "Adafruit_GFX.h"    // Library for all our adafruit displays
#include "Adafruit_ILI9340.h" // Library for Adafruit TFT LCD 2.2"
#include <SPI.h>
 
#if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
#endif

// These are the pins used for the Pro Mini & UNO
// for Due/Mega/Leonardo use the hardware SPI pins (which are different)
#define _sclk 13
#define _miso 12
#define _mosi 11
#define _cs 10
#define _dc 9
#define _rst 8


// Using software SPI is really not suggested, its incredibly slow
Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);
// Use hardware SPI
int error = 0;
 
HMC5883L compass; // HMC5883L
 
void setup(void){
 
 Serial.begin(9600);
 Wire.begin();
 
 // HMC5883L
 compass = HMC5883L();  
 error=compass.SetScale(1.3);
 if(error!=0)Serial.println(compass.GetErrorText(error));
 Serial.println("Setting measurement mode to continous.");
 error=compass.SetMeasurementMode(Measurement_Continuous); 
 if(error != 0)Serial.println(compass.GetErrorText(error));
 
 tft.begin(); // TFTdisplay
 display_show(); // Show display such as battery, time & circle
 
}
 
// Magnetic declination in Jakarta 0.64° = 0.0111 rad
float declinationAngle=0.0111;
 
int heading_degrees=0;
int heading_degrees_old=360;
int heading_degrees_correction=-90;
 
void loop(void){
 
  MagnetometerScaled scaled=compass.ReadScaledAxis();
  
  float heading=atan2(scaled.YAxis,scaled.XAxis);
  
  heading+=declinationAngle;
  if(heading<0)heading+=2*PI;
  if(heading>=2*PI)heading-=2*PI;
 
  heading_degrees=heading*180/M_PI; //+heading_degrees_correction;
  if(heading_degrees<0)heading_degrees+=360;
  if(heading_degrees>=360)heading_degrees-=360;
 
  if(heading_degrees!=heading_degrees_old){
  
    display_info(); // Show compass heading
    display_graphic(); // Show animation (North direction)
    heading_degrees_old=heading_degrees;
 }
   delay(250);
}
 
// Determine coordinate of the circle
#define cx 120 // X coordinate
#define cy 160 // Y coordinate
#define cr 85 // Diameter of circle
 
void display_show(){
 
 tft.fillScreen(ILI9340_BLACK); 
 // Compass circle
 tft.fillCircle(120, 160, 97, ILI9340_WHITE);
 tft.fillCircle(120, 160, 84, ILI9340_BLACK);
    
 tft.fillCircle(120, 69, 5, ILI9340_BLACK);
 tft.fillCircle(120, 251, 5, ILI9340_BLACK);
    
 tft.fillCircle(29, 160, 5, ILI9340_BLACK);
 tft.fillCircle(211, 160, 5, ILI9340_BLACK);

 // Battery icon
 tft.fillRect(193, 6, 35, 17, ILI9340_WHITE);
 tft.fillRect(196, 9, 29, 11, ILI9340_BLACK); 
 tft.fillRect(198, 11, 18, 7, ILI9340_WHITE);
 tft.fillRect(228, 11, 4, 7, ILI9340_WHITE);

 // Time
 tft.setTextSize(2);
 tft.setCursor(5,8);
 tft.print("12:12");
 
}

void display_graphic(){

    // Animation of North direction
    int h=heading_degrees_old+90;
    int h2 = h - 90 ;
    int k2 = h + 90;

    tft.fillTriangle((int)(cx+(cr-70)*cos(M_PI/180*h2)),(int)(cy-(cr-70)*sin(M_PI/180*h2)), (int)(cx+(cr-12)*cos(M_PI/180*h)),(int)(cy-(cr-12)*sin(M_PI/180*h))
    ,(int)(cx+(cr-70)*cos(M_PI/180*k2)),(int)(cy-(cr-70)*sin(M_PI/180*k2)),ILI9340_BLACK);
    

    h=heading_degrees+90;
    h2 = h - 90 ;
    k2 = h + 90;

    tft.fillTriangle((int)(cx+(cr-70)*cos(M_PI/180*h2)),(int)(cy-(cr-70)*sin(M_PI/180*h2)), (int)(cx+(cr-12)*cos(M_PI/180*h)),(int)(cy-(cr-12)*sin(M_PI/180*h))
    ,(int)(cx+(cr-70)*cos(M_PI/180*k2)),(int)(cy-(cr-70)*sin(M_PI/180*k2)),ILI9340_WHITE);
 
    tft.fillCircle(120, 160, 15, ILI9340_WHITE); 
    tft.fillCircle(120, 160, 10, ILI9340_BLACK); 

}
 
void display_info(){

 tft.setTextSize(3);
 tft.fillRect(90,280,73,22,ILI9340_BLACK);
 tft.setTextColor(ILI9340_WHITE);
 tft.setCursor(95,280);
 tft.print(heading_degrees); // Print compass heading 

 tft.setTextSize(2);
 tft.write(247); // Print degree symbol
 delay(100);

}

Hasil Pengujian
Secara pemrograman arah utara magnetis yang dibentuk jarum akan selalu tepat, namun mungkin karena sensor kompas HMC5883L mengalami interferensi medan magnet maka arah utara yang ditunjuk oleh animasi jarum dapat menjadi kurang tepat sesuai dengan defleksi yang terjadi pada sensor.

Perlu diketahui bahwa utara magnetis bumi bukanlah utara 0° sehingga nanti dalam penggunaannya harus disesuaikan dengan deklinasi atau pergeseran medan magnet di lokasi dimana anda berada. Untuk mengetahui berapa besar deklinasi yang terjadi di lokasi anda maka dapat mengunjungi http://www.magnetic-declination.com/

Jika anda ingin lebih memaksimalkan tampilan jarum penunjuk kompas pada LCD, tentunya anda dapat menggunakan imajinasi atau kreatifitas anda sendiri untuk membuat tampilan yang lebih menarik seperti pada video dibawah ini.

Referensi:
[1] https://processing.org/tutorials/trig/
[2] http://mathdemos.org/mathdemos/sincos-demo1/
[3] https://en.wikipedia.org/wiki/Magnetic_declination

Orang instrument nggak tau Tube & Fitting?

221TubeFittingsandTubeAdapters700x350 copy

Orang instrument nggak tau Tube & Fitting? (Sumber gambar: Swagelok)

Topik ‘aneh’ yang pertama kali saya jumpai saat menjadi seorang instrument engineer adalah penggunaan tubing beserta fitting-nya. Yap! tubing dan fitting yang sejatinya hanyalah sebuah pipa lengkap dengan konektor-konektor seperti shock/union, tee, elbow dsb ini menjadi scope of work dari disiplin instrumentasi.

Jelas saja bahwa tubing dan fitting sangatlah asing di telinga saya, karena kebetulan kampus saya dulu tidak memiliki laboratorium dengan peralatan yang cukup memadai, jangankan transmitter ataupun control valve, PLC pun menggunakan tipe yang sederhana. Kami yang mempelajari disiplin ilmu instrumentasi dan kontrol diberikan instrument alternatif dari yang sesungguhnya di lapangan. Contohnya seperti sensor-sensor elektronika yang menggantikan peran transmitter, kemudian solenoid valve sebagai pengganti control valve dan juga smart relay sebagai pengganti PLC. Oleh karena itu, saya pun tidak pernah menemui tubing dan fitting selama saya mempelajari disiplin instrumentasi.

Barulah ketika sampai di dunia kerja saya dihujani dengan banyak pertanyaan dan permintaan terhadap tubing dan fitting. Parameter-parameter yang sangat asing ditelinga saya seperti satuan OD, konektor male-female dengan unit inch NPT, ferrule dengan back-ferrule nya dan sampai terdengarlah pertanyaan “Kok orang instrument ngga tau tube & fitting?”

Sebagian orang di lapangan menganut pemahaman bahwa segala sesuatu yang berkaitan dengan tubing & fitting adalah scope of work dari disiplin instrument. Dan tentunya orang instrument kemarin sore seperti saya seringkali menjadi sasaran dari mereka. Padahal jika ditelusuri lebih dalam lagi tidak ada kesinambungan antara tubing beserta konektor-konektornya dengan apa yang disebut ‘instrumentasi & kontrol’. Tubing & fitting tersebut hanya sebagai komponen penunjang dari sebuah sistem pengukuran yang fungsi utamanya adalah mengalirkan proses yang sedang terjadi.

Memang benar peranan tubing & fitting pada instrumentasi sangatlah vital, bagaimana tidak, karena tubing ini  berperan sebagai media pengiriman sinyal dari jalur proses menuju instrument maupun sebagai jalur instrument air supply. Namun sekali lagi, pertanyaan saya adalah dimana pengukurannya? Dan dimana pula pengendaliannya?

Sampai dengan postingan ini dibuat, saya masih belum menemukan landasan keilmuan yang menyatakan bahwa tubing dan fitting merupakan scope disiplin instrumentasi. Landasan yang selama ini berlaku hanyalah landasan kerja sehingga jelas terjadi mis-komunikasi antara bidang keilmuan dan bidang kerja. Setuju nggak??

Apa itu LEL pada sistem deteksi gas?

6776274283-oxy-acetylene-cutting-torch

Apa itu LEL pada sistem deteksi gas? (Sumber gambar: www.loupiote.com)

Terakhir kali saya menulis postingan mengenai pengukuran gas mungkin sekitar 2 tahun yang lalu. Dan kali ini, saya ingin kembali berbagi pengalaman mengenai hal yang sama namun dalam konteks yang lebih serius. LOL.

LEL (Lower Explosive Limit)
LEL (Lower Explosive Limit) dapat dikatakan sebagai konsentrasi terendah dari suatu flammable gas (gas mudah terbakar) di udara yang dapat menghasilkan api dengan adanya igniton source (sumber pengapian), yakni : busur api, api & panas.

Untuk lebih memahami lagi apa itu LEL, mari kita lihat grafik dibawah ini.

LEL2

LEL vs UEL

Setelah melihat grafik tersebut maka dapat kita ambil kesimpulannya seperti ini:

Jika Flammable Gas < LEL maka tidak cukup untuk terbakar karena bahan bakar terlalu sedikit dan udara terlalu banyak
Jika Flammable Gas > UEL maka tidak cukup untuk terbakar karena bahan bakar terlalu banyak dan udara terlalu sedikit
Dan jika  LEL <= Flammable Gas <= UEL maka flammable gas siap untuk terbakar ataupun meledak kapanpun

Berikut beberapa contoh flammable gas beserta dengan batasan LEL & UEL nya:

LEL Table 1

Tabel nilai LEL & UEL dari beberapa gas

Sistem Deteksi Gas
Dalam sistem deteksi gas, jumlah kehadiran gas di udara dinyatakan dalam %LEL. Jika pembacaan gas detektor adalah 0%LEL maka hal ini menunjukkan bahwa udara terbebas dari flammable gas. Jika pembacaan menunjukkan 50%LEL berarti flammable gas telah bercampur di udara namun belum cukup untuk dapat terbakar. Dan jika pembacaan menunjukkan 100%LEL artinya flammable gas telah bercampur di udara dan siap terbakar kapanpun jika ada sumber pengapian.

Disclaimer : Acetylene memiliki jangkauan ‘explosive mixture’ yang luas bahkan UEL-nya mencapai 100%, ini berarti dengan jumlah oksigen yang sangat sedikit atau bahkan tidak ada sekalipun, Acetylene dapat terbakar dengan sendirinya.

Hal inilah yang menjadi alasan mengapa pengukuran terhadap flammable gas pada F&G system hanya cukup sampai %LEL saja. Mengapa tidak sampai %UEL? Ya sesuai penjelasan diatas tadi, saat flammable gas sudah mencapai 100%LEL maka gas tersebut siap terbakar kapanpun! Bayangkan jika di sebuah kilang minyak paparan flammable gas nya mencapai 100%LEL , maka hanya tinggal menunggu sialnya saja bukan!?

Oleh karena itu, dalam penerapannya di lapangan, biasanya sistem deteksi gas hanya akan ‘mentolerir’ kehadiran flammable gas di udara tidak sampai 100%LEL. Di beberapa kilang yang pernah saya datangi mereka mematok setpoint untuk alarm HIGH level di 10%LEL dan alarm HIGH-HIGH level di 40%LEL.

Saya tidak tahu pasti apa dasar suatu flammable gas dapat ‘ditolerir’ kehadirannya di udara. Yang saya tahu adalah jangan pernah berharap penuh dengan yang namanya alat, sedikit apapun flammable gas dibolehkan untuk hadir, namun 0%LEL jelas lebih baik bukan? CMIIW.

What does ‘Bridle’ mean?

Sebuah pertanyaan muncul di benak pikiran saya ketika sedang mengerjakan proyek penggantian kolom di salah satu kilang minyak yang ada di Cilacap. Ada sebuah pipa berukuran 3″ yang ditempeli beberapa instrument, khususnya instrument level. Lantas munculah pertanyaan, mengapa instrument-instrument tersebut tidak dihubungkan secara langsung pada badan kolom? Mengapa  level gauge dihubungkan ke pipa tersebut? Mengapa level transmitter pun juga demikian? Setelah mencari tahu lebih dalam dengan dibantu penjelasan dari para senior, alhasil saya menemukan sebuah kata yang mewakili pipa misterius tersebut, yap! that’s a bridle! 

Pada dasarnya bridle adalah sebuah pipa vertikal yang terhubung dengan sisi sebuah tangki penyimpanan atau vessel. Pada ujung-ujung bridle terdapat nozzle yang menghubungkan bridle dengan tangki. Oleh karena itu, fluida di dalam bridle akan selalu naik turun sesuai dengan keadaan level fluida di dalam tangki.

Mengapa bridle digunakan?

Salah satu penggunaan bridle dimaksudkan untuk pengukuran level tangki yang menggunakan beberapa level gauge maupun level transmitter sehingga instrument-instrument level ini tidak dipasang langsung pada badan tangki melainkan pada sebuah pipa vertikal atau yang disebut bridle itu tadi.

Kemudian karena instrument level dipasang pada bridle yang terisolasi dari proses, maka instrument tersebut dapat dengan mudah untuk dilakukan maintenance tanpa menganggu proses yang sedang berjalan.

Alasan lainnya adalah untuk mengurangi jumlah nozzle pada tangki yang mana hal ini berkaitan dengan pengelasan. Semakin banyak pengelasan pada sebuah tangki maka potensi crack (retak) dari tangki tersebut juga semakin besar. Sehingga dengan adanya bridle, kebutuhan nozzle dari sebuah tangki dapat diminimalisir dengan hanya menggunakan dua buah nozzle saja.

Oleh karna itu, bridle menjadi  komponen favorit yang hampir selalu digunakan pada pengukuran level tangki. CMIIW.

 

Automation Studio P6: Belajar Otomasi Industri

AP6

Saat ini perkembangan software simulasi khususnya HMI (Human Machine Interface) semakin berkembang pesat. Banyak software simulasi yang menyediakan berbagai macam fitur sehingga software tersebut dapat menampilkan parameter-parameter yang sama dengan kondisi di lapangan. Dari beberapa software simulasi/HMI yang pernah saya gunakan, saya terpikat pada satu software yang memiliki banyak fitur dari berbagai bidang di industri, software tersebut adalah Automation Studio.

Sesuai dengan namanya, Automation Studio merupakan software otomasi industri yang memiliki fungsi untuk melakukan desain dan simulasi sistem yang ada di industri. Software yang satu ini mirip sekali dengan software simulasi hidrolik/pneumatik pada postingan sebelumnya yakni FluidSIM . Namun, Automation Studio memiliki banyak kelebihan dibandingkan dengan FluidSIM karena modul dan perpustakaan (library) yang ada didalamnya lebih lengkap dan tampilannya pun terlihat elegan. Bisa dikatakan segala fitur yang ada pada FluidSIM ada pada Automation Studio dan sebaliknya tidak semua fitur pada Automation Studio ada pada FluidSIM.

Sebagai contoh, kita dapat membuat sebuah sistem hidrolik/pneumatik dimana seluruh komponen dalam sistem tersebut dapat diprogram dengan menggunakan ladder PLC dan dikendalikan menggunakan kontrol elektrik, bahkan kita juga dapat menggunakan HMI dalam mengoperasikan sistem tersebut. Sangat menarik bukan? 😀

PLC

Interface Automation Studio

Automation Studio sudah dikenal sebagai software untuk melakukan desain & simulasi sistem yang mencakup berbagai macam proyek/mesin seperti: hidrolik, pneumatik, listrik, kontrol, HMI, komunikasi bahkan sampai pemrograman PLC. Dengan begitu, sangat mudah untuk menggabungkan berbagai teknologi dalam merancang dan mensimulasikan suatu sistem secara lengkap.

ASP6

Automation Studio mencakup berbagai macam disiplin ilmu / bidang industri

Automation Studio dilengkapi dengan beberapa modul dan perpustakaan yang sangat lengkap. Tidak hanya itu saja, modul-modul ini juga mengikuti berbagai macam standar elektrikal, seperti: JIC, IEC, NEMA, dsb. Semua modul dan perpustakaan berinteraksi satu sama lain selama proses simulasi sehingga memungkinkan kita untuk membuat sebuah sistem otomasi industri yang dapat berperilaku seperti di kehidupan nyata.

Selamat belajar dan selamat berkarya! 😀

Festo FluidSIM 4.2 : Simulasi Pneumatik & Hidrolik

fluidsim-4

Pada dasarnya kinerja dari sistem hidrolik dan pneumatik sangat bergantung pada pengaturan aliran yang dilakukan oleh katup-katup kontrol. Apabila hal tersebut tidak dapat dipahami dengan baik, maka tentunya kita akan mengalami kesulitan dalam mengamati pola aliran fluida (hidrolik) maupun udara bertekanan (pneumatik) pada suatu sistem.

Hal inilah yang saya alami saat duduk di bangku kuliah, sulit untuk mem-visualisasikan pergerakan dari katup-katup bahkan membayangkan kinerja dari sistem secara keseluruhan saja tidak terbayang, disisi lain mungkin karena tingkat intelegensi saya yang dibawah rata-rata hahaha :lol:.

Setelah lulus kuliah, barulah saya menemukan solusi berupa sebuah perangkat lunak yang dapat digunakan untuk membuat simulasi sistem hidrolik dan pneumatik. Agak telat memang, tapi tidak ada kata terlambat untuk selalu menimba ilmu :D. Software tersebut adalah FluidSIM yang merupakan perangkat lunak buatan vendor otomasi terkenal Jerman yaitu FESTO.

FluidSIM adalah software yang dapat digunakan untuk pembuatan simulasi dan studi tentang sistem pneumatik dan hidrolik. Software ini juga dapat digunakan untuk merancang dan menguji suatu sistem sebelum sistem tersebut benar-benar diterapkan dalam keadaan real (nyata). Semua fungsi dari software ini cukup mudah digunakan, baik untuk pelajar maupun engineer.

fsim

Interface FluidSIM 4.2

Software ini dapat digunakan untuk merancang sistem hidrolik dan pneumatik sekaligus mem-visualisasikannya dalam bentuk animasi sehingga aliran fluida atau udara bertekanan, gerakan-gerakan dari setiap valve (katup) yang teraktuasi, dan gerak yang dihasilkan oleh sistem (gerak dari aktuator) akan dapat terlihat dengan jelas.

Software ini juga menyediakan fitur yang dapat digunakan untuk melakukan pengaturan pada valve, seperti: pemilihan metode aktuasi, jumlah port valve, jumlah posisi valve, dll.

fsim2

Pengaturan valve (katup)

Tidak hanya menyediakan komponen-komponen yang berkaitan dengan sistem hidrolik dan pneumatik, software ini juga menyediakan komponen-komponen elektrik yang dapat digunakan untuk melakukan simulasi sistem kontrol elektrik seperti starter motor, namun memang library yang disediakan cukup terbatas karena hanya sebatas komponen pendukung saja.

Berikut saya berikan link untuk mendownload software FluidSIM 4.2 dimana software ini terpisah menjadi dua bagian, yakni FluidSIM Pneumatic dan FluidSIM Hydraulic. Untuk mendownload softwarenya dapat dilakukan dengan cara klik link dibawah ini.

Download FESTO FluidSIM 4.2

Selamat belajar dan selamat berkarya! 😀

Cara Kalibrasi Sensor Gas MQ-7

Salah satu sensor yang sering digunakan dalam proyek-proyek elektronika adalah sensor gas MQ buatan Hanwei. Sering sekali saya melihat beberapa pertanyaan baik itu di forum tertentu ataupun pada suatu postingan yang ada di blog tentang bagaimana cara mengkalibrasi sensor gas MQ agar dapat melakukan pengukuran konsentrasi gas dalam satuan ppm (part per milion). Oleh karena itu, saya akan menceritakan pengalaman saya saat mengkalibrasi sensor MQ-7 dengan alat ukur gas standar.

Sekilas tentang MQ-7

MQ-7

Grafik Karakteristik Sensitivitas MQ-7

Jika kita melakukan analisa terhadap grafik diatas, maka terlihat bahwa rasio resistansi sensor gas MQ-7 (Rs/Ro) akan bernilai ≈ 1 pada saat konsentrasi gas CO ≈ 100 ppm. Artinya adalah pada saat konsentrasi gas CO ≈ 100 ppm maka nilai Rs = Ro. Hal ini dapat dibuktikan dengan persamaan berikut:

100 ppm CO=  Rs/Ro=1          (1)

Rs 100 ppm CO=Ro          (2)

Informasi inilah yang dapat dimanfaatkan untuk mendapatkan nilai Ro, karena nilai Ro secara definitif tidak dijelaskan pada lembar data sensor (Hanwei).

Pengujian MQ-7

Pengujian saya lakukan di laboratorium Balai HIPERKES dan K3 Yogyakarta dengan menggunakan alat ukur konsentrasi gas Karbon Monoksida (CO) “Krisbow KD09-224 Carbon Monoxide Meter” yang berfungsi sebagai kalibrator. Dalam pengujian ini rentang pengukuran disesuaikan dengan kebutuhan, yakni 20 – 200 ppm CO.

IMG_0258

Krisbow KD09-224 Carbon Monoxide Meter

Pada dasarnya nilai konsentrasi gas CO dalam satuan ppm dapat diketahui dengan cara mengambil beberapa data Rs (resistansi sensor MQ-7 pada tingkatan konsentrasi gas yang berbeda-beda) dan kemudian dicari model matematisnya (persamaan garis) terhadap setiap perubahan konsentrasi gas CO. Nilai pembacaan tegangan keluaran (Vout) yang dibaca oleh mikrokontroler dalam bentuk ADC kemudian diolah untuk mendapatkan nilai dari Vout, Rs dan Rs/Ro.

Vout = (ADC/1023) . Vcc          (3)

Rs = (Vcc.RL/Vout) – RL          (4)

ADC1

Hasil pengujian sensor (ADC) dengan kalibrator (ppm)

Pada tabel diatas dapat dilihat bahwa nilai Rs pada saat konsentrasi gas CO 100 ppm adalah sebesar 6.89 kΩ. Sesuai dengan persamaan (2) maka nilai Ro secara definitif dapat langsung diketahui, yaitu sebesar 6.89 kΩ.

Selanjutnya hubungan antara ppm CO dan Rs/Ro dituangkan ke dalam bentuk grafik untuk kemudian dicari persamaan atau model matematisnya. Untuk memudahkan plotting data ke dalam grafik serta mencari persamaan tersebut maka saya menggunakan perangkat lunak MS.Excel.

ADC2

Grafik ppm co vs Rs/Ro

Dengan menggunakan regresi (trendline) power maka diperoleh persamaan (y = 96.311x^-1.239) yang merupakan hubungan antara ppm CO dengan Rs/Ro. Trendline tersebut dipilih karena melihat bentuk kurva pada grafik, selain itu juga dari sisi komputasi dengan menggunakan trendline tersebut akan lebih mudah diterapkan pada mikrokontroler.

Pada lembar data sensor MQ-7 (Hanwei) terdapat penjelasan mengenai karakteristik sensor sebagai berikut.

ADC3

Karakteristik sensitivitas MQ-7

Hasil Pengujian MQ-7

Berdasarkan pengujian didapat nilai resistansi sensor (Rs) saat konsentrasi gas CO sebesar 100 ppm adalah 6.89 kΩ. Karena pengujian sensor hanya sampai pada konsentrasi 200 ppm (Rs = 3.44 kΩ) maka untuk mengetahui nilai Rs saat konsentrasi CO sebesar 300 ppm dilakukan dengan menganalisa data pada tabel hasil pengujian. Nilai Rs semakin berkurang seiring bertambahnya konsentrasi gas CO. Oleh karena itu, dapat dipastikan bahwa nilai Rs saat konsentrasi CO sebesar 300 ppm adalah < 3.44 kΩ. Sebagai contoh digunakan nilai 3.40 kΩ sebagai perumpamaan dari nilai Rs saat konsentrasi CO sebesar 300 ppm.

Concentration slope rate : Rs (300 ppm) / Rs (100 ppm CO ) < 0.5
Concentration slope rate : ((3.40 kΩ) / 6.89 kΩ)) < 0.5
Concentration slope rate : 0.49 < 0.5

Dengan menggunakan perumpamaan tersebut nilai concentration slope rate sudah bernilai < 0.5. Maka dapat dipastikan bahwa nilai concentration slope rate pada saat konsentrasi gas CO sebesar 300 ppm akan bernilai < 0.49. Dengan demikian sensitivitas sensor MQ-7 yang digunakan sudah sesuai dengan karakteristik pada lembar data (Hanwei) .

ADC4

Hasil pengujian sesuai dengan karakteristik sensitivitas MQ-7

Contoh penggunaan model matematis sensor MQ-7 yang telah diperoleh (y = 96.311x^-1.239) pada kode Arduino dengan menggunakan fungsi pow.

R = Rs/Ro;
p = -1.239;
z = pow(R,p);
ppm = 96.311*z;

Untuk mendapatkan hasil maksimal, ada baiknya jika sensor dilakukan pengujian kembali untuk mengetahui akurasi pembacaan sensor terhadap konsentrasi gas CO dalam satuan ppm. Selamat mencoba dan semoga berhasil! 😀

Tips Kerja Praktek

oil_refinery

Sumber: devianart.com

Kali ini saya akan berbagi pengalaman  ketika 2 tahun lalu tepatnya pada saat saya melaksanakan Kerja Praktek (KP) di bangku kuliah. Saya melaksanakan Kerja Praktek di PT Semen Indonesia (Persero) Tbk yang merupakan perusahaan milik negara (BUMN) dengan produk utamanya berupa semen. Namun saya tidak akan bercerita mengenai pelaksanaan KP selama saya berada di PT Semen Indonesia (Persero) Tbk. Saya akan berbagi tips yang InsyaAllah akan berguna saat anda akan melaksanakan Kerja Praktek. Berikut beberapa tips yang telah saya rangkum dalam beberapa poin, semoga bermanfaat.

Mencari Tempat Kerja Praktek

1) Mencari Contact Person
Hal pertama yang harus anda ketahui bahwa Kerja Praktek sebenarnya tidak memberikan banyak keuntungan bagi perusahaan, bahkan bisa dikatakan kerja praktek sebenarnya hanya menambah kerjaan (membuat repot) perusahaan. Lalu mengapa perusahaan tetap menerima mahasiswa yang ingin melakukan Kerja Praktek? Karena hampir seluruh perusahaan memiliki beban CSR (Corporate Social Responsibility), lebih lengkapnya tentang CSR bisa dicari di Mbah Gugel :D. CSR inilah yang menyebabkan perusahaan harus mengakomodir kerja praktek bagi mahasiswa.

Dalam proses apply ke perusahaan jangan hanya mengandalkan surat dan proposal saja, alangkah lebih baik jika anda bisa menghubungi langsung orang/karyawan yang khusus menangani Kerja Praktek di perusahaan tsb. Jika anda mengenalnya justru lebih baik, agak berbau nepotisme memang 🙁 (but it’s very helpful) dan banyak sekali dari beberapa teman saya yang bisa melaksanakan Kerja Praktek di perusahaan besar melalui upaya seperti ini, tapi setidaknya lamaran Kerja Praktek anda akan mendapat perhatian lebih dan peluang diterimanya lamaran teman-teman menjadi lebih besar.

2) Tentukan Topik
Kerja Praktek adalah suatu kegiatan dimana anda akan mempelajari sebuah topik yang berhubungan langsung dengan bidang studi anda selama di bangku perkuliahan. Yang menjadi perhatian khusus adalah “Topik Kerja Praktek”. Topik Kerja Praktek haruslah jelas. Topik Kerja Praktek yang tidak jelas hanya akan membuat anda berpikir bahwa anda tidak melakukan apa-apa sewaktu melakukan KP (re: gabut abisss).

Intinya ya jangan seperti kebanyakan mahasiswa yang berlomba-lomba untuk bisa Kerja Praktek di perusahaan-perusahaan multinasional kelas kakap, padahal belum tentu perusahan-perusahaan tersebut sesuai dengan bidang ilmu yang teman-teman tekuni & belum tentu juga bisa memfasilitasi topik yang ingin dipelajari.

3)  Perhitungkan Akomodasi & Transportasi
Tidak semua industri atau lokasi tempak kita akan melaksanakan Kerja Praktek berada di tempat yang dekat dengan perkotaan, sebagian berada di pelosok nusantara (hutan belantara). Jika perusahaan berkenan memberikan akomodasi (mesh) & transportasi (bis jemputan) maka bersyukurlah teman-teman sekalian. Jika tidak, maka harus diperhitungkan terlebih dahulu, apakah ada kos-kosan yang layak, apakah transportasinya mencukupi, apakah harga jajanan/makan murah (FYI: saat saya melaksanakan KP di Tuban, saya menjadi korban Mie Instan Goreng + Telur + Es Teh = Rp.20.000,-). So, dipikirkan kembali ya! 😀

Persiapan Kerja Praktek

4) Kuasai Mata Kuliah Yang Berhubungan Dengan KP
Idealnya ketika melaksanakan Kerja Praktek anda sudah memahami materi-materi yang berkaitan dengan pelaksanaan Kerja Praktek. Jangan sampai materi-materi dasar tidak dikuasai, karena kenapa? Karena pertama: teman-teman bakal menghabiskan waktu Kerja Praktek hanya untuk mengulang kembali materi yang sudah didapatkan di kampus alias mubazir waktu! kedua: saat melaksanakan Kerja Praktek, anda bukan satu-satunya mahasiswa, biasanya akan bertemu mahasiswa dari universitas/institusi lain, dan disini kredibilitas + nama baik almamater jelas harus dijaga betul2.

5) Pelajari Struktur Perusahaan
Seperti yang sudah saya singgung sebelumnya, hal ini sebenarnya berhubungan dengan pemilihan topik. Jika anda sudah mengetahui topik yang ingin dipelajari, maka langkah selanjutnya yaitu pelajari struktur perusahaan tersebut. Cari bagian yang sesuai dengan topik KP. Di beberapa kasus terkadang bagian HRD tidak mau ambil pusing dengan hal seperti ini dan langsung menempatkan peserta KP di bagian tertentu, syukur jika bagian itu sesuai, jika tidak?

Menyusun Laporan Kerja Praktek

6) Susun Laporan Secepatnya
Setelah anda selesai melakukan Kerja Praktek sebaiknya langsung membuat laporan tanpa mengulur-ulur waktu lagi. Lebih baik lagi jika laporan telah selesai waktu pelaksanaan Kerja Praktek juga telah selesai.

7) Tanda Tangan Dosen Pembimbing
Sebelum anda menyudahi Kerja Praktek dan beranjak kembali ke bangku perkuliahan, jangan lupa untuk meminta tanda tangan pada dosen pembimbing untuk lembar pengesahan laporan Kerja Praktek. Sangat merepotkan jika anda harus bolak-balik ke perusahaan lagi di lain waktu hanya untuk meminta tanda tangan, apalagi perusahaan/industrinya jauh di pelosok negeri.

8) Siapkan Presentasi
Setelah pelaksanaan Kerja Praktek selesai dan laporan telah disusun, maka hal selanjutnya yaitu presentasi hasil Kerja Praktek dihadapan dosen pembimbing kampus dan dewan penguji.

Pada akhirnya diri kalian sendiri yang akan menentukan nasib Kerja Praktek kalian, jangan sia-sia kan kesempatan ini. Hasil pembelajaran selama di bangku perkuliahan akan diterapkan disini. Hanya ada dua pilihan, menghabiskan waktu di perusahaan sesuai dengan tujuan atau sekedar menghabiskan waktu di perusahaan untuk memenuhi kebutuhan sks. Good luck! 🙂

 

Sumber : Pengalaman pribadi & info tambahan dari sini

Graduaction!

Alhamdulillah, akhirnya setelah sekian lama saya menuntut ilmu di kampung halaman yaitu Daerah Istimewa Yogyakarta, saya berhasil menyelesaikan studi saya di program studi Diploma Elektronika dan Instrumentasi Universitas Gadjah Mada. Walaupun saya menyelesaikan kuliah dengan masa studi selama 3 tahun 2 bulan yang mana ini termasuk dalam kategori ‘telat’ hahaha, yah tapi setidaknya patut untuk disyukuri dan saya bangga serta puas dengan hasil yang saya dapatkan.

Akhir2 ini saya mulai menyadari bahwa dalam proses penyelesaian TA (tugas akhir) saya banyak mendapatkan informasi dan solusi dari berbagai macam sumber yang ada, salah satunya adalah internet! Yap betul sekali internet, banyak sekali referensi yang saya gunakan dalam proses penggarapan TA, terutama informasi berupa tutorial dan riset kecil-kecilan dari blog-blog yang ada. Saya pun menyadari bahwa mereka yang membuat blog ini adalah orang-orang yang sangat baik hati, mereka dengan ikhlas membagikan materi, hasil pengujian/riset bahkan tidak tanggung-tanggung memberikan banyak sekali tutorial yang berguna bagi pengunjungnya.

Sampai di titik ini kemudian saya berpikir bahwa berbagi akan segala hal yang kita miliki sangatlah menyenangkan, saya hanya membayangkan apa yang pernah saya rasakan pada saat pengerjaan TA ini. Pernah saya mengalami kondisi buntu dalam pengerjaan TA dimana dalam kondisi tersebut dosen pembimbing pun tidak mampu memberikan pencerahan, bahkan teman pun hanya bisa menghibur. Kemudian dengan instan-nya saya mendapatkan solusi dari hasil berselancar di dunia maya. Yap! saya mendapatkannya dari mereka yang ikhlas berbagi pengetahuannya secara cuma-cuma.

Oleh karena itu, tepat pada hari ini saya memutuskan untuk membuat sebuah blog dengan harapan dapat menjadi media bagi saya untuk berbagi segala hal khususnya dalam bidang elektronika dan instrumentasi sehingga dapat memberikan manfaat bagi banyak orang 😀

IMG_2128