Sabtu, 02 November 2013

Akurasi Timer/Counter pada AVR


Beberapa waktu yang lalu ada seorang kawan yang minta diajari membuat timer 1 detik menggunakan mikrokontroler. Kebetulan uC yang dia pakai Atmega8 dengan clock intenal.
Langsung aja tek bikinin pake CodeVision AVR  dengan memanfaatkan interrupt overflow pada timer0.
Pada CodeVision AVR terdapat fasilitas CodeWizard yang mempermudah kita dalam membuat program. Untuk mengaktifkan interrupt overflow timer0 kita tinggal memilih clock source, clock value, Overflow interrupt, dan timer value pada tab timer0.
Untuk membuat timer 1 detik dengan frekuensi clock uC 8MHz internal saya menggunakan parameter timer0 sebagai berikut.
  • Clock source = system clock
  • Clock value = 1000,000 kHz
  • Timer value = 0x9B
  •  Memberi centang pada kotak Overflow interrupt.
Pada proses diatas sebenarnya kita mengubah nilai pada register TCCR0, TCNT0 dan TIMSK. Tiga bit LSB dari register TCCR0 merupakan bit CS0 (Clock select) yang digunakan untuk menentukan frekuensi clock dari timer0.
Nilai bit CS02 s/d CS00 sesuai tabel 1 dibawah.
Tabel.1 Timer/Counter0 Prescaler

Karena menggunakan clock value 1000,000kHz (1MHz) yang berarti 1/8 dari frekuensi clock uC, maka register TCCR0 bernilai 0x02.
TCNT0 merupakan register yang bertugas untuk menghitung pulsa yang masuk kedalam timer0/counter0. Setelah program berjalan maka niai register ini akan bertambah satu setiap clock timernya dan akan mengalami overflow setelah mencapai nilai 0xFF. Ketika register TCNT0 mengalami overflow maka bit TOV0(Timer/Counter0 Overflow Flag) pada register TIFR (Timer/Counter Interrupt Flag Register) akan bernilai 1 dan akan kembali ke-0 jika rutin interrupsi dijalankan. Akan tetapi jika rutin interrupsi tidak diaktifkan maka nilai TOV0 akan tetap set(1) dan harus di clear (0) secara manual.
Nilai TCNT0 dapat diisi dengan nilai 0x00 s/d 0xFF. Nilai ini sebagai inisialisasi nilai timercounter yang kita buat. Pada proses menggunakan codeWizard diatas, saya memasukan nilai timer value 0x9B atau senilai dengan 155 desimal. Ini dimaksudkan untuk mempermudah perhitungan. Jika inisialisasi TCNT0 = 155 dan maksimal nilainya 255 maka nilai TCNT0 hanya akan menghitung sebanyak 100 pulsa. Setiap 100 pulsa timer/counter0 terjadi Overflow pada TOV0.
Memberi tanda centang pada Overflow interrup di CodeWizard dialog akan mengubah nilai register TIMSK(Timer/Counter Interrupt Mask Register). Timer/counter0 hanya memiliki fasilitas interrupt overflow. Jika ini diaktifkan maka Bit TOIE0(Timer/Counter Interrupt Enable) akan bernilai 1 (set). Bit TOIE0 ini berada pada bit ke-0 register TIMSK sehingga jika kita akan mengaktifkan timer0 Overflow interrupt maka nilai register TIMSK adalah 0x01.
Sedangkan untuk mengaktifkan fungsi interrupt global dengan menambahkan #asm(“sei”) yang artinya men-set enable interrupt. Dengan menambahkan perintah ini maka nilai bit I pada register SREG akan bernilai 1. Untuk meng-clear kan bit-I digunakan code #asm(“cli”).
Setelah di-generate maka akan dibuatkan template program sesuai kebutuhan kita. Untuk seting parameter timer0 dan interupsi terdapat pada subrutin void main(void) berikut. 

Jumat, 30 Agustus 2013

Generator Sinus Menggunakan Mikrokontroler ATmega8

Sebagian besar orang yang hoby mainan mikrokontroler memanfaat DAC melalui PWM. Tidak salah memang karena level tegangan dinyatakan pada persentase duty cycle pada gelombang kotak keluaran port PWM.

Pada kesempatan kali ini saya sedikit mencoba trik DAC yang lain yaitu dengan merubah level 8 bit bilangan pada port mikrokontroler kedalam level tegangan. Rangkaian konverter tegangan utama yaitu rangkaian 2R-R dibawah.
gambar 1. Rangkaian DAC (2R-R)
Langkah berikutnya adalah menyusun data yang akan dikeluarkan melalui rangkaian DAC diatas.
Sesuai dengan judul postingan ini, maka data yang akan dikeluakan merupakan serangkaian data yang akan membentuk gelombang sinus. Kali ini jumlah data yang akan dikeluarkan sebanyak 256 data. Dari 256 data, nilai masing – masing datanya disusun dalam bentuk array. Berikut array untuk gelombang sinus.

const char Sinus[] = { 
            0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 0x98, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0xab, 0xae,
            0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc1, 0xc4, 0xc7, 0xc9, 0xcc, 0xce, 0xd1, 0xd3, 0xd5, 0xd8,
            0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xed, 0xef, 0xf0, 0xf2, 0xf3, 0xf5,
            0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc, 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7, 
            0xf6, 0xf5, 0xf3, 0xf2, 0xf0, 0xef, 0xed, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe2, 0xe0, 0xde, 0xdc,
            0xda, 0xd8, 0xd5, 0xd3, 0xd1, 0xce, 0xcc, 0xc9, 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb6, 0xb3,
            0xb0, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c, 0x98, 0x95, 0x92, 0x8f, 0x8c, 0x89, 0x86, 0x83,
            0x80, 0x7c, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a, 0x67, 0x63, 0x60, 0x5d, 0x5a, 0x57, 0x54, 0x51,
            0x4f, 0x4c, 0x49, 0x46, 0x43, 0x40, 0x3e, 0x3b, 0x38, 0x36, 0x33, 0x31, 0x2e, 0x2c, 0x2a, 0x27,  
            0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1b, 0x19, 0x17, 0x15, 0x13, 0x12, 0x10, 0x0f, 0x0d, 0x0c, 0x0a,
            0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
            0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x10, 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b, 0x1d, 0x1f, 0x21, 0x23,
            0x25, 0x27, 0x2a, 0x2c, 0x2e, 0x31, 0x33, 0x36, 0x38, 0x3b, 0x3e, 0x40, 0x43, 0x46, 0x49, 0x4c,
            0x4f, 0x51, 0x54, 0x57, 0x5a, 0x5d, 0x60, 0x63, 0x67, 0x6a, 0x6d, 0x70, 0x73, 0x76, 0x79, 0x7c
            };

Selanjutnya tinggal menerapkanya kedalam rangkaian percobaan.

Sabtu, 20 Juli 2013

Aplikasi Jaringan Sensor Nirkabel Untuk Pengukuran Pergerakan Tanah Menggunakan Sensor Percepatan 3 Sumbu Pada Daerah Rawan Longsor

Dwi Kurniawan, Imron Rosyadi,S.T.,M.Sc, Azis Wisnu Widhi N,S.T.,M.Eng

Program Studi Teknik Elektro, Fakultas Sains dan Teknik, Universitas Jenderal Soedirman

Jl.Mayjend Sungkono KM 05 Blater Purbalingga Indonesia
AbstractOne of the efforts in mitigating landslides are periodic monitoring of soil movement. It is possible if there is a device that have abillity to measuring ground displacement. H48C accelerometer is a device that capable of measuring dynamic and static acceleration so that it is possible to measure the displacement of the soil material. Problem in the design of ground displacement measurement system is a field that is generally located on the slopes of hills or mountains. Manufacture of wireline system will certainly have limitations in terms of flexibility and portability. Wireless Sensor Networks (WSN) is one solution to these problems. Transfer data on WSN can use the XBee RF module using ZigBee communication network.

Index Terms Accelerometer, Wireless Sensor Networks, Landslide, ZigBee.

I.     Pendahuluan

Komponen utama dalam perancangan JSN untuk pengukuran pergerakan tanah terdiri dari unit sensor, dan unit komunikasi. Unit sensor tersusun oleh akselerometer yang digunakan untuk mengukur perpinahan material tanah. Untuk unit komunikasi tersusun oleh modul Xbee sehingga transfer data antar node dapat dilakukan secara wireless. Selain unit sensor dan unit komunikasi terdapat juga unit Real Time Clock (RTC) sebagai unit yang mengatur pewaktuan pengiriman data.
Perpindahan posisi material tanah dapat dideteksi menggunakan sensor akselerometer H48C dengan melakukan integrasi berganda pada data percepatan yang didapat dari akselerometer. Data yang diperoleh dari akselerometer mengandung noise sehingga diperlukan pemfilteran data. Filter yang digunakan merupakan filter digital Low Pass Filter (LPF) dan menggunakan prototype filter Bessel.

Sabtu, 29 Juni 2013

Unlock TV China (ICHICKO 21”) Menggunakan Mikrokontroller


Mungkin judul posting ini kurang sesuai tapi binggung mau ngasih judul apa Cuma pengin berbagi pengalaman aja.
Beberapa waktu yang lalu dapat sms gini :

081327XX... : “Mas, bisa benerin TV China ga?”
Me  :”Ni siapa?dari mana? Merk nya pa?permasalahanya knp?”
081327XX... : “mr A, dari ds B. ICHICKO 21 inci, nyala Cuma biru ada tulisan LOCK”

Deket rumah mr 081327xx ada tukang servis TV jadi ga enak, sedikit males juga.

Me  : “Ouw, itu ke progrm nya ke kunci mas, ke mas Z ja pasti bisa.”
081327XX... : “udah mas, remot ilang jd mas Z ga sanggp.”
Me  : “ya dah nanti tek coba.”

Demikian awal mula kejadianya...
Dari sms yang saya terima dapat kesimpulan masalah pada EEPROM, dan remot TV ga ada sehingga susah buat unlock pake remot universal, lagi pula sejatinya saya bukan tukang servis TV jadi ga hafal kode servis TV yang begitu banyak merknya.

So, langsung saja persiapan amunisi...

Mengatasi Error B200 pada printer Canon iP2770



Error B200 pada printer canon iP2770 merupakan error yang terjadi karena tegangan kerja printer yang masuk ke catridge tidak stabil. Hal ini dikarenakan beberapa faktro diantaranya:

  1. Sering terjadi lonjakan tegangan PLN yang mensuplai printer. Bisa disebabkan karena tiba – tiba listrik padam dan nyala sedangkan kontak printer masih terhubung meskipun printer dalam keadaan off.
  2. Catridge yang sudah error, meskipun masih bekerja seperti halnya catridge normal akan tetapi catridge ini mengkonsumsi arus lebih besar dari pada catridge yang masih normal.
Error B200 ditandai dengan munculnya pesan error pada saat printer diperintahkan bekerja. Biasanya pesan error ini memberikan keterangan untuk melepas sambungan listrik dan menghubungi kontak servis. Kemudian setelah pesan error ini muncul printer akan berkedip pada indikator resume(orange) dan indikator power(hijau) secara bergantian.
Error B200 dapat diatasi sendiri atau jika anda kurang yakin silakan bawa ketempat servis printer biasanya anda ditawarkan untuk ganti logic board yang harganya hampir sama dengan harga printer baru.
Untuk mengatasi error ini perlu dilakukan pengecekan pada 3 bagian utama yaitu power supply printer, catridge, dan logic board. Sehingga berikut langkah – langkah mengatasi error B200 pada printer canon iP2770.