Bài 04ADC & PWM ADC: Analog to Digital Converter PWM: Pulse Width Modulation 1... ❖ Phân biệt độ phân giải và tần số lấy mẫuI... - Tần số lấy mẫu càng cao thì tín hiệu analog sau khi đượ
Trang 1Bài 04
ADC & PWM (ADC: Analog to Digital Converter
PWM: Pulse Width Modulation)
1
Trang 2❖ Phân biệt độ phân giải và tần số lấy mẫu
I ADC:
N = 𝑉𝑖∗(2
𝑛 −1)
N: giá trị số của ngõ ra ADC
n: số bit (độ phân giải)
2
Trang 3- Tần số lấy mẫu càng cao thì tín hiệu analog sau khi được hồi giải mã càng trung thực
3
Trang 4- Cấu trúc ADC của PIC16F877A
4
Trang 5- Các lệnh CCS liên quan ADC:
Những giá trị của value:
ALL_ANALOG // A0 A1 A2 A3 A5 E0 E1 E2
AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF
AN0_AN1_AN2_AN3_AN4
AN0_AN1_AN2_AN4_VSS_VREF
AN0_AN1_AN3
AN0_AN1_VSS_VREF // VREF = AN3
AN0_VREF_VREF // A0 VRefh=A3 VRefl=A2
Trang 6Ví dụ 01:
Cho sơ đồ mạch: LM35 là cảm biến nhiệt độ có ngõ ra là 10 mV/ độ C
U3 LM35/SO
VS+ VOUT
f
R35 10K
e
VDD
d
C3
1uF
p g
R12 4K7 Q3
A1013
b e d a
C12 103
D10
R9 4K7
VDD
b
VCC
1
2 3 4 5 6 7
8 9 10
11 12
13 14
15 16 17 18
19 20 21 22 23
24 25 26
27 28 29 30
33 34 35 36 37 38 39 40 MCLR/Vpp
RA0/AN0 RA1/AN1 RA2/AN2/Vref -RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS
RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7
OSC1/CLKIN OSC2/CLKO
RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL
RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA
RC5/SDO RC6/TX/CK RC7/RX/DT
RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7
RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD
LED4 LED7S
7 6 4 2 1 9 10 5
3 8
a b c d e f g
p C1 C2
R10 4K7
g
R1
R
f c
C6 33P
RST
VDD
VREF
Q2
A1013
TEMP
R8
100X8
R33 270
D10
LED
D10
R2
R
D9
f g
LED3 LED7S
7 6 4 2 1 9 10 5
3 8
a b c d e f g
p C1 C2
VDD
g
R4
R
b
R1
10K
C2 4.7uF - 10uF
d
R3
R
e
D9
LED
Q1
A1013
p a
TEMP
C11 33P
a
Q4
A1013
SET
R7
R
LED1 LED7S
7 6 4 2 1 9 10 5
3 8
a b c d e f g
p C1 C2
b
R34 270
SET
d p
Y 1
c
R5
R
f p
D9
c
R11 4K7
a
R6
R
LED2 LED7S
7 6 4 2 1 9 10 5
3 8
a b c d e f g
p C1 C2
e c
VDD
6
Trang 7YÊU CẦU (sử dụng ADC 8 bit):
dụng điện áp chuẩn là VDD (5V)
hiển thị giá trị trên 4 led theo dạng “St.XX”, sử dụng điện áp chuẩn là VDD Nếu:
7
Trang 8❖ Tần số không thay đổi, chu kì duty thay đổi theo mục đích điều khiển
II PWM:
Duty cycle
T
8
Trang 9❖ Sử dụng timer 2 để phát xung:
❖ Setup_timer_2(mode, period, postscale)
f = 𝐹𝑂𝑆𝐶
4∗𝑚𝑜𝑑𝑒∗ 𝑝𝑒𝑟𝑖𝑜𝑑+1
Nếu Fosc = 4MHz, f = 4 𝑀𝐻𝑧
4∗1∗ 100+1 = 10 𝐾𝐻𝑧
9
Trang 10❖ PIC16F877A có 2 bộ PWM, ngõ ra của PWM tại chân RC2 (CCP1) và RC1 (CCP2)
10
Trang 11❖ Các lệnh liên quan PWM:
Ví dụ:
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4, 99,1);// period = 100
set_pwm1_duty(50); // duty_cycle = 50%
11
Trang 12Ví dụ 02: Cho sơ đồ mạch:
D3 FR504
C10 100uF/50V C6 33P
MT22
24VDC
D5 FR504
D8 FR504
24VDC
C11
VDD
R8
100X8
PWM1
R6
R
D4 FR504
SW2
A
-+
MG2
MT21
VDD
PWM2
SW1
RST
VDD
R3
C1 100uF/50V
R4
R
MT21
R5
R
R2
R
VDD
24VDC
MT22
VDD
C2 4.7uF - 10uF
p
D7 FR504
D2 FR504
e
PWM1
D6 FR504
c
R22 10K
R1 10K
A
-+
MG1
d
C3
1uF
g
Y 1 4M
R21 10K
R1
R
24VDC
1
2 3 4 5 6 7
8 9 10
11 12
13 14
15 16 17 18
19 20 21 22 23
24 25 26
27 28 29 30
33 34 35 36 37 38 39 40 MCLR/Vpp
RA0/AN0 RA1/AN1 RA2/AN2/Vref -RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS
RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7
OSC1/CLKIN OSC2/CLKO
RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL
RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RC4/SDA
RC5/SDO RC6/TX/CK RC7/RX/DT
RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7
RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD
U1
L298
5 7 10 12
2 3 13 14
6 11
1 15
9 4
1A1 1A2 2A1 2A2
1Y 1 1Y 2 2Y 1 2Y 2
1EN 2EN
1E 2E
VCC1 VCC2
VDD
24VDC
R7
R
a b
PWM2
LED1 LED7S
7 6 4 2 1 9 10 5
3 8
a b c d e f g
p C1 C2
D1 FR504
12
Trang 13YÊU CẦU:
setup_timer_2(T2_DIV_BY_1, 99,1);
2 Cấu hình timer 2 giống câu 1 Viết chương trình cho phép đặt 10 tốc độ quay cho MG1 (dùng SW1: tăng 1 đơn vị, SW2: giảm 1 đơn vị), hiển thị tốc độ trên led 7 đoạn (0,1,2,3,4,5,6,7,8,9), trong đó tốc độ 0 là dừng động cơ
3 cấu hình timer 2 giống câu 1 Viết chương trình thực hiện:
13