MỤC LỤC
MỞ ĐẦU 1
1.1. Cấu tạo của cảm biến quang học TSL230. 2
1.1.1 Mô tả 2
1.1.2 Cấu tạo 2
1.2. Nguyên tắc hoạt động 4
1.2.1 Cấu hình đầu ra của TSL230 4
1.2.2 chức năng các chân 4
1.2.3 Khối chức năng 5
1.2.4 Giới thiệu về điều kiện vận hành 5
1.2.5 Biểu đồ đặc trưng 8
1.3. Một số thông tin cho vấn đề ứng dụng 10
1.3.1 Chú ý đến nguồn nuôi 10
1.3.2 Đầu ra chung 10
CHƯƠNG 2 - CẤU TRÚC VI ĐIỀU KHIỂN PIC 16F877A 12
2.1 Mô tả khái quát chung về tính năng của vi điều khiển PIC 16F877A 12
2.2 Sơ đồ khối chức năng và các chân vào ra 13
2.3 Tổ chức bộ nhớ và các thanh ghi chức năng đặc biệt 17
2.3.1 bộ nhớ chương trình Flash. 18
2.3.2 Bộ nhớ dữ liệu RAM 18
2.3.3 Bộ nhớ dữ liệu EEPROM 19
2.4 Các cổng vào/ra 20
2.4.1 Cổng A 20
2.4.2 Cổng B 20
2.4.3 Cổng C 22
2.4.4 Cổng D 23
2.4.5 Cổng E 24
2.5 Các khối TIMER 24
2.5.1 Khối timer0 24
2.5.2 Khối Timer1 26
3.5.3 Khối Timer2 27
2.6 Cổng nối tiếp đồng bộ I2C 28
2.7 Bộ thu phát không đồng bộ vạn năng UART 29
2.7.1 Khối truyền thông đồng bộ 30
2.7.2 Khối nhận không đồng bộ 30
2.8 Khối chuyển đổi tương tự/số ADC 31
2.9 Các đặc điểm riêng và thiết lập cấu hình PIC 33
2.9.1 Các điểm mới trong vi điều khiển PIC 16F877A 33
2.9.2 Định cấu hình – Từ cấu hình (Config Word) 36
CHƯƠNG 3: XÂY DỰNG HỆ ĐO NHỊP TIM 38
3.1. Giới thiệu về LED 38
3.2.1 Hoạt Động 39
3.2 Giới thiệu về phương pháp đo nhịp tim 41
3.2.1 Giới thiệu 41
3.2.2 Hemoglobin (Hb) 42
3.2.3 Định luật Beer 43
3.5. Phần thực nghiệm 47
3.5.1 Sơ đồ nguyên lý hệ đo 47
3.5.2 chương trình và cấu hình làm việc 47
3.5.4 Kết quả đo, nhận xét 48
KẾT LUẬN 50
TÀI LIỆU THAM KHẢO. 51
53 trang |
Chia sẻ: lethao | Lượt xem: 4989 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu các ứng dụng cảm biến quang, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i ra của so sánh có thể truy nhập từ bên ngoài.
+ Các đặc tính riêng
Đảm bảo 100.000 lần ghi/xóa vào bộ nhớ chương trình flash.
Đảm bảo 1.000.000 lần ghi/xóa vào bộ nhớ dữ liệu EEPROM.
Bộ nhớ dữ liệu kiểu EEPROM lưu được dữ liệu trên 40 năm.
Tự nạp trình dưới sự điều khiển của phần mềm bootstrap qua giao diện nối tiếp.
Nạp trình nối tiếp ICSP.
Điện áp nạp trình 5 V ở chế độ LVP.
Bộ đếm giám sát Watchdog có mạch tạo nhịp RC bên trong , độ lập.
Có cơ chế xóa chống sao chép chương trình.
Chế độ SLEEP tiết kiệm năng lượng.
Nhiều lựa chọn về bộ giao động tạo nhịp RC, LP, XT, HS.
Chức năng gỡ rối chương trình ICD qua 2 chân.
Chế tạo bằng công nghệ CMOS, tiêu thụ ít năng lượng, tốc độ cao.
2.2 Sơ đồ khối chức năng và các chân vào ra
Vi điều khiển PIC có kiến trúc Harvard, trong đó CPU truy cập chương trình và dữ liệu được trên hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc Von Neumann trong đó CPU truy cập chương trình và dữ liệu trên cùng một bus.
Việc tách riêng bộ nhớ chương trình và bộ nhớ dữ liệu cho phép số bit của từ lệnh có thể khác với số bit của dữ liệu. Ở PIC 16F877A, từ lệnh dài 14 bit , từ dữ liệu 8 bit.
PIC 16F877A chứa một bộ ALU 8 bit và thanh ghi làm việc WR (working register). ALU là đơn vị tính toán số học và logic, nó thực hiên các phép tình số và đại số Boole trên thanh ghi làm việc WR và các thanh ghi dữ liệu. ALU có thể thực hiện các phép cộng, trừ, dịch bit và các phép toán logic.
Vi điều khiển PIC 16F877A được đóng trong vỏ nhựa hai hàng 40 chân DIP, việc bố trí các lối ra mô tả trong hình10 :
Hinh10: Bố trí chân PIC 16F877A
Hình11 : Sơ đồ khối chức năng của PIC 16F877A.
Hình 11 là sơ đồ khối chức năng của các chân vào ra của vi điều khiển . Ở PIC 16F877A đa số các chân vào ra được sử dụng cho nhiều chức năng .
Các khối chức năng cụ thể cho từng chân vào ra được xác lập khi lập trình qua các thanh ghi chức năng thuộc các khối liên quan chân này.
Tên
Chân
Loại
Mô tả chức năng
OSC1/CLKI
13
I
Dao động tinh thể lối vào dao động ngoài
OSC2/CLKO
14
O
Dao động tinh thể hoặc lối ra xung nhịp
MCLR/Vpp
1
I/P
Lối vào reset. Lối vào điện áp nạp trình Vpp
RA0/AN0
2
I/O
Vào/ ra số. Lối vào analog 0
RA1/AN1
3
I/O
Vào/ ra số. Lối vào analog 1
RA2/AN2/V-reff/CVRef
4
I/O
Vào ra số. lối vào analog 2. Lối vào điện áp chuẩn V-ref của ADC. Lối ra Vref so sánh
RA3/AN3/V+Ref
5
I/O
Vào/ ra số. Lối vào analog 3. Lối vào điện áp chuẩn V-ref của ADC
RA4/TOCKI/C1OUT
6
I/O
Vào/ra số cực máng ngỏ. Lối vào xung ngoài cho timer. Lối ra bộ so sánh 1
RA5/SS/AN4/C2OUT
7
I/O
Vào/ra số. lối vào chọn SOI. Lối vào analog 4. lối ra bộ so sánh 2
RB0/INT
33
I/O
Vào/ra số. Lối vào ngắt ngoài.
RB1
34
I/O
Vào/ra số.
RB2
35
I/O
Vào/ra số.
RB3/PGM
36
I/O
Vào/ra số. Nạp trình LVP
RB4
37
I/O
Vào/ra số
RB5
38
I/O
Vào/ra số
RB6
39
I/O
Vào/ra số. Xung nhịp nạp trình ICSP
RB7
40
I/O
Vào/ra số. Dữ nạp trình ICSP
RC0/T1OSO/T1CKI
15
I/O
Vào/ra số. Tạo dao động timer. Xung nhịp ngoài cho timer 1
RC1/T1OSI/CCP2
16
I/O
Vào/ra số. Tạo timer1. Lối vào Capture. Lối ra Compare2. Lối ra PWM2
RC2/CCP1
17
I/O
Vào/ra số. Lối vào Vào/ra số Capture1. Lối ra PWM1
RC3/SCK/SCL
18
I/O
Vào/ra số. Nhịp đồng bộ choSPI và I2C
RC4/SDI/SDA
23
I/O
Vào/ra số. Vào dữ liệu SPI. Vào/ra dữ liệu I2C
RC5/SDO
24
I/O
Vào/ra số. Ra dữ liệu SPI
RC6/TX/CK
25
I/O
Vào/ra số. Cổng truyền thông không đồng bộ. Xung nhịp truyền đồng bộ
RC7/RX/DT
26
I/O
Vào/ra số. Cổng nhận không đồng bộ. Dữ liệu đồng bộ
RD0
RD1
RD2
RD3
RD4
RD5
RD6
RD7
19
20
21
22
27
28
29
30
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra số. Cổng song song tớ
Vào/ra sô. Cổng song song tớ
RE0/RD/AN5
7
I/O
Vào/ra số. Điều khiển RD cổng song song
RE1/WR/AN6
8
I/O
Vào/ra số. Điều khiên WR cổng song song
RE2/CS/AN7
9
I/O
Vào/ra số. Điều khiển CS cổng song song
Vss
12,31
I/O
Đất chung cho lối vàp/ra và analog
Vdd
11,32
I/O
Cấp nguồn dương
2.3 Tổ chức bộ nhớ và các thanh ghi chức năng đặc biệt
Tổ chức bộ nhớ của vi điều khiển PIC 16F877A được trình bày hình 12.
Hình 12: Tổ chức bộ nhớ
Có 3 loại bộ nhớ trong vi điều khiển 16F877A: bộ nhớ chương trình, bộ nhớ dữ liệu RAM, bộ nhớ dữ liệu EEPROM. Bộ nhớ dữ liệu và bộ nhớ chương trình và bộ nhớ dữ liệu có hai bus riêng lên có thể truy nhập đồng thời.
2.3.1 bộ nhớ chương trình Flash.
Vi điều khiển 16F877A có bộ nhớ chương trình flash với dung lượng 8k x 14 bit, chia thanh 4 bank. Thanh ghi của bộ đếm chương trinh PC (Program Counter ) 13 bit , đủ định nghĩa địa chỉ cho 8 k không gian bộ nhớ.
Khi khởi động, bộ đếm chương trình bắt đâu từ địa chỉ 0000h, vector ngắt có địa chỉ 0004h.
Bộ nhớ dữ liệu được ghi vào trong khi lập trình cho vi điều khiển qua bộ nạp trình. Do khả năng tự ghi vào bộ nhớ chương trình nên vi điều khiển 16F877A còn có thể nạp chương trình qua cổng UART dưới sự điều khiển của chương trình Bootstrap.
2.3.2 Bộ nhớ dữ liệu RAM
Bộ nhớ dữ liệu được chia thanh 4 bank trong đó có các thanh ghi đa năng GPR (General Purpose Register ) và các thanh ghi chức năng đặc biệt SER(Specail Function Register). Việc lựa chon các bank được xác định bằng các bit RP1, RP0 của thanh ghi STATUS.
Tổng dung lượng của các GPR RAM là 368 byte, lớn hơn nhiều so với vi điều khiển khác như ở họ 8051 chỉ có 128 byte. Các thanh ghi GPR được sử dụng để lưu giá trị các biến trong chương trình. Các thanh ghi đặc biệt SFR dùng để quản lý, điều khiển chức năng của tất cả các khối thành phần bên trong vi điều khiển.
Tổ chức của các thanh ghi chức năng SFR được trình bày trên hình 13.
Hình 13: Tổ chức thanh ghi chức năng SFR
2.3.3 Bộ nhớ dữ liệu EEPROM
Một bộ nhớ dữ liệu đặc biệt kiểu EEPROM dung lương 256 byte được tích hợp trong PIC 16F877A và được xem như thiết bị ngoại vi được nối vào bus dữ liệu, bộ nhớ này có thể ghi đọc trong quá trình hoạt động dưới sự điều khiển của chương trình. Bộ nhớ EEPROM thường dùng các lưu trữ các chương trình không bị thay đổi như các hằng chuẩn, các dữ liệu của người sử dụng. và không bị mất đi khi ngắt nguồn nuôi. Các thanh ghi chức năng đặc biệt EECON, EECON2, EEADR, EEADRH được sử dụng để truy cập đến bộ nhớ này.
2.4 Các cổng vào/ra
2.4.1 Cổng A
Cổng A là cổng vào/ ra 6 bit, 2 hướng xem hình 14. Thanh ghi định hướng cổng là TRISA. Bít “1” trong thanh ghi TRISA đặt bộ điều khiển lối ra tương ứng về trạng thái trở kháng cao. Bít “0” trong thanh ghi TRISA đặt nội dung của thanh ghi chốt ra lên chân tương ứng. Việc đọc cổng A là đọc mức logic của các chân vào bus. Việc ghi ra cổng là ghi vào thanh ghi chốt lối ra PORTA.RA4 là lối vào trigger Schmitt và lối ra cực máng ngỏ.
Hình 14:Cổng A
Chân RA4 dùng chung với lối vào xung nhịp cho timer0 khi dùng bộ đếm xung từ bên ngoài.
Các chân khác của cổng A được ghép lối vào của các bộ so sánh tương tự và bộ biến đổi ADC 8 kênh. Việc lựa chọn vào cho ADC được chọn bởi bit điều khiển trên hai thanh ghi ADCON1 và ADCON2.
2.4.2 Cổng B
Cổng B là cổng 8 bit vào/ra hai hướng xem hình 15. Thanh ghi định hướng cổng là TRISB. Thanh ghi chốt lối ra cổng B là PORTB.
Chân RB0 có thể lựa chọn là lối vào của ngắt ngoài Extint, lối vào này lập cờ ngắt INTF khi có sườn lên hoặc sườn xuống của xung tùy thuộc vào giá trị bít INTEDG trong thanh ghi OPTION.
Hình 15: Cổng RB và RB
Có 3 chân của cổng B được ghép lối với chức năng ICSP là RB6, RB7, RB3 tương ứng với lối vào PGC, PGD, LVP khi nạp trình. Mỗi chân trong cổng B được nối tới một điện trở kéo lên (pull- up) có trị số 20kΩ bên trong. Việc lựa chọn dùng/không dùng các điện trở này bằng cách xóa/đặt bít RBPU trong thanh ghi OPTION.
Lối vào RB4 và RB7 làm phát sinh ngắt RBIF khi thay đổi trạng thái khi các chân này định nghĩa là các lối vào. Trạng thái hiện tại của lối vào này được so sánh với trạng thái được chốt lại tại lần đọc trước đó. Khi có sự khác nhau thì cờ ngắt RBIF được lập.
2.4.3 Cổng C
Hình 16 Cổng C.
Cổng C là cổng 8 bit vào/ra hai hướng xem hình 16. Thanh ghi định hướng cổng là TRISC. Các chân của cổng C được ghép với các chức năng ngoại vi. Các lối vào của cổng C có bộ đệm kiểu trigger Schmitt. Bảng dưới đây liệt kê các chức năng ghép của cổng C.
Tên chân
Bít
Chức năng, ý nghĩa
RC0/T1OSO/T1CK1
Bit 0
Cổng vào/ra . lối tạo Timer 1.Lối vào xung nhịp Timer1
RV1/T1OSI/CCP2
Bít 1
Cổng vào/ra. Lối vào dao động Timer 1. Lối vào Capture2/lối ra compảe2. Lối ra PWM2
RC2/CPP1
Bit 2
Cổng vào/ra. Lối vào capture1/lối ra compare1. Lối ra PWM1
RC3/SCK/SCL
Bit 3
Lối ra xung nhịp của chế độ truyền đồng bộ tuần tự SPI hoặc I2C
RC4/SDI/SDA
Bit 4
Lối vào DATA của chế độ SPI, DATA I/O của I2C
RC5/SD0
Bit 5
Cổng vào/ra. Lối ra của cổng truyền đồng bộ tuần tự
RC6/TX/CK
Bit 6
Cổng vào/ra. Lối ra Tx của USART. Xung nhịp chế độ truyền đồng bộ
RC7/RX/DT
Bit 7
Cổng vào/ra. Lối vào Rx của USART. Dữ liệu chế độ truyền đồng bộ
2.4.4 Cổng D
Hình 17: Cổng D.
Cổng D là cổng 8 bit vào/ra hai hướng (xem hình 17). Thanh ghi định hướng cổng là TRISD. Các lối vào của cổng D có bộ đệm trigger schmitt. Cổng D có thể định dang là cổng song song 8 bit kiểu Slave, việc điều khiển các chức năng đọc/ghi/chọn cổng sử dụng các chân RE0/RE1/RE2 của cổng E.
2.4.5 Cổng E
Cổng E là cổng vào ra hai hướng gồm các chân RE0/RD/AN5, RE1/WR/AN6, RE2/CS/AN7 (xem hình 18). Thanh ghi TRISE định hướng cổng là vào/ra. Thanh ghi PORTE ghi các giá trị cần đưa ra cổng. Cổng E còn là các lối vào/ra điều khiển cổng vào/ra song song khi cổng D được thiết lập là cổng vào/ra song song. Các chân RE0/RE1/RE2 còn kênh vào điện áp tương tự thứ 6,7,8 của bộ biến đổi ADC.
Hình 18: Cổng E.
2.5 Các khối TIMER
2.5.1 Khối timer0
Khối timer0 (xem hình 19) là bộ đếm thời gian các đặc tính sau:
Bộ đếm 8 bit
Ghi/đọc được.
Có bộ chia 8 bit lập trình được.
Chọn xung nhịp bên ngoài hoặc bên trong.
Sinh ngắt TOIF khi tràn chuyền từ FFh→ 00h.
Chọn sườn xung khi lấy xung nhịp từ bên ngoài.
Timer0 dùng làm bộ đếm xung nhịp của vi điều khiển vể tạo ra một bộ đếm thời gian. Chế độ đếm thời gian được chọn bằng cách đặt bit T0CS = 0 (bit OPTION). Trong các chế độ đếm thời gian, thanh ghi TMR0 tăng một đơn vị sau mỗi chu kỳ máy. Thanh ghỉ TMR0 có thể được ghi đọc trong chương trình để xác lập hoặc lấy giá trị hiện thời của timer0.
Hình 19: Sơ đồ khối Timer0.
Timer0 dùng để đếm các xung từ bên ngoài cấp vào chân RA4. Chế độ đếm xung được chọn bằng cách đặt T0CS = 1. Trong chế độ này thanh ghi Timer0 tăng một đơn vị sau mỗi sườn lên hoặc sườn xuống tùy thuộc vào trạng thái của bit T0SE.
Bộ chia trước được dùng chung cho hai khối watchdog và Timer0. Việc gắn bộ chia trước cho khối nào được chọn bằng bít PSA(OPTION). Hệ số chia phụ thuộc giá trị của bit PS2:PS1:PS0 của thanh ghi OPTION.
Ngắt timer0 xảy ra khi thanh ghi TMR0 tràn, chuyển từ FFh→00h. Sự tràn này sẽ đặt bít T0IF = 1. Ngắt T0IF có thể che bằng bit T0IE. Cờ T0IF phải được xóa bằng phần mềm.
2.5.2 Khối Timer1
Hình 20: Sơ đồ khối Timer1.
Timer1 (xem hinh 20) là bộ đếm 16 bit được cấu tạo từ hai thanh ghi 8 bit TRM1H và TMR1L. Là hai cặp thanh ghi TRM1Hvà TMR1L tăng từ 0000h đến FFFFh rồi trở về 0000h. Ngắt TMR1IF nếu được cho phép sẽ tạo ra khi bộ đếm chuyển từ FFFFh về 0000h và lập bit TRM1IF. Ngắt này có thể cho phép /không cho phép bằng cách lập/xóa bit TMR1IE Thanh ghi T1CON để đặt các chế độ cho timer1.
-
-
T1CKPS1
T1CKPS0
T1OSCE
T1SYNC
TMR1CS
TMR1ON
Timer1 có thể làm việc trong hai chế độ: là bộ định thời gian hoặc là bộ đếm xung. Ý nghĩa các bít của thanh ghi T1CON
Bít 7-6 : không dùng
Bít 5-4 : T1CKPS1 chọn hệ số bộ chia trước
11= chia 8 01 = chia 2
10 = chia 4 00 = chia 1
Bit 3: T1OSCEn cho phép dùng bộ dao động
1 = bật bộ dao động
0 = có đồng bộ với xung nhịp
Bit 1 TMR1CS chọn nguồn xung nhịp
1 = xung nhịp ngoài đưa vào từ chân RC1
0 = xung nhị bên trong, bằng 1/ 4 tần số bên ngoài của dao động thạch anh
Bit 0 : TMR1ON bật/ tắt timer1
1 = bật timer1 – cho phép đếm
0 = tắt timer 1 – dừng đếm
3.5.3 Khối Timer2
Timer2 là bộ đếm 8 bít chia trước và chia sau. Nó có thể sử dụng được sử dụng như là bộ điều khiển chế độ xung PWM (Pulse Width Modulation ) trong khối CCP.
Hình 21 : Sơ đồ khối Timer2
Xung nhịp vào ( XTAN/4 ) qua bộ chia trước có các tỉ số 1:1 , 1:2 , 1:4 , 1:16 được chọn bằng hai bit T2CKPS1:T2CKPS0.
Timer2 có thanh ghi 8 bit PR2. Timer2 tăng từ 00h đến khi bằng giá trị lưu ở trong PR2 được gán là FFh khi khởi động lại.
Lối ra “bằng nhau” EQ của TMR2 đưa vào bộ chia sau 4 bit 1:1 , 1:2 , … 1:16 tạo ra ngắt TMR2 (lập trình TMR2IF = 1).
Timer2 có thể được tắt khi sử dụng đến bằng cách đặt lại bit TMR2CON = 0 nhằm giảm công suất tiêu thụ.
2.6 Cổng nối tiếp đồng bộ I2C
Hình 22: Khối MSSP
MSSP là khố điều khiển bus I2C hoạt động ở chế độ chủ (Master Mode ) hoặc chế độ tớ (Slave Mode ) (xem hinh 22). Khối này còn tạo ra các ngắt tại các bit START và STOP để xác định trạng thái bus trong chế độ đa chủ (Multi Master Mode ) (nhiều thiết bị I2C truy nhập tới thiết bị I2C tớ trong bus ).
Khối MSSP thực hiện các chế độ làm việc chuẩn 7 bit hoặc 10 bit địa chỉ.
Hai chân dùng để trao đổi dữ liệu là :
Xung nhịp SCL-RC3/SCK/SCL.
Dữ liệu nối tiếp SDA-RC4/SDI/SDA.
Các thanh ghi được sử dụng cho hoạt động các bus của I2C là:
Thanh ghi điều khiển MSSP(SSPCON).
Thanh ghi điều khiển 2 (SSPCON2).
Thanh ghi trạng thái (SSPSTAT).
Thanh ghi dịch (SSPSR).
Thanh ghi địa chỉ MSSP(SSPADD).
SSPCON , SSPCON2, SSPSTAT là thanh ghi điều khiển và đặt trạng thái của khối giao tiếp chuẩn I2C.
SSPSR là thanh ghi dịch để dịch dữ liệu ra/vào, không truy nhập trực tiếp. SSPBUF là thanh ghi đệm để dữ liệu được ghi vào/đọc ra.
SSPADD dùng để lưu địa chỉ của thiết bị tớ khi khối SSP được cấu hình là thiết bị tớ. Khi được cấu hình là thiết bị chủ, 7 bít thấp của SSPADD dùng để lưu giá trị mạch tạo tốc độ baud.
Trong chế độ nhận SSPSR và SSPBUF tạo thành cặp thanh ghi đệm kép. Khi SSPSR nhận đủ một byte, nó chuyển byte dữ liệu sang SSPBUF và lập cờ ngắt SSPIF.
Trong khi truyền việc viết một byte dữ liệu vào SSPBUF sẽ ghi vào cả hai thanh ghi SSPBUF và SSPSR.
2.7 Bộ thu phát không đồng bộ vạn năng UART
Bộ thu phát không đồng bộ UART truyền dữ liệu theo kiểu NRZ: bit START-8 bit dữ liệu – bit STOP. Một khối BRG (Baud Rate Generator) bên trong có vai trò tạo các tốc độ baud theo tiêu chuẩn bằng cách chia tần số xung nhịp lấy từ mạch dao động. Chức năng tạo bít kiểm tra chẵn lẻ không được hỗ trợ trên phần cứng nhưng điều này có thể thực hiện bằng phần mềm.
2.7.1 Khối truyền thông đồng bộ
Phần chính của khố là thanh ghi dịch TSR, nó nhận dữ liệu cần gửi từ thanh ghi TXREG trước đó được khối xử lý ghi vào (xem hình 23). TSR được nạp khi bít STOP của khung dữ liệu trước đã được truyền đi. Ngay sau khi bit STOP kết thúc TSR được nạp bằng nội dung của TXREG. TXREG rỗng và cờ ngắt TXIF được lập báo trạng thái TXREG đang rỗng. Việc truyền có thể được cho phép/cấm bằng cách lập/xóa bit TXEN.
Hình 23: Khối truyền thông không đồng bộ
2.7.2 Khối nhận không đồng bộ
Phần chính của bộ nhận nối tiếp là thanh ghi dịch nối tiếp RSR (xem hình 24). Sau khi lấy mẫu bit STOP, dữ liệu nhận RSR chuyển sang thanh ghi RCREG nếu thanh ghi này đang rỗng. Nếu việc chuyển thanh công, cờ ngắt RCIF được lập.
Hình 24: Khối nhận không đồng bộ.
RCREG là thanh ghi đệm kiểu FIFO cho phép lưu hai byte trong RCEG trong khi byte thứ 3 đang được dịch trong RSR. Nếu bit STOP của byte thứ 3 được nhận mà thanh ghi RCREG vần đang đầy thì bit báo lỗi tràn OERR(Oveflow Error) được lập để báo có sự tràn của bộ phận và byte nhận sẽ bị loại bỏ. Một bit báo lỗi khung truyền FERR (Frame Error) được lập khi không nhận được bit STOP.
2.8 Khối chuyển đổi tương tự/số ADC
Khối chuyển đôi tương tự/số có 8 lối vào được tích hợp trong vi điều khiển PIC16F877A có độ phân giải 10 bit (xem hình 25). Khối ADC có lối vào cho mức điện áp chuẩn V-ref và V+ref. Điện áp chuẩn cho khối ADC có thể lựa chọn bằng phần mềm với các điện áp nguồn Vdd/Vss hoặc điện áp chuẩn từ bên ngoài qua chân RA3/RA2.
Khối ADC có 4 thanh ghi
ADRESH lưu phần byte cao của kết quả biến đổi ADC
ADRESL lưu phần byte thấp của kết quả biến đổi ADC.
ADCON0 thanh ghi điều khiển 0.
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/DONE
-
ADON
ADCS1: ADCS0 Chọn nguồn xung nhịp và tốc độ cho khối biến đổi ADC.
CHS2: CHS0 Chọn kênh đưa vào biến đổi.
GO/DONE Trạng thái chuyển đổi.
ADON Bật/tắt khối chuyển đổi ADC.
Hình 25: Khối ADC
ADCON1 Thanh ghi điều khiển 1
ADFM
ADCS2
-
-
PCFG3
PCGF2
PCGF1
PCGF0
ADFM Định dạng kết quả biến đổi ADC
ADCS2 Lựa chọn tần số, nguồn xung nhịp cho khối ADC
PCFG3: PCFG0 Chọn cấu các lối vào khối ADC
2.9 Các đặc điểm riêng và thiết lập cấu hình PIC
2.9.1 Các điểm mới trong vi điều khiển PIC 16F877A
Vi điều khiển PIC 16F877A có nhiều bộ phận, đặc tính được tích hợp thêm để làm tăng tối đa độ tin cậy, giảm giá thành hệ thống do ít cần dùng thêm linh kiện cần thiết bên ngoài, có chế độ tích kiệm năng lượng và khả năng chống sao chép nội dung của chương trình.
Lựa chọn nguồn xung nhịp:
Tùy theo tần số và linh kiện tạo dao động để chọn một trong 4 cấu hình :
LP bộ dao động thạch anh công suất thấp, tần số < 200kHz.
XT bộ dao động thạch anh chuẩn, tần số 1MHz đến 4 MHz.
HS bộ dao động thạch anh tần số cao, tần số 4MHz đến 20 MHz.
RC bộ dao động đơn giản dùng điện và tụ điện.
Các mạch tạo trạng thái khởi động lại RESET
Hình 26: Các khối tạo tín hiệu RESET
Khối tạo ra tín hiệu RESET (xem hình 26) tạo ra các tín hiệu RESET khác nhau cho vi điều khiển tùy theo các điều kiện sau:
Reset khi vi điều khiển mới được cấp nguồn POR (Power on Reset)
Lối vào MCRL Master Clear trong chế độ hoạt động bình thường.
Lối vào MCRL Master Clear trong chế độ nghỉ SLEEP.
Bộ đếm WDT tràn tạo ra tín hiệu Reset khi hoạt động bình thường.
Bộ đếm WDT tràn tạo ra tín hiệu Wake-up trong chế độ SLEEP.
Khối giám sát điện áp nguồn tạo tín hiệu Reset khi nguồn cấp sụt quá ngưỡng.
Các ngắt Interrupt
Trong vi điều khiển PIC 16F877A có 15 nguồn sinh ra ngắt (xem hinh 27). Thanh ghi điều khiển ngắt INTCON ghi các cờ ngắt và các bit cho phép ngắt toàn cục GIE, T0IF, RBIF. Các ngắt từ các thiết bị ngoại vi được ghi trong thanh ghi PIR1 và PIR2, các bit cho phép ngắt ngoại vi trong thanh ghi PIE1, PIE2.
Hình 27: tổ hợp logic các nguồn ngắt.
Khi cờ ngắt được lập, cờ cho phép ngắt GIE được xóa để cấm các ngắt khác. Địa chỉ sẽ quay lại để cất vào ngăn xếp và thanh ghi đếm chương trình PC được nạp giá trị 0004h là địa chỉ của chương trình xử lý ngắt.
Nguồn sinh ngắt được xác định bằng cách hỏi vòng các cờ ngắt. Sau khi xử lý xong ngắt, cờ ngắt tương ứng phải được xóa để thoát vòng lặp ngắt.
Bộ đếm watchdog
Bộ đếm watchdog là một nộ đếm xung từ một khối dao động riềng độc lập với xung nhịp của vi điều khiển, nó có chức năng giám sát hoạt động của chương trình (xem hình 28). Nếu vi điều khiển do bị treo do lỗi phần mềm thì vi điều khiển có thể tự khởi động lại.
Khi sử dụng bộ giám sát watchdog, chương trình phải được thiết kế sao cho bộ đếm watchdog phải được xóa về 0 sau một chu kỳ nhất định để bộ đếm này không bị tràn. Nếu vì một lý do nào đó chương trình xóa bộ đếm watchdog bộ đếm bị tràn : chuyển từ FFh về 00h sẽ sinh ra tín hiệu WDT time out Reset.
Khối watchdog dùng chung bộ chia trước với Timer0. Chu kỳ tràn của bộ đếm watchdog có thể xác lập trong dải 18.2ms đến 2,5s.
Hình 28: Khối chức năng mạch watchdog
2.9.2 Định cấu hình – Từ cấu hình (Config Word)
Việc xác định các chế độ làm việc hay thiết lập các lựa chọn riêng cho vi điều khiển PIC 16F877A được thực hiện bằng việc thiết lập/xóa các bit chức năng trong một từ mà điều khiển đặc biệt gọi là Từ cấu hình (Config Word ) tại địa chỉ 2007h. Từ cấu hình này chỉ được truy nhập thay đổi trong quá trình nạp trình.
Từ cấu hình gồm 14bit, trong đó có 3 bit không dùng.
Ý nghĩa các bit trong cấu hình.
CP Bảo vệ bộ nhớ chương trình.
1 = cho phép đọc chương trình trong bộ nhớ ra
0 = cấm đọc chương trình.
DEBUG Cho phép debug trên hệ thống.
1 = không sử dụng debug trên hệ thống : RB6 , RB7 là chân vào/ra.
0 = Sử dụng debug trên hệ thống: RB6, RB7 là chân nối đến mạch debug.
WRT1:WRT0 cho phép ghi vào bộ nhớ chương trình.
11 = Không chống ghi tất cả mọi địa chỉ.
10 = 0000h – 00FFh bị cấm ghi đè.
01 = 0000h – 03FFh bị cấm ghi đè.
00 = 0000h – 0FFFh bị cấm ghi đè.
CPD Bảo vệ bộ nhớ dữ liệu.
1 = cho phép đọc bộ nhớ dữ liệu ra.
0 = cấm đọc ra.
LVP Cho phép chế độ nạp trình điện áp thấp.
1 = RB3/PGM có chức năng nạp trình.
0 = RB3 là chân vao/ra.
BOREN Cho phép khởi động lại nguồn cung cấp sụt quá ngưỡng.
1 = cho phép BOREN.
0 = cấm BOREN.
PWRTEN Cho phép bộ đếm timer khi bật nguồn.
1 = cấm PWRT.
0 = cho phép PWRT.
WDTEN Cho phép bộ giám sát watchdog.
1 = cho phép WDT.
0 = cấm WDT.
FOSC1: FOSC0 lựa chon nguồn dao độn.
11 = dao động RC. 01 = dao động XT
10 = dao động HS. 00 = dao động LP
CHƯƠNG 3: XÂY DỰNG HỆ ĐO NHỊP TIM
3.1. Giới thiệu về LED
Hình 29 : Hình ảnh của LED
LED (viết tắt của Light Emitting Diode, có nghĩa là điốt phát quang) là các điốt có khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại (xem hình 29). Cũng giống như điốt, LED được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán dẫn loại n.
Led là một nguồn ánh sáng được lựa chọn cho việc đo nhịp tim. Kích thước của chúng là một đặc tính tuyệt vời cho việc điều khiển và truyền dẫn. Ánh sáng của chúng phát ra rộng trên một giải phổ rất hẹp tạo cho chúng một ý tưởng chọn lựa cho nguồn sáng, giữa nguồn ánh sáng đỏ và ánh sáng hồng ngoại sử dụng trong đo nhịp tim.
Những Led sẵn có thì thường có bước sóng trên 700 nm, từ ánh sáng màu xanh của khoảng phổ nhìn thấy cho đến vùng hồng ngoại gần.
3.2.1 Hoạt Động
Hình 30 : Hoạt động của LED giống với nhiều loại điốt bán dẫn
Khối bán dẫn loại p chứa nhiều lỗ trống tự do mang điện tích dương nên khi ghép với khối bán dẫn n (chứa các điện tử tự do) thì các lỗ trống này có xu hướng chuyễn động khuếch tán sang khối n. Cùng lúc khối p lại nhận thêm các điện tử (điện tích âm) từ khối n chuyển sang. Kết quả là khối p tích điện âm (thiếu hụt lỗ trống và dư thừa điện tử) trong khi khối n tích điện dương (thiếu hụt điện tử và dư thừa lỗ trống).
Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khi chúng tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành các nguyên tử trung hòa. Quá trình này có thể giải phóng năng lượng dưới dạng ánh sáng (hay các bức xạ điện từ hình 30 a).
Nguyên lý hoạt động của diode phát quang (LED) là sự tái hợp bức xạ của điện tử và lỗ trống trong vùng chuyển tiếp p-n của chất bán dẫn khi phân cực thuận. Khi phân cực thuận điện tử được tiêm (bơm) từ nguồn nuôi vào phía bán dẫn loại n và lỗ trống vào phía bán dẫn loại p. Tại vùng chuyển tiếp p-n các điện tử và lỗ trống tiêm vào tái hợp với nhau sinh ra bức xạ tự phát (hay huỳnh quang). Bức xạ tự phát gồm các photon có năng lượng hn = Eg, có các hướng lan truyền, pha và phân cực khác nhau, đó là ánh sáng phát ra của LED (Hình 30 b). Tuy nhiên, cấu trúc LED với lớp chuyển tiếp p-n đơn thuần cho hiệu suất phát quang rất yếu nên những LED trên thực tế có cấu trúc dị chuyển tiếp dị thể (heterojunction) kép.
Bước sóng ánh sáng LED phát ra phụ thuộc vào vật liệu ở vùng tích cực, hay cụ thể hơn - vào độ rộng vùng cấm Eg của vật liệu này.
l = hn /Eg » 1,24/ Eg
Với l tính theo mm và Eg theo eV.
Hình 31.c: Phổ quang của LED
Hình 31.b: Đặc trưng dòng - thế (I-V) của LED
Hình 31.a: Đặc trưng công suất quang – dòng bơm của LED
3.2.2 Một số tính chất cơ bản của LED
Đặc trưng công suất quang – dòng bơm (P-I) là đặc trưng quan trọng nhất của LED (Hình 30.a). Đường cong P-I là gần tuyến tính, ở dòng bơm lớn đường cong sẽ hở nên bão hoà do sự vượt qua rào thế của các hạt tải bơm vào làm giảm nồng độ hạt tải trong vùng tích cực của LED. Đường cong I-V của LED (hình 30.b) là đường cong phi tuyến được xác định bởi phương trình Shockley
I = Is [ exp(bV)-1]
Với b = q/hkBT, V là thế đặt vào (sụt trên diode), q - điện tích điện tử, kB - hằng số Boltzmann, T là nhiệt độ. Khi dòng bơm ¹ 0 sụt thế trên chuyển tiếp tăng đột ngột tới giá trị Vf (sụt thế thuận), sau đó thế tăng từ từ và đạt gía trị không đổi khi dòng bơm tăng tiếp trong trường hợp lý tưởng. Khi có điện trở nối tiếp của LED V tăng tiếp tục khi I tăng. Hiệu suất lượng tử ngoại của LED là hiệu suất chuyển đổi năng lượng điện thành năng lượng quang phát ra được tính theo công thức:
hext = (Pout/IV) x 100%
Với Pout là công suất quang, I và V là dòng bơm và thế sụt trên LED.Phổ quang của LED có độ bán rộng phổ Dl có thể tính gần đúng theo công thức:
Dl [mm] » l2 [mm] (3kT/hc) [eV]
Với l là bước sóng danh định của LED, k- hằng số Boltzmann và T là nhiệt độ chuyển tiếp, h - hằng số Planck, c - tốc độ ánh sáng.
Chùm tia sáng của LED phát trên mặt là đối xứng (góc mở 2a ~ 2 x 90o) do vùng phát ánh sáng thường là hình tròn (f ~ 0,4 ¸ 1,5
Các file đính kèm theo tài liệu này:
- Nghiên cứu các ứng dụng cảm biến quang.doc