Categories
Mikrokontroler

Sistem Akuisisi Data menggunakan ATMega8

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 ‘>’ (0x3E) 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” (0x72) 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!