Oleh Dominikus, diterjemahkan secara bebas oleh Agfianto Eko Putra

Pendahuluan

Projek ini adalah upaya untuk membuat sebuah sistem akuisisi data sederhana, sebuah sistem yang bisa digunakan untuk memperoleh data-data dari sensor melalui rangkaian mikrokontroler yang kemudian disalurkan melalui port serial ke komputer (yang selanjutnya bisa dibuat GUI-nya, sebagaimana proyek Sistem Akuisisi data dan Pencatatan oleh Abbas Raza (klik disini)).

Dalam proyek kali ini, akan digunakan komputer untuk GUI dari sistem akuisisi data yang menggunakan bantuan mikrokontroler ATMega8. Mikrokontroler ini sudah memiliki 6 kanal ADC 10-bit didalamnya, untuk versi kemasan DIP. Sedangkan versi kemasan TQFP memiliki 8-kanal, atau Anda bisa menggunakan mikrokontroler Atmel AVR lainnya (ATMega16, ATMega32, dll).

Untuk sensor suhu digunakan LM335, yang dapat digunakan untuk membaca suhuh sekitar hanya dengan 2 kabel saja. LM335 menghasilkan suatu sinyal luaran yang sebanding dengan skala suhu dalam Celcius. Potensiometer digunakan untuk melakukan kalibrasi tegangan luaran terhadap suhu yang diketahui, misalnya 2,98V sebanding dengan 25 Celcius. Rangkaian ditunjukkan pada Gambar 1.

Gambar 1

Perangkat Lunak

Beberapa fitur pada perangkat lunak GUI:

  • Interval pencuplikan yang bisa diatur;
  • Tampilan real-time pada sebuah grafik tunggal atau multipel;
  • Merekam (menyimpan) dan membaca kembali data-data yang tersimpan;
  • Memberikan pembacaan statistik, mencetak rekaman dan grafik (atau di-eksport ke JPG);
  • Jendela pengontrol serial untuk pemantauan dan transfer data secara manual.

Versi penuh dari perangkat lunak GUI dirancang untuk mendapatkan data hingga 16-kanal. Pada versi yang bisa diunduh dari website ini, hanya untuk 8-kanal saja. Untuk kemasan DIP, sekali lagi, ADC-nya hanya 6-kanal. Tampilan perangkat lunak GUI ditunjukkan pada Gambar 2.

Gambar 2

Pembacaan data antara papan rangkaian ADC (mikrokontroler ATMega8) dengan komputer mengikuti protokol sebagai berikut:

  • Saat pertama kali terjadi koneksi, setelah dilakukan pengaturan dan pembukaan koneksi port serial, komputer akan mengirimkan karakter ‘>’ (0×3E) ke mikrokontroler dan mikrokontroler akan mengembalikan karakter tersebut (echo it back);
  • Setelah koneksi dapat dipastikan baik, kita dapat mengirimkan perintah ke rangkaian ADC. Gunakan perintah “r” (0×72) untuk membaca semua kanal ADC, kemudian rangkaian ADC akan memberikan jawaban, misalnya “\rD’ + 2byte(ADC0) + 2byte(ADC1) + … + 2byte(ADC7)“, total panjangnya 18 byte. Pembacaan-nya adalah data 16-bit, (resolusinya tetap 10-bit) byte tinggi dikirim terlebih dahulu diikuti dengan byte rendah.

Catatan:

  • Untuk perekaman secara real-time gunakan pencuplikan cepat, misalnya 50md atau 100md, tampilan baik untuk grafik tunggal. Unjuk kerja tampilan bergantung pada kecepatan komputer.

Program Mikrokontroler

Program AVR yang disertakan dalam artikel ini ditulis dalam Bahasa Asembly AVR. Program utama hanya menunggu perintah dari komputer. Kecepatannya 19200, dengan format 8n1. Jika rangkaian menerima instruksi ‘>’, maka rangkaian ADC harus memberikan tanggapan ‘>’ juga melalui port serial.

Gambar 3

Jika Anda hanya memiliki 6 kanal, untuk kanal-kanal terakhir (ADC6 dan ADC7) bisa diatasi dengan memodifikasi program assembly-nya agar mikrokontroler mengirimkan nilai-nilai dummy. Nilai-nilai ini akan diabaikan oleh komputer. Atau jika Anda ingin mengabaikan kanal-kanal yang lain dari komputer, cukup isikan nilai ADC dengan nilai-nilai dummy. Silahkan diperiksa sumber programnya pada baris dan komentar-komentar yang terkait.

Unduhan

Semoga bermanfaat!

Tags: , ,

24 Responses to “Sistem Akuisisi Data menggunakan ATMega8”

  1. dear all,

    saya telah membuat sistem akuisi data menggunakan atmega8 author oleh dominikus.
    setelah saya test, ternyata board tidak bisa berkomunikasi dengan PC. saya cek rangkaian tidak ada yang salah.
    apakah ada yang bisa memberi pencerahan kepada saya??
    thanks..

    hilman

  2. @hilmansyah:
    board tidak berkomunikasi dengan PC berarti port serial-nya masih bermasalah, apakah dari sisi PC-nya atau mikro-nya, mohon bisa dijelaskan apa yang terjadi…
    supaya jawaban yang nanti diberikan juga bisa menyesuaikan, thanks…

  3. mas, kalo pake turbo c++ buat nampilin data plus grafik kira2 gmn yc….pake atmega juga dikirim serial..thx b4

  4. @fajar:
    turbo c++ masih pake DOS (kalo gak salah), jadi menampilkan grafiknya jadi under DOS, sayangnya saya belum pernah mencoba… karena lebih suka menggunakan VB atau Delphi…
    untuk data dari atmega bisa dikirim secara serial juga…

  5. pak,,saya membuat program basic buat komunikasi serial komputer (pake hyperterminal) tapi koq belum jalan ya…

    $regfile = “m8535.dat”
    $crstal = 11059200
    $baud = 19200

    do
    Print ” haloo…”
    loop

    rangkaian sama spt rangkaian serial pada gambar bapak diatas,,,,kaki 2 dan 3 pada kabel serial udah saya balik..
    gimana ya pak..mohon pencerahannya,thx b4

  6. maaf baru muncul lagi… tentang atmega8 adc serial comm to pc, maksud saya rangkaian sudah saya rakit dan saya cek berulang kali tidak ada yang salah, tetapi waktu saya test dgn menghubungkan dgn pc tidak ada respon alias comm not connected. saya test mggunakan hyperterminal dgn mengirim karakter “>” tidak ada echo dari PC. program uC saya download persis dgn program yg asli. bisa kiranya masukan kpd saya apa yg salah dlm hal ini atau sudah pernah ada yg buat dan berhasil bisa berbagi pengalaman…..

    thanks

  7. Pak. . saya ingin membuat aplikasi tersebut,tapi pengiriman datanya melalui perangkat HT (handy talky).yang saya ingin tanyakan,Apakah rangkaian minimum Atmega8 sama dengan Atmega8L?
    dan apakah Atmega8 dapat diprogram atau mengubah input data digital menjadi data modulasi FSK?tanpa perangkat modulator.
    terima kasih . . .

  8. @bayu:
    sama saja…
    diperlukan driver atau program untuk mengubah inpt data digital menjadi FSK - modul2 spt ini sudah ada yg jual…
    perangkat HT digantikan dengan modul2 RF atau semacam itu…

  9. dear pa agfi,
    pa adakah tutorial lengkap tentang membuat aplikasi akuisisi data menggunakan vb6 atau delphi?
    bagaimana ya caranya agar bisa menyimpan data akuisisi data(misl temperatur) secara otomatis ke Ms Excel..?
    bagaimana kode programnya..?

  10. pak, saya sedang membuat aplikasi akuisisi data kadar hidrogen di udara. untuk plant-nya, saya gunakan sebuah robot. yang ingin saya tanyakan :
    1. bagaimana cara pengiriman dan penerimaan data via port serial komputer dengan VB6.0?
    2. program untuk sensor hidrogen TGS2600 pada mikrokontroler atmega8535?
    3. cara menampilkan hasil kerja sensor TGS2600 pada sebuah grafik garis di VB6.0? (tanpa database)

    tolong dikirimkan ke email saya aja pak…
    terima kasih sebelumnya…

  11. malam pak, saya mau tanya nih. saya akan membuat akuisi data dengan atmega8 bit. nah saya bingung untuk konfigurasi rs232-nya agar dapat berkomunikasi secara full duplex.

    yang saya inginkan adalah : sensor mengirim data melalui mikro ke komputer, nah komputer memproses data dan dapat memberi perintah pada mikro. begitu pak mohon pencerahannya ^^

  12. pak saya mau tanya, cara buat grafik nya bagai mana pakai sourcode ato axtive X. sama tanya cara baca port usb di VB nagai mana?

  13. kalau akses via mukro at8535 yang usb programnya gmn ya?

  14. @pak agfianto
    Pak jika akuisisi data menggunakan komunikasi serial RS 485 apakah ada perbedaan cara komunikasiny dibanding dgn RS232..?

  15. @pak agfianto
    Pak jika akuisisi data mikrokontroler dengan visual basic menggunakan komunikasi serial RS 485 apakah ada perbedaan cara komunikasiny dibanding dgn RS232..?

  16. @fathan:
    pada prinsipnya bisa… hanya saja di laptop/komputer khan tidak ada port RS485…

  17. pak agfi, project sy yg pertama berupa akuisisi data mikrokontroler yg terhubung dengan port serial RS 232 pada PC, dimana sy menggunakan propety MSComm pada visual Basic 6.0 untuk keperluan komunikasiny.

    karena jarak antara mikro dengan PCny sekarang lebih jauh sy berencana mengubah RS232 menjadi RS 485. Apakah nantinya sy dapat mendefnisikan sistem komunikasiny pada VB sama dengan menggunakan RS 232 (msh menggunakan property MSComm)?
    Atau mungkin ada saran yg lebih baik dari pak Agfi? trims.

  18. Pak Agfi,
    Langsung saja, bisakah kalo misal data yg didapat micro tersebut disimpan dalam memory, trus baru kita download kalo kita membutuhkannya. Kalo bisa minta tolong gambarannya. syukur-syukur kalo detailnya sekalian.

    Terimakasih

  19. Malam, Pak Agfi dan teman2.Sy sedang membuat program keluaran analog adc dg bascom avr dan ditampilkan di pc.konsepnya adalah agar keluaran dari adc tersebut dalam satu paket data (*ADC1#ADC2#…#ADC8& — bintang “*” sebagai penanda awal dan And “&” sebagai akhir dari paket data adc.Berikut program bascomnya:

    ‘mikrokontroler yang digunakan
    $regfile = “8535def.dat”
    ‘kristal yang digunakan pada rangkaian minimum
    $crystal = 11059200
    ‘baudrate yang digunakan
    $baud = 9600
    ‘inisialisasi ADC
    Config Adc = Single , Prescaler = Auto
    Start Adc

    ‘membuat variabel Data_ADC bertipe word
    Dim Data_adc0 As Word
    Dim Data_adc1 As Word
    Dim Data_adc2 As Word
    Dim Data_adc3 As Word
    Dim Data_adc4 As Word
    Dim Data_adc5 As Word
    Dim Data_adc6 As Word
    Dim Data_adc7 As Word

    Do
    ‘data ADC disimpan dalam variabel Data_adc
    Data_adc0 = Getadc(0)
    Data_adc1 = Getadc(1)
    Data_adc2 = Getadc(2)
    Data_adc3 = Getadc(3)
    Data_adc4 = Getadc(4)
    Data_adc5 = Getadc(5)
    Data_adc6 = Getadc(6)
    Data_adc7 = Getadc(7)
    Print “*” ; Data_adc0 ; “#” ; Data_adc1 ; “#” ; Data_adc2 ; “#” ; Data_adc3 ; “#” ; Data_adc4 ; “#” ; Data_adc5 ; “#” ; Data_adc6 ; “#” ; Data_adc7 ; “&”
    Waitms 100
    Loop

    Dalam simulasi dengan bascom,keluaran seperti yang diharapkan.tetapi pada saat sy lihat dg hyperterminal,kadang ada karakter yg tidak muncul(bintang atau &).kadang jg ada jeda pdhl delay sy berikan stlh semua data adc sy deklarasikan.begitu jg pada saat sy baca dengan vb. Mohon pencerahan Pak Agfi dan teman2.Dimanakah letak kesalahannya.Terima kasih…

  20. pak dosen,,,kira2 ini bisa di aplikasikan ke RTD ,thermocouple gak? mau coba dipake untuk mengukur dan memonitoring Motor induksi,,,atau ada yang perlu di rubah disisi sensornya??
    terima kasih

  21. paka program ini apa ada yg membuat?

  22. titit

  23. Kenapa ngk bisa Di unduh?

Trackbacks/Pingbacks

  1. Memulai Belajar Mikrokontroler - Quick, Easy and Harmless!

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>