CMPS03 Modul Magnetic Compass
CMPS03 modul magnetik kompas, modul kompas ini didesain khusus dalam bidang robotik untuk tujuan navigasi robot. Kompas ini menggunakan dua sensor medan magnet KMZ51 buatan Philips yang cukup peka untuk mendeteksi medan magnet bumi. Dua sensor ini dipasang saling bersilangan. Pada modul kompas telah dipasang rangkaian pengkondisi sinyal dan mikrokontroler. Sehingga kita dapat mengakses berapa derajat posisi kompas secara langsung.
Hubungan pin-pin pada modul kompas
Konfigurasi pin pada CMPS03
Modul kompas membutuhkan suplai tegangan sebesar 5VDC dengan konsumsi arus sekitar 15mA. Ada dua cara untuk membaca posisi magnet. Yaitu melalui sinyal PWM pada pin nomor 4 atau menggunakan protokol I2C pada pin nomor 2 dan 3.
Sinyal PWM yang dihasilkan oleh kompas merupakan sinyal yang lebar pulsanya dapat berubah-ubah. Pulsa berlogika 1 menyatakan derajat. Lebar pulsa berlogika 1 bervariasi antara 1mili-detik (untuk 0º) sampai 36,99mili-detik (untuk 359,9º). Dengan kata lain kompas memiliki resolusi 100µ-detik/º dengan offset sebesar +1mili-detik. Sinyal kemudian akan berlogika 0 selama 65mili-detik. Jadi periode sinyal PWM sebesar 65mili-detik ditambah dengan waktu sinyal yang berlogika 1, atau 66mili-detik sampai 102mili-detik. Sinyal PWM tersebut dihasilkan oleh timer 16-bit dari prosesor pada modul kompas yang menghasilkan resolusi sebesar 1µ-detik. Sehingga disarankan oleh pembuatnya untuk mendeteksi sinyal PWM dengan timer yang resolusinya lebih rendah dari yang dihasilkan oleh kompas. Yakinkan bahwa pin untuk I2C, SDA dan SCL, dihubungkan ke suplai 5VDC melalui resistor pull-up, karena pin SDA dan pin SCL tidak mempunyai pull-up.
Pin 2 dan 3 digunakan untuk berkomunikasi dengan protokol (bahasa) I2C untuk mengambil nilai posisi kompas.
Gambar Start bit dan stop bit pin scl dan sda
Komunikasi dengan protokol I2C pada modul kompas mempunyai cara yang sama seperti mengakses eeprom serial tipe 24C04 misalnya. Pertama kirim start-bit, alamat kompas (0xC0) dengan bit R/W low, kemudian nomor register yang ingin diakses. Selanjutnya diulang dengan mengirimkan start-bit, alamat kompas dengan bit R/W high (0xC1). Kemudian isi register dibaca.Fungsi register pada CMPS03 bisa dilihat pada lampiran Datasheet register CMPS03.
Pin I2C tidak mempunyai resistor pull-up pada board sehingga harus ditambahkan pada jalur komunikasi yang digunakan. Pembuat modul kompas menyarankan untuk memasang resistor 1k8 jika diinginkan bekerja pada kecepatan 400kHz dan 1k2 atau bahkan 1k bila ingin bekerja pada kecepatan 1MHz. Modul kompas didesain untuk bekerja pada frekuensi standar (SCL) sebesar 100kHz, walaupun kecepatan sinyal clock bisa ditingkatkan sampai 1Mhz dengan beberapa tindakan yang harus diperhatikan. Pada kecepatan diatas sekitar 160kHz, CPU tidak dapat merespon dengan cepat untuk membaca data I2C. oleh karena itu delay sesaat sebesar 50µ-detik harus ditambahkan diantara pengiriman alamat register.
Pin 7 adalah pin input untuk memilih operasi kerja 50Hz atau 60Hz. Pin ini ditambahkan setelah terlihat adanya jitter sekitar 1,5º pada output. Penyebabnya adalah sumber listrik 50Hz pada lingkungan kerja. Dengan melakukan sinkronisasi dengan frekuensi sumber listrik dapat dikurangi sampai 0,2º. Konversi internal selesai setiap 40mili-detik (50Hz) atau setiap 33,3mili-detik (60Hz). Pin 7 mempunyai resistor pull-up pada board sehingga dapat dibiarkan tidak terhubung untuk operasi kerja 60Hz. Antara output PWM atau I2C dan proses konversi tidak ada sinkronisasi. Output PWM dan I2C mengambil pembacaan internal yang terbaru, yang dikonversi secara kontinu, apakah dipakai atau tidak.
Pin 6 digunakan untuk mengkalibrasi kompas. Pin ini memiliki resistor pull-up pada board sehingga dapat dibiarkan tak terhubung setelah melakukan kalibrasi. Pin 5 dan pin 8 tidak dihubungkan. Sebenarnya pin 8 merupakan jalur reset dan memiliki resistor pull-up pada board. Disiapkan untuk memprogram mikrokontroler yang terpasang pada board.