Membuat Grafik Data Logger ADC 8 Channel Dengan Visual Basic 6

http://www.youtube.com/watch?v=FoiRhN0gZJk
Grafik sebuah data yang didapatkan dari pengukuran dapat disajikan dalam sebuah grafik pada Visual Basic. Pada tulisan sebelumnya telah diberikan sedikit contoh bagaimana cara menyajikan data dengan menggunakan Visual Basic. Pada kesempatan ini akan diberikan contoh pengembangannya dengan menyajikan data sebanyak 8 channel data. Selain penyajian dalam grafik, diberikan juga sebuah indikator pada tiap-tiap channel dengan menentukan batas atas dan batas bawah. Batas atas disini, untuk memberitahukan bawah titik atas tersebut sudah tercapai dengan ditandai berubah warnah merah pada penanda.
Selain disajikan dalam bentuk grafik, data ditampilkan pula dalam grid yang menyajikan data dalam bentuk numerik. Sehingga secara visual dan numerik dapat diamati dengan lebih mudah. Masing-masing channel dibedakan dengan warna yang berbeda.
Pada dasarnya, proses delapan channel data tersebut adalah sama dengan proses satu grafik yang dibuat parallel. Dalam pengambilan data, ditangani oleh MCU yang membaca data analog dengan menggunakan ADC internal ATMega16. MCU mengambil data dengan sistem polling, ADC yang jumlahnya 8 channel dibaca dari channel 1 sampai channel 8. Kemudian data yang didapatkan dibuat paket data menjadi satu frame data.
Data disusun dengan skema berikut:
1. Header = #
2 Delimiter = $ – ?
3. Data = 0 s/d 5000
4. End of Data = &@

#$ADC1?$ADC2?$ADC3?$ADC4?$ADC5?$ADC6?$ADC7?$ADC8?&@ + [ENTER]

dalam contoh dengan data numerik:

#$520?$1040?$1560?$2080?$2600?$3120?$3640?$4160?&@ + [ENTER]

Header, delimiter dan End of data diperlukan untuk parameter bahwa data yang ada adalah valid dan dapat digunakan.
Untuk dapat mengambil data menjadi delapan data kembali, maka diperlukan identifikasi. Proses yang dilakukan adalah membaca parameter-parameter di atas. Pertama, membaca header, kemudian membaca delimiter, kemudian membaca end of data, baru membaca datanya.
Untuk membaca header, langkahnya adalah membaca karakter #. Pada visual basic, untuk membaca karakter tertentu digunakan syntax:
[sourcecode]</p>
<p>Kres = InStr(PaketData, &quot;#&quot;)</p>
<p>[/sourcecode]
membaca end of data:
[sourcecode]</p>
<p>At = InStr(PaketData, &quot;@&quot;)</p>
<p>[/sourcecode]
Terakhir untuk mengetahui sebuah data, maka kita perlu mengetahui posisi delimiter.
[sourcecode]</p>
<p>Dollar = InStr(PaketPecah, &quot;$&quot;)<br />
Tanya = InStr(PaketPecah, &quot;?&quot;)</p>
<p>[/sourcecode]
baru kita bisa mendapatkan data pengukuran tersebut.
Selanjutnya baru kita membuat tampilan dalam bentuk grafik seperti telah dibahas pada tulisan sebelumnya.
Demikian semoga bermanfaat.
Source Code VB.

You may also like...

33 Responses

  1. ikhwanpcr says:

    Mas, membuat tampilan picute kayak gitu gimana mas. Saya kok polos aja ya mas? Terima kasih banyak.

    • roohmadi says:

      Tampilan itu dapat dibuat dengan cara membuat garis sepanjang sumbu X sejumlah interval yang diinginkan pada sumbu Y. Dan membuat garis sepanjang sumbu Y sejumlah interval yang diinginkan pada sumbu X.
      …..
      code:
      picGrafik.DrawStyle = 2
      picGrafik.DrawWidth = 1
      ‘–skala sumbu Y
      For i = 1 To 9
      picGrafik.Line (500, i * 500)-(picGrafik.Width, i * 500), RGB(125, 125, 125)
      picGrafik.CurrentY = i * 500
      picGrafik.CurrentX = 1
      picGrafik.Print 5000 – (i * 500)
      Next i
      ‘–skala sumbu X
      For i = 1 To 22
      picGrafik.CurrentX = 400 + (i * 600)
      picGrafik.CurrentY = 5000
      picGrafik.Print i * 5
      Next i
      ….

  2. tikno says:

    saya dapat tugas buat konversi DAC dengan inputan digital berbentuk grafik..
    pengen buat grafiknya pake VB,tp masih awam ttg VB.
    liat uraian diatas sepertinya cuma kebalikan dari tugas dac.
    mau liat source code nya, tp kok g bisa di download mas?

  3. lee says:

    mas kalau buat ngonekin hardware dengan data base gimana ya mas
    mohon bantuannya
    jawabannya dikirim di email saya di amin_riza2@yahoo.co.id

  4. herman says:

    Bos,pemrograman mikronya pake apa?Boleh dishare disini ato pake email hermancreative@gmail.com. Sy sedang belajar mikrokontroler.Makasih…

    • roohmadi says:

      Saya pakai Code Vision. Saya rasa sudah cukup jelas dari uraian diatas untuk membuat programmnya karena sangat sederhana.

      • herman says:

        untuk yang pembacaan karakter itu(header,delimiter dsb), apakah memang dari code visionnya memang dikirimkan karakter tersebut?saya biasa pake bascom-avr mas.

  5. fuad says:

    contoh program pengiriman adc dari mikro ke VB bagaimana ya?
    apakah tinggal printf(“%i”,suhu1);
    printf(“%i”,suhu2);
    dst..
    mohon pencerahannya?

  6. imam says:

    maaf Bapak,,saya mau nanyak ne
    sy kurang paham dengan artikel diatas
    untuk membuat grafik dari data ADC mikro gmn ya???
    kalau saya baca dari tulisan bapak di atas saya belum menangkap/mengerti bagian mana data ADC masuk ke VB ??
    terus makasud data = 1 – 5000 itu apa ya pak?? saya masih awam dan saya sedang Tugas Akhir kuliah ne PAk dmn tugas saya berhubungan dengan membaca data ADC untuk dijadikan grafik,,jadi mohon bantuan nya
    terimakasih

    • roohmadi says:

      Pada artikel di atas memang tidak membahas bagian untuk membaca ADC. Karena posting di atas hanya membahas bagaimana membaca data serial yang dikirimkan oleh mikrokontroller oleh VB.
      Untuk angka 1-5000 itu adalah nilai hasil pembacaan ADC. Karena nilai ADC biasanya akan dibaca sebagai nilai tegangan antara 0 mV s/d 5000 mV.

  7. imam says:

    salam sejahtera Pak,,mohon maaf pak sebelumnya,
    saya mau nanyak,,jika saya mengambil data dr ADC dan data mau saya gunakan untuk membuat sebuah grafik sumbu (x,y) secara real time,,dimana untuk nilai titik2 Y nya saya ambil dari nilai data ADC,,yang saya tanyakan
    “bagaimana caranya saya bisa mengambil data x nya atau data X nya saya ambil dari nilai apa???”
    grafik saya trus bergerak selama VB conect dg mikro,,
    sy pernah coba pakai timer untuk titik2 X nya tp tidak sesuai atau data data terbaca ngawur dan tdk real time,,bagaimana ya Pak ??
    terimakasih

    • roohmadi says:

      biasanya nilai titik-titik X adalah nilai fungsi waktu (t), atau bisa juga data ke-n. Tergantung mau diambil yang mana.
      Untuk realtiime, biasanya kita pakai timer untuk mengambil data.

      • imam says:

        mohon maaf Pak,,saya belum bisa memahami yang mengenai fungsi waktu (t) nya,,itu maksud nya fungsi waktu di ambil dari komponen Timer pada VB ya Pak??
        jka yg dimaksud adalah komponen Timer VB,,lalu gmn cara nya data ADC yang di ambil dapat mnyesuaikan atau mngeikuti interval timer ya Pak?? pdahal kan Serial mngirimkan data dengan sangat cepat,,gmn singkron nya dg timer ya pak?
        soalnya kmrin saya coba tp hasil nya ngawur(tdk stabil) padahal data sudah saya parsing,,hehhee……
        terimakasih pak

    • roohmadi says:

      Timer bisa dari VB atau bisa juga dari mikrokontroller yang menggunakan RTC (Real TIme Clock). Untuk mensinkronkan, jika menggunakan RTC, maka pengiriman data dibuat setiap interval waktu yang diinginkan, misalnya setiap satu detik.
      Misalanya menggunakan timer VB, berarti pembacaan data di VB berdasarkan interval timer di VB, misalnya setiap satu detik, atau dalam interval milidetik.
      Soal data yang tidak stabil, berarti itu masalah pembacaan datanya, bisa digunakan rata-rata.

      • imam says:

        terimakasih Pak sebelum nya
        mohon maaf Pak,,saya msh belum bisa menyesuaikan antara MsComm mengambil data ADC dg speed dari timer pd VB,,kalau saya hanya mencoba2 memperkirakan brapa interval timer yg dibutuhkan agar singkron dg pembacaan serial itu sulit sekali pak,,grafik saya merupakan hubungan tegangan(Volt) terhadap waktu(second),,jd adakah cara untuk dapat menyesuaikan interval timer dg serial,serial saya menggunakan (57600 bps)??
        prtanyaan saya selanjutnya,,pengambilan data ADC sebaik nya ditaruh pada fungsi sub timer atau pada sub MsComm ya pak?? punya saya pada sub MsComm,,sementara data sb-X saya ambil dan saya update dari nilai increase interval timer VB dan update’an saya taruh pada fungsi sub Timer,,jd seharusnya gmn ya Pak??
        terimakasih

    • roohmadi says:

      Jika Anda ingin membuat grafik hubungan antara tegangan (V) dan waktu (t/detik), maka baiknya adalah Anda buat fungsi ambil data pada MSComm1_OnComm().
      Kemudian untuk mengupdate grafik anda menggunakan fungsi Timer1_Timer() yang sudah diatur intervalnya setiap 1000 milidetik.
      Jika data yang Anda terima dalam satu detik lebih dari satu data, maka baiknya dirata-rata jika hal ini data masih valid untuk dirata-rata.demikian

      • imam says:

        hem….terimakasih pak atas jawaban nya
        maaf pak,,bisa beri contoh tidak pak bagaimana saya harus merata2 ADC saya untuk di update kan pada Timer1_timer() ?? dan bagaimana contoh program nya agar saya bisa mengupdate data sb-X saya yang mana dalam hal ini sb-X merupakan data dari waktu fungsi timer??
        oya Pak,,jika berkenan ,boleh saya minta alamat email bapak ?? saya ingin berkonsultasi secara pribadi mengenai tugas akhir saya,,
        heheheee…….mohon maaf sebelum nya_!!
        terimakasih

  8. budi wibowo says:

    salam kenal bang rohmadi…..tolong dong di posting sourc code untuk program mikrokontrolernya…..tks

  9. salam kenal bang roohmadi…
    tolong dong di posting source code untuk program mikrokontrolernya…tks

  10. salam kenal pak
    saya mau tanya. jika saya mau menampilkan data di visual basic dengan 2 port adc gimana caranya ?
    saya sudah coba dengan 1 port adc dengan program mikronya
    print T
    untuk program vb nya
    T = MSComm1.input
    text1.text = T
    itu sudah bisa tampil, jika saya mau menggunakan 2 port gimana ?
    misal
    print T
    print R

  11. budi Ar-royyan wibowo says:

    source code mikrokontrolernya dong mas, sangat butuh ini sudah berminggu – minggu saya monitor koq belum di upload juga…..

  12. septrialikardo says:

    Mas..,kalau menggunakan Bascom bisa tidak dengan program spt ini
    “Print “#$” ; Datasuhu ; “?$” ; Datasuhu2 ; “?$” ; Datasuhu3 ; “?$” ; Datasuhu4 ; “?$” ; Datasuhu5 ; “?$” ; Datasuhu6 ; “?$” ; Datasuhu7 ; “?$” ; Datasuhu8 ; “?&@”

    Sudah sya cba, tapi g keluar datax., harap bantuanx mas..

  13. Joemadialim says:

    mau nanya pak… kalau nilai nya berubah rubah misal dari ratusan berubah ke ratusan nilai yang ditampilkan pada vb jadi error, jadi solusinya gmna pak ??
    dan referensinya kalau boleh tau dari mana adc 8 channel vb ??

  14. Joemadialim says:

    mau nanya pak… kalau nilai nya berubah rubah misal dari ratusan berubah ke puluhan nilai yang ditampilkan pada vb jadi error, jadi solusinya gmna pak ??
    dan referensinya kalau boleh tau dari mana adc 8 channel vb ??

Leave a Reply

Your email address will not be published. Required fields are marked *