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
- Program GUI (unduh sekarang);
- Program Assembly ATMega8 (unduh sekarang).
Semoga bermanfaat!
Tags: atmega8, avr, Mikrokontroler
December 19th, 2009 at 1:26 pm
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
December 21st, 2009 at 1:09 pm
@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…
December 29th, 2009 at 8:16 am
mas, kalo pake turbo c++ buat nampilin data plus grafik kira2 gmn yc….pake atmega juga dikirim serial..thx b4
December 29th, 2009 at 9:30 am
@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…
March 10th, 2010 at 9:45 am
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
April 17th, 2010 at 5:58 am
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
June 10th, 2010 at 12:31 pm
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 . . .
June 11th, 2010 at 7:15 am
@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…
July 7th, 2010 at 9:57 am
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..?
July 15th, 2010 at 1:31 pm
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…
January 18th, 2011 at 1:25 am
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 ^^
May 10th, 2011 at 11:05 am
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?
October 23rd, 2011 at 3:48 pm
kalau akses via mukro at8535 yang usb programnya gmn ya?
January 26th, 2012 at 3:02 pm
@pak agfianto
Pak jika akuisisi data menggunakan komunikasi serial RS 485 apakah ada perbedaan cara komunikasiny dibanding dgn RS232..?
January 26th, 2012 at 3:05 pm
@pak agfianto
Pak jika akuisisi data mikrokontroler dengan visual basic menggunakan komunikasi serial RS 485 apakah ada perbedaan cara komunikasiny dibanding dgn RS232..?
January 26th, 2012 at 8:15 pm
@fathan:
pada prinsipnya bisa… hanya saja di laptop/komputer khan tidak ada port RS485…
February 11th, 2012 at 5:05 pm
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.
June 24th, 2012 at 3:38 pm
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
June 26th, 2012 at 6:42 pm
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…
September 28th, 2012 at 10:05 am
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
January 3rd, 2013 at 3:41 pm
paka program ini apa ada yg membuat?
December 17th, 2014 at 2:33 pm
titit
November 23rd, 2017 at 7:48 pm
Kenapa ngk bisa Di unduh?
April 9th, 2018 at 9:27 am
Terjemahan bahasanya sangat mudah dipahami pak
April 10th, 2018 at 10:01 am
makasih pak sangat membantu tugas saya
May 16th, 2018 at 2:31 pm
thank you for sharing it’s so helpful
October 10th, 2018 at 3:46 pm
Terhadap mahasiswa pindahan, yang perlu adalah menghitung berapa sks mata kuliah yang bisa diterima/akan diakui, kemudian tentukan sisa sks yang harus ditempuh oleh mahasiswa tersebut ( total sks lulus di PT penerima – total sks yang diakui ). Sebagai mahasiswa pindahan diberi NIM baru sesuai tahun masuk, bila masuk 2010/2011 maka dia menjadi mahasiswa angkatan 2010 dengan status pindahan dan total sks diakui sekian.
November 7th, 2018 at 10:53 am
I’m looking for a solution like this, great for sharing it
December 13th, 2018 at 1:33 pm
terimakasih sangat membantu
January 19th, 2019 at 1:11 am
The Norton security package is simple to setup install at norton.com/setup.
July 5th, 2019 at 2:14 am
I appreciate to writer. it seems written in good manner. Please share more post and get instant support for Mcafee Antivirus.