Wednesday 7 May 2014

Cara Guna Comparator Dalam PIC18F4550

Dalam PIC18F4550 telah dilengkapkan dengan pelbagai features tambahan antaranya ialah Comparator, untuk bacaan lanjut berkenaan dengan comparator boleh klik disini.

Terdapat dua (2) comparator di dalam PIC, dimana input dan output comparator ini berada pada PORTA seperti yang ditunjukkan dalam Rajah 1 dibawah.

Rajah 1: Dua (2) Comparator dalam PIC18F4550 (rujuk datasheet m/s:264)

Comparator yang ada ini boleh digunakan dalam pelbagai MODE. Walaubagaimanapun, untuk tujuan perbincangan dalam post ini, hanya mode "One Independent Comparator with Output" sahaja yang akan dibincangkan. Dengan memahami mode ini, maka tidak susah untuk anda menguasai mode-mode yang lain.

Berbalik kepada konsep asas kendalian comparator, dua (2) nilai input voltage (analog) iaitu pada Vin- dan Vin+ akan dibandingkan, dan keluarannya adalah seperti berikut:

C1OUT = 1, jika Vin+ > Vin-
C1OUT = 0, jika Vin- > Vin+
C2OUT = 1, jika Vin+ > Vin-
C2OUT = 0, jika Vin- > Vin+

dengan bit C1INV=0 dan C2INV=0.

Perlu diingatkan bahawa Vin- dan Vin+ adalah analog voltage, maka PORT yang berkenaan mesti di setup supaya berfungsi sebagai analog pin.

Untuk memahami post ini dengan lebih jelas, mari kita belajar daripada contoh senario ini.

Problem statement:
Ali seorang pelajar semester akhir diploma kejuruteraan elektrik di sebuah politeknik yang sedang berusaha menyiapkan final projeknya. Ali ingin menggunakan IR sensor untuk mengesan kewujudan objek 5cm di sekeliling kemudian menyalakan LED. Maka Ali mengambil keputusan untuk sambungkan litar IR sensor (Rajah 2) kepada PIC18F4550 dan akan menggunakan comparator C1. Ali dikehendaki untuk menulis C program supaya PIC18F4550 berfungsi seperti mana yang dia mahukan.  

Rajah 2: Litar IR sensor

Berikut adalah nilai voltage keluar daripada IR sensor versus jarak detection.


Jarak (cm)   Sensor Output (V)
1                         0.3
2                         0.8
3                         1.3
4                         1.8
5                         2.3
6                         2.8
7                         3.5
8                         4.0
9                         4.5
10                       5.0

Solution:
Step 1:- Analisis masalah (Tetapkan nilai Threshold)

Berdasarkan kepada Figure 22-2, Threshold ialah nilai voltage yang constant. Dalam kes ini ialah Vin-. Jadi, bagaimana untuk menentukan nilai Vin- ini? Caranya begini:-
  • Perhatikan data Jarak(cm) Vs Voltage di atas. Ali ingin mengesan jarak objek pada 5cm atau lebih dekat (1cm, 2cm, 3cm, 4cm & 5cm sahaja). Oleh itu, nilai Threshold adalah diantara 2.3V(5cm) hingga 2.8V(6cm) supaya comparator boleh bezakan jarak antara 5cm dan 6cm. Maka nilai Threshold ialah 2.5V sebagai contoh. Seterusnya laras RV2 supaya voltage pada RA0 jadi 2.5V.



Step2:- Buat flowchart program atau Pseudo Code.

Pseudo Code
  1. Initialize Input/Output; 
  2. Setup ADC Module supaya RA0 dan RA3 sebagai Analog
  3. Setup Comparator Module; Tetapkan mode kepada CM2:CM0=001 
Expected Result:
Jika Jarak objek <=5cm maka LED on
Jika Jarak objek >5 maka LED off.

Step3: Tulis Program

Download Full Program Klik Disini

Perlu diingatkan LED akan menyala secara automatik, tidak perlu menulis program untuk access LED lagi. Ini adalah kerana, sekali aktifkan comparator, ia akan berfungsi secara Independence.

Sekian, Harap post ini berguna kepada seseorang.

No comments:

Post a Comment