A.
PENDAHULUAN
Perkembangan dunia digital akhir-akhir ini tampak semakin berkembang dan
banyak sekali peminat dari berbagai kalangan baik itu sebagai pembuat atau
programmer maupun sebagai user atau pemakainya. Penggunaan mikrokontroler
mampu terserap dalam berbagai sudut kehidupan manusia, sehingga hampir semua
segi aktifitas manusia dapat dibantu dengan perangkat berbasis mikrokontroler.
Dengan cara pemrograman yang cukup mudah, perangkat keras yang dapat
ditemukan dengan mudah dan murah dipasaran dan penempatan device yang
cukup fleksibel dirasa sangat mampu untuk menjawab berbagai masalah disekitar
manusia.
B.
LATAR BELAKANG
Dalam hal pengukuran massa, pengukuran massa biasanya dilakukan secara
manual yaitu dengan menggunakan timbangan manual. Definisi timbangan itu
sendiri adalah sebuah alat bantu yang digunakan untuk mengetahui berat suatu
benda. Dalam pemanfaatannya timbangan digunakan diberbagai bidang salah
satunya dibidang perdagangan, seperti halnya pedagang buah dipasar yang
kebanyakan masih menggunakan timbangan manual.
Berdasarkan dari penjelasan diatas, maka dirancanglah suatu alat timbangan
elektronik menggunakan mikrokontroller ATMega16 sebagai pmroses data. Pada
timbangan elektronik ini menggunakan sensor berat yaitu sebuah load cell sebagai
pendeteksi berat suatu benda.
Sensor diletakkan ditengah agar alat dapat menimbang secara baik. Pada saat
alat mendeteksi adanya beban, maka secara otomatis sensor akan membaca dan
mengirimkan sinyal ke mikrokontroler yang kemudian berat buah tersebut
ditampilkan oleh LCD.
Setelah suatu benda diletakkan pada tumpuan beban pada
timbangan maka timbangan akan keluar kode dari timbangan yang akan disimpan
pada EEPROM (electrically erasablle programmable read-only memory)
mikrokontroller ATMega 16.
Pada saat suatu benda diletakkan diatas timbangan, nilai berat akan muncul
pada layar LCD (Liquid Crystal Display). Dalam hal ini kami memutuskan untuk
merancang rumusan ini sebagai bentuk tugas akhir perkuliahan Mikrokontroller yang
berjudul “ Timbangan Digital menggunakan ATMega 16 ”.
C.
RUMUSAN MASALAH
1.
Bagaimana cara membuat timbangan digital?
2. Apa tujuan pembuatan timbangan digital?
D.
TUJUAN
1. Terciptanya timbangan digital pengukur berat dengan load cell
2. Menghasilkan suatu alat timbang digital yang mempunyai efektivitas dan
kompleksivitas tinggi dalam penggunaannya.
E.
BATASAN MASALAH
1.
Penggunaan mikrokontroler sebagai pengontrol mekanik berdasarkan berat
benda dan pengolahan data dari benda tertimbang.
2. Pengolahan data ADC dengan pemrograman mikrokontroller menggunakan
bahasa C.
F.
DESAIN PERANCANGAN
1.
Skema Sistem Alat
Gambar1. Blok skema sistem kerja alat
Alat ini menggunakan timbangan duduk sebagai inputan berat, yang
dibawahnya akan dipasang sensor load cell yang besar resistansinya kan berubah
sesuai dengan tekanan yang diterima oleh wadah beban diatasnya. Perubahan
besar resistansi akan mengubah nilai tegangan yang masuk ke mikrokontroller.
Besaran ini akan diolah oleh ADC yang akan mengkonversi nilai analog ke digital.
Data yang masuk ke ATMEGA 16 akan diolah sesuai program yang dimasukkan
didalamnya. Berat benda akan ditampilakan didalam LCD, selanjutnya nilai berat
akan diolah untuk dimasukkan dalam wadah tertentu.
G.
LANGKAH PEMBUATAN
1.
Perancangan Hardware
a.
Pembuatan Rangkaian Elektonik
Langkah kerja :
1. Buat skema rangkaian pada ISIS.
2. Lanjutkan dengan membuat desain PCB pada ARES.
3. Cetak rangkaian PCB pada kertas Glosy.
4. Siapkan alat dan bahan yang diperlukan.
5.
Setrika kertas Glosy pada PCB yang telah disediakan, sebelumnya bersihkan
dahulu PCB agar saat menyetrika jalur mudah menempel.
6. Larutkan PCB dengan Ferric Choride (FeCl3).
7. Bersihkan PCB lalu bor letak kaki komponen.
8. Pasang komponen pada PCB.
9. Lakukan pengujian rangkaian.
10.
Pasang rangkaian pada box yang telah dibuat.
b.
Pembuatan Box
Langkah pembuatan box :
1. Buat skema box.
2. Siapkan plat alumunium.
3. Ukur plat sesuai skema box yang telah dibuat.
4.
Potong plat sesuai kebutuhan.
5.
Lipat plat sesuai skema box.
6. Memasang rangkaian elektronik ke dalam box sehingga menjadi gambar
dibawah ini :
Gambar5. Rangkaian elektronik dan mekanik yang telah dipasang pada blok
2.
Perancangan Software
Pemrograman mikrokontroler yang digunakan untuk mengontrol ADC dan
pengolahan data tertimbang menggunakan pemrograman bahasa C dengan CV
AVR.
Gambar6. Flowchart timbangan digital
Source code dituliskan dibawah ini :
#include <mega16.h> #include <delay.h> #include <alcd.h> #include <stdio.h>
#define ADC_VREF_TYPE 0x00 //deklarasi ADC
#define P5 PINC.5 //deklarasi PINC 5 sebagai P5 #define P6 PINC.6
#define P7 PINC.7
eeprom unsigned char batas,batas1; //pengatur nilai eeprom, batas sebagai pengatur nilai bulat, batas1 sebagai pengatur nilai desimal
int adc_in; //deklrasi variabel adc_in bertipe integer float nilai; //deklrasi variabel nilai bertipe float
char_buff[33]; //deklarasi variabel buff untuk penyalaan LCD unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } //global variabel void main(void) {
unsigned char a=0,b=0,c; //membuat variabel a, b diisi dengan 0, dan membuat variabel c float set; //membuat variabel set bertipe float
PORTA=0x00; //port A sebagai input dari ADC dan aktif saat 1 DDRA=0x00;
PORTC=0xFF; //PORT C sebagai input dan aktif saat 0 DDRC=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization UCSRB=0x00;
// Analog Comparator initialization ACSR=0x80; SFIOR=0x00; // ADC initialization ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // SPI initialization SPCR=0x00; // TWI initialization TWCR=0x00; // Alphanumeric LCD initialization // Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTB Bit 6
// RD - PORTB Bit 5 // EN - PORTB Bit 4 // D4 - PORTB Bit 3 // D5 - PORTB Bit 2
// D6 - PORTB Bit 1 // D7 - PORTB Bit 0 // Characters/line: 16
lcd_init(16); //deklarasi menggunakan lcd 16x2 lcd_clear();
lcd_putsf(" Selamat datang "); delay_ms(2000);
lcd_gotoxy(0,0);
lcd_putsf(" Hashemi Group "); delay_ms(2000);
//Mengambil data batas maksimal dari eeprom
set=batas; //nilai batas dimasukkan ke variabel set(untuk pengaturan bilangan bulat setingan
set=set+(float)batas1/100; //mengatur angka desimal, nilai batas 1 dibagi 100 dan dijadikan float untuk bilangan desimal
while (1) {
/*******************************************************
**************** PENGOLAHAN DATA ADC ****************** *******************************************************/
adc_in = read_adc(0); //Membaca data ADC yang didapat dari pin ADC0 dimasukkan pada variabel adc_in
nilai = (float)adc_in*3/1024; //Hasil pembacaan diolah menggunakan float dengan nilai maksimal=3 kg dan dimasukkan pada variabel nilai
lcd_gotoxy(0,0); //Penempatan posisi karakter pada LCD untuk karakter nilai pengukuran
lcd_putsf("Berat : ");
lcd_puts(buff); //Menampilkan data pada layar LCD
lcd_gotoxy(0,1); //penempatan layar lcd untuk seting berat
sprintf(buff,"Set : %0.2f kg ",set); //setting menggunakan satuan kilogram dengan dua angka dibelakang koma
lcd_puts(buff); delay_ms(300);
/*******************************************************
*************** KONVERSI SATUAN BERAT ***************** *******************************************************/
if(!P5){a++;if(a>2){a=0;}delay_ms(100);} //Tombol konversi ditekan, maka nilai var a bertambah, saat a>2 maka kembali ke 0
if(a==0) //saat ditekan 1 kali, nilai buff diambil dari konversi kilogram { //nilai ini akan dikirimkan pada buff di blok ADC sebagai penampil pengukuran nilai berat
sprintf(buff,"%0.2f kg ",nilai); }
if(a==1) {
nilai=(float)nilai*10; //dikali 10 untu konversi ons sprintf(buff,"%2.1f ons ",nilai);
}
{
nilai=(float)nilai*1000; //dikalo 100 untuk konversi gramG sprintf(buff,"%4.0f gr ",nilai);
}
/*******************************************************
*************** PENGATURAN BERAT MAKSIMAL ************* *******************************************************/
if(!P6) //Program akan bekerja saat tombol Setting atau tombol P6 ditekan
{
b++; //variabel b terus bertambah dengan 1 saat ditekan if(b>2) //saat nilai b lebih dar 2 maka
{
batas=set; //untuk angka didepan koma: nilai set pada setingan dimasukkan pada var batas
c=set*100; //untuk angka dibelakang koma: nilai set terlebih dulu dikalikan 100 agar dapat terbaca karena nilai awalnya masih char dan desimal
c=c%100; //c mod 100 digunakan untuk mengambil 2 digit terakhir batas1=c; //memasukkan nilai c pada variabel batas1
b=0; //mengembalikan nilai b ke 0 }
delay_ms(200); }
if(b==1) //saat tombol P6 ditekan dan b ditekan 1 kali
{ //digunakan untuk mengatur setingan bilangan depan koma lcd_gotoxy(8,1); //penempatan posisi lcd
lcd_putsf(" "); delay_ms(100);
if(!P7) {delay_ms(100);set=set+1;if(set>3){set=0;}} //saat tombol P7 ditekan, nilai set ditambahkan 1, sampai set>3 maka kembali menjadi 1
}
if(b==2) //saat tombol P6 ditekan dan b ditekan 2 kali
{ //digunakan untuk mengatur setingan bilangan belakang koma lcd_gotoxy(9,1);
lcd_putsf(". "); delay_ms(100);
if(!P7){delay_ms(100);set=set+0.01;if(set>3){set=0;}} //saat tombol P7 ditekan, nilai set ditambahkan 0.01, sampai set>3 maka kembali menjadi 1
}
//Saat beben melebihi maksimal
while(nilai>set) //Untuk nilai pengukuran lebih besar dari nilai setingan
{ //Pembacaan data ADC digunakan agar selama nilai>set maka pemberitahuan akan tetap ada
adc_in = read_adc(0); //Membaca data ADC yang didapat dari pin ADC0 dimasukkan pada variabel adc_in
nilai = (float)adc_in*3/1024; lcd_gotoxy(0,0);
lcd_putsf("Beban melampaui batas "); }
} }
Program diatas didownload ke mikrokontroler ATMEGA16 menggunakan
software Khazama.
H.
PENGUJIAN ALAT
Langkah pengujian :
1. Pastikan rangkaian sudah sesuai dengan desain yang telah dibuat.
2. Hubungkan rangkaian sistem minimum dengan sensor, downloader dan LCD.
3. Uji dengan menghubungkan downloader dengan komputer.
4.
Download program dengan Kazama.
5. Melakukan pengujian alat dengan meletakkan beban ke wadah timbangan, hasil
pengukuran akan ditampilkan pada layar LCD.
I.
ANALISIS PENGUJIAN
Dari hasil pengujian dengan memeberikan berat yang berbeda pada timbanagn
dibandingkan dengan pengukuran timbangan pabrikan didapat hasil sebagai
berikut :
Tabel1. Hasil pengujian timbangan digital menggunakan ATMEGA 16
No
.
BERAT BARANG
HASIL PENIMBANGAN
1.
Kursi 1.8 kg
1.86 Kg
2.
Box 689 Gram
420 Gram
3.
Laptop 3 Kg
3.4 Kg
Dalam membuat rangkaian timbangan dengan menggunakan load cell sebagai
sensor untuk mendapatkan nilai pengukuran yang akurat belum maksimal karena
pergeseran nilai resistansi terlalu besar sehingga belum menghasilkan nilai berat
yang akurat.
Namun timbangan yang telah dibuat mempunyai range ukur yang dapat
dipindah-pindah ke dalam berbagai nilai pengukuran, mulai dari kg (Kilogram), gr (gram) dan
Ons. Dari hal tersebut penguna akan dengan mudah mengunakan timbangan untuk
pembacaan nilai ukur terhadap benda.
J.
KESIMPULAN
Dari pembuatan proyek Timbangan buah menggunakan ATMEGA16 dapat diambil
kesimpulan diantaranya:
1. Timbangan digital berbasis ATMega16 menggubah nilai resistansi dalam load cell
kedalam nilai tegangan yang selanjutkan akan diubah ke dalam digital dan
ditampilkan kedalam LCD.
2.
Timbangan ini mengunakan load cell sebagai sensor berat.
3. Timbangan digital ini memiliki range antara 0-3kg dan lebih peka terhadap nilai
berat yang lebih besar melebihi 1kg.
.Akses LCD 16x2. 2008. (Online), (http://www.elkaubisa.blogspot.com /
2008/10/seiko-instrument-m1632-lcd-module.html), diakses 10 pebruari 2011.
______.Aksestimbangan.2011.(Online),(http://www.wikipedia.org/wiki/timbangan)
diakses 11 pebruari 2011.
______. Akses Load Cell. 2011. (Online), (https://www.docs.google.com/viewer?a=v&pid=
explorer&chrome=true&srcid=0BzkNNhuEnaFODkwOWUxZTYtMjQzZi00MTkyLWFiZjktNTlhZ DQxNjUxOTRl&hl=en&pli=1) diakses 4 pebruari 2011.