Nhiệt kế điện tử điều khiển tự động 2 - Pdf 94



ix
x
ö
öl
l
ý
ý

Lời nói đầu

Trong công nghệ điện tử ,Vi Xử Lý là một thành phần quan trọng không thể thiếu,nó
mang nhiều tính u việt : có thể thay thế một mạch điện phức tạp bằng một vi mạch nhỏ gọn
với chi phí thấp hơn , nhng ứng dụng lại đa dạng và linh hoạt hơn.Khả năng điều khiển thông
minh hơn ,tiết kiệm năng lợng hơn ,tốc độ xử lý nhanh hơn,ứng dụng nhiều trong hệ thống
nhúng...

Để học tập tốt môn học Vi Xử Lý ngoài những kiến thức trên sách vở cần có sự thực hành
ứng dụng vào thực tế. Trên cơ sở đó chúng em đã áp dụng những kiến thức có đợc trong quá
trình học tập để chế tạo sản phẩm
NHIệT Kế ĐIệN Tử Điều khiển tự động
dùng vi điều
khiển AVR của ATMEL ,có khả năng đo và tự động điều khiển nhiệt độ. áp dụng Vi Xử Lý
trong lĩnh vực này đã đơc nghiên cứu và phát triển nhiều với những loại vi điều khiển ,cảm
biến và ngôn ngữ lập trình khác nhau ví dụ:dùng cảm biến nhiệt độ LM35 kết hợp với
AT89S52và IC biến đổi A/D và hiển thị bằng LED7 thanh đo đợc nhiệt độ từ -55 đến
+150C,dùng LM34C và 16F88 thuộc vi điều khiển PIC dùng ngôn ngữ lập trình BASIC
hiển thị nhiệt độ bằng LCD, chỉ đo đợc nhiệt độ từ -55 đến +125C. Nói chung những loại
cảm biến nhiệt độ họ LM so với họ DS thì độ chính xác không cao và tốc độ truyền tín hiệu
chậm 2C - 150C với tần số (20 -1500Hz) nhng giá thành chế tạo rẻ. Còn ở loại cảm biến họ
DS độ chính xác rất cao do tín hiệu đợc truyền có độ phân dải lên đến 12bit trong 750ms ở
loại cảm biến này có tích hợp ROM 64bit,bộ nhớ Logic, mạch ổn định tín hiệu đầu ra ,chính
vì vậy mà nó khắc phục đợc những nhợc điểm của cảm biến họ LM .So với những loại
nhiệt kế dùng họ vi điều khiển 8051 và PIC nhiệt kế dùng vi điều khiển ATMEGA16L thuộc
họ vi điều khiển AVR có nhiều u điểm hơn,so với vi điều khiển PIC lập trình bằng ngôn
ngữ lập trình BASIC thì dùng AVR lập trình bằng C thì phần mềm sẽ ngắn gọn hơn, còn so
với 8051 thì tốc độ xử lý tín hiệu nhanh hơn không cần lắp thêm bộ biến đổi A/D do
ATMEGA16 đã tích hợp sẵn bộ biến đổi A/D và việc lập trình sẽ đơn giản hơn.


: Nguyên Lý Hoạt Động
+ II.1 : Tổng Quan Họ Vi Điều Khiển AVR
9 + II.2 : Vi Điều Khiển ATMEGA16L
20 + II.3 : Cảm Biến Nhiệt Độ DS18B20
43 + II.4 : Hoạt Động Của Mạch Điện
47
Chơng III
: Mạch Nạp 48
Chơng IV
: Phần Mềm Thiết Kế Và Lập Trình Linhdt1

4



+ Điện áp hoạt động : từ 2.7 đến 5.5VDC

+ Sơ đồ chân :
- VCC : Cấp nguồn +
- GND : Nối đất
- AVCC : Là chân cấp điện cho cổng A(Port A ) và bộ biến đổi A/D,PC3,PC0,ADC7,ADC6
Nó đợc nối nội bộ đến VCC ngay cả trong trờng hợp ADC không đợc sử dụng. Nếu ADC

Linhdt1

5
Không đợc sử dụng , nó phải đợc nối với VCC qua bộ lọc thông thấp.Cả PC6 và PC4 cũng
sử dụng đợc điện áp AVCC.

- AREF : Là chân tín hiệu tham chiếu Analog ( tơng tự ) nối vào bộ biến đổi A/D.
- PORT B : Từ PB7 đến PB0 là cổng I/O 8-bit hai chiều với các điện trở Pull-up bên trong
(đợc lựa chọn cho mỗi bit ) . Bộ đệm đầu ra của Port B có đặc tính điều khiển cân đối với cả
tín hiệu Source( nguồn ) và Sink (bên trong).Khi là tín hiệu đầu vào , các chân của cổng B sẽ
Tiêu thụ dòng nếu các điện trở Pull-Up bên trong đợc kích hoạt. Các chân của Port B là 3
trạng thái khi có tín hiệu Reset đợc kích hoạt, thậm chí đồng hồ không chạy.Tuỳ thuộc việc
đặt các cầu chì lựa chọn xung nhịp, chân PB6 có thể đợc sử dụng nh là bộ khuếch đại dao
dộng đảo.



3. Cảm Biến Nhiệt Độ DS18B20

Linhdt1

6

+ Điện áp hoạt động từ 3.0 5VDC
- Chân 1 : GND
- Chân 2 : DQ (truyền tín hiệu)
- Chân 3 : Nguồn Vcc

+ Có thể đo nhiệt độ từ -55 đến +125C
(-67F đến +257F) GND DQ VCC - Khi lắp vào mạch phải nối chân 2 và chân 3
với một điện trở 4K7

4. Những linh kiện khác 2 tụ 2200uf 16V
7805

- Để lọc nguồn

1 IC ổn áp 5V
Linhdt1

7
I.2 : PHầN MềM Phần mềm viết bằng ngôn ngữ C

/* Nhiet ke dien tu v1.0 by Linh
*/
#asm
.equ __w1_port=0x1b //Đặt cổng nhiệt độ
.equ __w1_bit=6 //Đặt bit nối cảm biến
#endasm
#asm
.equ __lcd_port=0x15 //Đặt cổng LCD
#endasm

#include <lcd.h> // Khởi tạo LCD
#include <ds18b20.h>
#include <delay.h>
#include <stdio.h>
#include <mega16.h>
char lcd_buffer[33];

/* Số lợng tối đa chip DS18B20 nối vào hệ thống */
#define MAX_DEVICES 8

/* Vùng mã DS18B20 ROM */
unsigned char rom_code[MAX_DEVICES][9];
main()
{
unsigned char i,j,t1,devices;

lcd_puts(lcd_buffer);
delay_ms(1000);
lcd_clear();
for (j=0;j<8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_code[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(1000);
};
}
else
while (1); /* Dừng lại khi có lỗi */

/* Đặt chế độ làm việc ở độ chính xác 12 bit */
for (i=0;i<devices;)
if (!ds18b20_init(&rom_code[i++][0],20,30,DS18B20_12BIT_RES))
{
sprintf(lcd_buffer,"Thiet bi\nloi #%u",i);
lcd_clear();
lcd_puts(lcd_buffer);
while (1); /* Dừng lại khi có lỗi */
};

/* Đọc nhiệt độ và kiểm tra điều kiện */
while (1)
{
j=1;
for (i=0;i<devices;i++)


Vi iu khin AVR (Atmel Norway design) thuc h vi iu khin Atmel, nú l h Vi
iu khin mi trờn th trng cng nh i vi ngi s dng. õy l h Vi iu Khin
c ch to theo kin trỳc RISC (Reduced Intruction Set Computer) cú cu trỳc khỏ phc
tp. Ngoi cỏc tớnh nng nh cỏc h VK khỏc, nú cũn tớch hp nhiu tớnh nng mi rt tin
li cho ngi thit k v l
p trỡnh.S ra i ca AVR bt ngun t yờu cu thc t l hu ht
khi cn lp trỡnh cho vi iu khin, chỳng ta thng dựng nhng ngụn ng bc cao HLL
(Hight Level Language) lp trỡnh ngay c vi loi chip x lớ 8 bit trong ú ngụn ng C l
ngụn ng ph bin nht. Tuy nhiờn khi biờn dch thỡ kớch thc on mó s tng nhiu so vi
dựng ngụn ng Assembly. Hóng Atmel nhn thy rng cn phi phỏt trin mt c
u trỳc c
bit cho ngụn ng C gim thiu s chờnh lch kớch thc mó ó núi trờn. V kt qu l h
vi iu khin AVR ra i vi vic lm gim kớch thc on mó khi biờn dch v thờm vo ú
l thc hin lnh ỳng n chu k mỏy vi 32 thanh ghi tớch ly v t tc nhanh hn cỏc
h vi iu khin khỏc t 4 n 12 ln. Vỡ th nghiờn cu AVR l mt
ti khỏ lý thỳ v giỳp
cho học sinh, sinh viờn bit thờm mt h vi iu khin vo loi mnh hin nay.
Linhdt1

10

PHN LOI AVR


Vi cỏc tớnh nng ó nờu, ch ngh (Idle) CPU trong khi cho phộp b truyn tin ni tip
ng b USART, giao tip 2 dõy, chuyn i A/D, SRAM, b m, b nh thi, cng SPI v
h thng cỏc ngt vn hot ng. Ch Power-down lu gi ni dung ca cỏc thanh ghi
nhng lm ụng lnh b to dao ng, thoỏt khi cỏc chc nng ca chip cho n khi cú ngt
ngoi hoc l reset phn cng. Ch
Power-save ng h ng b tip tc chy cho phộp
chng trỡnh s dng gi c ng b thi gian nhng cỏc thit b cũn li l ng. Ch
Linhdt1

11
ADC Noise Reduction dừng CPU và tất cả các thiết bị còn lại ngoại trừ đồng hồ đồng bộ và
ADC, tối thiểu hoá switching noise trong khi ADC đang hoạt động. Trong chế độ standby, bộ
tạo dao động (thuỷ tinh thể/bộ cộng hưởng) chạy trong khi các thiết bị còn lại ngủ. Các điều
này cho phép bộ vi điều khiển khởi động rất nhanh trong chế độ tiêu thụ công suất thấp. Thiết
bị
được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao của Atmel. Bộ nhớ On-chip
ISP Flash cho phép lập trình lại vào hệ thống qua giao diện SPI bởi bộ lập trình bộ nhớ cố
đinh truyền thống hoặc bởi chương trình On-chip Boot chạy trên lõi AVR. Chương trình boot
có thể sử dụng bất cứ giao điện nào để download chương trình ứng dụng trong bộ nhớ Flash
ứng dụng. Phầ
n mềm trong vùng Boot Flash sẽ tiếp tục chạy trong khi vùng Application Flash
được cập nhật, cung cấp thao tác Read-While-Write thực sự.
Để tối đa hoá hiệu năng tính năng và song song, AVR sử dụng kiến trúc Harvard với bộ
nhớ riêng biệt và các BUS cho chương trình và dữ liệu. Các câu lệnh trong bộ nhớ chương
trình được hoạt với một đường ống lệnh mức đơn. Trong khi một lênh đang thực hiện, lệnh
tiếp theo sẽ được n
ạp trước vào từ bộ nhớ chương trình. Điều này làm cho các lệnh được thực
hiện trong mọi chu kỳ đồng hồ. Bộ nhớ chương trình là bộ nhớ In-System Reprogrammable
Flash. Tập thanh ghi truy cập nhanh bao gồm 32 thanh ghi đa năng 8 bit với thời gian truy cập
là 1 chu kỳ đơn. Điều này cho phép ALU hoạt động trong một chu kỳ đơn. Một thao tác điển

nó trong không gian I/O cùng với thêm vào bit khởi tạo ngắt toàn cục trong thanh ghi trạng
thái. Tất cả các ngắt có vector ngắt riêng biệt trong bảng vector ngắt. Các ngắt này có mức độ
ưu tiên theo vị trí của vector ngắt tươ
ng ứng. Mức có địa chỉ càng thấp thì có quyền ưu tiên
càng cao. Không gian bộ nhớ I/O có 64 địa chỉ cho các chức năng ngoại vi của CPU như là
các thanh ghi điều khiển, SPI, và các chức năng I/O khác. Bộ nhớ I/O có thể truy cập trực tiếp,
hoặc như là vị trí không gian dữ liệu theo chúng của tệp thanh ghi, $20-$5F. Thêm vào đó, nó
có không gian I/O mở rộng từ $60 đến $FF trong SRAM, các không gian này chỉ có các lệnh
ST/STS/STD và LD/LDS/LĐ có thể sử dụng.

S¬ §å KiÕn Tróc AVR

Linhdt1

13

: Khối nhận biết trạng thái và điều khiển

PRograme counter
: Bộ đếm chơng trình

Flash program memory :
Bộ nhớ flash, là một loại bộ nhớ s dng cỏc chớp NAND (tớch
hp nhiu transitor lờn mt tm bỏn dn), cỏc chớp ny cú kớch thc nh, tc c/ghi cao,
dung lng ln

Intruction register :
thanh ghi lệnh

Intruction decoder :
Giải mã lệnh

Control lines :
Những đờng điều khiển

IntErrupt unit:
Bộ xử lý ngắt
Linhdt1

14

SPI unit:
(Serial Peripheral Interface) mch ghộp ni ngoi vi ni tip, l mch liên kt d
liu ni tip ng

b cho phộp b iu khin truyn thụng vi cỏc thit b ngoi vi.
Global Interrupt Enable- bit cho phộp ngt ton ccBit cho phộp ngt ton cc phi c t cho cỏc ngt cú th hot ng. iu khin
hot ng ca cỏc ngt riờng bit c thc hin trong cỏc thanh ghi iu khin riờng bit.
Nu thanh ghi cho phộp ngt ton cc c xúa, khụng cú mt ngt riờng bit no c hot
ng. Bit I c xúa bi phn cng sau khi mt ngt xy ra v c t bi lnh RETI cho
Linhdt1

15các phép các ngắt tiếp theo hoạt động. Bit I cũng có thể được đặt và xóa bởi câu lệnh
SEI và CLI trong các ứng dụng.
Bit 6 – T: Bit Copy Storage
Các câu lệnh copy bit BLD (Bit LoaD) và BST (Bit STore) sử dụng bit T như là đích
hoặc nguồn cho bit hoạt động. 1 bit từ một thanh ghi trong tệp thanh ghi có thể được copy vào
bit T bằng lệnh BST và một bit trong T có thể được copy vào 1 bit trong thanh ghi trong tệp
thanh ghi bằng lệng BLD.

+ Bit 5 – H: Half Carry Flag

Cờ nhớ một nửa dùng cho các toàn hạng hạng một nửa byte trong các phép toán số học.
Cờ H sử dụng phép toán số học với số BDC .


Hình 1.4 Tệp thanh ghi đa năng của AVR CPU Hầu hết các lệnh thực hiện với tệp thanh ghi có truy cập trực tiếp tới tất cả các thanh ghi,
và hầu hết chúng là lệnh đơn chu kỳ. Mỗi một thanh ghi được chỉ định bởi một địa chỉ bộ nhớ
dữ liệu, bố trí chúng trực tiếp vào 32 vị trí đầu tiên của không gian dữ liệu người sử dụng.
Mặc dù không phải là thực hiện theo luật như
các vị trí của SRAM, tổ chức bộ nhớ này
cho phép linh động cao khi truy cập các thanh ghi, như là thanh ghi con trỏ X,Y,Z có thể được
đặt vào danh mục của mọi thanh ghi trong tệp.
The X-register, Y-register and Z-register

Các thanh ghi R26..R31 có thêm các chức năng ngoài việc sử dụng như là một thanh
ghi đa năng. Các thanh ghi này là các con trỏ địa chỉ 16 bit cho chế độ địa chỉ gián tiếp của
không gian dữ liệu. 3 thanh ghi địa chỉ gián tiếp X, Y, Z được mô tả như như hình 3.5.
Trong các chế độ địa chỉ khác, các thanh ghi địa chỉ này có các chức năng như là độ
lệch cố định, tự động tăng và tự động giảm.


rất nhỏ, chỉ SPL là cần. Trong trường hợ
p này SPH không sử dụng.
Sơ đồ các thanh ghi của con trỏLinhdt1

18
Reset and Interrupt Handling - điều khiển ngắt và reset
AVR cung cấp 1 vài nguồn ngắt khác nhau. Các ngắt này và vector reset riêng biệt có
vector chương trình riêng biệt nằm trong không gian nhớ chương trình. Tất cả các ngắt được
chỉ định bởi các bit cho phép riêng biệt mà các bit này phải được ghi mức logic 1 cùng với bit
cho phép ngắt toàn cục trong thanh ghi trạng thái để cho phép ngắt. Phụ thuộc vào giá trị PC,
các ngắt này phải được tự động loại bỏ khi các bit Boot Lock - BLB02 or BLB12 - được lập
trình. Yếu tố này cải thiện độ an toàn phần mềm.

Đị
a chỉ thấp nhất trong không gian bộ nhớ chương trình được mặc định là Reset và
Interrupt Vectors. Bảng vector ngắt
cả các ngắt được kích hoạt có thể ngắt những thường trình ngắt hiện tại. Bit I được đặt tự động
khi trở về từ lệnh RETI của ngắt.

Có 2 loại ngắt cơ bản.
+ Loại thứ nhất được gây ra bởi sự kiện mà đặt cờ ngắt. Đối với loại ngắt này, PC được
hướng tới Interrupt Vector tương ứng để thực hiện thườ
ng trình phục vụ ngắt và phần cứng
xoá cờ ngắt tương ứng. Các cờ ngắt cũng có thể được ghi mức logic 1 vào vị trí bit cờ để được
xoá. Nếu một điều kiện ngắt xảy ra trong khi bit cho phép ngắt tương ứng bị xoá, thì cờ ngắt
sẽ được đặt và được nhớ cho đến khi ngắt được thực hiện, hoặc là cờ ngắt được xoá bởi phần
m
ềm. Tương tự nếu 1 hoặc nhiều điều kiện ngắt xảy ra trong

khi cờ cho phép ngắt toàn cục bị xoá thì các cờ ngắt tương ứng sẽ được đặt và nhớ cho
đến khi cờ cho phép ngắt toàn cục được đặt và nó sẽ được thực hiện theo thứ tự ưu tiên.
+ Loại ngắt thứ 2 sẽ kích hoạt kéo dài trong thời gian điều kiện ngắt tồn tại. Các ngắt
này không c
ần thiết phải có cờ ngắt. Nếu điều kiện ngắt mất đi trước khi ngắt được cho phép,
thì ngắt sẽ không xảy ra.

Khi AVR thoát khỏi từ một ngắt, nó sẽ luôn trở về chương trình chính và thực hiện một
hoặc nhiều lệnh trước khi một ngắt nào đó còn đợi đó được phục vụ.

Chú ý rằng các thanh ghi trạng thái không tự động lưu trữ khi nh
ập vào một thường
trình ngắt, và cũng không lưu trữ lại khi trở về từ một thường trình ngắt. Điều này phải được
thực hiện bởi phần mềm.
Linhdt1

20

II.2 : §Æc §iÓm Cña ATMEGA16L

+ S¬ ®å nguyªn lý :
Linhdt1

21

- Lp trỡnh trờn trong h thng bi chng trỡnh on-chip Boot
- Thao tỏc c trong khi nghi thc s
- 512 bytes EEFROM
Cú th thc hin 100.000 ln ghi /xoỏ
- 1Kb SRAM bờn trong
- Lp trỡnh Khoỏ an ninh phn mm
+ Giao diện nối tiếp đồng bộ ( chuẩn IEEE std.1149.1).Khi thực hiện trao đổi dữ liệu với các
thiết bị tơng thích thì khung dữ liệu 8Bit giữa 2 thiết bị đợc truyền đồng bộ (cùng xung nhịp
đồng hồ)
- ít xảy ra lỗi
- Lập trình bộ nhớ Flash ,EEPROM ,ngắt ,khoá Bit thông qua giao diện jTAG
+ Ghộp ni ngoi vi
- 2 b
nh thi/ b m 8 bit vi cỏc ch t l nh trc v ch so sỏnh.
- 1 b nh thi/ b m 16 bit vi cỏc ch t l nh trc riờng bit, ch so sỏnh v
ch bt gi
- B thi gian thc vi b to dao ng riờng bit
- 4 kờnh PWM
- 8 kờnh, ADC 10 bit
- Giao in ni tip 2 dõy hng ti byte
Linhdt1

23
- B truyn tin ni tip USART kh trỡnh
- Giao din SPI ch / t
- Watchdog Timer kh trỡnh vi b to dao ng bờn trong riờng bit
- Mỏy so mu tng t bờn trong
+ Cỏc c im c bit khỏc.
- Power-on Reset v dũ Brown-out kh trỡnh.
- B to dao ng c nh c bờn trong.

hn v thc hin mt s chc nng ca h thng
)
Atmega16L AVR c h tr bi b
chng trỡnh y v cỏc tool(tiện ích) phỏt trin h thng, bỏo gm: B biờn dch
C,macro assemblers, program debugger/simulators(chơng trình mô phỏng), in-circuit
emulators(mạch mô phỏng) v evaluation kits(kit phát triển). Linhdt1

24

Memories b nh của ATMEGA16L

Kin trỳc AVR cú 2 khụng gian b nh chớnh bao gm b nh chng trỡnh v b nh d
liu. Thờm vo ú, Atmega16L cú mt b nh EEPROM lu tr d liu. Tt c 3 khụng
gian ny l tuyn tớnh v nh thng l.

1.3.6.1 In-System Reprogrammable Flash Program Memory b nh chng trỡnh Flash cú
th lp trỡnh li nm bờn trong vi x lý.

Atmega16L cha 16K bytes b nh Flash cú th lp trỡnh li c nm trong chip
cha chng trỡnh. T khi tt c cỏc lnh ca AVR l 16 hoc 32 bit thỡ Flash c t chc
thnh 8Kx16. Vỡ lý do an ton phn mm nờn b nh chng trỡnh Flash c chia thnh 2
vựng: Vựng np chng trỡnh boot(chơng trình khởi động) v vựng chng trỡnh ng dng.

B nh Flash cú th thc hi
n ghi/xoỏ ớt nht 10.000 ln. B m chng trỡnh (PC) l
12 bit , nú cú th a ch hoỏ c 4K b nh chng trỡnh.
Bng hng s cú th c t trong khụng gian b nh chng trỡnh.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status