Đo nhiệt độ dùng LM35
Trang 1Lời nói đầu
Đồ án 1 là môn học giúp môn học sinh viên áp dụng những gì mình đã họcvào trong thực tiễn, trực tiếp thực hiện những công đoạn trong quá trình làm mộtmạch điện tử thông thường.Qua thời gian tìm hiểu những kiến thức về điện tử để
hoàn thành đề tài “ ĐO NHIỆT ĐỘ DÙNG LM35” của đồ án điện tử Em đã
góp được nhiều kiến thức để bổ sung và hiểu thêm về những gì mà thầy cô đãtruyền đạt cho em trong quá trình học tập tại trường Từ đó, em có thể tự tin hơnsau khi tốt nghiệp đi làm về những lĩnh vực có liên quan
Để có kiến thức và kết quả ngày hôm nay, trước hết em cảm ơn thầy côtrường Đại học Tôn Đức Thắng đã giảng dạy và trang bị cho em những kiếnthức về ngành mà em theo học Đặc biệt, em xin gửi lời biết ơn sâu sắc đến thầy
Đỗ Đình Thuấn đã dành nhiều thời gian và tâm huyết hướng dẫn tìm hiểu vàgiúp em hoàn đồ án này.Bên cạnh đó, em xin gửi lời cảm ơn chân thành đến cácanh, chị trong Thư viện trường Đại học Tôn Đức Thắng đã tạo điều kiện thuậnlợi tìm tài liệu kham khảo và có không gian yên tĩnh, thoải mái để hoàn thành đồ
án này
Mặc dù chúng em đã có nhiều cố gắng hoàn thành đề tài bằng tất cả sựnhiệt tình và năng lực của mình, tuy nhiên do kiến thức còn hạn chế và phạm vicho phép không thể tránh khỏi những thiếu sót, em kính mong nhận được sự cảmthông và những ý kiến đóng góp chân thành của quí thầy cô và các bạn
Em xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày 24 tháng 11 năm 2011
Trang 2NHẬN XÉT CỦA GIÁO VIÊN:
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
……….
Trang 3Mục lục
Lời Cảm ơn……….……….……2
Chương I – Tổng quan về đề tài ……… ……… 7
1.1.Giới thiệu……….……… 7
1.2.Mục đích của đề tài………7
Chương II – Thiết kế……… 8
1.1.Giới thiệu về IC……….8
1.1.1.Giới thiệu về PIC……….8
1.2.Giao thức hiển thị………22
1.3.Giới thiệu linh kiện sử dụng……… 25
1.3.1.LM35……….25
1.3.2.Thạch anh……… 27
1.3.3.Điện trở……….……….28
1.3.4.Tụ Điện……….……….29
1.4.Tính toán………30
1.5.Thiết kế……….……… 31
Chương III – Thi công và thực hiện mạch……….…….33
Chương IV – Kết luận và hướng phát triển……….……35
4.1.Kết luận……….……….…….35
4.2.Hướng phát triển……….…………35
Trang 4Các hình vẽ:
Hình 1: Sơ đồ chân PIC16F877A……….…8
Hình 2 : Sơ đồ khối vi điều khiên PIC16F877A……….11
Hình 3: Sơ đồ khối bộ chuyển đổi ADC……… 16
Hình 4 : LCD thực tế………22
Hình 5 : LM35……….25
Hình 6 : Các loại thạch anh……… …… 27
Hình 7 : Điện trở 1KΩ……… …….28
Hình 8 : Tụ sứ……… ……….… 29
Hình 9 : Sơ đồ khối của mạch………31
Hình 10 : Sơ đồ nguyên lý của mạch……….32
Hình 11 : Mạch lúc thi công xong……….……… 33
Hình 12 : Mạch lúc chạy……….…………33
Trang 5Các từ viết tắt :
PIC : Programable Intelligent Computer
ADC : Analog to Digital Converter
Tài liệu tham khảo :
- Tài liệu trên mạng
- Các trang web : www picvietnam.com
www.Dientuvietnam.net
Chương I – Tổng quan về đề tài
Trang 61.1 Giới thiệu
Đề tài “ Đo nhiệt độ dùng LM35, hiển thị trên LCD” là một đề tài không mới
và đã có nhiều sinh viên nghiên cứu Nhưng năm nay, đề tài được viết cho
chip PIC16F877A và dùng CCS để lập trình
1.2 Mục đích của đề tài
`- “Đo nhiệt độ dùng LM35, hiển thị trên LCD” dùng để đo nhiệt độ thực củamôi trường, giao tiếp với LCD4bit…Qua đề tài này, sinh viên sẽ có thêmkiến thức về lập trình CCS, tiếp cận với PIC, LCD…và làm mạch thực tế
Chương II –Thiết Kế
1.1.Giới thiệu về IC:
1.1.1.Giới thiệu về PIC:
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạmdịch là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt têncho vi điều khiển của họ : PIC1650 được thiết kế để dùng làm cho các thiết
bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiêncứu phát triển thêm và từ đó hình thành nên
Hình 1:Sơ Đồ Chân Vi Điều Khiển PIC16F877A
Trang 7Một số thông số về Vi Điều Khiển PIC16F877A
Đây là vi điều khiển thuôc họ PIC 16FXXX với tập lệnh gồm 35 lệnh có độ dài
14 bit, mỗi lệnh đều được thực thi trong một chu kỳ xung Clock Tốc độ hoạtđộng tối đa cho phép là 20MHz với một chu kỳ lệnh là 200ns Bộ nhớ chươngtrình 8Kx14 bit, bộ nhớ dữ liệu 368x8 buyte Ram và bộ nhớ dữ liệu EEPROMvới dung lượng Số PORT I/O là 5 với 33pin I/O
Các đặc tính ngoại vi bao gồm các khối chức năng sau :
Timer 0 : bộ đếm 8 bit với bộ chia tần số 8 bit
Trang 8Timer 1 : bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năngđếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ.
Timer 2 : bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rộng xung
Các chuẩn giao tiếp nối tiếp SSP (Synchonous Serial Port), SPI và I2C.Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP ( Parallel Slave Port) với các chân điềukhiển RD, WR, CS ở bên ngoài
Các đặc tính Analog :
8 kênh chuyển đổi ADC 10 bit
Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như :
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
Khả năng tự nạp chương trình với sự điều khiển của phần mềm
Nạp được chương trình ngay trên mạch điện ICSP thông qua 2 chân
Watchdog Timer với bộ dao động trong
Chức năng bảo mật mã chương trình
Trang 9Chế độ Sleep.
Có thể hoạt động với nhiều dạng Oscillator khác nhau
Trang 10Sơ đồ khối vi điều khiển PIC16F877A :
Trang 11Hình 2: Sơ đồ khối vi điều khiển PIC16F877A
Các cổng xuất nhập của PIC160F877A
Vi điều khiển PIC16F877A cĩ 5 cổng xuất nhập bao gồm PORT A,PORTB,PORT C, PORT D, PORT E Cấu trúc và chức năng của từng cổng xuất nhập
sẽ được đề cập cụ thể trong phần sau
2.1/PORT A
PORT A (RPA) bao gồm 6I/O pin Đây là các chân :hai chiều” nghĩ là cĩthể xuất và nhập được Chức năng I/O này được điều khiển bởi thanh ghiTRISA
(địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA là input, ta
“set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngượclại, muốn xác lập chức năng của một chân trong PORTA là output, ta “clear”bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tác nàyhoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứngTRIS (đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTClà TRISC, đối với PORTD là TRISD vàđối với PORTE là TRISE) Bên cạnhđó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vàoxung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (MasterSynchronous Serial Port)
Trang 12PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quátrình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau.PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tíchhợp chức năng điện trở kéo lên được điều khiển bởi chương trình
2.3/PORTC
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh,bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART
2.4/PORTD
(RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD.PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel SlavePort)
2.5/PORTE
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn làcác chân điều khiển của chuẩn giao tiếp PSP
• TIMER 0 : là bộ đếm 8 bit,được kết nối với bộ chia tầng số 8 bit Cấutrúc của TIMER0 cho phép chọn lựa xung clock tác động và cạnh tíchcực của xung clock
• TIMER 1 : là bộ định thời 16 bit, giá trị của TIMER 1 sẻ được ghitrong hai thanh ghi(TRM1H, TRM1L)
Trang 13• TIMER 2: là bộ định thời 8 bit và được hổ trợ bởi hai bộ chia tần sốprescaler và postscaler Ngõ ra của TIMER 2 dược đưa qua bộ chia tần
số postcaler điều khiển cờ ngắt
Là bộ so sánh,bao gồm hai bộ so sánh tín hiệu Analog và được đặt ở PORTA.Ngõ vào bộ so sánh là các chân RA3,RA0 ngõ ra là hai chân RA4 vàRA5.Thanh ghi điều khiển bộ so sánh là CMCON
Bộ chuyển đổi ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạngtương tự và số
PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hiệu điện thếchuẩn VREF có thể
được lựa chọn là VDD, VSS hay hiệu điện thể chuẩn được xác lập trên haichân RA2 và RA3
Kết quả chuyển đổi từ tín tiệu tương tự sang tín hiệu số là 10 bit số tương ứngvà được lưu
trong hai thanh ghi ADRESH:ADRESL Khi không sử dụng bộ chuyển đổiADC, các thanh
ghi này có thể được sử dụng như các thanh ghi thông thường khác Khi quátrình chuyển đổi
hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit(ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set
Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:
Trang 14Thiết lập các thông số cho bộ chuyển đổi ADC:
Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghiADCON1)
Chọn kênh chuyển đổi AD (thanh ghi ADCON0)
Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0)
Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0)
Thiết lập các cờ ngắt cho bộ AD
1.Clear bit ADIF
2.Set bit ADIE
Set bit PEIE
Set bit GIE
3 Đợi cho tới khi quá trình lấy mẫu hoàn tất
4 Bắt đầu quá trình chuyển đổi (set bit )
5 Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
Kiểm tra bit Nếu =0, quá trình chuyển đổi đã hoàn tất.Kiểm tra cờ ngắt
6 Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit (nếu cần tiếptục chuyển
đổi)
7 Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo
Trang 15Hình 3: Sơ đồ khối bộ chuyển đổi ADC.
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE,PEIE)
PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF)
PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE)
ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quảchuyển đổi AD
Trang 16ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số chobộ
chuyển đổi AD
PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vàoanalog ở PORTA
PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vàoanalog ở PORTE
ADC trong CCS:
Những sự lựa chọn này cho phép người sử dụng định hình thể và sử dụng
bộ chuyển đổi từ tín hiệu tương tự sang tín hiệu số.Chúng chỉ cĩ sẵn trên thiết bị với phần cứng ADC.Sự lựa chọn cho những chức năng và chỉ dẫn thay đổi phụ thuộc vào con chip và đã được liệt kê trong phần header file của thiết bị.Trên 1 vài thiết bị cĩ 2 bộ ADC độc lập đối với những chip này bộ ADC thứ 2 được định hình thể để sử dụng chức năng cài đặt ADC thứ cấp(Ví dụ setup_ADC2)
Những chức năng cĩ liên quan:
ADC_OFF
ADC_CLOCK_INTERNAL
ADC_CLOCK_DIV_32
Trang 17Trả về:Không được định nghĩa
Chức năng: Định hình thể chuyển từ tín hiệu tương tự sang tín hiệu số
Tiện lợi:Chỉ có trong những thiết bị có bộ chuyển đổi tín hiệu tương tự sang tín hiệu số
Yêu cầu:Những hằng số đã được định nghĩa trong tập tin h của thiết bị
Xem thêm: setup_adc_ports(), set_adc_channel(), read_adc(), #device, ADC
overview,xem tập tin header của thiết bị đã được chọn
setup_adc_ports(value):Thiết lập những chân ADC có sẵn để chuyển từ tín hiệu tương tự sang tín hiệu số
Cú pháp: setup_adc_ports (value)
Thông số: value -Một hằng số được định nghĩa trong tập tin h của thiết bị
Trả về:Không được định nghĩa
Chức năng:Cài đặt những chân ADC là tín hiệu tương tự,tín hiệu số hoặc một sự kết hợp và điện áp tham chiếu để sử dụng khi tính tóan giá trị ADC.Sự kết hợp các chân tín hiệu tương tự đã được cho phép thay đổi phụ thuộc vào con chip và được định nghĩa bằng cách sử dụng từng bit OR để ghép những chân đã được chọn cùng với nhau.Kiểm tra thiết bị bao gồm tập tin các chân và điện áp tham chiếu đã được sắp đặt trong danh sách hòan chỉnh.Hằng số ALL_ANALOG và NO_ANALOG là hợp lý cho tất cả con chip.Một vài ví dụ khác định nghĩa chân
là :
Trang 18ANALOG_RA3_REF- Kích họat tất cả các chân tín hiệu tương tự và chân RA3
là điện áp tham chiếu
RA0_RA1_RA3_ANALOG- Chỉ có chân RA0,RA1,RA3 là tín hiệu tương tựTiện lợi:Chức năng này có sẵn trong các thiết bị với phần cứng Analog/DigitalYêu cầu: Những hằng số đã được định nghĩa trong tập tin h của thiết bị
Ví dụ:
//Tất cả các chân analog
setup_adc_ports( ALL_ANALOG );
Chân A0,A1,A3 là analog,và tất cả các chân còn lại là digital Điện áp +5V được
sử dụng như điện áp tham chiếu
Xem them: setup_adc(), read_adc(), set_adc_channel(), ADC overview
set_adc_channel(channel):Chỉ rõ những kênh dung để sử dụng cho việc gọi Analog/Digital
Cú pháp: set_adc_channel (chan)
Thông số:Chân là số kênh được chọn.Số chân bắt đầu tại 0 và đã được đặt nhãn trong datasheet AN0,AN1
Trả về:Không được định nghĩa
Chức năng:Chỉ rõ những kênh được sử dụng cho việc gọi lệnh
READ_ADC().Hãy biết rằng bạn phải chờ 1 khỏang thờii gian ngắn sau khi thayđổi kênh trước khi bạn có thể nhận được giá trị đọc hợp lý.Thời gian thay đổi phụ thuộc vào trở kháng của nguồn đầu vào.Khỏang 10us nói chung là tốt cho
Trang 19hầu hết các ứng dụng.Bạn không cần thay đổi kênh trước mỗi lần đọc nếu kênh không thay đổi
Tiện lợi:Chức năng này có sẵn trong các thiết bị với phần cứng Analog/DigitalYêu cầu:Không cần thứ gì
Ví dụ: set_adc_channel(2);
delay_us(10);
value = read_adc();
Ví dụ những tập tin: ex_admm.c
Xem thêm: read_adc(), setup_adc(), setup_adc_ports(), ADC overview
read_adc(mode):Bắt đầu quá trình chuyển đổi và đọc giá trị.Chế độ này có thể
cũng điều khiển chức năng
Cú pháp: value = read_adc ([mode])
Thông số: mode là một thông số không bắt buộc.Nếu được sử dụng giá trị có thể:
ADC_START_AND_READ (Liên tục đọc,và đây là mặc định )
ADC_START_ONLY (Bắt đầu quá trình chuyển đổi và trả về giá trị)
ADC_READ_ONLY (Đọc kết quả chuyển đổi cuối cùng )
Trả về:8 bit hoặc 16 bit số nguyên phụ thuộc vào #DEVICE ADC= directive (directive:lời chỉ dẫn,8 hoặc 16)
Chức năng: Đây là chức năng đọc giá trị số từ bộ chuyển đổi tín hiệu tương tự sang tín hiệu số.Gọi lệnh setup_adc(), setup_adc_ports() and set_adc_channel() nên được làm vài lần trước khi chức năng này được gọi.Dãy giá trị trả về phụ thuộc vào số lượng bit tbộ chuyển đổi Analog/Digital trong con chip và sự sắp đặt trong DEVICE ADC= directive như sau:
#DEVICE 8 bit 10 bit 11 bit 12 bit 16 bit
ADC=8 00-FF 00-FF 00-FF 00-FF 00-FF
ADC=10 x 0-3FF X 0-3FF x
Trang 20ADC=11 x x 0-7FF x x
ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFF0 0-FFFF
Lưu ý:X không được định nghĩa
Tiện lợi:Chức năng này có sẵn trong các thiết bị với phần cứng Analog/DigitalYêu cầu: Những chân cố định đã được định nghĩa trong tập tin h của thiết bị
Ví dụ tập tin: ex_admm.c, ex_14kad.c
Xem thêm : setup_adc(), set_adc_channel(), setup_adc_ports(), #DEVICE, ADCoverview
ADC_done():Trả về 1 nếu bộ chuyển đổi đã hòan thành việc chuyển đổi của nó Tiền xử lý có liên quan:
#DEVICE ADC=xx : Định hình thể read_adc rồi trả về kính thước.Ví dụ, sử dụng 1 con PIC với 10 bit A/D bạn có thể sử dụng 8 hoặc 10 cho xx- 8 sẽ trả về bye có trọng số cao nhất,10 sẽ trả về tòan bộ giá trị đọc A/D 10 bit
Các ngắt có liên quan:
Trang 21INT_AD: Ngắt xảy ra khi quá trình chuyển đổi đã hòan tất
INT_ADOF: Ngắt xảy ra khi quá trình chuyển đổi trong thời gian chờ Các tập tin có liên quan:
Không có,tất cả chức năng được cài đặt sẵn
Các thông số getenv() có liên quan:
ADC_CHANNELS : Số kênh Analog/Digital
ADC_RESOLUTION : Số lượng bit trả về bởi lệnh read_adc