ALAT ETCHING PCB BERBASIS ARDUINO UNO
Dosen Pengampu : Dr. Samuel Beta Kuntoardjo.,ING.TECH,MT,DR
KELOMPOK B6
Balqis Shafira Chairuliez (3.32.20.1.07)
Muhammad Abimanyu Nugroho (3.32.20.1.17)
LATAR BELAKANG
Printed Circuit Board (PCB) merupakan papan yang digunakan untuk membuat jalur suatu rangkaian elektronik. Dalam proses pembuatan PCB diperlukan beberapa tahap antara lain dari mulai proses perancangan layout PCB, penggambaran layout, penyablonan layout pada PCB dan pelarutan PCB. Pelarutan PCB (Etching) adalah suatu proses untuk membuang bagian logam yang tidak dibutuhkan dari Papan PCB kosong. Dengan teknik ini, rangkaian skematik yang telah tercetak di papan PCB kosong dapat diproses dan digunakan untuk merakit sebuah rangkaian elektronik. Proses etching PCB masih banyak dilakukan secara manual. Proses tersebut memiliki beberapa kelemahan, antara lain: 1) Operator memiliki resiko yang besar terkena larutan kimia yang dapat menyebabkan iritasi pada kulit; dan 2) Waktu proses cukup lama, yaitu lebih dari 20 menit. Oleh sebab itu diperlukan sebuah Alat Etching PCB yang dapat menghindarkan operator dari resiko terkena larutan kimia dan mempercepat waktu proses. PCB dengan berbagai teknologi sudah cukup banyak tersedia. Namun dari aspek biaya masih cukup tinggi. Oleh karenanya, dibutuhkan sebuah alat etching PCB yang sederhana namun cukup efektif mengatasi kelemahan proses etching manual. Mempelajari dari penelitian yang pernah dilakukan sebelumnya mengenai perancangan.
Power Point Presentasi (Unduh Disini)
Program Alat Etching PCB Berbasis Arduino Uno (Unduh Disini)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte pwm_output= 11; //Pin Output Motor
byte pwm_input= A0; //Pin Potensio
#define UpPIN 6 //Pin Push Buton Up
#define DownPIN 7 //Pin Push Buton Down
#define OkPIN 8 //Pin Push Buton Ok
const int BUZZER = 9 ; //Pin Buzzer
const int LED =10 ; //Pin Led
const int MOTOR = pwm_output;
int Up,Down,Ok;
int setUp=0,setDown=0,setOk=0;
int settimer =0;
int value_potensio =0;
int output =0;
int value =0;
int minute =0;
int m, s = 0;
void setup()
{
pinMode(UpPIN,INPUT_PULLUP);
pinMode(DownPIN, INPUT_PULLUP);
pinMode(OkPIN, INPUT_PULLUP);
pinMode(pwm_output,OUTPUT);
pinMode(pwm_input,INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED, OUTPUT);
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Etching PCB ");
lcd.setCursor(0,1);
lcd.print("Machine ");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ***Ready*** ");
lcd.setCursor(0, 1);
lcd.print(" * ");
delay(40);
digitalWrite(BUZZER, HIGH);
delay(500);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(500);
digitalWrite(BUZZER, LOW);
}
void loop()
{
Up= digitalRead(6);
Down= digitalRead(7);
Ok= digitalRead(8);
tampil();
}
void tampil()
{
if (Ok==0 && setOk==0){setOk=1;}
if (Ok!=0 && setOk==1){setOk=0; settimer=1;}
{
if (settimer==1)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("**Set Timer** ");
delay(1000);
while (digitalRead(OkPIN) == 1) {
if (digitalRead(UpPIN) == 0) {
if (minute >= 30)
{
minute = 0;
}
else
{
minute++;
}
}
if (digitalRead(DownPIN) == 0) {
if (minute < 1) { minute = 5; }
else {
minute--;
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time: minute");
lcd.setCursor(6, 0);
lcd.print(minute);
delay(400);
lcd.setCursor(0, 1);
lcd.print("Timer Setting");
delay(800);
}
lcd.clear();
m = minute;
s = 0;
lcd.setCursor(4, 0);
lcd.print("Start");
delay(500);
for (m; m >= 0; m--) {
for (s; s >= 0; s--) {
value_potensio = analogRead(pwm_input);
output = map(value_potensio,0,1023,0,255);
analogWrite( MOTOR,output);
digitalWrite(LED, HIGH);
lcd.clear();
int value = analogRead(pwm_input);
value = map (value, 0, 1023 , 0, 6);
lcd.setCursor(0, 0);
lcd.print("Start ");
lcd.print(m);
lcd.print(" : ");
lcd.print(s);
lcd.setCursor(0, 1);
lcd.print("Motor Speed : ");
lcd.print(value);
if (digitalRead(OkPIN) == 0) {
goto timeStop;
}
delay(1000);
}
s = 59;
}
digitalWrite(MOTOR, LOW);
digitalWrite(LED, LOW);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(">>>Done<<<");
digitalWrite(BUZZER, HIGH);
delay(1500);
digitalWrite(BUZZER, LOW);
delay(7000);
return ;
while (digitalRead(OkPIN) == 1)
{
lcd.setCursor(3, 0);
lcd.print(">>>Done<<<");
}
timeStop:
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("STOP!!!");
delay(500);
digitalWrite(MOTOR, LOW);
delay(100);
digitalWrite(LED, LOW);
delay(100);
return ;
}}}
Komentar
Posting Komentar