Categories
DSP Neurosains

Analisis Data EEG pada Beberapa Kondisi menggunakan Metode Dekomposisi dan Korelasi berbasis Wavelet (Dekorlet)

Data rekam EEG (Electroencephalo-gram) yang berupa sinyal digital dapat dianalisis dengan metode dekomposisi dan korelasi berbasis wavelet (dekorlet) untuk mengekstraksi informasi frekuensi yang terkandung di dalamnya. Dekomposisi berbasis wavelet digunakan untuk membagi frekuensi yang terkandung mendekati klasifikasi frekuensi ritme gelombang EEG, yaitu delta, theta, alpha dan beta. Sedangkan proses korelasi digunakan untuk memperoleh informasi dominasi frekuensi gelombang EEG pada data rekam EEG yang bersangkutan.

Data EEG yang dianalisis berupa data dari 3 mahasiswa yang berusia 20 sampai 30 tahun (selanjutnya dinamai subjek 3, 4 dan 5). Setiap subjek melakukan lima aktivitas yaitu baseline, multiplication, letter-composing, rotation dan counting. Data dianalisis dengan metode dekorlet dengan wavelet induk Daubechies 3 dan Coiflet 3. Hasil analisis menunjukkan bahwa subjek 3 lebih dominan dalam aktivitas otak kanannya, sedangkan subjek 4 dan subjek 5 lebih dominan otak kirinya. Kemunculan gelombang beta pada occipital lobe subjek 5 menunjukkan kemungkinan kelainan pada occipital atau temporal lobe. Pengguna dengan dominasi aktivitas otak kanan lebih mengaktifkan peran parietal lobe, sedangkan pada subjek dengan dominasi otak kiri lebih mengaktifkan peran occipital lobe. Metode Dekorlet mampu mengekstraksi informasi dominasi frekuensi gelombang otak, dengan perbedaan hasil dari wavelet induk Daubechies 3 dan Coiflet 3 kurang dari 3% (0,03).

Catatan:

  • Dipresentasikan pada CITEE 2010 di Jurusan Teknik Elektro, Fak. Teknik – UGM, Yogyakarta pada Selasa, 20 Juli 2010;
  • Yang terkait dengan artikel atau makalah ini silahkan klik tentang Neurosains;
  • Silahkan mengunduh PDF-nya dan berdiskusi atau tanya jawab melalui komentar pada halaman artikel ini, terima kasih dan semoga bermanfaat, amin.
Categories
Mikrokontroler

Pemrograman dan Simulasi Mikrokontroler AT89 dengan M-IDE Studio MCS-51

Setelah debut best seller buku saya “Belajar Mikrokontroler AT89C51/52/55, Edisi 2” beberapa tahun belakangan ini, banyak yang menanyakan tentang bagaimana melakukan simulasi sedemikian hingga bisa digunakan untuk belajar pemrograman MIkrokontroler AT89, khususnya dalam bahasa Assembly.

Caranya mudah saja, dan hal ini sudah saya sebutkan atau jelaskan dalam buku saya tersebut, yaitu menggunakan TS Control Emulator. Dimana mengunduhnya? Gampang saja, silahkan mengundung program M-IDE Studio MCS-51 disini, yang terbaru sudah dilengkapi (integrasi) dengan TS Control Emulator.

Setelah Anda lakukan instalasi, jalankan program M-IDE tersebut, sebagai contoh tuliskan program assembly pada Gambar 1, yaitu sebuah program yang digunakan untuk membersihkan RAM (dengan memberikan 0xFF pada tiap-tiap lokasi RAM).

Gambar 1

Categories
Mikrokontroler

Flowcode AVR 3.0: Menghitung Sapi!

Kali ini kita akan belajar membuat program menggunakan Flowcode AVR untuk menghitung sapi-sapi kita yang masuk kandang. Caranya bagaimana? Kita gunakan sensor detektor sapi melalui PORT A (yang disimulasikan menggunakan pushbutton) untuk mendeteksi sapi-sapi yang masuk ke kandang. Sensor ini akan memicu proses perhitungan jumlah atau cacah sapi. Sementara ini hasil perhitungan ditampilkan melalui LED pada PORT B, bisa juga melalui 7segmen biar keren, tapi itu entar aja dech.

Silahkan membuat kerangka diagram alir menggunakan acuan Gambar 1. Pada blok Calculation masih kita kosongkan…

Gambar 1

Okey, langkah selanjutnya lakukan klik-ganda pada blok Calculation, sehingga dimunculkan kotak dialog yang ditunjukkan pada Gambar 2.

Gambar 2

Ganti nama “Calculation” (pada Display Name) menjadi “Total Sapi” (tanpa tanda petik). Kemudian lanjutkan menuliskan persamaan untuk menghitung total sapi sebagai berikut: TOTAL = TOTAL + SAPI (pada bagian isian Calculations). Perhatikan Gambar 3.

Gambar 3

Sensor detektor sapi disimulasikan menggunakan tombol tekan atau pushbutton yang dipasang pada PORTA.0. Jika tombol ditekan maka akan menghasilkan nilai 1 yang kemudian disimpan ke dalam variabel SAPI. Dengan demikian, penekanan tombol pada PORTA.0 akan menambah nilai TOTAL sebesar 1. Jika tidak ditekan, ya artinya nilai pada variabel SAPI tetap 0 (nol) dan tidak merubah nilai dari TOTAL, demikian seterusnya.

Klik Variables pada kotak dialog Calculations untuk mulai mendefinisikan variabel-variabel yang terkait. Akan ditampilkan kotak dialog seperti pada Gambar 4.

Gambar 4

Sekarang kita lanjutkan dengan mendefinisikan variabel-variabel yang terkait tersebut. Variabel yang akan kita definisikan adalah TOTAL dan SAPI. Penggunaan kedua variabel ini sudah saya jelaskan sebelumnya, jika belum paham silahkan ditengok lagi, nanti baru kembali lagi kesini…

Categories
Mikrokontroler

Downloader untuk AT89S dan AVR!

Jika sebelumnya banyak yang bertanya tentang downloader untuk AT89S, maka, alhamdulillah, saya sudah mendapatkan sumber informasi untuk rangkaian serta perangkat lunak downloader mikrokontroler AT89 dan sekaligus AVR.

Berikut ini rangkaian (gratis) yang dapat digunakan untuk mendownload program-program AT89S Anda melalui USB. Yang dibutuhkan adalah mikrokontroler AVRTMega8 sebagai kontroler-nya (sama atau mirip dengan USBASP).

ATMega8 memang tidak dilengkapi dengan fasilitas USB sebagaimana seri-seri AT90USB dari Atmel, sehingga program atau firmware USB telah disiapkan (lihat pada bagian Unduh). Firmware ini dibuat oleh Fischl dan tersedia di http://www.fischl.de/usbasp/, hanya saja firmware ini hanya mendukung untuk downloade mikrokontroler AVR saja (lihat ulasan-nya disini), sehingga perlu dimodifikasi sehingga bisa mendukung mikrokontroler seri AT89S.

Categories
Mikrokontroler

CodeVision dan Pustaka LCD: Sebuah contoh sederhana

Ada pertanyaan masuk ke saya, bagaimana program untuk tampilan ke LCD (misalnya tipe LCD 2×16 karakter) menggunakan CodeVision. Maka pada kesempatan kali ini saya bahas jawaban dari pertanyaan itu.

Yang perlu Anda ketahui bahwa CodeVision AVR sudah menyediakan pustaka untuk antarmuka LCD, hanya saja, Anda harus menyesuaikan rangkaian dengan ketentuan yang dimiliki CodeVision, perhatikan ketentuan antarmuka LCD dari CodeVision berikut ini (PORT mewakili PORT apa saja yang Anda gunakan untuk antarmuka LCD dengan AVR), atau perhatikan Gambar 3:

  • PORT.0 – pin RS
  • PORT.1 – pin R/W
  • PORT.2 – PIN EN
  • PORT.3 – tidak dipakai
  • PORT.4 – pin D4
  • PORT.5 – pin D5
  • PORT.6 – pin D6
  • PORT.7 – pin D7

Beberapa fungsi pada pustaka LCD milik CodeVision antara lain:

  • void _lcd_ready(void);
  • void _lcd_write_data(unsigned char data);
  • void lcd_write_byte(unsigned char addr, unsigned char data); – menuliskan sebuah BYTE ke generator karakter LCD atau RAM tampilan
  • unsigned char lcd_read_byte(unsigned char addr); – membaca sebuah BYTE dari generator karakter LCD atau RAM tampilan
  • void lcd_gotoxy(unsigned char x, unsigned char y); – meletakkan kursor pada x (kolom, 0..39) dan y (baris,0..3)
  • void lcd_clear(void); – membersihkan layar LCD
  • void lcd_putchar(char c);
  • void lcd_puts(char *str); – menuliskan string STR di dalam SRAM ke LCD
  • void lcd_putsf(char flash *str); – menuliskan string STR di dalam flash ke LCD
  • unsigned char lcd_init(unsigned char lcd_columns); – inisialisasi kontroler LCD
  • void lcd_control (unsigned char control); – menuliskan BYTE kontrol ke LCD
Categories
Mikrokontroler

Flowcode AVR 3.0: Aplikasi dengan LCD 2×16

Wow enaknya belajar pemrograman aplikasi mikrokontroler AVR menggunakan Flowcode 3 for AVR sebagaimana sudah saya tulis artikel-nya sejak awal. Kali ini dicoba membuat aplikasi dengan tampilan LCD 2×16, hanya sekedar menampilkan dua kalimat, masing-masing di baris-1 dan baris-2, diagram atau flow-nya ditunjukkan pada Gambar 1 (termasuk hasil simulasinya).

Gambar 1

Hasil kompilasi kedalam Bahasa C saya tunjukkan satu persatu. Pada bagian pertama, sebagaimana ditunjukkan pada Gambar 2, merupakan deklarasi fungsi-fungsi makro untuk menangani LCD (baris 66 – 74). Terdapat 9 macam fungsi makro LCD dan hanya 3 yang akan digunakan dalam program, yaitu:

  • FCD_LCDDisplay0_Start(), digunakan untuk inisialisasi LCD;
  • FCD_LCDDisplay0_PrintString(char* String, char MSZ_String), digunakan untuk menuliskan string, dan
  • FCD_LCDDisplay0_Cursor(char x, char y), digunakan untuk menempatkan kursor dengan posisi kolom,baris).

Gambar 2

Categories
Mikrokontroler

Flowcode AVR 3.0: Aplikasi Masukan/Luaran (I/O) Sederhana

Kali ini Flowcode AVR kita gunakan untuk mencoba membuat sebuah aplikasi sederhana yang melakukan pembacaan masukan di PORT A kemudian menampilkan hasil pembacaan tersebut, yang sebelumnya melalui suatu variabel DATANYA, ke PORT B. Rancangan Flowcode AVR-nya ditunjukkan pada Gambar 1.

Gambar 1

Kemudian kita kompail dan disimulasikan hasilnya (juga) bisa dilihat pada Gambar 1 tersebut. Perhatikan bahwa tidak semua masukan PORT A kita buat berlogika 1, hanya A7, A5, A3 dan A1. Hasilnya juga tidak semua LED pada PORT B menyala, hanya sesuai dengan PORT A saja, yaitu B7, B5, B3 dan B1. Nah sekarang pertanyaannya:

Bagaimana dengan hasil kompilasi dalam bahasa C-nya (juga dalam bahasa ASM-nya)?

Categories
Mikrokontroler Pembelajaran

Virtual Serial Ports Emulator (VSPE)

Wow, saya baru dapet informasi tentang VSPE atau Virtual Serial Ports Emulator dan gratis lagi, bisa membantu kita ngembangin eksperimen-eksperimen atau alat-alat yang menggunakan port serial sebagai saluran komunikasi-nya – wajib diketahui buat temen-temen yang memperdalam antarmuka port serial. Berikut informasi dari website-nya:

Tentang VSPE

VSPE is intended to help software engineers and developers to create/debug/test applications that use serial ports. It is able to create various virtual devices to transmit/receive data. Unlike regular serial ports, virtual devices have special capabilities: for example, the same device can be opened more than once by different applications, that can be useful in many cases. With VSPE you are able to share physical serial port data for several applications, expose serial port to local network (via TCP protocol), create virtual serial port device pairs and so on.

Fitur-fitur Kunci

  • Virtual device: connector
  • Virtual device: data splitter
  • Virtual device: pair
  • Mapper device
  • User mode device: TcpServer
  • User mode device: TcpClient
  • User mode device: Serial Redirector
  • User mode device: UDP Manager
  • User mode device: Bridge
  • Python scripting system
  • x86 and x86_64 processor architecture support
  • VSPE API (C/C++ header and static library) for native language developers
  • VSPE API Python bindings for Python developers
  • Embedded HTTP server
  • Data monitoring
Categories
Mikrokontroler

Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly

Jika pada kesempatan sebelumnya saya bahas tentang animasi LED menggunakan ASsembly dan C, maka kali ini kita akan belajar tentang konsep masukan menggunakan pushbutton, dalam dunia aplikasi, masukan digital ini bisa berasal dari berbagai macam sensor.

Rangkaian yang kita gunakan mirip dengan animasi LED, hanya saja sekarang kita tambahkan 2 buah pushbutton yang dihubungkan ke PORTD.0 dan PORTD.1, perhatikan Gambar 1.

Gambar 1

Selanjutnya kita buat programnya dengan diagram alir yang ditunjukkan pada Gambar 2.

Gambar 2

Program selengkapnya sebagai berikut:

Categories
Mikrokontroler

Animasi LED mikrokontroler ATMega32 dengan Assembly dan C

Artikel ini sengaja saya tulis sebagai awal pembelajaran bagaimana membuat sebuah program aplikasi mikrokontroler AVR (khususnya ATMega32 dengan frekuensi kristal 7,3728MHz) untuk membuat animasi LED berjalan dari pin 0 hingga 7.

Rangkaian yang digunakan ditunjukkan pada Gambar 1, sengaja LED disusun secara CA atau common Anoda, sehingga untuk menyalakan LED harus dikirimkan logika ‘0’.

Untuk kompilasi digunakan AVR Studio versi 4.0 (silahkan unduh GRATIS dari http://www.atmel.com). Program kita awali dengan beberapa macam deklarasi, keterangan sengaja saya masukkan dalam listing program untuk memudahkan pembelajaran langsung dari listingnya, perhatikan instruksi yang diawali dengan ‘.’ merupakan directive dari AVR Studio, bukan instruksi assembly mikrokontroler AVR: