1. Trang chủ
  2. » Luận Văn - Báo Cáo

BTL VXL đo nhiệt độ với ds18b20 hiển thị led 7 thanh điều khiển thiết bị

48 324 8

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài tập lớn vi xử lí với đề tài đo nhiệt độ với ds18b20 kết quả hiển thị trên led 7 thanh . Rồi từ nhiệt độ đo được điều khiển thiết bị với chế độ tự động và bằng tay với vi điều khiển 8051 bằng giao tiếp one wire.

Trang 1

LỜI NÓI ĐẦU

Kĩ thuật vi xử lý hiện nay rất phát triển, nó đuợc áp dụng rất nhiều vào các lĩnh vực như tự động hoá, sản xuất công nghịêp và còn nhiều lĩnh vực khác nữa So với kĩ thuật số thì kĩ thuật vi xử lý phát triển hơn rất nhìều do nó được tích hợp lại và lập trình để điều khiển

Với tính ưu việt của vi xử lý thì trong bài tập lớn này chúng em chỉ tiến hành dùng vi

xử lý để đo và khống chế nhiệt độ, đây chỉ là ứng dụng nhỏ của vi điều khiển

Với những kiến thức học được từ thầy cô giáo cộng thêm tài liệu tham khảo tuy có thểhoàn thành đồ án này nhưng không thể tránh khỏi nhiều thiếu sót, chúng em rất mong nhận đuợc sư dạy bảo của thầy cô và ý kiến đóng góp của các bạn

Chúng em chân thành cảm ơn Thầy giáo Bùi Văn Huy đã dạy cho chúng em những kiến thức cơ bản để chúng em có thể hoàn thành bài tập lớn

Trang 2

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

TỰ ĐỘNG HÓA 3-K10

Mục lục

Chương 1 : tổng quan về vi xử lí trong đo lường và điều khiển

1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng Vi xử lí

1.2 Cấu trúc chung họ 8051

1.3 Tổng quan về ngôn ngữ C và các hàm , kiểu dữ liệu hay dùng cho việc lập trình cho

Vi điều khiển

Chương 2: cảm biến 18B20 và giao tiếp 1W

2.1 Cấu tạo và đặc điểm của DS18B20

2.2 Nguyên lý giao tiếp vi điều khiển theo chuẩn 1W

Chương 3: xây dựng ứng dụng trên cơ sở 8051

3.1 Lưu đồ thuật toán

3.2 Chương trình điều khiển xây dựng trên keil C

3.3 Kết quả mô phỏng , thiết kế mạch nguyên lý và thực nghiệm trên mạch thực

Trang 3

ĐỀ TÀI :

*Yêu cầu cần thực hiện:

Hệ thống có thể làm việc theo 2 chế độ tự động hoặc bằng tay (dùng công tắc bật nếucông tắc Man=1 thì hệ thống làm việc ở chế độ bằng tay ) ;

 Tự động : xây dựng ứng dụng điều khiển điều hòa Khi nhiệt độ vượt quá 330C mộtcông tắc tơ sẽ đóng lại cấp điện cho điều hòa chạy

 Bằng tay : Điện được cấp đến điều hòa và việc chạy điều hòa được thực hiện bằng điềukhiển

Việc đo nhiệt độ được thực hiện bằng DS18B20 ghép nối với 89S52 hiển thị trên Led 7thanh

Trang 4

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

TỰ ĐỘNG HÓA 3-K10

CHƯƠNG I :TỔNG QUAN VỀ VI XỬ LÍ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN

Trang 5

1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng vi xử lí

- Vi xử lí đôi khi còn được gọi là bộ vi xử lý, là một linh kiện điện tử được chế tạo từ các tranzito thu nhỏ tích hợp lên trên một vi mạch tích hợp hơn Khối xử lý trung tâm (CPU)

là một bộ vi xử lý được nhiều người biết đến nhưng ngoài ra nhiều thành phần khác trong máy tính cũng có bộ vi xử lý riêng của nó

-Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý không có khả năng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi

-Để vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ, công việcthực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động

cơ, hiển thị kí tự trên màn hình đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại

vi

-Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn Vi xử lý kết hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn các phép tính phức tạp, có tốc độ nhanh Chẳng hạn như các hệ thống sản xuất

tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v.v

-Chúng ta có thể dùng vi điều khiển để thiết kế bộ điều khiển cho các sản phẩm như: Nhà thông minh ,tự động điều tiết ánh sáng thông minh (bật/tắt đèn theo thời gian, theo cường

Bộ vi sử lí Intel Core i5

Trang 6

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

TỰ ĐỘNG HÓA 3-K10

độ ánh sáng, ), điều khiển các thiết bị từ xa (qua điều khiển, qua tiếng vỗ tay, ) ,điều tiếthơi ẩm, điều tiết nhiệt độ, điều tiết không khí, gió hay các loại biển quảng cáo nháy chữ

-Vi xử lí được sử dụng trong đo lường và điều khiển dưới 3 dạng :

+ Máy tính điều khiển (máy vi tính)

+Vi xử lí điều khiển nhúng (còn gọi là vi điều khiển) nghĩa là vi điều khiển là một bộ phận không thể tách rời của thiết bị được điều khiển

+Bộ điều khiển logic lập trình được (PLC)

-Sử dụng vi xử lí trong hệ thống đo lường điều khiển là tích hợp,ứng dụng của mạch điện

tử ,khoa học công nghệ nhằm giao tiếp thu thập dữ liệu,các bộ chuyển đổi dữ liệu A/D và D/A điều khiển tuần tự,hệ thống điều khiển số và mạng truyền thông

Trang 7

-Dưới đây là cấu trúc hệ thống đo lường điều khiển bằng máy tính thông qua vi xử lí :

Máy vi tính ( Vi điều khiển)

Trang 8

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

TỰ ĐỘNG HÓA 3-K10

1.2 Tổng quan về AT89S52

a, Cấu tạo và chức năng các khối của AT89S52

centralprocessing unit) bao gồm:

Timer/Counter 16 bit thực hiện chức năng định thời và đếm sự kiện

ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong

chương trình lên Flash ROM) cho phép người sử dụng có thể nạp các chương trình chochíp mà không cần các bộ nạp chuyên dụng

Trang 9

8 • Bộ chia tần số với

hệ số chia là 12

với 32 chân

Trang 10

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

Trang 12

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

TỰ ĐỘNG HÓA 3-K10

năng là cổng vào/ra như Port 0 và 1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớngoài

Trang 13

P3.3 INT1 Ngắt ngoài 1 P3.4 T0 Ngõ vào của Timer/counter0 P3.5 T1 Ngõ vào của Timer/counter1 P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài.

P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài

 Chân /PSEN : là chân điều khiển đọc chương trình ở bộ nhớ ngoài

 Chân ALE.:ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao độngcủa vi điều khiển Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như

7473

Trang 14

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

 Chân /EA Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hayngoài EA=1 thì thực hiện chương trình trong RAM nội EA=0 thực hiện ở RAM ngoài

 RST( reset) Ngõ vào reset trên chân số 9 khi RST=1 thì bộ vi điều khiển sẽ đượckhởi động lại thiết lập ban đầu

 XTAL1, XTAL2 :2 chân này được nối song song với thạch anh tần số max=33 Mhz

Để tạo dao động cho bộ vi điều khiển

 Vcc, GND : cung cấp nguồn nuôi cho bộ vi điều khiển cấp qua chân 20 và 40

1.3 Tổng quan về ngôn ngữ C và các hàm , kiểu dữ liệu hay dùng cho việc lập trình cho Vi điều khiển

+ Những từ khóa sau đây không được dùng làm tên biến hay tên hàm:

auto, break, case, char, continue, default, do, double, else, extern, float, for, goto, if, int, long, register, return, short, sizeof, static, struct, switch, typedef, union, unsigned, while.+ Ngoài ra còn nhưng từ khóa đặc biệt khác như là : void, const, enum, volatige

* Các kiểu khai báo biến trong C[separator]

Trang 15

và cũng có thể khái báo biến cùng 1 lúc như : unsigned int x,y;

* Lời giải thích:

Tùy theo mặc định trong C không cho phép ta cho các lời giải thích lòng vào với nhau + Lời giải thích dài : Được đặt giữa dấu :/* và */

+ Lời giải thích ngắn : Được đặt sau dấu //

* Biểu thức đơn giản và các câu lệnh gán.

Các biểu thức tính toán và các câu lệnh gắn trong C được quy định sắn chúng ta chỉ việc

áp dụng vào thôi chứ không được sáng tạo

<< Dịch phải bít[separator]

Ví dụ : unsigned char x,y,z; x=y+z;

Trang 16

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

+ Các lệnh Logic:

Ví dụ : if(x!=y) z=0; hay x++, x+=y

Trang 17

* Thứ tự ưu tiên của các toán tử

Các toán tử khác nhau không cùng 1 mức ưu tiên tức là một số phép tính sẽ được thực hiện trước Các toán tử ở dòng 1 có mức ưu tiên hơn dòng 2 và cũng như vậy như các dòng tiếp theo

Ví dụ : < <== thứ tự của chúng được thực hiện từ trái sang phải tức là từ < <==

Chú ý : Có 14 quy tắc ưu tiên trong C chảng hạn toán tử && được thực hiện trước toán tử

|| nhưng sau toán tử <<, , Chủ yếu nó được thực hiện từ trái sang phải

* Một số tên hàm thường dùng trong :

sqpt (x) Tính căn bậc 2 của giá trị x

log(x) Tính logarit cơ số tự nhiên của giá trị x

log10(x) Tính logarit của cơ số 10 của giá trị x

Ví dụ : 16%7 giá trị này là lấy phần dư của 16/7

* Kiểu khai báo thư viện

Chỉ thị #include chỉ cho phép vi xử lý nhận nội dung của tệp khác và nhận chúng vào chương trình

Các dạng chung của một chỉ thị bao hàm:

#include / / Tệp bao hàm hệ thống chuẩn

#include"file.h" / / Tệp bao hàm cục bộ

Nếu tệp tiêu đề được đặt trong nháy kép ("") thì tệp là cục bộ và C tìm thấy tệp này trong các thư mục hiện tại Nếu tệp được đặt trong () thì nó là tệp hệ thống chuẩn và nó được tìm thấy trong các thư mục include

Trang 18

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

* Cấu trúc hàm trong C

Hàm dùng để chứa các chỉ thị có thể thực hiện được vào chương trình ngắn gọn.Trong C

có hai kiểu cấu trúc hàm :

+ Hàm không trả lại giá trị

Cấu trúc : void ten_ham()

Trang 19

* Mảng trong C

Mảng là được dùng để lưu các nhóm dữ liệu giống nhau Khuôn dạng mảng 1 chiều:cấu trúc : kiểu tên[số phần tử ];

Trong đó : Kiểu là kiểu dữ liệu trong C như int, char

tên là tên biến số phần tử là một số nguyên chỉ giá trị lớn nhất của mảng

Ví dụ : int biendt[3]={0,1,2}; // mảng này gồm 3 phần tử có độ dài là 3

Ngoài ra nó còn mảng nhiều chiều thường được sử dụng mảng 2 chiều và 3 chiều

cấu trúc : kiểu tên [số pt1][số pt2] [];

ví dụ: unsigned char biendt[20][30];

* Bộ tiền xử lý.

Ngoài kiểu khai báo thư viện trong C thì nó còn câu lệnh #define Câu lệnh này cho phép người lập trình định nghĩa trực tiếp các biến hơn thế nữa nó còn cho phép định nghĩa một maco hay thay thế đơn giản

Ví dụ:

#define biendt 100

ở trên ta nhận thấy rằng biến biendt được gắn bằng 1 giá trị là 100

* Cấu trúc có điều kiện IF

Nếu giá trị biểu thức khác không thì câu lệnh sẽ được thực hiện

+Cấu trúc : if (biểu thức) câu lệnh;

Trang 20

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

Ví dụ :unsigned int i,j;

if(++i>100) j++;

+ Ngoài ra chúng ta còn sử dụng cấu trúc if - else Nếu biểu thức trong if không đúng thì

nó thực hiện câu lệnh dưới esle

- Trước ELSE mà chỉ có 1 câu lệnh thì kết thúc lệnh phải có dấu ; của lệnh if

- Biểu thức điều kiện phải đặt giữa ()

+ Các điều kiện lồng nhau:

if(biểu thức 1) lệnh 1;

else(biểu thức 2) lệnh 2;

else(biểu thức 3) lệnh 3;

Trang 21

else lệnh n;

* Cấu trúc vòng While

Dạng của nó như sau:

while (điều kiện) statement

tăng giá trị của x cho đến khi x > 10

Chức năng của nó là hoàn toàn giống vòng lặp while chỉ trừ có một điều là điều kiện điều khiển vòng lặp được tính toán sau khi statement được thực hiện, vì vậy statement sẽ được thực hiện ít nhất một lần ngay cả khi condition không bao giờ được thoả mãn Như vd trên kể cả x >20 thì nơ vẫn tăng giá trị 1 lần trước khi thoát nếu x=100 thì tăng x thêm 1 còn không thì giảm x Nói chung câu lệnh while(1) thường được sử dụng sau void main()

* Cấu trúc for

Vòng lặp for

Dạng thức:

for (điều kiện 1; điều kiện 2; điều kiện 3) câu lệnh;

và chức năng chính của nó là lặp lại câu lệnh chừng nào condition còn mang giá trị đúng, như trong vòng lặp while Nhưng thêm vào đó, for cung cấp chỗ dành cho lệnh khởi tạo

và lệnh tăng Vì vậy vòng lặp này được thiết kế đặc biệt lặp lại một hành động với một số lần xác định

Trang 22

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

Cách thức hoạt động của nó như sau:

1, điều kiện 1 được thực hiện Nói chung nó đặt một giá khí ban đầu cho biến điều khiển Lệnh này được thực hiện chỉ một lần

2, condition được kiểm tra, nếu nó là đúng vòng lặp tiếp tục còn nếu không vòng lặp kết thúc và lệnh được bỏ qua

3, câu lệnh được thực hiện Nó có thể là một lệnh đơn hoặc là một khối lệnh được bao trong một cặp ngoặc nhọn

4, Cuối cùng, điều kiện 3 được thực hiện để tăng biến điều khiển và vòng lặp quay trở lại bước 2

Phần khởi tạo và lệnh tăng không bắt buộc phải có Chúng có thể được bỏ qua nhưng vẫn phải có dấu chấm phẩy ngăn cách giữa các phần Vì vậy, chúng ta có thể viết for (;n<10;) hoặc for(;n<10;n++)

Bằng cách sử dụng dấu phẩy, chúng ta có thể dùng nhiều lệnh trong bất kì trường nào trong vòng for, như là trong phần khởi tạo Ví dụ chúng ta có thể khởi tạo một lúc nhiều biến trong vòng lặp:

for ( n=0, m=200 ; n!=m ; n++, m )

{

câu lệnh

}

Ví dụ dùng trong vi điều khiển:

void delay(unsigned int t)

Trang 23

chưa được thoả mãn Lệnh này có thể được dùng để kết thúc một vòng lặp không xác địnhhay buộc nó phải kết thúc giữa chừng thay vì kết thúc một cách bình thường Ví dụ, chúng ta sẽ dừng việc đếm ngược trước khi nó kết thúc:

+ Hàm exit

Mục đích của exit là kết thúc chương trình và trả về một mã xác định Dạng thức của nó như sau

void exit (int exit code);

exit code được dùng bởi một số hệ điều hành hoặc có thể được dùng bởi các chương trình gọi

Theo quy ước, mã trả về 0 có nghĩa là chương trình kết thúc bình thường còn các giá trị khác 0 có nghĩa là có lỗi các lệnh trên mình chủ yếu chỉ dùng lệnh break để thoát khỏi vòng lặp Các lệnh khác thường rất ít được sử dụng

*Cấu trúc lựa chọn: switch.

Cú pháp của lệnh switch hơi đặc biệt một chút Mục đích của nó là kiểm tra một vài giá trịhằng cho một biểu thức, tương tự với những gì chúng ta làm ở đầu bài này khi liên kết một vài lệnh if và else if với nhau Dạng thức của nó như sau:

Trang 24

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

case n: câu lệnh ;break;

Ví dụ của câu lệnh này:

void hienthi(unsigned char x)

Trang 25

CHƯƠNG 2: CẢM BIẾN DS18B20 VÀ

GIAO TIẾP 1W

Trang 26

Trường ĐH Công Nghiệp Hà Nội Đề tài 5

2.1 Cảm biến đo nhiệt độ DS18B20.

DS1820 là một sản phẩm của công ty Dallas (Hoa Kỳ), đây cũng là công ty đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một dây Hình dạng bên ngoài của cảm biến một dây DS1820 được mô tả trên hình 2, trong đó dạng vỏ TO-92 với 3 chân là dạng thường gặp và được dùng trong nhiều ứng dụng, còn dạng vỏ SOIC với 8 chân đượcdùng để đo nhiệt độ bề mặt, kể cả da người!

Hình 2: Dạng đóng vỏ và bề ngoài của cảm biến DS1820

Các đặc điểm kỹ thuật của cảm biến DS1820 có thể kể ra một cách tóm tắt như sau: +Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông

+Độ phân giải khi đo nhiệt độ là 9 bit Dải đo nhiệt độ -55oC đến 125oC, từng bậc 0,5oC,

có thể đạt độ chính xác đến 0,1oC bằng việc hiệu chỉnh qua phần mềm

+Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể được nối trên một bus, bus này được gọi là bus một dây (1-wire bus)

+Không cần thêm linh kiện bên ngoài

+Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3,0 V đến 5,5 V một chiều và

có thể được cấp thông qua đường dẫn dữ liệu

+Dòng tiêu thụ tại chế độ nghỉ cực nhỏ

+Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms

Trang 27

+Mỗi cảm biế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

Đầu đo nhiệt độ số DS1820 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã nhị phân 9 bit Các thông tin được gửi đến và nhận về từ DS1820 trên giao diện 1-wire, do đóchỉ cần hai đường dẫn gồm một đường cho tín hiệu và một đường làm dây đất là đủ để kếtnối vi điều khiển đến điểm đo Nguồn nuôi cho các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn Mỗi vi mạch đo nhiệt độ DS1820 có một mã số định danh duy nhất, được khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS1820 có thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn Đặc điểm này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí khác nhau trở nên dễ dàng và với chi phí thấp Theo chuẩn 1-wire

độ dài tối đa cho phép của bus là 300 m Số lượng các cảm biến nối vào bus không hạn chế

Để nâng cao độ phân giả lên trên 9 bit ta phải tính toán thêm bằng phần mềm dựa trên các

số liệu lưu trữ trên các thanh ghi nhiệt độ, COUNT REMAIN và COUNT PER C trong nhóm các thanh ghi nháp (scratchpad) việc tính toán dựa theo phương trình sau:

Khi sử dụng phương trình này cảm biến một dây DS1820 được nâng cấp trở thành một cảm biến nhiệt độ có độ phân giải cao

Bộ nhớ ROM 64–BIT

Mỗi cảm biến nhiệt độ DS1820 có một dãy mã 64 bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laze Ý nghĩa của 64 bit mã được giải thích trên hình 3:

Ngày đăng: 06/07/2018, 17:49

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w