1. Trang chủ
  2. » Cao đẳng - Đại học

Dùng vi điều khiển để đo và khống chế nhiệt độ, đồng thời cho hiển thị lên Led 7 thanh

19 230 0

Đ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 19
Dung lượng 532 KB

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

Nội dung

Dùng vi điều khiển, để đo và khống chế ,nhiệt độ, đồng thời cho hiển thị, lên Led 7 thanh

Trang 1

LỜI NÓI ĐẦU

Kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống 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 điểu khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và có khả năng lập trình được để điều khiển Nên rất tiện dụng và cơ động Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, em chỉ dùng vdk

để đo và khống chế nhiệt độ, đồng thời cho hiển thị lên Led 7 thanh.

Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vdk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến.

Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót Vì vậy nhóm rất mong được sự góp ý của thầy cô và các bạn.

Đo và khống chế nhiệt độ 1

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN

.

Trang 3

MỤC LỤC Lời nói đầu 1

Mục lục 2

Phần I:Giới thiệu chung 1.Giới thiệu chung 3

2.Đặc điểm chung 3

3.Sơ đồ chân 89S52 4

4.Chip ADC0804 6

5.IC Cảm biến nhiệt LM35 9

Phần II:Thiết kế và thi công 1.Sơ đồ nguyên lý 11

2.Sơ đồ mạch in 11

3.Chương trình phần mềm 12

4.Giải thích chương trình 14

Đo và khống chế nhiệt độ 3

Trang 4

Phần I:Giới thiệu chung

1.Giới thiệu chung

Bộ vi điều khiển viết tắt là Micro-contronller, là mạch tích hợp trên một chíp

có thể lập trình được, dùng để điều khiển hoạt động của hệ thống Theo các tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo lường thời gian và tiến hành đọc mở một cơ cấu nào đó

Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển, điều khiển hoạt động của tivi, máy giặt, đầu đọc laser, điện thoại Trong hệ thống sản xuất

tự động, bộ vi điều khiển được sử dụng trong robot, dây chuyền tự động Các hệ thống càng thông minh thì vai trò của vi điều khiển càng quan trọng

2 Đặc điểm chung

IC vi điều khiển 8052 thuộc họ MCS51 có các đặc điểm sau :

-8 kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8052 )

-256 byte RAM

-4 Port I/0 8 bit

-3 bộ định thời 16 bit

-Giao tiếp nối tiếp

-64 KB không gian bộ nhớ chương trình mở rộng

-64 KB không gian bộ nhớ dữ liệu mở rộng

- Một bộ vi xử lí(thao tác trên các bit đơn)

-210 bit được địa chỉ hoá

-Bộ nhân/chia 4us

3 Sơ đồ chân 89S52.

Trang 5

Sơ đồ trên là sơ đồ bố trí chân của 8052 Ta thấy rằng trong 40 chân thì

có 32 chân dành cho các cổng P0, P1, P2 và P3 với mỗi cổng có 8 chân Các chân còn lại được dành cho nguồn VCC, đất GND, các chân dao động XTAL1 và XTAL2, tái lập RST, cho phép chốt địa chỉ ALE, truy cập được địa chỉ ngoài

EA, cho phép cất chương trình PSEN Trong 8 chân này thì 6 chân VCC , GND, XTAL1, XTAL2, RST và EA được các họ 8031 và 8051 sử dụng Hay nói cách khác là chúng phải được nối để cho hệ thống làm việc mà không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031 Còn hai chân khác là PSEN và ALE được

sử dụng chủ yếu trong các hệ thống dựa trên 8031 Chức năng các chân như

sau:

-Port 0 (P0.0-P0.7).

Port 0 bao gồm 8 chân , ngoài chức năng xuất nhập ra thi Port 0 còn là Bus đa hợp địa chỉ và dữ liệu, chức năng địa chỉ sẽ được sử dụng khi AT89S52 giao tiếp với các thiết bị ngoài có kiến trúc Bus (8255)

-Port 1 (P1.0-P1.7).

Chức năng duy nhất của Port 1 là chức năng xuất nhập, Port 1 có thể xuất nhập theo byte hoặc theo bit giống như là các Port khác của 89S52

Đo và khống chế nhiệt độ 5

Trang 6

Ngoài ra các chân P1.5, P1.6, P1.7 được dùng để nạp ROM theo tiêu chuẩn ISP, 2 chân P1.0 và P1.1 được dùng cho bộ Timer 2

-Port 2 (P2.0-P2.7).

Port 2 cũng là Port đa hợp địa chỉ và dữ liệu

-Port 3 (P3.0-P3.7).

Mỗi chân trên Port 3 ngoài chức năng xuất nhập ra còn có một chức năng đặc biệt khác

P3.0 RXD Dữ liệu nhận cho Port nối tiếp

P3.1 TXD Dữ liệu phát cho Port nối tiếp

P3.2 INT0 Ngắt ngoài 0

P3.3 INT1 Ngắt ngoài 1

P3.4 T0 Ngõ vào của Timer/counter 0

P3.5 T1 Ngõ vào của Timer/counter 1

P3.6 WR Xung nghi bộ nhớ dữ liệu

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

ngoài

Trang 7

-PSEN ( Program store enable).

PSEN là chân điều khiển cho phép bộ nhớ chương trình mở rộng, được nối đến chân OE của một EPROM để cho phép đọc các bytes mã lệnh

- ALE (Addres latch enable).

ALE là tín hiệu để chốt địa chỉ vào một thanh nghi bên ngoài trong nửa đầu của một chu kỳ bộ nhớ Sau đó các đường Port 0 dùng để xuất hoặc nhập trong nửa sau của chu kỳ bộ nhớ Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số đao động thạch anh và có thể được sử dụng là nguồn xung nhịp cho các

hệ thống

-EA (External access).

EA thường được mắc lên mức cao (+5V) hoặc mức thấp (GND) Nếu ở mức cao, bộ vi điều khiển thi hành chương trình từ ROM nội Nếu ở mức thấp chương trình chỉ được thi hành từ bộ nhớ mở rộng

- RST (Reset).

Ngõ vào RST trên chân 9 là ngõ reset của 89S52 Khi tín hiệu này được đưa lên mức cao trong ít nhất 2 chu kỳ máy thì các thanh nghi trong vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống

-XTAL1,XTAL2.

AT89S52 có một bộ dao động trên chip, nó thường được nối với bộ dao động thạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz

-VCC,GND.

AT89S52 dùng nguồn 1 chiều có dải điện áp từ 4V đến 5.5V

4.Chip ADC0804

Đo và khống chế nhiệt độ 7

+5 V

1 1 1

4 1 2 10

9 19 10k

150p F

11 12 13 14 15 16 17 18

3 5

đến đèn

LEDs

Thường mở

START

D 0

D 1

D 2

D 3

D 4

D 5

D 6

D 7 W R

INT R

D GND

R D

CS

CLK in

CLK R

A GND

Vref/

2

Vin(-)

Vin(

+)

20 Vc c

10k

PO T

ADC0804

Trang 9

+5V và độ phân giải 8 bit Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC Thời gian chuyển đổi được định nghĩa 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 Đối với ADC0804 thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLKR và CLK IN và không bé hơn 110s Các chân của ADC0804 có chức năng như sau:

a)CS (Chip Select) - chọn chip

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 ADC804 Để truy cập ADC0804 thì chân này phải ở mức thấp

b)RD (Read) - đọc

Đây là một tín hiệu vào, “tích cực mức thấp” Các bộ ADC chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó ở một thanh ghi trong RD được

sử dụng để có dữ liệu được đã chuyể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 D0 - D7 Chân RD còn được coi là cho phép đọc

c)WR (Write) - ghi

Thực ra, tên chính xác là “Bắt đầu chuyển đổi” Đây là chân vào “tích cực mức thấp” được dùng để báo cho ADC0804 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 tiến hành chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8 bit Lượng thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đưa đến chân CLK

IN và CLK R Khi việc chuyển đổi dữ liệu được hoàn tất thì chân INTR được ADC0804 hạ xuống thấp

d)CLK IN và CLK R

Đo và khống chế nhiệt độ 9

Trang 10

CLK IN là chân vào, được nối tới một nguồn đồng hồ ngoài khi đồng hồ ngoài được sử dụng để tạo thời gian Tuy nhiên 0804 cũng có một bộ tạo xung đồng

hồ trên chip Để dùng đồng hồ trong (cũng còn được gọi là đồng hồ riêng) của

804 thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở như chỉ ra ở hình 12.5 Trong trường hợp này tần số đồng hồ được xác định bằng biểuthức: f RC

1 , 1

1

Giá trị thông thường của các đại lượng trên là R = 10k, C= 150pF và tần

số nhận được là f = 606kHz, còn thời gian chuyển đổi sẽ là 110s

e)INTR (Interrupt)

Ngắt hay còn gọi là “kết thúc việc chuyển đổi’ Đây là chân ra tích cực mức thấp Bình thường, chân này ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được chuyển đổi đã sẵn sàng để lấy đi Sau khi INTR xuống thấp, cần đặt CS = 0 và gửi một xung cao-xuống-thấp tới chân RD để đưa dữ liệu ra

f)V in (+) và V in (-)

Đây là hai đầu vào tương tự vi sai, trong đó Vin = Vin (+) - Vin (-) Thông thường Vin (-) được nối xuống đất và Vin (+) được dùng làm đầu vào tương tự

và sẽ được chuyển đổi về dạng số

g)V CC

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 (chân 9) để hở

h)V ref/2

Chân 9 là điện áp đầu vào được dùng làm điện áp tham chiếu Nếu chân này hở (không được nối) thì điện áp đầu vào tương tự cho ADC804 nằm trong dải 0 đến +5v (giống như chân VCC) 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 vào có dải khác với 0 - 5V Ví dụ, nếu dải đầu vào tương tự cần biến đổi từ 0 đến 4V thì V được nối với +2V

Trang 11

i)D0 - D7

D0 - D7 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 có thể sử dụng công thức sau:

buoc thuoc kich

V

out (kích thước bước tham khảo phần giải thích)

ở đây Dout là đầu ra dữ liệu số (dạng thập phân) Vin là điện áp đầu vào tương tự

và kích thước bước (độ phân dải) là sự thay đổi nhỏ nhất được tính bằng (2Vref/2) chia cho 256 đối với ADC 8 bit

Từ những trình bày trên, có thể tóm tắt các bước khi ADC0804 thực hiện chuyển đổi dữ liệu là:

1 Bật CS = 0 và gửi một xung thấp lên cao tới chân WR để bắt đầu chuyển đổi

2 Duy trì kiểm tra chân INTR Nếu INTR xuống thấp thì việc chuyển đổi được hoàn tất và có thể chuyển sang bước tiếp theo Nếu INTR còn ở mức cao thì tiếp tục thăm dò cho đến khi nó xuống thấp

3 Sau khi chân INTR xuống thấp, bật CS = 0 và gửi một xung cao-xuống-thấp đến chân RD để nhận dữ liệu từ chip ADC0804

5.IC Cảm biến nhiệt LM35

LM35 là họ cảm biến nhiệt mạch tích hợp chính xác cao có điện áp đầu

ra tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius Họ cảm biến này không yêu cầu căn chỉnh ngoài vì vốn nó đã được căn chỉnh Họ này cho ra điện áp 10mV ứng với thay đổi nhiệt độ là 10C

Một số thông số kỹ thuật chính của họ LM35

Dòng làm việc 400A – 5mA

Dòng thuận : 10mA

Dòng ngược: 15mA

Đo và khống chế nhiệt độ 11

Trang 12

Điện áp VS=4V-30V

Điện áp ra 10mV/ 0C

Phối hợp tín hiệu và nối ghép LM35 với 8051

Phối hợp tín hiệu là một thuật ngữ được sử dụng rộng rãi trong lĩnh vực thu nhận dữ liệu Hầu hết các bộ cảm biến đều đưa ra tín hiệu dạng điện áp, dòng

Trang 13

chuyển đổi các tín hiệu này về điện áp để đưa đến đầu vào của bộ chuyển đổi

ADC Sự chuyển đổi (biến đổi) này được gọi chung là phối hợp tín hiệu Phối

hợp tín hiệu có thể là chuyển dòng điện thành điện áp hoặc khuyếch đại tín hiệu Ví dụ, bộ cảm biến nhiệt thay đổi trở kháng theo nhiệt độ Sự thay đổi trở kháng cần được chuyển thành điện áp để các bộ ADC có thể sử dụng được Xét trường hợp nối LM35 tới ADC0804 Vì ADC0804 có độ phân dải 8 bit với tối

đa có 256 mức (28), và LM35 tạo ra điện áp 10mV ứng với sự thay đổi nhiệt độ

10C, nên ta có điều chỉnh điện áp vào tại chân IN bằng cách thay đổi Vref/2 tại chân 9

Phần II: thiết kế và thi công

Sơ đồ nguyên lý

Đo và khống chế nhiệt độ 13

Trang 14

Sơ đồ mạch in:

Trang 15

Chương trình phần mềm

#include<reg52.h>

#include<stdio.h>

#include<math.h>

sbit den_do=P2^3;

sbit den_vang=P2^1;

sbit den_xanh=P2^2;

sbit INTR_ADC=P3^6;

sbit RD_ADC=P3^4;

sbit WR_ADC=P3^5;

sbit led1 = P2^4;

sbit led2 = P2^5;

sbit led3 = P2^6;

sbit led4 = P2^7;

unsigned int temp,i;

unsigned int set_t=25;

unsigned char

M[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

unsigned char donvi,chuc ;

void tre(unsigned int t)

{

for(i=1;i<=t;++i);

}

void hienthi(void)

{

Đo và khống chế nhiệt độ 15

Trang 16

chuc=(temp)/10; // tach lay hang chuc

donvi=(temp)%10; // tach lay hang don vi

led1=1;

P0=M[chuc];

tre(800);

led1=0;

P0=0xFF;

led2=1;

P0=M[donvi];

tre(800);

led2=0;

P0=0xFF;

}

void ht_dat()

{

chuc=(set_t)/10; // nt

donvi=(set_t)%10; //nt

led3=1;

P0=M[chuc];

tre(800);

led3=0;

P0=0xFF;

led4=1;

P0=M[donvi];

tre(800);

led4=0;

P0=0xFF;

Trang 17

void so_sanh_temp() // ham so sanh nhiet do

{

if(temp==set_t)

{

den_vang=0;

den_do=den_xanh=1;

}

else

if(temp>set_t)

{

den_xanh=0;

den_do=den_vang=1;

}

else

if (temp<set_t)

{

den_do=0;

den_vang=den_xanh=1;

}

}

void main ()

{

IE=0x85; // cho phep ngat ngoai 0 va ngat ngoai 1

IP=0; // uu tien ngat bang nhau

IT1=IT0=1; // ngat theo suon am

//++++++++++++++++//

den_do=den_vang=den_xanh=1;// tat toan bo den

Đo và khống chế nhiệt độ 17

Trang 18

while(1)

{

WR_ADC=0;//bat dau chuyen doi

tre(50);

WR_ADC=1; //dung chuyen doi

while(!INTR_ADC);//CHO BIEN DOI XONG

RD_ADC=0; // doc du lieu chuyen doi

temp=P1; // gan gia tri chuyen doi vao bien temp

hienthi();

ht_dat();

so_sanh_temp();

}

}

void ngat_int0() interrupt 0 // ham ngat ngoai 0

{

tre(50); // chong rung phim

set_t++;

}

void ngat_int1() interrupt 2 // ham ngat ngoai 1

{

tre(50); // chong rung phim

set_t ;

}

Giải thích chương trình:

Trang 19

ra tại chân 2 đưa vào ADC Thao tác chuyển đổi nhiệt độ đo được thành điện áp cấp vào chân IN của ADC, từ điện áp cấp vào ADC lại được chuyển qua các chân BD để truyền sang cổng P1 của Vi diều khiển dưới dạng các bít 0 và 1

Điều khiển các chân WR, RD, INT0 của vi mạch biến đổi tương tự – số ADC0804 để ADC biến đổi điện áp được lấy từ chân 2 của IC cảm biến nhiệt độ LM35:

- WR=0: cho phép ADC biến đổi

- WR=1:không cho phép ADC biến đổi

- Chân RD và INT0 luôn = 0: luôn cho phép ADC xuất ra giá trị ra cổng và VDK luôn nhận được

- Điện áp tham chiếu tại chân 9 của ADC được hiệu chỉnh thành 1.28V như vậy

ta có kích thước bước là 10mV.Như vậy giá trị nhỏ nhất mà ADC có thể nhận biết được là 10mV tương ứng với 1 độ C

-Giá trị nhiệt độ khống chế được thay đổi bằng 2 phím và được đưa vào ngắt ngoài INT0 và INT1 của VDK

Đợi sau khi đã biến đổi xong thực hiện đọc dữ liệu từ ADC vào Port 1 của vi điều khiển, gán giá trị đọc được cho biến temp Qua chương trình chuyển đổi lại chuyển đổi ngược lại từ dạng bít nhận được sang dạng điện áp và rồi chuyển từ điện áp sang nhiệt độ rồi được hiển thị trên 2Led 7 thanh.(Q1 và Q2)

Ta có thể điều chỉnh nhiệt độ khống chế tăng lên hoặc giảm xuống bằng phím nhấn Thao tác khống chế ở đây được thực hiện mô phỏng qua 3 led là đỏ, vàng, xanh Để tiện cho việc thay đổi giá trị khống chế nhiệt độ,chúng em để 2LED 7 thanh (Q3 và Q4) để hiển thị giá trị nhiệt độ khống chế

Đo và khống chế nhiệt độ 19

Ngày đăng: 28/09/2019, 09:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w