Post ini akan membincangkan ciri - ciri ADC modul yang terdapat di dalam PIC8F4550 serta menerangkan langkah - langkah untuk menggunakannya.
1) Teori ADC Modul di dalam PIC18F4550
Sila rujuk Rajah 1 dibawah bagi memudahkan pemahaman terhadap ADC modul.
Rajah 1: Gambarajah blok ADC
Daripada rajah 1, boleh diperhatikan terdapat beberapa parameter yang perlu diberi perhatian, antaranya ialah:
- Voltage Input yang datang daripada Analog Channel (AN0 - AN12).
- Reference Voltage iaitu Vref(+) dan Vref(-)
- Resolution 10bit (0 - 1023)
Ketiga-tiga parameter ini boleh dihubungkan melalui graf dibawah:
Rajah 2: Graf Digital vs Analog
Rajah 2 diatas menunjukkan hubung kait diantara digital dan analog adalah linear. Maka ia boleh diterjemahkan dalam persamaan matematik seperti berikut:
Justeru, kita boleh mengira hasil ADC (Dout) jika diberi Voltage input (Vin) dengan menggunakan persamaan (1) diatas.
Note: 3V <=Vref <= 5V
Dengan menggunakan PIC18F4550, keluaran daripada ADC modul (Dout) ini akan disimpan di dalam SATU(1) register, iaitu ADRES.
Selain daripada itu, terdapat parameter lain yang mempengaruhi hasil ADC, antaranya ialah:
- A/D conversion time per bit, Tad.
Note: Nilai Tad mesti melebihi 1.6us
Nilai Tad boleh dikira berdasarkan pilihan ADCS seperti dibawah:
Berikut adalah contoh kiraan bagi menentukan ADCS yang paling sesuai:
Diberi nilai Fosc = 48MHz
Maka,
Case 1: Fosc/2
48MHz / 2 = 24MHz
Tad = 1/24MHz = 0.0041 us. Pilihan ini tidak sah, kerana kurang dari 1.6us
Case 2: Fosc/4
48MHz / 4 = 12MHz
Tad = 1/12MHz = 0.0083 us. Pilihan ini tidak sah, kerana kurang dari 1.6us
Case 3: Fosc/8
48MHz / 8 = 6MHz
Tad = 1/6MHz = 0.1667 us. Pilihan ini tidak sah, kerana kurang dari 1.6 us
Case 4: Fosc/16
48MHz /16 = 3MHz
Tad = 1/3MHz = 0.333 us. Pilihan ini tidak sah, kerana kurang dari 1.6 us
Case 5: Fosc / 32
48MHz / 32 = 1.5MHz
Tad = 1/1.5MHz = 0.666us. Pilihan ini tidak sah, kerana kurang dari 1.6us
Case 6: Fosc/ 64
48MHz / 64 = 0.75MHz
Tad = 1/0.75MHz = 1.333us. Pilihan ini diterima walaupun kurang dari 1.6us sebab tiada pilihan lain.
Justeru, convertion time = 12 x 1.333us = 16.996 us
Daripada contoh ini dapati bahawa dengan menggunakan Fosc = 48MHz, tiada ADCS yang sesuai kerana kesemuanya adalah kurang dari 1.6us. Tetapi ADCS yang paling hampir iaitu Fosc/64 boleh digunakan. Walaupun hasil conversion tidak lengkap 100% tetapi masalah ini boleh diatasi dengan membuat purata hasil conversion.
2) Menulis aturcara C18
Langkah seterusnya adalah menulis aturcara menggunakan C18 untuk manipulasi kandungan register:
- ADCON0
- ADCON1
- ADCON2
Bagi memudahkan, penerangkan seterusnya akan berdasarkan kepada contoh dibawah.
1. Contoh simple ADC program.
Rajah 3
Penyata Masalah:
Tulis aturcara C18 supaya Pin RA0 pada PIC18F4550 boleh digunakan untuk melakukan proses ADC secara berterusan. Dimana configurasi ADC yang diperlukan adalah seperti berikut:
i) Vref(+) = Vdd (5V)
ii) Vref (-) = Vss (0V)
iii) Resolution = 10 bit
iv) A/D Acquisition Time = 12Tad
ii) Vref (-) = Vss (0V)
iii) Resolution = 10 bit
iv) A/D Acquisition Time = 12Tad
v) A/D Conversion Clock = Fosc/64
Penyelesaian:
Rajah 4: aturcara bagi contoh 1.
Untuk mendapat aturcara penuh, Klik Disini
2. Aturcara yang ditunjukkan dalam Rajah 4 boleh di naik taraf supaya lebih flexible. Dimana ia boleh guna untuk mana-mana channel (AN0-AN12).
Untuk mendapat aturcara yang telah di naik taraf, Klik Disini
Penutup:
Diharapkan post yang ringkas ini akan memberi manfaat kepada pembaca. Jika terdapat masalah atau kekeliruan, sila komen di ruang yang disediakan.
Sekian
Penutup:
Diharapkan post yang ringkas ini akan memberi manfaat kepada pembaca. Jika terdapat masalah atau kekeliruan, sila komen di ruang yang disediakan.
Sekian
No comments:
Post a Comment