- Kinh nghiệm thực tế chưa nhiều - Vật tư và linh kiện không đồng bộ Vì vậy chúng em đã thực hiện nghiên cứu đề tài với những đặc điểm chính sau đây: - Lập trình bằng vi xử lý AT89S52-80
Trang 1Lời nói đầu
Thế kỷ 21 mở ra một thời đại mới, thời đại khoa học công nghệ đòi hỏi con người luôn luôn không ngừng tìm tòi học tập để tiến bộ Thiết bị và công nghệ luôn được đổi mới tiên tiến hiện đại để góp phần nâng cao chất lượng cũng như cácmáy móc, thiết bị hoạt động có hiệu quả, an toàn ổn định Ngày nay các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi trong các lĩnh vực kỹ thuật và đời sống
xã hội, đặc biệt là trong kỹ thuật tự động hóa và điều khiển từ xa
Trong hoạt động sản xuất nông nghiệp hiện nay, việc tự động hóa khâu sản xuất là rất quan trọng Nhiều năm trở lại đây, có rất nhiều ứng dụng của vi điều khiển vào hoạt động chăn nuôi, …Một trong những yếu tố của ngành nông nghiệp
là chăn nuôi gia cầm với một khâu quan trọng là ổn định trong khâu sản xuất con giống, mà cụ thể là việc ấp nở con giống từ trứng gia cầm Từ thực tế thấy được tầm quan trọng của việc ấp nở con giống từ trứng gia cầm và đặc biệt là việc ổn
định nhiệt độ lò ấp trứng Vì thế em đã lựa chọn đề tài nghiên khoa học “Ổn định nhiệt độ lò sấy”.
Trang 2CHƯƠNG I :TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN
1.1 Giới thiệu
Ngày nay do sự phát triển của khoa học kỹ thuật đang tác động đến các lĩnh vực, đặc biệt là lĩnh vực điện tử đã tạo ra bước nhảy vọt vượt bậc trongnhiều lĩnh vực của đời sống xã hội Ngay cả trong trồng trọt, chăn nuôi cũng đã áp dụng khoa học công nghệ để đạt năng suất cao nhất Là sinh viên năm cuối với những kiến thức đã được học em mong muốn tạo ra một
hệ thống tự động áp dụng trong chăn nuôi Đó là đề tài Ổn định nhiệt độ trong lò ấp trứng Người ta thường cho trứng ấp ở nhiệt độ cố định
cho phép Tuy nhiên nhiệt độ trong lò luôn thay đổi và phụ thuộc vào nhiệt
độ môi trường Vì vậy em mong muốn được nghiên cứu thiết kế ra hệ thống
ổn định nhiệt độ lò ấp trứng nhằm tự động đo và hiển thị nhiệt độ của môi trường một thời điểm bất kỳ trong khoảng từ 0 đến 100 độ C Và ổn định khi nhiệt độ của môi trường không nằm trong một khoảng nhiệt độ nào đó
mà ta đã chọn
1.2 Mục tiêu của đề tài
Nghiên cứu và xây dựng mô hình điều khiển dựa trên vi điều khiển AT89S52
Từ đó phát triển cao hơn, đưa bộ điều khiển áp dụng vào trong thực tế
Làm quen với việc tính toán thiết kế , chế tạo, nguyên lý hoạt động của mô hình và củng cố phần lý thuyết về mạch điện tử, cảm biến và mạch điều khiển bằng
vi điều khiển
1.3 Nội dung đề tài
Trang 3Việc thực hiện nghiên cứu đề tài ‘‘ -’’ trong điều kiện :
- Thời gian thực hiện đề tài chỉ trong một học kỳ
- Kinh nghiệm thực tế chưa nhiều
- Vật tư và linh kiện không đồng bộ
Vì vậy chúng em đã thực hiện nghiên cứu đề tài với những đặc điểm chính sau đây:
- Lập trình bằng vi xử lý AT89S52-8051
- Thiết kết chế tạo mạch điều khiển
- Thiết kết mô hình thí nghiệm
- Tìm hiểu 1 số linh kiện có trong đồ án
- Các loại relay có trong đồ án
1.4 Phương pháp nghiên cứu
Phương pháp kế thừa: Kế thừa từ các tài liệu, công trình nghiên cứu trước đó
về hai mảng chính của đề tài: Cấu trúc vi điều khiển 8051 và điều khiển
Phương pháp thực nghiệm kiểm chứng: Sau khi đã xây dựng xong cơ sở lý thuyết của đề tài sẽ tiến hành thử nghiệm sự hoạt động trên các thiết bị hiện có.Các bước tiến hành nghiên cứu là tìm hiểu cơ sở lý thuyết về vấn đề nghiên cứu, tiến hành thiết kế chương trình điều khiển và mạch điều khiển, sau đó thử nghiệm trên mô hình để đưa ra kết luận
Trang 4CHƯƠNG II: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN VÀ CÁC
THIẾT BỊ KHÁC
2.1 Vi điều khiển AT89S52
2.1.1 Tổng quan về AT89S52
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, 3TIMER/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á
Trang 5• 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 hoặc chia
Hình 2.1 Sơ đồ khối của 8051
Trang 6Hình 2.2 Sơ đồ khối AT89S52
2.1.2 Mô tả chân 89S52
a) Sơ đồ chân 89S52
Mặc dù các thành viên của họ 8051(ví dụ 8751, 89S52, 89C51, DS5000) đều
có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-LinePakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không có chân
đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác
nhau như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt Cần phải lưu ýmột số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn chocác ứng dụng yêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụngchíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bảnnày
Trang 7b) Chức năng của các chân 89S52
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ác thiế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
Trang 8Ngõ 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
Bảng 2.1 Bảng chức năng P3
PSEN (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ươngtrì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
ALE (Address Latch Enable):
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ứ
Trang 930 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
EA (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àm chân cấpnguồ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 Hình 2.3 Sơ đồ kết nối chân RST
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 thuộc vào mục đích của người sử
dụng, giá trị tụ thường được chọn là 33p
Trang 10Địa chỉ
byte Địa chỉ bit Địa chỉ byte Địa chỉ bit
2.1.3 Tổ chức bên trong AT89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM RAM trong 89S52 bao gồmnhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bankthanh ghi và các thanh ghi chức năng đặc biệt
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộnhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứabên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chươngtrình và 64K byte dữ liệu bên ngoài
Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Trang 11RAM bên trong AT89S52 được phân chia như sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH
RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
b) RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đadụng (truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh
xử lý bit
c) Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h –07h, bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh Các bankthanh ghi này được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi độngthì hệ thống bank 0 được chọn sử dụng
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghiđược truy xuất bởi các thanh ghi R0 đến R7 Viêc thay đổi bank thanh ghi đượcthực hiện thông qua thanh ghi từ trạng thái chương trình (PSW)
Trang 12d) Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip
vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình vàthanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0đến R7, 89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special FunctionRegister) ở vùng trên của RAM nội từ địa chỉ 80H đến 0FFH
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:
Thanh ghi trạng thái chương trình (PSW: Program Status Word)
PSW4 RS1 D4H Register Bank Select 1
PSW.3 RS0 D3H Register Bank Select 0
00=Bank 0; address 00H÷07H01=Bank 1; address 08H÷0FH10=Bank 2; address 10H÷17H11=Bank 3; address 18H÷1FH
Chức năng từng bit trạng thái chương trình
Trang 13- Cờ Carry CY (Carry Flag):Cờ nhớ thường nó được dùng cho các lệnh toán
học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngượclại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn
- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị BCD
(Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằmtrong phạm vi điều khiển 0AH - 0FH Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa sau khi reset
hệ thống và được thay đổi bởi phần mềm khi cần thiết
Trang 14Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn vớithanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn.
Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạothành số chẵn
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối
tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.
Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc Người ta sử dụng các timer để:
o Định khoảng thời gian
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52.
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những khoảng đều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ
đo độ rộng xung).
Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác.
Trang 15Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng
vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện vàgiải quyết sự kiện đó trong khi một chương trình khác đang thực thi
- Tổ chức ngắt của 89S52:
Có 5 nguồn ngắt ở 89S52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port
nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và đượccho phép từng cái một bằng phần mềm Mức độ ưu tiên của các ngắt được lưutrong thanh ghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phépchọn mức ưu tiên cho các ngắt (giá trị thanh ghi IP khi reset là 00h)
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 2IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại cổng nối tiếp
IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 1IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại ngắt ngoài 1IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại timer 0IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0)
tại ngắt ngoài 0
Tóm tắt thanh ghi IP
Trang 16 Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn
sẽ được phục vụ trước
Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên đượcthực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer 0 – ngắt ngoài 1 – timer 1 –cổng nối tiếp – timer 2
Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà cómột ngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để chạymột chương trình khác có mức ưu tiên cao hơn
- Cho phép và cấm ngắt:
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
Trang 17IE.0 EX0 A8H Cho phép ngắt ngoài 0
Trang 18Đặc điểm chính của DS18B20 như sau:
+ Lấy nhiệt độ theo giao thức 1 dây (1wire)
+ Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng Trong trường hợp không config thì nó tự động ở chế độ 12 bit
Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit
+Có thể đo nhiệt độ trong khoảng -55 -> +125°C Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C theo số bít config.+ Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép Người dùng có
Trang 19thể lập trình chức năng này cho DS18B20 Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
+ Cam bien nhiet do DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này
Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo ý muốn
+ Điện áp sử dụng : 3 – 5.5 V
+ Dòng tiêu thụ tại chế độ nghỉ rất nhỏ
2.2.2 Lấy nhiệt độ với ds18b20
a Tìm hiểu về các lệnh ROM liên quan đến DS18b20
- READ ROM (33h)
Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất
cả các thiết bị tớ cùng đáp ứng
- MATCH ROM (55h)
Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào Chỉ có DS1820 nào có 64 bit trên ROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo Còn các cảm biến DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset Lệnh nàyđược sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp
có nhiều cảm biến một dây
- SKIP ROM (CCh)
Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của
Trang 20DS1820 mà không cần gửi chuỗi mã 64 bit ROM Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang hiệu quả khi chỉ có một cảm biến.
- SEARCH ROM (F0h)
Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm
- ALARM SEARCH (ECh)
Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơngiá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến
Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra cáclệnh chức năng DS1820 Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến DS1820 khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn Các lệnh chức năng có thể được mô tả ngắn gọn như sau:
- WRITE SCRATCHPAD (4Eh)
Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820 Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vàothanh ghi TL (byte 3 của bộ nhớ nháp) Dữ liệu truyền theo trình tự đầu tiên là bit
có ý nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuấthiện
- READ SCRATCHPAD (BEh)
Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp Quá trình đọc bắt đầu từ
Trang 21bit có ý nghĩa nhấy của byte 0 và tiếp tục cho đến byte rhứ 9 (byte 8 - CRC) Thiết
bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc
- READ POWER SUPPLY (B4h)
Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồnnhư thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu
và bằng 1 nếu cấp nguồn qua một đường dẫn riêng
b Cách config độ phân giải cho ds18b20
Sơ đồ bộ nhớ của ds18b20
Trang 23Các byte thứ 5 của bộ nhớ đệm có chức năng đăng ký cấu hình (config) cho
ds18b20, và các bít được tổ chức như sau:
Các bit từ 0 đến 4 luôn được đọc giá trị là 1, bít số 7 luôn được đọc giá trị là 0 Cấuhình độ phân giải cho ds18b20 được quyết định bởi R1 và R0 ta có bảng thiết lập như sau
c Sơ đồ kết nối cảm biến nhiệt ds18b20
- Sơ đồ khi sử dụng một cảm biến
Trang 25- Sơ đồ khi mắc nhiều cảm biến (Chúng ta
cũng chỉ cần 1 dây để lấy mẫu nhiệt độ)
d Đọc nhiệt độ
Khi bắt đầu chuyển đổi nhiệt độ thì chân DQ sẽ được kéo xuống mức thấp và khi chuyển đổi xong thì ở mức cao.Như vậy ta sẽ căn cứ vào hiện tượng này để xác định khi nào chuyển đổi xong nhiệt độ Lưu ý luôn phải dùng một điện trở tầm 4.7k trở lên vào chân DQ treo lên nguồn như sơ đồ mắc
Dưới đây là một ví dụ mẫu đo nhiệt độ bằng ds18b20 hiển thị LCD các bạn tham khảo sẽ hiểu rõ hơn về sử dụng cảm biến này như thế nào Đồng thời tham khảo thêm datasheet của ds18b20
Hàm đọc nhiệt đô:
Trang 26float ds18b20_read() {
int8 busy=0, temp1, temp2;
signed int16 temp3;
float result;
onewire_reset();
onewire_write(0xCC); //Skip ROM, address all devices onewire_write(0x44); //Start temperature conversion while(busy == 0) //Wait while busy (bus is low) busy = onewire_read();
temp3 = make16(temp2, temp1);
result = (float) temp3 / 16.0;
delay_ms(200); //
return(result);
}
Kết quả: