Pada kesempatan kali ini akan dijelaskan mengenai bagaimana cara membuat alat kendali intensitas cahaya laser dengan menggunakan PWM Arduino / mikrokontroller, alat ini memiliki fungsi yaitu bisa dirubah setting waktunya dan duty cycle PWM-nya. fitur alat ini yang pertama yaitu terdapat menu pilihan waktu, artinya bisa di set waktu nyala laser misal 1 menit atau 5 menit, kemudian setting nilai duty cycle-nya dari range 0 sampai 250. aplikasi dari alat ini yaitu untuk alat pembunuh bakteri pada mulut dan gigi dengan menggunakan laser. untuk lebih jelasnya berikut adalah skema dan programnya.
a. Arduino Uno + LCD
b. Push Button 4 buah
c. Laser Panjang Gelombang Tertentu ( 445 -450 nm )
d. Rangkaian Kendali PWM
e. Program Arduino IDE
#include "Wire.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int count;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int x = 0;
int waktu = 1;
int flux = 0;
int s = 1;
int simpanwaktu = 0;
int simpanduty = 0;
void setup() {
pinMode(9,OUTPUT);
pinMode(A3,INPUT);
pinMode(A2,INPUT);
pinMode(A1,INPUT);
pinMode(A0,INPUT);
digitalWrite(A3,HIGH);
digitalWrite(A2,HIGH);
digitalWrite(A1,HIGH);
digitalWrite(A0,HIGH);
lcd.begin(16, 2);
lcd.clear();
lcd.noCursor();
}
void loop() {
d = digitalRead(A3);
a = digitalRead(A0);
if(a == 0){
delay(200);
lcd.clear();
if(simpanwaktu == 1){
count = 60;
}else if(simpanwaktu == 2){
count = 120;
}else if(simpanwaktu == 3){
count = 180;
}else if(simpanwaktu == 4){
count = 240;
}else if(simpanwaktu == 5){
count = 300;
}else if(simpanwaktu == 6){
count = 360;
}else if(simpanwaktu == 7){
count = 420;
}else if(simpanwaktu == 8){
count = 480;
}else if(simpanwaktu == 9){
count = 540;
}else if(simpanwaktu == 10){
count = 600;
}
startx();
}
analogWrite(9, 255);
lcd.setCursor(4, 0);
lcd.print("SET MODE");
lcd.setCursor(0, 1);
lcd.print("START");
lcd.setCursor(13, 1);
lcd.print("SET");
if(d == LOW){
delay(200);
lcd.clear();
setting();
}
analogWrite(9, x);
s = 1;
}
void setting(){
if(s == 2){
lcd.clear();
return;
}
lcd.setCursor(0, 0);
lcd.print("SET WAKTU");
lcd.setCursor(0, 1);
lcd.print("waktu= ");
lcd.print(waktu);
lcd.print(" Menit");
b = digitalRead(A1);
c = digitalRead(A2);
a = digitalRead(A0);
if(b == LOW){
delay(200);
waktu++;
}
if(c == LOW){
delay(200);
waktu--;
}
if((a == LOW)&&(s == 1)) {
delay(200);
simpanwaktu = waktu;
lcd.clear();
setting2();
}
if(waktu > 10){
waktu = 10;
}
if(waktu < 1){
waktu = 1;
}
setting();
}
void setting2(){
lcd.setCursor(0, 0);
lcd.print("SET PWM");
lcd.setCursor(0, 1);
lcd.print("DUTY= ");
lcd.print(flux);
b = digitalRead(A1);
c = digitalRead(A2);
a = digitalRead(A0);
if(b == LOW){
delay(200);
flux = flux + 5;
}
if(c == LOW){
delay(200);
flux = flux - 5;
}
if(flux > 250){
flux = 250;
}
if(flux < 1){
flux = 0;
}
if((a == LOW)&&(s == 1)){
delay(200);
simpanduty = flux;
s = 2;
return;
}
setting2();
}
void startx(){
lcd.setCursor(0, 0);
lcd.print("W= ");
lcd.print(simpanwaktu);
lcd.print(" D= ");
lcd.print(simpanduty);
lcd.setCursor(0, 1);
lcd.print("Counter= ");
lcd.print(count);
analogWrite(9, simpanduty);
delay(1000);
lcd.clear();
count--;
if(count < 1){
lcd.clear();
return;
}
startx();
}
f. Cara Penggunaan Alat
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int count;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int x = 0;
int waktu = 1;
int flux = 0;
int s = 1;
int simpanwaktu = 0;
int simpanduty = 0;
void setup() {
pinMode(9,OUTPUT);
pinMode(A3,INPUT);
pinMode(A2,INPUT);
pinMode(A1,INPUT);
pinMode(A0,INPUT);
digitalWrite(A3,HIGH);
digitalWrite(A2,HIGH);
digitalWrite(A1,HIGH);
digitalWrite(A0,HIGH);
lcd.begin(16, 2);
lcd.clear();
lcd.noCursor();
}
void loop() {
d = digitalRead(A3);
a = digitalRead(A0);
if(a == 0){
delay(200);
lcd.clear();
if(simpanwaktu == 1){
count = 60;
}else if(simpanwaktu == 2){
count = 120;
}else if(simpanwaktu == 3){
count = 180;
}else if(simpanwaktu == 4){
count = 240;
}else if(simpanwaktu == 5){
count = 300;
}else if(simpanwaktu == 6){
count = 360;
}else if(simpanwaktu == 7){
count = 420;
}else if(simpanwaktu == 8){
count = 480;
}else if(simpanwaktu == 9){
count = 540;
}else if(simpanwaktu == 10){
count = 600;
}
startx();
}
analogWrite(9, 255);
lcd.setCursor(4, 0);
lcd.print("SET MODE");
lcd.setCursor(0, 1);
lcd.print("START");
lcd.setCursor(13, 1);
lcd.print("SET");
if(d == LOW){
delay(200);
lcd.clear();
setting();
}
analogWrite(9, x);
s = 1;
}
void setting(){
if(s == 2){
lcd.clear();
return;
}
lcd.setCursor(0, 0);
lcd.print("SET WAKTU");
lcd.setCursor(0, 1);
lcd.print("waktu= ");
lcd.print(waktu);
lcd.print(" Menit");
b = digitalRead(A1);
c = digitalRead(A2);
a = digitalRead(A0);
if(b == LOW){
delay(200);
waktu++;
}
if(c == LOW){
delay(200);
waktu--;
}
if((a == LOW)&&(s == 1)) {
delay(200);
simpanwaktu = waktu;
lcd.clear();
setting2();
}
if(waktu > 10){
waktu = 10;
}
if(waktu < 1){
waktu = 1;
}
setting();
}
void setting2(){
lcd.setCursor(0, 0);
lcd.print("SET PWM");
lcd.setCursor(0, 1);
lcd.print("DUTY= ");
lcd.print(flux);
b = digitalRead(A1);
c = digitalRead(A2);
a = digitalRead(A0);
if(b == LOW){
delay(200);
flux = flux + 5;
}
if(c == LOW){
delay(200);
flux = flux - 5;
}
if(flux > 250){
flux = 250;
}
if(flux < 1){
flux = 0;
}
if((a == LOW)&&(s == 1)){
delay(200);
simpanduty = flux;
s = 2;
return;
}
setting2();
}
void startx(){
lcd.setCursor(0, 0);
lcd.print("W= ");
lcd.print(simpanwaktu);
lcd.print(" D= ");
lcd.print(simpanduty);
lcd.setCursor(0, 1);
lcd.print("Counter= ");
lcd.print(count);
analogWrite(9, simpanduty);
delay(1000);
lcd.clear();
count--;
if(count < 1){
lcd.clear();
return;
}
startx();
}
f. Cara Penggunaan Alat
Cara penggunaan alat ini yaitu yang pertama terdapat pilihan "START" dan "SET" pada LCD, kemudian pilih "SET" maka akan masuk ke menu pilihan lama laser menyala, gunakan tombol untuk up / down counter, kemudian tekan tombol "OK / Next", lalu akan tampil pilihan duty cycle yang digunakan, jika 0 maka laser akan menyala terang, jika 250 maka laser akan sangat redup, jika 100 maka akan sedikit redup, setelah itu tekan tombol "OK" maka akan masuk ke tampilan awal, langkah terakhir yaitu tekan tombol "START" untuk memulai, jika waktu telah selesai maka laser akan padam dan akan kembali ke menu awal. Untuk teori pwm adalah seperti pada gambar berikut
No comments:
Post a Comment