Saad's Blog (Riset, Jual, Konsultan)

Untuk Pertanyaan Seputar Blog ini / Mau memesan modul elektronika langsung lewat YM atau BBM. Jarang Cek Blog….

Alat Pengukur Kelembaban Tanah Dengan AVR ATMEGA 8535

85 Comments

Tampilan LCD

Tampilan LCD

Alat ini saya modifikasi dari rangkaian pada soil moisture Tester :D :D . Pada rangkaian tersebut yang menjadi pengolah pembacaan sensor hingga menjadi output dengan menggunakan IC LM3914. Output yang dihasilkan berupa indikator led, berjumlah 10. Pada alat yang saya buat, menggantikan IC LM3914 dan indikator led dengan sebuah mikrokontroler dan LCD 2×16. Secara dasar input sebuah sensor berupa sinyal analog yang nantinya diubah menjadi sinyal digital. Klo sewaktu kuliah dulu, namanya ADC (analog digital converter) :D :D . Karena kebetulan ada temen yang meminta tolong untuk membuatkan alat ini sebagai Penulisan Ilmiahnya “Kok gw yang ngerjain alatnya yach” :D :D . Lumayan buat nambahin beli gitar fender uangnya :D :D. Karena di ATMEGA8535 terdapat ADC internal didalamnya, maka saya memanfaat ADC tersebut sebagai pengolah sensornya nanti “biar sedikit pengurangi pengeluaran belanja komponen”. Ok, kita mulai dengan bahan-bahannya yang dibutuhkan.


1. Modul DT-AVR (Low Cost Micro System) + isp programmer dari Innovative Electronics

DT-AVR LC MS_REDDT-HiQ AVR ISP

2. LCD 2×16

lcd_1602Schematic LCD

3. CodevisionAVR

4. Sensor

sensor kelembaban

Berikut listing programnya

#include <mega8535.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

#define ADC_VREF_TYPE 0x60

char buf[33];
unsigned char dtadc;

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

void tampil(unsigned char dat)
{
unsigned char data;
data = dat / 100;
data+=0x30;
lcd_putchar(data);

dat%=100;
data = dat / 10;
data+=0x30;
lcd_putchar(data);

dat%=10;
data = dat + 0x30;
lcd_putchar(data);

}

void display()
{
if (dtadc==0){
lcd_gotoxy(0,0);
lcd_putsf(”           “);
}
if ((dtadc>1) && (dtadc<=10)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);
lcd_putsf(”          “);
}
if ((dtadc>10) && (dtadc<=20)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”         “);
}
if ((dtadc>20) && (dtadc<=30)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”        “);
}
if ((dtadc>30) && (dtadc<=40)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”       “);
}
if ((dtadc>40) && (dtadc<=50)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”      “);
}
if ((dtadc>50) && (dtadc<=60)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”     “);
}
if ((dtadc>60) && (dtadc<=70)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”    “);
}
if ((dtadc>70) && (dtadc<=80)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”   “);
}
if ((dtadc>80) && (dtadc<=90)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(”  “);
}
if ((dtadc>90) && (dtadc<=100)){
lcd_gotoxy(0,0);
sprintf(buf,”\xff”);
lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);lcd_puts(buf);
lcd_putsf(” “);
}

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: None
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x82;
SFIOR&=0xEF;
SFIOR|=0x10;

// LCD module initialization
lcd_init(16);

// Global enable interrupts
lcd_gotoxy(2,0);
lcd_putsf(“Alat Pengukur”);
delay_ms(1000);
lcd_gotoxy(0,1);
lcd_putsf(“Kelembaban Tanah”);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(4,1);
lcd_putsf(“%”);
lcd_gotoxy(11,0);
lcd_putsf(“<-Led”);
while (1)
{
dtadc=read_adc(0);                // baca data ADC dari ch.0;
lcd_gotoxy(0,1);
tampil(dtadc);
display();

// Keterangan
if (dtadc<=50){
lcd_gotoxy(6,1);
lcd_putsf(“Kering    “);
}
if ((dtadc>50) && (dtadc<=90)){
lcd_gotoxy(6,1);
lcd_putsf(“Lembab    “);
}
if (dtadc>90){
lcd_gotoxy(6,1);
lcd_putsf(“Basah     “);
}

delay_ms(100);
};
}

Selamat mencoba !!!!

About these ads

Author: Mr. S

Saya SMA di SMA Negeri 7 Bekasi. Sejak SMA lah mulanya saya senang mengenai seluk-beluk komputer. Ya.. , walaupun waktu itu masih tahap awam. Namun saya bertekat untuk mendalami bidang komputer ini. selepas saya lulus SMA, Dengan mendapatkan Beasiswa yang ditawarkan oleh pihak gunadarma.Memotifasi saya untuk kuliah di kampus tersebut.

85 thoughts on “Alat Pengukur Kelembaban Tanah Dengan AVR ATMEGA 8535

  1. Hahahayyy.. Masih teknis abis si saad nih ;) Ga berubah.

    8535! Pernahh.. tapi ga pake ADC nya ding. Waktu itu (untungnya) datanya sederhana, bisa dikonvert jadi digital pake schmitt trigger. Wah berarti kapan2 klo butuh bisa tanya kamu ya.. *kekeke, tapi kapan ya aku nyentuh mikro lagi.. kayanya ga dalam waktu dekat deh*
    Btw aku baru tau klo sensor kelembaban pake LM3914.. (yang ini belum pernah).. soalnya jarang aplikasi yang butuh besaran kelembaban..

  2. halah, kok ya lupa mencantumkan nama, jadi anonim saja. maaf ya :D yg di atas tadi aku..

    • iya, mbk boleh tuch. slama saya bsa menjawabnya *alah “saya”. Kali aja kita bsa saling sharing. :D
      klo ini mah, abis ngerjain Alat orang buat penulisan ilmiahnya. maknya dari pada sayang di simpen di kompi. mendingan di posting di blog. :D

  3. pak bisa gak bantuin aku buat yang kayak gituan… salam dari blogger cah tulungagung

  4. khan di atas dah jelas. coba dlu aja. klo ada masalah bru ditanyakan. trims

  5. ASS….Kum….
    Lam knl smuay… langsung aj ne mas..
    aq ne br2 bljr mikro gt crtny..
    aq pengen tau jenis2 sensor untuk mendeteksi kelembaban tanah,
    trus bt mendeteksi kelembaban tanah tu sensore ditaro mnny (maksute kedalemanye)?
    trus misale kena air ap g rusak maz, kan outputnya tegangan gt…

    mohon infonya
    n
    terima kasih sebelumny
    wasss…kum

  6. ASS….Kum….
    Lam knl smuay… langsung aj ne mas..
    aq ne br2 bljr mikro gt crtny..
    aq pengen tau jenis2 sensor untuk mendeteksi kelembaban tanah,
    trus bt mendeteksi kelembaban tanah tu sensore ditaro mnny (maksute kedalemanye)?
    trus misale kena air ap g rusak maz, kan outputnya tegangan gt…

    mohon infonya
    n
    terima kasih sebelumny
    wasss…kum..

    • sensor kelembaban tanah banyak jenisnya. namun pada postingan saya, sensor yang digunakan sangat sederhana. hanya menggunakan 2 buah batang kabel tunggal. yang mana proses pembacaan sensornya menggunakan adc (analog digital converter) jadi perubahan tegangan dari sensor yang di baca uC(mikrokontroler). pada keadaan lembab nilainya berbeda dengan keadaaan kering. jadi sensornya itu harus terkena object yang akan dideteksi kelembabannya. klo masalah peletakkannya tergantung dari kita sendiri. bisa di tempelkan ke permukaan tanah ataupun di pendam di dalam tanah. klodi dalam air biasanya harus ada pengaman agar air tidak masuk ke permukaan komponen elektronikanya. agar terhindar dari konduktor antara air dengan rangkaian elektronikanya. :D :D :D

      • terma kasih infonya pak..
        akan saya cb dulu….
        tapi nanti dalam pengerjaannya…
        k-lo ad kendala mohon bimbinganya ya pak…
        terima kasih sebelumnya..

  7. pak mau tanya sensor buat alatnya yang bagus apa y ? cz saya juga lagi buat alat persis kayak gini tapi saya lebih mendalam ke sensornya………. klu elektrode karbon dan tembaga, Voutnya g stabil di beberapa titik kelembapan, sya belum coba sich tapi katanya udah ada yang lakukan percobaan dengan karbon, dan titik yang g stabil ada pada kelmbapan 20 % dan 90 %…itu tegangan outputnya sama…..tolong bantuannya………… klu bisa di email aja…….. agungkarurukan@yahoo.co.id……thanks be 4

  8. pak tolong bantuannya… saya sudah buat alat nya… tapi saat dicoba kok hasil yang tampil pada LCD ga tetap (selalu berubah) itu kenapa ya??? tolong bantunya,, klo bisa di email ya..

    thanks..

  9. saya coba dulu… makasi!!!

    klo ada masalah, saya tulis lagi….yaw..

  10. pak bisa tanya : sensor (elektrode yg dipakai) bagusnya apa ya ? tembaga atau karbon atau ada yang lebih baik…….terimakasih…..

  11. wah nice info nie mas,,..mw nanya dulu nie,,mohon bantuannya ya..
    Mas..untuk dpt buat sensor itu dpt sumber drmana mas??ada bukunya??
    saya tertarik dengan alat ini,,tapi saya ad masalah dengan sensornya..sensor biasa katanya gak tahan aer n gak bisa dipendam ditanah,,mw nyoba buat sensor ky mas,,tp ktny perlu bukti jelas dr mana cr ini didapat..hix6..gmn mas??ad pencerahan??
    blh minta gambar2 rangkaiannya gak mas??ap aj yg harus dihubungin tp secara keseluruhan..

    reply ke email jg blh mas..thanxx..

  12. thanks pak…… …… ……. …… sudah ada kemajuan….he…..he……he.

  13. pak mau tanya lagi nich………….. ………. setelah saya coba Vo diawal cukup bagus yaitu linier(Vo menurun secara linier)………………tapi pada kelembaban yang sampai 70 % mulai meningkat terus menerus sampai batas maksimal (3 volt) menjadi tidak stabil (tidak linier)………… bisa minta tolong g pak ?

  14. minta tolong apa??

  15. bisa minta penjelasan, kenapa tegangan di kelembaban tertentu bisa naik secara tiba2 ? terimakasih pak

  16. pak mau tanya kalo ATMega nya selain ATmega 8535 bisa digunakan pada alat ini ga???

    misalnya pake atmega 8 bagaimana??? tolong balasannya..

  17. mau pake ATmega apapun boleh. asal ADCnya dah include didalamnya.

  18. pak mau tanya fungsi potensiometer pada sensor tu apa??

    n bagaimana kerjanya?? tolong dibalas…terima kasih sebelumnya

  19. pak mau tanya fungsi potensiometer pada sensor tu apa??

    n bagaimana kerjanya?? tolong dibalas…terima kasih sebelumnya

  20. potensio itu fungsinya sebagai besaran tegangan yang masuk ke dalam adc. jadi klo potensio diputar penuh maka range perubahan tegangan sensor yang masuk adc, datanya akan lebar. itu aja sich….

  21. kalau bigung, saya bantuin ja……… mau gak???

  22. asskum…
    saya skrg dalam proses pembuatan tugas akhir seperti ini.
    tp saya menggunakan sensor SHT75.
    yg saya mau tanyakan apakah sensor SHT 75 bisa dipakai seperti alat diatas??
    terima kasih…
    wasalam…

  23. bisa asalkan output dari sensornya ADC.

  24. pak saya mau tnya…sensornya tegangannya AC apa DC yang digunakan???
    tolong diblas…terima kasih

  25. mas pada rangkaian ini ADC yang digunakan brapa bit ?? 8 bit apa 10 bit??
    dan yg mn yang lebih bgus mas??
    nuwun….

    • pake 8 bit. memangnya 1 port di micon ada 10 bit??? jelas klo yang pake 10bit. bisa lebih bnyak pemakaian ADCnya…

      • ok mas…masih dicoba!! belum tau ja maz..ktnya 10 bit lebih precisi…bner ga tu mas ? mnta pencerahan..nya!!

  26. mas mau tanya gman cara kalibarasi alat ini ??

    n program “data+=0x30″ mksdnya gmana tu mas??

    mhon bantuannya maz..!! trim sebelumya…

  27. mas tolong saya dibantu….dalam ilmu alat ini…

  28. void tampil(unsigned char dat)
    {
    unsigned char data;
    data = dat / 100;
    data+=0×30;
    lcd_putchar(data);

    dat%=100;
    data = dat / 10;
    data+=0×30;
    lcd_putchar(data);

    dat%=10;
    data = dat + 0×30;
    lcd_putchar(data);

    }

    void diatas itu berfungsi untuk mengubah bilangan heksa menjadi desimal…

  29. mas mau tanya nich….saya sudah coba buat alat nya ini…

    tpi kok hasil pembacaan nya langsung ke 255 ya hasilnya..!!!!
    jadinya hasilnya “basah” terus…pdhal sensor sudah saya lepas..!!!.

    kesalahanya dimana tu ya mas…!!!.tolong dibantu ya mas…
    mklum lagi mw bljar..uM…

  30. mas apa bisa alat ini digunakan untuk pengukuran keasaman tanah???

    tolong balasanya ya mas….

  31. Mas Saad, apakah saya bisa pesan dibuatkan beberapa buah alat seperti ini?
    Mohon bantuannya ya. Terima kasih Salam

  32. Mas Saad,
    saya memerlukan alat ini, Bisakan saya pesan beberapa buah?
    Mohon kabarnya.
    Terima kasih.

  33. pak gimana caranya saya bisa dapat kan alat ini y..dan berapa harga pak.. kok ada yg khusus untuk melihat unsur kandungan NPK pada tanah…dan alamat saya berada di Kota Berastagi Sumatera Utara..makasih atas di bls email ini..

  34. pak, boleh minta program langsung dari compiler C nya?? tolong kirim aja ke thelittlesoonja15@yahoo.co.id saya butuh bgt buat pengujian alat tgs akhir saya. terima kasih bnyak sbelumnya.

  35. oya pak maaf, tolong minta daftar setting buat di codevision AVRnya seperti port, LCD, ADC terima kasih pak.. tolong

  36. om .. pake crystal berapa…??? bisa dapat settingan >>> ADC Clock frequency: 1000.000 kHz

  37. om… aku coba hasil outputnya kalo di tes pake multimeter kecil banget…
    itu sensor nya bahan nya pake apa yang bagus..??

    saya pake jari-jari bekas motor bisa ga itu kira-kira…?? saya coba outputnya 0,xx Volt

  38. kesulitan di sensor nya nih pak.. kalo sensornya pesan bisa nda.. sayang alat yg sudah saya buat..
    kalo pesen sendornya birapa harga nya..??

  39. * Sensor nya….

  40. wow…thats agreat project…, ternyata simple y sensor nya cm pke btang elektroda gtu…, sy mw coba nih gan.., nanti klo ad mslh…tlg bantuannya ga…, mksh…

  41. om saya minat mencoba , tp tolong di kasih list komponennya yang bagian rangkaiaan sensornya donk !
    Trus kalo modul DT-AVR itu sudah tersedia jadi ? trus tinggal di program Gtu ? atau tinggal di sambung ke komponen sensornya ?
    om trus kalo bisa kirimin gambar alat jadinya ya !!!
    email:mygammingace@gmail.com

  42. asmlaikum…salam kenal mas, mas mau nanya diameter kawat yang untuk sensor waktu mas berapa mas…

  43. tolong di balas mas soalnya Tugas akhir saya seperti itu persis

  44. skematiknya bagi donk….
    sama listing nya..

    fungkyking01@gmail.com

  45. mas maap yah menggangu..
    saya butuh pencerahan dari mas…
    kalo saya mau membuat rangkaian apa saja hardware yg di butuhkan untuk membuat rangkaiannya..?
    terimakasih….

  46. kalo pake ATMEGA16 listprogramnya sama gak? masih newbie ane soalnye buat penulisan ilmiah juga hehehe.pencerahannya gan

  47. Selamat sore gan .
    saya ingin bertanya, tugas akhir saya pengaplikasian sensor kelembaban tanah sebagai penyiram tanaman otomatis, menurut agan program diatas bisa terealisasikan apa enggak ke tugas akhir saya ?
    mohon bantuannya ya gan.

  48. Bgmn dg sensornya bang?di beli atau buat sendiri?
    dan untuk mikrokontrollernya beli dmn bang?

  49. mas,ad gak listing program buat ukur alkohol menggunakan CD AVR atmega8535 ?

  50. cara ngerangkai y gimna bos

  51. Gan minta rangkain EWB nya dong???

  52. Bang,bisa dijelasin program void main nya?

  53. errornya apa ya? bisa di posting disini?

  54. ma’af,errornya sudah saya perbaiki.tetapi yang masalahnya sekarang setelah saya compile muncul pemberitahuan “Evaluation version file size limit exceeded”
    mohon bantuannya bang

  55. mas kalo dicabut sesnsor’a ko basah terus ya
    kalo dicolok ke tanah baru bisa kebaca ya??

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.