BAB 3 PERANCANGAN SISTEM
3.9 Diagram Alir (Flowchart)
Keterangan:
Cara kerja diawali dengan mulai kemudian melakukan inisialisasi dan dilanjutkan dengan pembacaan keadaan sensor SHT 11, Loud Cell dan Heater, proses pembacaan ini akan dikirim ke mikrokontroller ATMega 8535, selanjutnya LCD menampilkan nilai setiap sensor. Sampel yang di keringkan setiap keadaan suhu (40 0C, 45 0C, dan 50 0C) adalah sebesar 150 gr. Pada saat proses pengeringan sampel, dicatat perubahan massa yang terjadi selama 15 menit sekali. Apabila tidak terjadi perubahan massa selama 15 menit, maka sampel dianggap sudah kering dan proses pengeringan selesai.
BAB 4
PENGUJIAN ALAT DAN PROGRAM
4.1 Pengujian Power Supply
Pengujian rangkaian power supply bertujuan untuk mengetahui tegangan yang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh tegangan keluaran sebesar 4,28 volt. Dengan begitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak. Jika diukur, hasil dari keluaran tegangan tidak murni sebesar +5 Volt. Hasil tersebut dikarenakan beberapa faktor, diantaranya kualitas dari tiap-tiap komponen yang digunakan nilainya tidak murni. Selain itu, tegangan jala-jala listrik yang digunakan tidak stabil. Pada pengujian Power Suplay, tegangan yang dibutuhkan sebesar 5 volt, pertama masuk tegangan AC sebesar 220 volt dari PLN, kemudian disalurkan ke travo sehingga tegangan menjadi 12 volt AC, disaring lagi ke dioda sehingga menjadi 12 volt DC, kemudian dihubungkan dengan IC 7805 sehingga tegangan menjadi 5 volt DC.
Gambar 4.1 Pengujian Power Supply 4.2 Pengujian rangkaian Heater
Pengujian heater bertujuan untuk mengetahui panas yang dihasilkan heater tersebut terhadap bahan, untuk mengeringkan rumput laut dalam sistem pengeringan. Dalam penelitian ini digunakan heater buatan yang dirangkai dalam sistem pengeringan.
Sifat panas yang dihasilkan berupa daya listrik yang menimbulkan energy panas, kemudian panas ini ditransmisikan dalam bentuk radiasi yang akan mengeringkan
rumput laut. Adapun program yang diisikan ke mikrokontroller adalah sebagai berikut:
#include <mega8535.h>
#include <stdio.h>
#include <stdlib.h>
void main(void) {
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
while (1) { PORTB.1=1;
delay_ms(5000);
PORTB.1=0;
delay_ms(5000);
} //end while
} //end void main
Berikut data pengujian heater pada alat pengering rumput laut:
Tabel 4.2 Pengujian Heater
4.3 Pengujian Rangkaian Sensor SHT 11
SHT11 module merupakan modul sensor suhu dan kelembaban relatif dari sensirion. Modul ini dapat digunakan sebagai alat pengindera suhu dan kelembaban dalam sistem pengeringan rumput laut. Pengujian ini bertujuan untuk mengukur sensitifitas dan cara kerja sensor yang digunakan. Berikut program yang digunakan untuk menguji rangkaian sensor:
char inp;
typedef union { unsigned int i;
float f;
} value;
enum {TEMP,HUMI};
#define DATA_OUT PORTD.5
#define DATA_IN PIND.5
#define SCK PORTD.4
#define noACK 0
#define ACK 1
//adr command r/w
#define STATUS_REG_W 0x06 //000 0011 0
#define STATUS_REG_R 0x07 //000 0011 1
#define UKUR_SUHU 0x03 //000 0001 1
#define UKUR_HUMI 0x05 //000 0010 1
#define RESET 0x1e //000 1111 0
#define heater PORTB.1
#define tb_up PINB.0
#define tb_down PINB.2 unsigned int nilaisuhu[2]={0,0};
//Untuk menulis data ke SHT11 char tulis_SHT(unsigned char bytte) {
unsigned char i,error=0;
DDRD = 0b10110000;
for (i=0x80;i>0;i/=2) //shift bit {
if (i & bytte)
DATA_OUT=1;
else DATA_OUT=0;
SCK=1; //clk
delay_us(5); //delay 5 us SCK=0;
}
DATA_OUT=1;
DDRD = 0b10010000; // DATA Output SCK=1; //clk #9 ack
delay_us(2);
error=DATA_IN; //cek ack (DATA akan di pull down oleh SHT11) delay_us(2);
SCK=0;
return error; //cek jika ada error }
//Untuk membaca data dari SHT11 char baca_SHT(unsigned char ack) {
unsigned char i,val=0;
DDRD = 0b10010000; // DATA Input for (i=0x80;i>0;i/=2) //shift bit
{ SCK=1; //clk delay_us(2);
if (DATA_IN) val=(val | i); //baca bit delay_us(2);
SCK=0;
}
DDRD = 0b10110000; // DATA Output
DATA_OUT=!ack; //"ack==1" pull down DATA-Line SCK=1; //clk #9 ack
delay_us(5); //delay 5 us
SCK=0;
DATA_OUT=1; //DATA-line return val;
}
void start_SHT(void) {
DDRD = 0b10110000; // DATA Output DATA_OUT=1; SCK=0; //Inisial state delay_us(2);
SCK=1;
delay_us(2);
DATA_OUT=0;
delay_us(2);
SCK=0;
delay_us(5);
SCK=1;
delay_us(2);
DATA_OUT=1;
delay_us(2);
SCK=0;
DDRD = 0b10010000; // DATA Input }
void reset_SHT(void) {
unsigned char i;
DDRD = 0b10110000; // DATA output DATA_OUT=1; SCK=0; //Inisial state for(i=0;i<9;i++) //9 SCK cycle { SCK=1;
delay_us(1);
SCK=0;
delay_us(1);
}
start_SHT(); //start transmisi data DDRD = 0b10010000; // DATA Input }
//Mengecek status register sensor
char StatusReg_SHT(unsigned char *p_value, unsigned char *p_checksum) {
unsigned char error=0;
start_SHT(); //start transmisi data
error=tulis_SHT(STATUS_REG_R); //mengirim command ke sensor *p_value=baca_SHT(ACK); //baca status register (8-bit)
*p_checksum=baca_SHT(noACK); //baca checksum (8-bit) return error; //error=1 jika tidak ada respon dari sensor }
//Membaca data hasil pengukuran
char ukur_SHT(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
{
unsigned error=0;
unsigned int temp=0;
start_SHT(); //start transmisi data
switch(mode){ //mengirim command ke sensor case TEMP : error+=tulis_SHT(UKUR_SUHU); break;
case HUMI : error+=tulis_SHT(UKUR_HUMI); break;
default : break;
}
DDRD = 0b10010000; // DATA input
while (1) {
if(DATA_IN==0) break;
//tunggu hingga sensor selesai melakukan pengukuran }
if(DATA_IN) error+=1;
// jika sudah timeout (2 detik)
switch(mode){ //mengirim command ke sensor case TEMP : temp=0;
temp=baca_SHT(ACK);
temp<<=8;
nilaisuhu[0]=temp;
temp=0;
temp=baca_SHT(ACK);
nilaisuhu[0]|=temp;
break;
case HUMI : temp=0;
temp=baca_SHT(ACK);
temp<<=8;
nilaisuhu[1]=temp;
temp=0;
temp=baca_SHT(ACK);
nilaisuhu[1]|=temp;
break;
default : break;
}
*p_checksum =baca_SHT(noACK); //baca checksum return error;
}
const float C1=-4.0;
const float C2=+0.0405;
const float C3=-0.0000028;
const float T1=+0.01;
const float T2=+0.00008;
float hitung_SHT(float p_humidity, float *p_temperature) {
float rh_lin; // rh_lin: Kelembaban linear
float rh_true; // rh_true: Suhu untuk kompensasi kelembaban float t_C; // t_C : nilai Suhu
t_C=*p_temperature*0.01-40;
//mengubah nilai Suhu menjadi derajat Celcius [°C]
rh_lin=C3*(p_humidity)*(p_humidity) + C2*(p_humidity) + C1;
//mengubah nilai kelembaban dalam % [%RH]
rh_true=(t_C-25)*(T1+T2*(p_humidity))+rh_lin;
//mengkompensasikan nilai suhu dan kelembaban[%RH]
if(rh_true>100)rh_true=100;
if(rh_true<0.1)rh_true=0.1;
*p_temperature=t_C;
return rh_true;
}
/**************End program sht11*************/
void main(void) {
value humi_val,temp_val;
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
lcd_init(16);
while (1) {
//delay_ms(500);
error=0;
error+=ukur_SHT((unsigned char*)( &humi_val.i),&checksum,HUMI);
//mengukur kelembaban
error+=ukur_SHT((unsigned char*) (&temp_val.i),&checksum,TEMP);
//mengukur suhu
error += StatusReg_SHT(&inp, &checksum);
if(error!=0) {
reset_SHT(); //jika ada error, reset koneksi lcd_gotoxy(0,0);
lcd_putsf("Error");
} else
{
humi_val.f=(float)nilaisuhu[1];
//mengubah integer menjadi float
temp_val.f=(float)nilaisuhu[0];
humi_val.f=hitung_SHT(humi_val.f,&temp_val.f);
//menghitung suhu, kelembaban //menampilkan pada LCD lcd_gotoxy(8,0);
ftoa(temp_val.f,2,buf);
lcd_putsf("T:");
lcd_puts(buf);
lcd_putsf("C");
lcd_gotoxy(10,1);
ftoa(humi_val.f,0,buf);
lcd_putsf("RH:");
lcd_puts(buf);
lcd_putsf("%");
}
} //end while
} //end void main
Berikut hasil pengujian sensor SHT 11 yang ditampilkan pada LCD:
Gambar 4.3 Pengujian sensor SHT 11
4.4 Pengujian Rangkaian Load Cell dan Hx711
Load cell sebagai sensor berat yang mengirimkan data berat terhadap objek yang diukur. HX711 adalah modul timbangan, yang memiliki prinsip kerja mengkonversi perubahan yang terukur dalam perubahan resistansi dan mengkonversinya ke dalam besaran tegangan melalui rangkaian yang ada. Modul melakukan komunikasi dengan mikrokontroller melalui TTL232. Pada sistem ini Modul HX711 di hubungkan langsung dengan load cell. Load cell mengirimkan hasil timbang berupa sinyal berbentuk analog maka akan diubah menjadi sinyal digital, DOUT dan PD_SCK mendapat input dari load cell dimana weight sensor mobile akan diubah dari sinyal analog menjadi sinyal analog dengan berbentuk pulsa. Pengujian ini dilakukan dengan mencoba memberikan objek pada sensor dan membaca data pada LCD 16x2 dari mikrokontroller. Berikut program pengujian cara kerja Load cell dan HX711 :
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <math.h >
/**************Start program Load Cell*************/
#define HX711_SCK PORTD.7
#define HX711_DT PIND.6
#define HIGH 1
#define LOW 0 char text[20];
// Declare your global variables here long HX711_Buffer = 0;
long Weight_Maopi = 0,Weight_Shiwu = 0;
int Weight = 0;
unsigned long HX711_Read(void) {
unsigned long count;
unsigned char i;
//int Flag = 0;
HX711_DT= HIGH;
delay_us(1);
HX711_SCK=LOW;
delay_us(1);
count=0;
while(HX711_DT);
for(i=0;i<24;i++) {
HX711_SCK=HIGH;
delay_us(1);
count=count<<1;
HX711_SCK= LOW;
delay_us(1);
if(HX711_DT) count++;
}
HX711_SCK= HIGH;
count ^= 0x800000;
delay_us(1);
HX711_SCK= LOW;
delay_us(1);
return(count);
}
void Get_Maopi() {
HX711_Buffer = HX711_Read();
Weight_Maopi = HX711_Buffer/100;
}
unsigned int Get_Weight() {
HX711_Buffer = HX711_Read();
HX711_Buffer = HX711_Buffer/100;
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi;
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/7.35+0.05);
return Weight_Shiwu;
}
/**************End program Load Cell*************/
void main(void) {
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
Get_Maopi();
lcd_init(16);
lcd_clear();
while (1) {
delay_ms(500);
Weight = Get_Weight();
lcd_gotoxy(0,1);
ftoa(Weight,1,text);
lcd_putsf("W:");
lcd_puts(text);
lcd_putsf(" gr ");
} //end while
} //end void main
Berikut hasil pengujian sensor Loud Cell dan HX711 yang di tampilkan pada LCD:
Gambar 4.4 Pengujian sensor Loud cell dan Hx711
4.5 Pengujian Rangkaian LCD
Bagian ini hanya terdiri dari sebuah LCD dot matriks 2 x 16 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa keterangan.
LCD dihubungkan langsung ke Port C dari mikrokontroler yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada LCD.
Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:
#include <mega8535.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
void main(void) {
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (0<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
lcd_init(16);
lcd_clear();
while (1) {
lcd_gotoxy(3,0);
lcd_putsf("Yoga");
lcd_gotoxy(1,1);
lcd_putsf("S1 Fisika");
delay_ms(1000);
lcd_clear();
} //end while
} //end void main
Berikut hasil pengujian LCD pada alat pengering rumput laut:
Gambar 4.5 Pengujian LCD 4.6 Pengujian Rangkaian Keseluruhan
Pengujian sistem secara keseluruhan dilakukan dengan merancang alat pengering dengan merangkai semua komponen yang terkait, dimana mikrokontroller ATMega 8535 sebagai pusat pengelola sistem secara keseluruhan. Setelah rancangan perangkat keras dilakukan, selanjutnya dilakukan pengujian langsung dengan power supply sebagai sumber tegangan, maka sistem akan bekerja dan untuk menjalankan rancangan sistem tersebut menggunakan bahasa pemrograman C yang sudah diprogram dengan ketentuan panas dan suhu yang diinginkan.
Pengujian dilakukan dengan sampel rumput laut jenis Sargassum sp yang akan dikeringkan kedalam sistem pengeringan dengan variasi suhu 40 0C, 45 0C, dan 50 0C. Pada waktu pengujian rumput laut yang diamati adalah rumput laut basah dengan massa sebesar 150 gram. Rumput laut tersebut kemudian dikeringkan menggunakan sistem dengan waktu pengambilan data selama 15 menit sekali.
Rumput laut mengalami penurunan massa setiap 15 menit sekali akibat pengaruh
suhu dalam wadah. Apabila massa rumput laut tidak mengalami penurunan selama 15 menit, maka rumput laut dianggap sudah kering. Suhu, kelembapan, dan massa ditampilkan langsung oleh LCD.
4.6.1 Hasil Pengujian Suhu 40 0C
Tabel 4.6.1 Pengujian Suhu 40 0C Waktu (Menit) Perubahan Massa (Gram)
0 150
Jika ditampilkan dalam bentuk grafik,akan terlihat seperti dibawah ini :
Gambar 4.6.1 Grafik Perubahan Massa Rumput laut vs Waktu 40 0C
100
4.6.2 Hasil Pengujian Suhu 45 0C
Tabel 4.6.2 Pengujian Suhu 45 0C Waktu (Menit) Perubahan Massa (Gram)
0 150
Jika ditampilkan dalam bentuk grafik,akan terlihat seperti dibawah ini :
Gambar 4.6.2 Grafik Perubahan Massa Rumput laut vs Waktu 45 0C
100
4.6.3 Hasil Pengujian Suhu 50 0C
Tabel 4.6.3 Pengujian Suhu 50 0C Waktu (Menit) Perubahan Massa(Gram)
0 150
Jika ditampilkan dalam bentuk grafik,akan terlihat seperti dibawah ini :
Gambar 4.6.3 Grafik Perubahan Massa Rumput laut vs Waktu 50 0C
Berdasarkan ketiga pengujian tersebut dapat ditentukan rata-rata massa akhir rumput laut adalah: 28,3 + 28,3 + 27,5
Sehingga dapat dihitung kadar air rumput laut dengan menggunakan persamaan berikut ini:
Kadar air basis kering = 𝑎−𝑏
𝑎 𝑥 100%
Keterangan: a = Massa awal sampel (gram) b = Massa akhir sampel (gram) Kadar air basis kering = 150− 28,03
150 𝑥 100%
= 121,97
150 𝑥 100%
= 81, 31%
Jadi kadar air yang tersisa dari dalam rumput laut kering = 100% - 81, 31%
= 18, 69%
Jadi didapatkan kadar air dalam rumput laut adalah 18,69%. Hasil ini mendekati nilai rumput laut kering kawat (20-30%).
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari hasil perancangan alat hingga pengujian dan pembahasan sistem maka penulis dapat menarik kesimpulan, antara lain :
1. Telah berhasil dirancang suatu alat yang mampu mengeringkan rumput laut berdasarkan perubahan massa menggunakan elemen pemanas (heater) yang sistemnya dikontroll menggunakan sensor suhu dan kelembaman (SHT 11), dan Loud Cell yang kemudian dikendalikan oleh mokrokontroller ATMEGA 8535 dari seluruh sistem dan ditampilkan di LCD.
2. Prinsip kerja alat pengering rumput laut berdasarkan perubahan massa ini adalah menggunakan elemen pemanas berupa (Heater), kemudian sensor SHT 11 mengukur suhu dan kelembapan dalam sistem. Dan Loud Cell sebagai sensor berat mengukur perubahan massa yang terjadi selama proses pengeringan berlangsung yang kemudian nilai besar suhu dan kelembapan serta perubahan massa ditampilkan pada LCD. Pengeringan dianggap selesai apabila tidak ada lagi perubahan massa selama 15 menit.
5.2 Saran
Setelah melakukan penelitian, diperoleh beberapa hal yang dapat dijadikan saran untuk dilakukan penelitian lebih lanjut yaitu:
1. Membuat penampang rumput laut yang dapat berputar sehingga proses pengeringan lebih merata.
2. Pada alat perlu ditambahkan Sd Card sebagai pencatat perubahan massa secara otomatis sehingga meningkatkan keakuratan data.
3. Pada alat perlu ditambahkan sensor pendeteksi kadar air di oven pengering, untuk mendapatkan pengukuran kandungan air dalam alat pengering rumput laut.
DAFTAR PUSTAKA
Andriawan, N. K. 2018. Rancang Bangun Sistem Pengeringan Rumput Laut Berbasis Arduino Uno di Kabupaten Takalar. [skripsi]. Makassar: Universitas Islam Negeri Alauddin Makassar.
Anggadiredja, J. T., Zatnika, A., Purwoto, H. dan Istini, S. 2009. Rumput Laut.
Jakarta (ID): Penebar Swadaya.
Djaeni, M., Sasongko, S. B., Van Boxtel, A. J. B. (2013). Enhancement of Energy Efficiency and Food Product Quality Using Adsorption Dryer with Zeolite.
International Journal of Renewable Energy Development, 2(2), 81-86.
Fithriani, D., Assadad, L., & Siregar, Z.A. (2016). Karakteristik dan Model Matematika Kurva Pengeringan Rumput Laut Eucheuma cottonii. Jurnal Pascapanen dan Bioteknologi Kelautan dan Perikanan, 11(2), 159-170.
doi:10.15578/ jpbkp.v11i2.290
Goeritno, Arif., Dwi, J. N., Rakhmad Yatim. (2014). Implementasi Sensor SHT11 untuk Pengkondisian Suhu dan Kelembaban Relatif Berbantuan Mikrokontroler. Jakarta: Seminar Nasional Sains dan Teknologi.
Matondang, M., A. (2018). Perancangan Sistem Penghitung dan Pemilah Buah Otomatis dengan Menggunakan Sensor Laser Dioda dengan Tampilan PC.
[Skripsi]. Medan: Universitas Sumatera Utara.
Nuryanto, Rudi. (2015). Pengukur berat dan Tinggi Badan Ideal Berbasis Arduino.
[Karya Ilmiah]. Surakarta: Universitas Muhammadiyah Surakarta.
Ristiawan, M., Eko A. (2016). Otomatisasi Pengatur Suhu dan Waktu pada Penyangrai Kopi (Roaster Coffee) Berbasis Atmega 16 pada Tampilan LCD (Liquid Crystal Display). Gema Teknologi Vol. 19.
Sari, Denni Kartika, Dkk. 2017. Pengaruh Suhu dan Waktu Pengeringan Terhadap Mutu Rumput Laut Kering. Banten: Jurnal Teknika ISSN 1693-024X.
Sofyan, I. 2001. Rancangan Awal Alat Pengering Energi Matahari (Solar Dryer) untuk Pengering Rumput Laut. [skripsi]. Bogor (ID): Institut Pertanian Bogor.
Tumanggor, S. 2018. Sistem Pengeringan Biji Padi Berbasis Mikrokontroller Atmega 8. [skripsi]. Medan: Universitas Sumatera Utara.
LAMPIRAN
Gambar 1. Rumput Laut Sargassum Sp
Gambar 2. Tampilan pada LCD
Gambar 3. Keseluruhan Alat
Gambar 4. Hasil Pengeringan Rumput Laut
Gambar 5. Rangkaian Lengkap
PROGRAM LENGKAP
/*******************************************************
This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
AVR Core Clock frequency: 16.000000 MHz Memory model : Small
// Declare your global variables here
long HX711_Buffer = 0;
long Weight_Maopi = 0,Weight_Shiwu = 0;
int Weight = 0;
unsigned long HX711_Read(void) {
return Weight_Shiwu;
//Untuk menulis data ke SHT11 char tulis_SHT(unsigned char bytte)
DATA_OUT=1;
//Untuk membaca data dari SHT11 char baca_SHT(unsigned char ack) // menghasilkan sinyal awal untuk transmisi data
// _____ ________
SCK=0; // reset: DATA-line=1 dengan 9 SCK cycle di awal
// _____________________________________________________ //Untuk mereset koneksi dengan SHT11
void reset_SHT(void)
char StatusReg_SHT(unsigned char *p_value, unsigned char *p_checksum) {
unsigned char error=0;
start_SHT(); //start transmisi data
error=tulis_SHT(STATUS_REG_R); //mengirim command ke sensor *p_value=baca_SHT(ACK); //baca status register (8-bit)
*p_checksum=baca_SHT(noACK); //baca checksum (8-bit) return error; //error=1 jika tidak ada respon dari sensor }
//Membaca data hasil pengukuran
char ukur_SHT(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
{
//tunggu hingga sensor selesai melakukan pengukuran }
float hitung_SHT(float p_humidity, float *p_temperature)
rh_lin=C3*(p_humidity)*(p_humidity) + C2*(p_humidity) + C1;
//mengubah nilai kelembaban dalam % [%RH]
// Declare your local variables here // Input/Output Ports initialization // Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
//port B.0 dan portb.2 dipakei untuk tombol up & down heater //portB.1 dipakai untuk output heater
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (1<<PORTB2) | (0<<PORTB1) | (1<<PORTB0);
// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=Out DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (1<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=1
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (1<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(1<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02)
| (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Disconnected // OC1B output: Disconnected // Noise Canceler: Off
// Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0<<AS2;
TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22)
| (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
// USART initialization // USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
// Analog Comparator initialization // Analog Comparator: Off
// The Analog Comparator's positive input is // connected to the AIN0 pin
// The Analog Comparator's negative input is // connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC)
| (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization // ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);
// SPI initialization // SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);
// TWI initialization // TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
// Alphanumeric LCD initialization // Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 7
}
if(hitung>=50){
lcd_gotoxy(0,1);
lcd_putsf("mulai operasi");
delay_ms(2000);
if (set_suhu>=60) set_suhu=60;
if (set_suhu<=40) set_suhu=40;
error+=ukur_SHT((unsigned char*)( &humi_val.i),&checksum,HUMI);
//mengukur kelembaban
error+=ukur_SHT((unsigned char*) (&temp_val.i),&checksum,TEMP);
//mengukur suhu
error += StatusReg_SHT(&inp, &checksum);
if(error!=0) {
reset_SHT(); //jika ada error, reset koneksi lcd_gotoxy(0,0);
lcd_putsf("Error");
} else {
humi_val.f=(float)nilaisuhu[1];
//mengubah integer menjadi float
temp_val.f=(float)nilaisuhu[0];
humi_val.f=hitung_SHT(humi_val.f,&temp_val.f);
//menghitung suhu, kelembaban //menampilkan pada LCD lcd_gotoxy(8,0);
ftoa(temp_val.f,2,buf);
lcd_putsf("T:");
lcd_puts(buf);
lcd_putsf("C");
lcd_gotoxy(10,1);
ftoa(humi_val.f,0,buf);
lcd_putsf("RH:");
lcd_puts(buf);
lcd_putsf("%");
}
if (temp_val.f<set_suhu) heater=1;
else heater=0;
} //end while } //end void main