ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยSatra Tangwongsan ได้เปลี่ยน 9 ปีที่แล้ว
1
บทที่ 4 วงจร ADC เทอดศักดิ์ ลิ่วหาทอง สาขาวิชาอิเล็กทรอนิกส์
สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
2
Analog & Digital Signal
Analog Signal Digital Signal Digital Signal
3
Analog to Digital Converter
Sampling and Hold Quantize
4
Sampling Rate Selection
fs >= 2 Bandwidth
5
Sampling Rate Selection
Resolution LSB = (Vref+-Vref-)/2k
6
ADC ชนิด Successive Approximation
7
ADC ของ PIC18F8722 PIC18F8722 มีวงจร Analog to Digital Converter ขนาด 10 bit ทั้งหมด 16 วงจร (AN0-AN15)
8
ADC ของ PIC18F8722
9
ADC ของ PIC18F8722
10
ADC ของ PIC18F8722
11
Register ของ ADC PIC มี Register ที่เกี่ยวกับ ADC ทั้งหมด 5 ตัวคือ
A/D Result High Register (ADRESH) A/D Result Low Register (ADRESL) A/D Control Register 0 (ADCON0) A/D Control Register 1 (ADCON1) A/D Control Register 2 (ADCON2)
12
ADRESH และ ADRESL ADRESH และ ADRESL เป็น Register ที่ใช้เก็บผลลัพธ์ของการแปลง ADC
13
ADCON0 ADCON0 เป็น Register ที่ใช้กำหนดว่าจะให้วงจร VAin ของวงจร ADC ต่อกับ AN ตัวที่เท่าใด (CHS3:0) สั่งให้ ADC เริ่มทำงาน Go/DONE และตรวจสอบว่า ADC ทำงานเสร็จหรือยัง ADON
14
ADCON0
15
ADCON1 ADCON1 เป็น Register ที่ใช้กำหนดให้ AN ตัวใดทำงานเป็น Analog Input Port หรือทำงานเป็น Digital I/O Port (PCFG3:0) และกำหนดให้ RA3/AN3 เป็น VRef+ และ RA2/AN2 เป็น VRef- (VCFG1:0)
16
ADCON1
17
ADCON2 ADCON2 เป็น Register ที่ใช้กำหนด Acquisition Time ของวงจร ADC
18
Acquisition Time สัญญาณ Analog จะถูกป้อนผ่านสวิทซ์ไปเข้าที่ขา VAin ของวงจร ADC จากนั้น CHOLD จะถูกชาร์จประจุให้มีแรงดันเท่ากับขา VAin
19
Acquisition Time เพื่อให้การแปลง ADC มีความถูกต้อง จะต้องให้แรงดันของ CHOLD เท่ากับ VAin เนื่องจาก VAin ชาร์จประจุ CHOLD ผ่าน RS, RSS ดังนั้นจึงต้องใช้เวลาในการชาร์จประจุ เราเรียกเวลาดังกล่าวว่า Acquisition Time (TACQ)
20
Acquisition Time
21
เราสามารถตั้งค่า Acquisition Time ได้จาก ACQT<2:0>
เมื่อเซ็ทให้ GO/DONE = 1 PIC จะรอเป็นเท่ากับ Acquisition Time จากนั้นจึงเริ่มแปลง ADC และเมื่อแปลง ADC เสร็จแล้ว GO/DONE จะเท่ากับ 0
22
ขั้นตอนการแปลง ADC
23
#include <p18f8722.h> #include <adc.h> #include <delays.h> #include <timers.h> #define NUMBER_OF_LEDS 8 #pragma code int result; int shift; void main(void) { TRISAbits.TRISA0=1; TRISD = 0; PORTD = 0; ADCON1 = 0b ; ADCON2 = 0b ; ADCON0bits.ADON = 1; while(1) { ADCON0bits.GO=1; while(ADCON0bits.GO); result = ADRES; result >>=2; if(result==0) result = 1; // PORTD = result; PORTD=1<<shift; shift++; shift %=8; Delay10KTCYx(20); }
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.