bộ đo nhiệt độ dùng vi điều khiển 8051, hiển thị LED 7 thanh Ngày nay cùng với sự tiến bộ của khoa hoc kỹ thuật, đời sống xã hội ngày càng phát triển cao dựa trên những ứng dụng của khoa học vào đơi sống. Vì vậy mà những ứng dụng mang tính tự đông ngày càng được ứng dụng rộng rãi. Trong đó có sự đóng góp không nhỏ của kỹ thuật vi điều khiển. Các bộ vi điều khiển đang được ứng dụng rộng rãi và xuất hiên ngày càng nhiều trong lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết là các thiết bị được điều khiên tự động từ các thiệt bị văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiên nghi cho con người trong thời đại công nghiệp hóa, hiện đại hóa. Đo nhiệt độ môi trường bây giờ trở nên khá đơn giản và dễ làm. Không cần phải nhiệt kế thủy ngân nữa mà chúng ta hãy ứng dụng những kiến thức đã học vào để làm 1 mạch đo nhiệt độ đơn giản. Một phần cải thiện kiến thức lập trình và cách xử lý tín hiệu tương tự sang số mà chúng ta gọi tắt là ADC. Đề tài này có sự tham gia của tất cả các thành viên trong nhóm.Tất cả đã cùng hợp tác với nhau để cho ra sản phẩm cuối cùng. Mặc dù đã cố gắng rất nhiều, nhưng chắc chắn bản báo cáo này sẽ còn nhiều thiếu sót vì đây là lần đầu em tham gia làm mạch nên có rất ít kinh nghiệm. Rất mong được sự góp ý của thầy.
Trang 1NHẬN XÉT CỦA GIÁO VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Hà Nội, Ngày Tháng Năm 2013
Giáo viên hướng dẫn
Trang 2MỤC LỤC Trang
PHẦN I: MỞ ĐẦU………1
PHẦN II: LÝ THUYẾT ĐỒ ÁN……….2
2.1 HỆ VI XỬ LÝ AT89S52………2
2.1.1 Tổng quan về 89S52……… 2
2.1.2 Mô tả chân của AT89S52……… 3
2.1.3 Chức năng các chân của AT89S52………4
2.2 NGUYÊN LÝ ĐO LƯỜNG CỦA 1 SỐ LINH KIỆN (ADC 0804 và LM35)……… 6
2.2.1 Chip ADC0804……….6
2.2.2 Cảm biến LM335……….9
2.2.3 LCD 16x2……….14
PHẦN III: THIẾT KẾ MẠCH………17
3.1 CÁC LINH KIỆN SỬ DỤNG ………17
3.2 SƠ ĐỒ MẠCH IN ……….……… 17
3.3 SƠ ĐỒ NGUYÊN LÝ……….18
3.4 LẬP TRÌNH CHO VI ĐIỀU KHIỂN……….19
PHẦN IV: KẾT LUẬN……… 19
PHẦN V : PHỤ LỤC……….20
PHẦN VI :TÀI LIỆU THAM KHẢO……… …2
Trang 3PHẦN I MỞ ĐẦU
I LỜI MỞ ĐẦU
Ngày nay cùng với sự tiến bộ của khoa hoc kỹ thuật, đời sống xã hội ngày càng phát triển cao dựa trên những ứng dụng của khoa học vào đơi sống Vì vậy
mà những ứng dụng mang tính tự đông ngày càng được ứng dụng rộng rãi Trong
đó có sự đóng góp không nhỏ của kỹ thuật vi điều khiển Các bộ vi điều khiển đang được ứng dụng rộng rãi và xuất hiên ngày càng nhiều trong lĩnh vực kỹ thuật
và đời sống xã hội Hầu hết là các thiết bị được điều khiên tự động từ các thiệt bị văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm đem lại sự tiên nghi cho con người trong thời đại công nghiệp hóa, hiện đại hóa
Đo nhiệt độ môi trường bây giờ trở nên khá đơn giản và dễ làm Không cần phải nhiệt kế thủy ngân nữa mà chúng ta hãy ứng dụng những kiến thức đã học vào để làm 1 mạch đo nhiệt độ đơn giản Một phần cải thiện kiến thức lập trình và cách xử
lý tín hiệu tương tự sang số mà chúng ta gọi tắt là ADC
Đề tài này có sự tham gia của tất cả các thành viên trong nhóm.Tất cả đã cùng hợp tác với nhau để cho ra sản phẩm cuối cùng
Mặc dù đã cố gắng rất nhiều, nhưng chắc chắn bản báo cáo này sẽ còn nhiều thiếu sót vì đây là lần đầu em tham gia làm mạch nên có rất ít kinh nghiệm Rất mong được sự góp ý của thầy
Trang 4PHẦN II LÝ THUYẾT LIÊN QUAN
2.1 HỆ VI XỬ LÝ AT89S52
2.1.1 Tổng quan về 89S52
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất Các sản phẩm
AT89S52 thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và cáctoán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữliệu nhanh trên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những lệnh
số học 8 bit gồm cả lệnh nhân và lệnh chia Nó cung cấp những hổ trợ mở rộngtrên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho phép quản
lý và kiểm tra bit trực tiếp trong hệ thống điều khiển
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc cóthể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3
TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
3 bộ Timer/counter 16 Bit
Trang 5 128 Byte RAM nội.
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại
4 ∞ s cho hoạt động nhân và chia
2.1.2 Mô tả chân của AT89S52
Trang 6
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng: trong
các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường
IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ vàbus dữ liệu
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng
kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với cácthiết bị dùng bộ nhớ mở rộng
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép.
Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệđến các đặc tính đặc biệt của 89S52 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
Ngõ vào dữ liệu nối tiếp
Ngõ xuất dữ liệu nối tiếp
Ngõ vào ngắt cứng thứ 0
Ngõ vào ngắt cứng thứ 1
Ngõ vào TIMER/ COUNTER thứ 0
Ngõ vào của TIMER/ COUNTER thứ1
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
Tín hiệu đọc bộ nhớ dữ liệu ngoài
Trang 7PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương
trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN ởmức cao
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và
dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ
30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kếtnối chúng với IC chốt
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò làđịa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
Trang 8EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức
1 hoặc mức 0 Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội Nếu ởmức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làmchân cấp nguồn 21V khi lập trình cho Eprom trong 89S52
RST (Reset): Khi ngõ vào tín hiệu này đưa
lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch phải tự động reset
Các giá trị tụ và điện trở được chọn là:
R1=10Ω, R2=220Ω, C=10 F
Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên trong 89s52 Khi sử dụng 89s52, người ta chỉ cần nối thêm thạch anh và các tụ Tần số thạch anh tùy vào mục đích của người sử dụng, giá trị tụ thường được sủ dụng là 33pF
2.2 NGUYÊN LÝ ĐO LƯỜNG CỦA 1 SỐ LINH KIỆN
2.2.1 Chip ADC0804
Chíp ADC 0804 là bộ chuyển đổi tương tự sang số trong họ các loạt ADC
0800 từ hãng National Semiconductor Nó cũng được nhiều hãng khác sản xuất, làm việc với +5V và có độ phân giải là 8 bít Ngoài độ phân giải thì thời gian chuyển đổi cũng là một yếu tố Quan trọng khác khi đánh giá một bộ ADC Thời gian chuyển đổi được định nghĩa như là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân Trong ADC 0804 thời gian chuyển đổi thay đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R và CLK IN
nhưng không thể nhanh hơn 110µ s Các chân của ADC 0804 được mô tả như sau:
- CS (Chip select): Chân số 1, là chân chọn chip, đầu vào tích cực mức thấp được sử dụng để kích hoạt Chip ADC0804 Để truy cập tới ADC0804 th́ chân này phải được đặt ở mức thấp
- RD (Read): Chân số 2, là chân nhận tín hiệu vào tích cực ở mức thấp Các bộ chuyển đổi của 0804 sẽ chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó ở một thanh ghi trong Chân RD được sử dụng để cho phép đưa dữ liệu đã được chyển đổi tới đầu ra của ADC0804 Khi CS = 0 nếu có một xung cao xuống thấp
áp đến chân RD thì dữ liệu ra dạng số 8 bit được đưa tới các chân dữ liệu (DB0 – DB7)
Trang 9- WR (Write): Chân số 3, đây là chân vào tích cực mức thấp được dùng báo cho ADC biết để bắt đầu quá trình chuyển đổi Nếu CS = 0 khi WR tạo ra xung cao xuống thấp thì bộ ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin thành số nhị phân 8 bit Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống thấp.
- CLK IN và CLK R: CLK IN (chân số 4), là chân vào nối tới đồng hồ ngoài được sử dụng để tạo thời gian Tuy nhiên ADC0804 c ũng có một bộ tạo xung đồng
hồ riêng Để dùng đồng hồ riêng thì các chân CLK IN và CLK R (chân số 19) được nối với một tụ điện và một điện trở Khi đó tần số được xác định bằng biểu thức:
để đưa dữ liệu ra
- Vin (+) và Vin (-): Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai, trong đó Vin = Vin(+) – Vin(-) Thông thường Vin(-) được nối tới đất và Vin(+) được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số
- Vcc: Chân số 20, là chân nguồn nuôi +5V Chân này còn được dùng làm điện
áp tham chiếu khi đầu vào Vref/2 để hở
- Vref/2: Chân số 9, là chân điện áp đầu vào được dùng làm điện áp tham
chiếu Nếu chân này hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải
0 đến +5V Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin khác với dải 0 đến +5V Chân Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0 đến +5V
Trang 10
Sơ đồ chân của ADC 0804
Trang 11Bảng: Điện áp Vref/2 liên hệ với dải Vin
Vref/2 Vin Kích thước bước (mv)
- D0 – D7, chân số 18 – 11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và
D0 là bit thấp nhất LSB) Các chân này được đệm ba trạng thái và dữ liệu đã được
chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp
Để tính điện áp đầu ra ta tính theo công thức sau:
Dout = Vin / Kích thước bước
Nguyên lý đo và chuyển đổi tương tự/số của ADC
Khi điện áp đầu vào que đo qua mạch phân áp sẽ đưa điện áp tới đầu vào Vin của ADC
0804 sao cho điện áp vào lớn nhất la 5V, khi đó ứng với mỗi giá trị đầu vào Vin thì
ADC0804 sẽ chuyển đổi giá trị tương tự là điện áp xang số, ứng với mỗi giá trị số sẽ là một giá trị điện áp tương ứng
Vì chân Vref 2 để hở do vậy kích thước bước la 19,53mV khi đo điện áp đầu vào là 5V tương ứng với giá trị thập phân là 256
Trang 12có 3 chân chính : 2 chân cấp nguồn và 1 chân out tín hiệu Analog
Khi ta cấp điện áp 5V cho LM335 thì nhiệt độ đo được từ cảm biến sẽ chuyển thành điện áp
tương ứng tại chân số 2 (Vout) Điện áp này được tỉ lệ với giải nhiệt độ mà nó đo được Với độ
giải của nhiệt độ đầu ra là 10mV/K Hoạt động trong giải điện áp từ 0 cho đến 5V
và giải nhiệt
độ đo được từ 0 oC đến 100oC Và cần chú ý đến những thông số chính sau :+ Hoạt động chính xác ở dòng điện đầu vào từ 0.4mA đến 5mA Dòng điện đầu vào ngoài
khoảng này kết quả đo sẽ sai
+ Điện áp cấp vào ổn định là 5V
+ Trở kháng đầu ra thấp 1 ôm
+ Giải nhiệt độ môi trường là từ 0 đến 100 C
Như vậy LM335 nó cho chúng ta tín hiệu tương tự (Analog) và chúng phải xử lý tín hiệu này thành nhiệt độ
3) Tính toán các giá trị của mạch đo
- Do tín hiệu trả về từ cảm biến LM335 là tín hiệu tương tự Như vậy để xử lý tín hiệu này và cho ra kết quả nhiệt độ tương ứng thì ta cần dùng bộ biến đổi tương tự sang số gọi tắt là ADC Đầu bài là đo nhiệt độ từ 0 đến 100 C
- Như ta đã biết độ phân giải nhiệt độ của LM335 là 10mV/ K nên ta có
+ Tại 0 C thì điện áp đầu ra tại LM335 là 2.73V
+ Tại 100 C thì điện áp đầu ra LM335 là 3.73V
- Như vậy giải điện áp mà ADC biến đổi là từ (2.73V đến 3.73V) tức là 1VGọi S là giải điện áp đo của tín hiệu : S = (2.73 – 3.73V) tức là 1V
Trang 13A là giải điện áp của ADC : A = 5V
Ta có trong con Dspic đã tích hợp sẵn bộ khối ADC 10 bit tốc độ cao và trong con Psoc nó cũng
tích hợp sẵn bộ ADC 11 bit nên sử dụng bộ ADC này cho mục đích biến đổi Ta có bước thay
đổi của ADC 10 bit :
4 ) Tính giá trị nhiệt độ đầu ra
LM335 là cảm biến nhiệt độ , với nhiệt độ đầu ra là 10mV/K
Sử dụng bộ biến đổi ADC_10bit :
+ có giá trị lớn nhất là 1024
+ với V = V = 5V
+ Bước thay đổi là : (Của Dspic và Psoc)n = 5/1024 = 4.9 (mV) (Dspic) n1 = 5/2047 = 2.44(mV) (Psoc)
Nên tại ở 0 C hay 273K thì điện áp đầu ra LM335 có giá trị là 2.73V
Nên tại ở 100 C hay 373K thì điện áp đầu ra của LM335 có giá trị là : 373.10mV/K
Trang 14Như vậy giải điện áp đầu vào sẽ là (2.73 đến 3.73V)
Tính toán được giá trị ADC đọc được từ Lm335
+ V_in = 2.73V =>ADC_value = (1024/5)*2.73 = 559 (Dspic)
+ V_in = 3.73V => ADC_value = (1024/5)*3.73 = 764 (Dspic)
+ V_in = 2.73V => ADC_value = (2047/5)*2.73 = 1118 (Psoc)
+ V_in = 3.73V => ADC_value = (2047/5)*3.73 = 1527 (Psoc)
Mặt khác do ADC_value = 1 cho ra điện áp tương ứng là 4.9mV (dspic) và 2.44mV (Psoc)
Trong khi đó LM335 cho ra điện áp là 10mV/K Nên do đó để ADC _value thay đổi trong 1 đơn vị thì nhiệt độ phải thay đổi là : (4.9mV/10mV/K) = 0.5K (dspic)
và (2.44mV/10mV/K) = 0.244K (Psoc)
Như vậy ta có công thức tính đầy đủ ra độ C tương ứng cho cả Psoc và Dspic:
t = (ADC_value – 559)* (4.9mV/10mV) = (ADC_value – 559) * 0.49 (Đối với Dspic)
t = (ADC_value - 1118) * (2.44mV/10mV) = (ADC_value - 1118) * 0.244 (Đối với Psoc)
5) Tính giá trị điện trở đệm cho LM355
Muốn áp ra ứng với 10mV/oK thì phải cấp dòng cho nó từ 400uA đến 5mA, vậy phải có điện trở đệm
Nếu dùng nguồn áp 5V, dải đo từ 0-100 C => áp trên LM335 sẽ từ 2.73V đến
Trang 15IC ổn áp 7805
IC ổn áp 7805 đầu vào >7V đầu ra 5V Mạch ổn áp cần cho VĐK vì nếu nguồn cho VĐK không ổn định thì sẽ treo VĐK, chạy không đúng, hoặc reset liên tục, thậm chí là chết chíp
Trang 16Biến trở chẳng qua là điện trở mà trị số có thể thay đổi được, bằng cách vặn, xoay,
gạt qua gạt lại, … Nó có thể được gọi là biến trở, hay “chiết áp” (hay cái chia áp)
Tên tiếng Anh của nó có thể là Variable resitor, potentiometer, trimmer, trimpot…
Kí hiệu: VR, VAR, POT, …
Kí hiệu trên mạch:
Biến trở
Thạch anh là một linh kiện dùng để tạo ra một xung nhịp chuẩn mà ta có thể dựa vào xung nhịp này để phân chia thành các khoảng thời gian chính xác cho từng ứng dụng của mình
Có nhiều loại thạch anh tạo xung nhịp khác nhau như : 8, 11.0592, 12 các xung nhịp này sẽ ứng dụng trong từng trường hợp cụ thể mà ta có thể lựa chọn một cách linh hoạt
2.2.3 LCD 16x2
Khái quát về LCD 16x2
Trang 17Đây là loại gồm 16 ký tự x2 dòng ,mỗi ký tự được tạo ra từ một ma trận điểm sáng kích
cỡ 5×7 hoặc 5×10
Ta có sơ đồ chân của LCD:
Chân Ký hiệu I/O Mô tả
Chân 15 và chân 16: ghi là A và K Nó là anot và katot của một con led dùng để sáng LCD trong bóng tối Chúng ta không sử dụng Nếu các bạn muốn dùng thì nối chân A qua
1 điện trở 220 lên dương 5V, chân K xuống đất đèn sẽ sáng
Nguyên lý hoạt động của LCD
-Các chân 1,2,3 là các chân VSS , VDD, VEE: trong đó VEE chân nối đất , VDD
chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC ,
một đầu nối mát Chân VSS nối dương nguồn
- Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân
RS(Register Select) được dùng để chọn thanh ghi, như sau:
Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , đưa con trỏ về đầu dòng…
Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự , chữ số lên màn hình
-Chân đọc/ ghi (R/W): Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên
LCD khi R/W = 0 hoặc đọc thông tin LCD khi
Trang 18-Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ liệu của nó Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu , xung này phải có độ rộng tối thiểu 450ns.
Chân D0 – D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong
LCD Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ cái và các con số tương ứng đến các chân này khi bật RS =1
Bảng mã lệnh của LCD 16x2
Trang 19PHẦN III THIẾT KẾ
3.1 CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH
- Vi điều khiển AT89S52:
Hiện Thị LCD