on Saturday, 26 October 2013
Definisi Fungsi
Fungsi merupakan bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dariprogram yang menggunakannya.
Tujuan penggunaan fungsi pada bahasa C adalah sebagai berikut.
~ program menjadi terstruktur, shingga mudah dipahami dan dikembangkan
~ Dapat mengurangi pengulangan kode.
Bentuk Umum Fungsi
tipe-keluaran-fungsi nama-fungsi (deklarasi argumen)
{
tubuh fungsi
}
tipe-keluaran-fungsi : salah satu tipe data C, misal Char atau Int. jika tdak ditentukan maka defaultnya int.
Tubuh fungsi : berisi deklarasi variable (kalau ada) dan pernyataan yang akan melakukan tugas yang akan diberikan kepada fungsi tsb.
Pemanggilan Fungsi 
Bagi suatu fungsi, jika suatu pernyataan return di eksekusi terhadap fungsi akan berakhir dan nilai parameter return akan menjadi keluaran fungsi.
Untuk fungsi yng tidak memiliki pernyataan return, tanda kurung kurawal pada bagian akhir fungsi akan menyatakn akhir eksekusi fungsi.
Nilai keluaran fungsi dilakukan pada tubuh fungsi.
Pada program dibawah ini.
- jika x<y dan x<z maka nilai keluaran fungsi adalah x
-jika y>x dan y<z maka nilai keluaran fungsi adalah y
-jika keadaan lainnya  x>=y dan x>=z maka keluaran fungsi adalah z

#include<Stdio.h>
#include<Conio.h>
int minimum (int a,int b, int c);
void main ()
{

int a, b, c, m;
clrscr();
printf(" Masukkan bilangan pertama :");
scanf("%d", &a);
printf(" Masukkan bilangan kedua :");
scanf("%d", &b);
printf(" Masukkan bilangan ketiga :");
scanf("%d", &c);
     printf("\n Bilangan Pertama adalah %d\n",a);
     printf("\n Bilangan Kedua adalah %d\n",b);
     printf("\n Bilangan Ketiga adala %d\n",c);
  m=minimum(a,b,c);
  printf("\n Bilangan terkecil antara %d, %d dan %d adalah %d\n\n", a,b,c,m);
  getch();
  }

  int minimum(int x, int y, int z)
  {
    if(x<y && x<z)
    {
return(x);
     }
    else if(y>x && y<z)
    {
return (y);
     }
    else
    {
return(z);
     }
   printf("\n Merci :)");
  }
setelah di-run, ini dia keluarannya

Parameter Formal dan Aktual
Parameter formal adalah variabel yang ada dalam daftar parameter dlam defenisi  fungsi. Misal program yang diatas tadi, maka dalam fungsi jumlah () variable x dan y dinamakan sebagai parameter formal.
Parameter aktual adalah parameter tidak selalu berupa variable yang dipakai  dalam pemanggilan fungsi.
Contoh :
#include<stdio.h>
#include<conio.h>
void LS(int p, int l);
void main()
{
int a,t;
clrscr();
printf(" Masukkan nilai alas segitiga: ");
scanf("%d",&a);
printf(" Masukkan nilai tinggi segitiga: ");
scanf("%d",&t);
LS(a,t);
getch();
}

void LS(int a, int t)
{
int luas;
luas=1/2*a*t;
printf("\n Luas Segitiga adalah : %d",luas);
printf("\n Terima Kasih");
}
maka keluaran dari fungsi diatas adalah

Dari program diatas dapat kita ketahui yang menjadi parameter aktual adalah yang dicetak hitam LS(a,t); sedangkan yang menjadi parameter formal adalah void LS(int a, int t).




on Friday, 25 October 2013
MECHANICAL PART
Contoh :
Terdapat ass dan bearing. Jika ass bengkok maka akan memaksa kerja bearing yang akan menimbulkan gesekkan yang lebih keras dari biasanya (overload). Bagian pertama yang rusak akibat ini ialah part yang paling lemah kondisinya.
Mechanichal part apabila dalam keadaan strong dan load dan berada dalam posisi jauh maka itu dikatakan good.
Mechanichal part apabila dalam keadaan strong dan load dan berada dalam posisi dekat maka itu dikatakan rusak.
Pada peralatan yang bergerak secara mekanik agar tidak mudah rusak maka diberi greese.

ELECTRONIC EQUIPMENT
Pada barang-barang elektronik yang mesti diperhatikan adalah suhu. Karna suhu mempengaruhi kualitas dari komponen-komponen tersebut.
Electronic Maintenence : perawatan pada listrik agar tidak rusak dan dapat dipakai dalam jangka panjang.
Tujuan dilakukan Meintenance adalah sebagai berikut.
1. Reability (Tahan lama)
2. Least operating cost (tidak menghabiskan biaya banyak/hemat)
3. Defect elimination (mengurangi terjadinya bahan reject)
4. Maximum production (menghasilkan barang yang bagus yang memiliki kualitas tinggi)
5. Risk reduction (mengurangi kecelakaan)
6. Failure

Tingkatan-tingkatan Equipment Maintenance and Management
1. Breakdown Maintenence (dicheck kalo emang ada yang aneh pada mesinnya tidak dalam waktu rutin)
2. Rountine (pengecheckan yang dilakukan secara rutin/terjadwal)
3. Corrective (memperbaiki jika terjadi kerusakan)
4. Preventive (mencegah mesin agar tidak rusak)
5. Predictive (memprediksi usia mesin, kapan mesin ini akan rusak)

Zero Downtime

  • Error proofing merupakan suatu cara yang dipasang pada mesin. Misal ada benda X, benda X ini mau diletakkan / dimasukkan kedalam mesin. Tapi pada saat dimasukkan, posisi si X ini salah maka dengan adanya error proofing maka posisi benda X ini akan bagus sendiri dalam mesin iitu.
  • Closed loop predictive maintenance
  • Closed loop SPC
4 Phase Towards Zero Failures
Tools :

  • Restoration :

 M-Tagging
 TPM team setup dan Visual board display
 Autonomous maintenance team setup with initial cleaning
 OEE (Overall Equipment Effectiveness) monitoring
 5S

  • Design Correction :

 Setup reduction with minor design change
 Autonomous Maintenance with simple repair task transfer
 Error Proofing dan FMEA
 Video shooting on minor stoppages
 OEE monitoring
 MTBF (Mean Time Between Failure) dan MTBA (Mean Time Between Assist) monitoring

  • Periodic Maintenance :

 Setup reduction on preventive maintenance
 Autonomous maintenance with operators doing simple setup
 Cyle based PM
 Spare parts management system
 OEE monitoring
 MTBF monitoring

  • Predictive Maintenance :

 Diagnostic methods (suhu kekentalan oli, analisis getaran, dan lain-lain)
 Close loop SPC
 Autonomous data monitoring with real time proccess variability monitoring
 OEE monitoring
 MTBF monitoring

Zero Unplanned Downtime
Minimize each element of unplanned maintenance:
o Recognition
o Response
o Diagnosis
o Repair
o Re-commisssion

PdM (Predictive Maintenance)

  • Periodic measurement and trending of process or machine parameters (Pengukuran secara berskala dan melakukan berbagai proses atau sebagai tolak ukur mesin)
  • Measurement used to predict failures before they occur (pengukuran yang digunakan untuk memprediksi kegagalan sebelum kegagalan/kerusakan itu terjadi)
  • Preventive maintenance is time or schedule based
  • Type-type PdM yang paling umum adalah sebagai berikut.
  1. Tekanan dan pengukuran suhu
  2. Analisis getaran
  3. Thermography
  4. Analisis kekentalan oli dan lain-lain

TPM (Total Roductive Maintenance)
Bapak TPM ialah Seichi Nakajima. Perkembangan TPM, yaitu

  1. Breakdown Maintenance (1950-an)
  2. Preventive Maintenance (1960-an)
  3. Predictive Maintenance (1970-an)
  4. TPM

Maksud TOTAL dalam TPM :
1. Total melibatkan keseluruhan karyawan
2. Total melakukan dengan benar dan effective
3. Total Maintenance System yang meliputi :
a. Preventive Maintenance (PM)
b. Maintenance and Maintenability
c. Maintenance Prevention (MP)
d. Maintenability Improvement (MI)

4 pilar TPM :
1. AM : Autonemous Maintenance
2. PM : Preventive Maintenance
3. EM : Equipment Maintenance
4. ET : Equipment Training
Assalamualaikum :') .....
huuuuua T,T #nangis badai
*satu kata buat yang nulis LEBAY  ......
mau lebay mau apa kek , suka suka saya dooonggs :/ ... ahhaha
Kali ini saya telat upload laporan mikrokontroller pemirsahhh . telat 3 menit dari batas waktu yang udah di tentukan.
oooopppss jangan curhaaat :D ..
sekarang waktunya kite ngisi blog :))) ...
let's check this report ;) :D ..


KOMUNIKASI SERIAL 

TUJUAN
1.      Memahami cara mengirimkan dan menerima data melalui periperal UART Arduino.
2.      Mampu membuat program untuk mengirimkan data berbasis teks dan berbasis byte.
3.      Mampu membuat program untuk menerima data secara pooling dan secara interupsi serial.

PERALATAN
1.      Komputer                    : 1 set
2.      Arduino UNO             : 1 pcs
3.      Project Board              : 1 pcs
4.      Kabel Jumper              : 1 pcs
5.      LCD                            : 1 pcs
6.      Potensiometer 10K     : 1  pcs

PERCOBAAN:

5.1   Mengirim Data Teks
P ada percobaan  kali ini akan dibuat program untuk mengirimkan data teks ke komputer melalui komunikasi serial. Pada percobaan ini contoh teks yang akan dikirimkan adalah “Hello World”. Pengiriman data akan menggunakan baudrate 9600.

Prosedur:
  • Tuliskan sintaks program dibawah ini. Kemuadian lakukan kompilasi dan upload pogram ke sistem minimum Arduino.

 void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print(“Hello World”);
Delay(2000);
  • Buka Serial Monitor pada Arduino IDE. Dan pastikan baudrate 9600.


Tugas dan pertanyaan :
  • Gantiah parameter input pada fungsi Serial.print sesuai dengan Tabel 5.1. Amati data yang diterima pada HTerm, kemudian isilah Tabel 5.1 di bawah ini !



Tabel 5.1 Daftar teks yang dikirimkan pada program
Teks Yang dikirim  Arduino
Teks Yang Diterima Arduino
Halo
HaloHaloHaloHaloHalo
Apa Kabar Semua
Apa Kabar SemuaApa Kabar Semua
Kabar
KabarKabarKabarKabarKabar
Semua
SemuaSemuaSemuaSemuaSemua
Yang
YangYangYangYangYang


  •       Gantilah fungsi Serial.print menjadi Serial.println, kemudian tuliskan amati data yang diterima oleh komputer. Jelaskan perbedaan penggunaan fungsi Serial.print dan Serial.println !
fungsi Serial.print yaitu untuk menampilkan text pada satu baris. jadi text yang  tampil akan memanjang pada satu baris tanpa ada spasi ataupun enter.
fungsi Serial.println yaitu untuk menampilkan text pada baris yang baru (enter).

void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(“Hello World”);
Delay(2000);
}
Tabel 5.1.2 Daftar teks yang dikirimkan pada program
Teks Yang dikirim  Arduino
Teks Yang Diterima Arduino
Halo
Halo
Halo
Halo
Apa Kabar Semua
Apa Kabar Semua
Apa Kabar Semua
Kabar
Kabar
Kabar
Kabarr
Semua
Semua
Semua
SemuaSemua
Yang
Yang
Yang
  •     Tambahkan karakter \r\n pada akhir baris teks pada Tabel 5.1 . Amati data yang ditampilkan pada komputer. Jelaskan fungsi karakter \r\n pada komunikasi serial !

Karakter \n yaitu untuk menampilkan text pada baris baru (new line).
Karakter \r yaitu untuk pindah ke kolom pertama, baris yang sama (carriage return).

  • Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.1 !


void setup() {              //Eksekusi pada awal program
Serial.begin(9600); //Setting baudrate 9600
}                      // Baudrate adalah kecepatan pengirimn data dalm 1 detik
void loop() {   // Tempat kita menaruh source code yang akan diproses
Serial.println(“Hello World”); // Menampilkan text “Hello World” pada serial monitor
Delay(2000); //berhenti atau menunda selama 2 second

5.2  Mengirim Data Byte
Pada percobaan kali ini akan dibuat program untuk mengirimkan data byte ke komputer melaluikomunikasi serial. Pengiriman data akan menggunakan baudrate 115200.

Prosedur:
  1. Tuliskan sintaks program dibawah ini, kemudian lakukan compile dan upload program ke sistem minimum Arduino.

void setup() {
            Serial.begin(115200);
}
void loop() {
Serial.write(0x41);
Serial.write(0x42);
Serial.write(0x43);
Serial.write(0x44);
Serial.write(0x45);
delay(2000); }
2.  Buka Aplikasi HTerm padda kompter, pastikan konfigurasi pada HTerm seperti gambar  dibawah ini!


3.  Klik tombol Connect. Kemudian perhatikan data yang ditampilkan pada bagian Recieve Data. Pastikan data tersebut sama dengan data yang dikirimkan oleh Arduino.
 Tugas dan Pertanyaan :
  • Gantilah parameter input untuk fungsi Serial.write dengan da ta pada Tabel 5.2. Amati data yang diterima pada HTerm, kemudian isilah Tabel 5. 2!

Teks Yang dikirim  Arduino
Teks Yang Diterima Arduino
0x00,0x01,0x02, 0x03, 0x04
00  01  02  03  04
0xF0, 0xF1, 0xF2, 0xF3, 0xF4
F0  1F  2F  F3  F4
0xF5,0xFF, 0x3F, 0xF3, 0x44
F5  FF  3F  F3  44
0xF0,0x1F,0x02,0x03,0x04
F0  1F  02  03  04
0x00,0x01,0xF0,0xF0,0x1F,0x2F
00  01  F0  1F  2F


  • Gantilah konfigurasi dari HTerm menjadi seperti di bawah ini, perhatikan data yang diterima. Kenapa data yang diterima berubah menjadi huruf ? Jelaskan ! 

Karena Asci merupakan kode pada HTerm yang digunakan untuk merubah hexa, biner ataupun decimal kedalam bentuk huruf.

  • Jelaskan perbedaan penggunaan fungsi Serial.print dan fungsi Serial.write !

Serial.write ialah untuk menampilkan teks dengan cara diketik di serial monitor.
Serial.print ialah menampilkan teks tanpa diketik pada serial monitor.
  •  Jelaskan fungsi masing masing sintaks berikut!

void setup() { //Eksekusi pada awal program
Serial.begin(115200); //Setting baudrate 115200
}                      // Baudrate adalah kecepatan pengirimn data dalm 1 detik
void loop() {
Serial.write(0x41); //Menulis angka 41
Serial.write(0x42); //Menulis angka 42
Serial.write(0x43); //Menulis angka 43
Serial.write(0x44); //Menulis angka 44
Serial.write(0x45); //Menulis angka 45
delay(2000); 
}

5.3  Menerima Data dari  UART dengan Sistem Pooling
      Pada percobaan kali ini akan dibuat program untuk menerima data byte ke komputer melaluikomunikasi serial. Pengiriman data akan menggunakan sistem pooling, Data yang diterima oleh Arduino akan ditampilkan pada LCd . dengan baudrate 115200.

Prosedur:
  • Buatlah rangkaian dibawah ini!

  • Tuliskan sintaks program dibawah ini, kemudian lakukan compile dan upload program ke sistem minimum Arduino.

#include<LiquidCrystal.h>          

LiquidCrystal lcd=(2,3,4,5,6,7);  
String textFromSerial = "";          

void setup()          

{

lcd.begin(16,2);)


lcd.clear();

lcd.setCursor(0,0);                       

lcd.print("Data From Serial")LCD

Serial.begin(9600);                        }

void loop()           
 {
while(Serial.available()>0) {        

char data = Serial.read();  

if(data == '\n') {               

lcd.setCursor(0,1);                       
lcd.print(textFromSerial);

textFromSerial="";                       
}

Else
{
if(data!='\r') {                   

textFromSerial += data;   

}

}

}

}

Tugas dan Pertanyaan
  • Buka Serial Monitor pada Arduino pastikan konfigurasi Serial Monitor.
  • Ketikkan sembarang kata untuk dikirimkan (kurang dari 16 karakter), kemudian tekan Send. Isilah T abel 5.3 !

Tabel 5.3  Daftar data yang dikirim dan ditampilkan pada L CD
Teks yang dikirim
Teks pada LCD
Test
Test
Mikro
Mikro
Usaha
Usaha
Data
Data
  • Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.3 ! 
#include<LiquidCrystal.h>           //memanggil library untuk lcd

LiquidCrystal lcd=(2,3,4,5,6,7);   // inisialisasi pin lcd

String textFromSerial = "";           //mendeklarasikan textFromSerial sebagai string

void setup()  //settingan awal program

{

lcd.begin(16,2);     // tampilan lcd (kolom , baris)


lcd.clear(); // tampilan lcd di hapus

lcd.setCursor(0,0);            //Menampilkan text pada baris pertama LCD

lcd.print("Data From Serial")        //Menampilkan text “Data From Serial” pada  LCD

Serial.begin(9600);            //kecepatan transfer data sebesar 9600 bit per detik

}

void loop()            //program looping
 {
while(Serial.available()>0) {         //mengecek serial komunikasi

char data = Serial.read(); //Membaca data serial

if(data == '\n') {                //jika data ada

lcd.setCursor(0,1);            //Menampilkan text pada baris ke dua LCD

lcd.print(textFromSerial); //Menampilkan text yang dikirim melalui serial komukasi

textFromSerial="";                       
}

Else
{
if(data!='\r') {        //jika data tidak ada

textFromSerial += data;    //menampilkan text data pada LCD

}

}

} }

5.4  Menerima Data dari  UART dengan Interupsi 
Pada percobaan kali ini akan dibuat program untuk menerima data teks ke komputer melaluikomunikasi serial. Pengiriman data akan menggunakan sistem pooling, Data yang diterima oleh Arduino akan ditampilkan pada LCd . dengan baudrate 115200.

Prosedur:
  • Tuliskan sintaks program dibawah ini, kemudian lakukan compile dan upload program ke sistem minimum Arduino.

#include <LiquidCrystal.h>

#define FOSC 16000000           

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

String dataSerial;                     
void initSerial(int baudrate) {
int ubrr = FOSC/16/baudrate-1;

UBRR0H |= ubrr>>8;
UBRR0L |= ubrr;
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
UCSR0C |= (0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
UCSR0C |= (0<<USBS0);
UCSR0C |= (0<<UPM01)|(0<<UPM00);
UCSR0B |= (1<<RXCIE0);
}


ISR(USART_RX_vect){
char data = UDR0;
if(data=='\n')
{
lcd.clear();     

lcd.setCursor(0,0);       
lcd.print("Incoming Data");         

lcd.setCursor(0,1);       

lcd.print(dataSerial);
dataSerial = "";
}
Else
{
if(data!='\r')
{
dataSerial += data;       
}
}
}

void setup()
{

initSerial(9600);

lcd.begin(16,2);
lcd.clear(); 

sei();
}

void loop()

{

}

Tugas dan Pertanyaan :
  • Buka Serial Monitor pada Arduino IDE, sesuaikan konfigurasi Serial Monitor
  • Ketikkan sembarang teks untuk dikirimkan, tekan Send. Lengkapilah Tabel 5.4 !

 Tabel 5.4  Daftar data yang dikirim dan ditampilkan pada L CD
Teks yang dikirim
Teks pada LCD
Oke
Oke
Look
Look
Mikro
Mikro
Sudah
Sudah
  • Jelaskan fungsi tiap baris dari sintaks program pada Percobaan 5.4 !
#include <LiquidCrystal.h> //memanggil library untuk lcd

#define FOSC 16000000      //menetapkan nilai FOSC bernilai 16000000

LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // inisialisasi pin lcd

String dataSerial;                //mendekelarasikan dataSerial sebagai string

void initSerial(int baudrate) {
int ubrr = FOSC/16/baudrate-1;
// Mengisi register UBRR0H dan UBRR0L untuk menentukan baudrate
UBRR0H |= ubrr>>8;
UBRR0L |= ubrr;
// Mengaktifkan saluran transmitter dan receiver
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
// Menggunakan format data 8 bit
UCSR0C |= (0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
// Menggunakan 1 stop bit
UCSR0C |= (0<<USBS0);
// No Parity
UCSR0C |= (0<<UPM01)|(0<<UPM00);
// Mengaktifkan RX interrupt
UCSR0B |= (1<<RXCIE0);
}

// Rutin yang akan dijalankan jika terjadi interupsi
ISR(USART_RX_vect){
char data = UDR0;
if(data=='\n')
{
lcd.clear();            // tampilan lcd di hapus

lcd.setCursor(0,0);  //Menampilkan text pada baris pertama LCD

lcd.print("Incoming Data");    //Menampilkan text “Incoming Data” pada baris pertama di LCD

lcd.setCursor(0,1);  //Menampilkan text pada baris ke dua LCD

lcd.print(dataSerial);            //Menampilkan data yg dikirim melalui serial

dataSerial = "";
}
Else
{
if(data!='\r') //jika data tidak ada
{
dataSerial += data;  //Jika tidak ada data maka tampilkan text “data”
}
}
}

void setup() //settingan awal program

{

initSerial(9600);

lcd.begin(16,2); // tampilan lcd (kolom , baris)

lcd.clear();  // tampilan lcd di hapus

sei();
}

void loop() //program looping
 {
 }
  • Jelaskan perbedaan penggunaan interupsi dan sistem pooling !

interupsi adalah suatu kondisi yang memicu atau memaksa mikrokontroller untuk menghentkan program dan memaksa untuk menjalan kan program interupsi. sedangkann sistem pooling adalah kondisi arduino menunggu pengiriman data melalui serial.