Professional Documents
Culture Documents
LỜI CẢM ƠN
--- -D D D ----
ðề tài ñược hoàn thành trong sự hỗ trợ và ñộng viên rất
nhiều từ thầy cô cũng như bạn bè thân thuộc. ðó là những tình
cảm trân trọng, ñáng quý và thật phấn khởi biết bao khi thấy
mọi người vẫn luôn ở bên cạnh mình trong những hoàn cảnh
khó khăn nhất. Dù ở bất kỳ nơi ñâu, tôi sẽ vẫn nhớ và ghi sâu
những tình cảm cao ñẹp này.
Em xin chân thành cảm ơn thầy Ngô Văn Thuyên khoa ðiện
- ðiện tử ñã tạo ñiều kiện và hướng dẫn em cách học tập cũng
như nghiên cứu ñể hoàn thành tốt ñề tài này.
Chân thành cảm ơn những người bạn vẫn luôn ñồng hành
cùng mình cả trong những lúc khó khăn nhất. Cảm ơn quý thầy
cô trong Khoa ðiện - ðiện tử Trường ðại học Sư Phạm Kỹ
Thuật TP.HCM luôn tạo mọi ñiều kiện tốt cho em trong suốt
thời gian qua.
Qua ñây em cũng rất mong nhận ñược những ý kiến ñóng
góp quý báu của quý thầy cô và bạn bè.
Cuối cùng em xin chúc quý thầy cô cùng bạn bè nhiều sức
khỏe và thành công trong mọi việc.
Ngaøy nay, ñieàu khieån töï ñoäng ñaõ trôû thaønh moät nhu
caàu khoâng theå thieáu ñöôïc. Döôùi söï xuaát hieän cuûa caùc hoïc
thuyeát vaø caùc öùng duïng cuï theå trong ñôøi soáng haøng ngaøy,
coù theå noùi ñieàu khieån töï ñoäng ñang chi phoái daàn cuoäc soáng
cuûa chuùng ta, mang laïi söï tieän nghi vaø thoaûi maùi cho chuùng
ta.
Ñieàu khieån nhieät ñoä chæ laø moät lónh vöïc nhoû beù trong
ñieàu khieån töï ñoäng, vaø cuõng ñaõ coù nhieàu coâng trình coù hieäu
quaû cao nhö caùc loø nung trong coâng nghieäp, caùc loø nöôùng
daân duïng, … ñoøi hoûi phaûi ñieàu khieån sao cho nhieät ñoä baèng
hoaëc xaáp xæ nhieät ñoä ñaët ñeå ñaùp öùng caùc ñieàu kieän maø nhu
caàu saûn xuaát ñaët ra.
Ñoà aùn naøy laø moät phaàn nhoû ñeå phuïc vuï trong vieâc
ñieàu khieån nhieän ñoä moät caùch ñeå daøng vaø tieän lôïi hôn.
Thoâng qua ñoà aùn naøy ta cuõng coù theå hieåu roû theâm veà vi xöû
lyù hoï Atmega vaø caùc phaàn meàm öùng duïng khaùc nhö:
CodeVisionAVR, Visual Studio 2005, AvrProg…
PHẦN I
PHẦN CỨNG
Nguồn cấp:
2,7->5.5 V với ATmega16L
4.5->5.5V với ATmega16H
Tiêu hao năng lượng:
Khi họat ñộng tiêu thụ dòng 1,1mA.
Ở mode Idle tiêu thụ dòng 0.35mA.
Ở chế ñộ Power_down tiêu thụ dòng nhỏ hơn 1uA.
ðây là những chức năng cơ bản thường thấy trong các Vi ñiều khiển AVR,ngòai ra
trong các vi ñiều khiển khác thuộc dòng vi ñiều khiển này thì thường ñược hỗ trợ
thêm những chức năng ñặc biệt.Ví dụ AT90can128 hỗ trợ thêm bộ giao tiếp mạng
Can bus on-chip.
Các phần mềm lập trình cho AVR:
AVRStuido (free), Code Vision. Các phần mềm này có hỗ trợ phần nạp và debug
on chip.
Ngoài ra có thể dùng chương trình nạp PonyProg2000, Winpic800...
III. Cấu trúc tổng quát:
CPU của AVR có chức năng bảo ñảm sự hoạt ñộng chính xác của các chương
trình. Do ñó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán,
ñiều khiển các thiết bị ngoại vi và quản lý ngắt.
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và
dữ liệu. Các lệnh ñược thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ chương
trình ñược lưu trong bộ nhớ Flash.
ðể ñảm bảo tối ưu hiệu năng và song song hóa hoạt ñộng xử lý, lõi CPU của AVR
ñược thiết kế theo kiểu kiến trúc HARVARD – Tách riêng bộ nhớ chương trình và bộ nhớ
dữ liệu. Các lệnh trong bộ nhớ chương trình ñược thực hiện trong một lớp (kênh cung cấp)
pipeline riêng. Tức là trong khi một lệnh ñang ñược thực thi, lệnh kế tiếp cũng ñồng thời
ñược nạp ñể sẵn sàng thực thi. ðiều này cho phép khả năng thực hiện lệnh trong một chu
kỳ xung ñồng hồ. Bộ nhớ chương trình loại In-System Reprogrammable Flash memory.
Bộ thanh ghi truy cập nhanh Register File gồm có 32×8 bit ô nhớ ña mục ñích với
thời gian truy cập trong một chu kỳ xung ñồng hồ.
ALU hỗ trợ tính toán số học và logic trên các thanh ghi hoặc trên thanh ghi và hằng
số. Các phép tính một thanh ghi cũng ñược hỗ trợ. Sau hoạt ñộng tính toán, thanh ghi
Status Register ñược cập nhật ñể phản ánh thông tin kết quả của phép tính.
Tiến trình chương trình ñược ñiều khiển bởi các lệnh nhảy có ñiều kiện và không
ñiều kiện và lệnh call, khả năng ñịnh ñịa chỉ trực tiếp trên toàn miền nhớ. Hầu hết các lệnh
AVR có dạng 16 bit.
Bộ nhớ Flash chương trình ñược chia làm 2 phần: phần chương trình Boot và phần
chương trình ứng dụng. Cả hai phần ñều dành ra vùng Lock bit ñể bảo vệ chống ghi hoặc
chống ghi/ñọc.
Không gian bộ nhớ trong AVR là tuyến tính và liên tục
Module ngắt linh hoạt có các thanh ghi ñiều khiển nằm trong không gian I/O nhưng
biến cho phép ngắt toàn cục lại nằm trong thanh ghi Status Register. Các ngắt ñều có véc-
tơ ngắt riêng biệt ñược cho trong bảng véc-tơ ngắt. Sự ưu tiên ngắt tùy thuộc vào vị trí
trong bảng véc-tơ ngắt, càng ở dưới thì càng có mức ưu tiên cao.
Không gian nhớ I/O bao gồm 64 ñịa chỉ phục vụ ñiều khiển hoạt ñộng của các
ngoại vi như Control Register, SPI và các chức năng I/O khác.
1. ðơn vị xử lý số học và logic.
AVR ALU hiệu năng cao tác ñộng trực tiếp tới 32 thanh ghi ña năng. Trong vòng 1
chu kỳ, các toán hạng số học thực hiện giữa các thanh ghi ña năng hoặc giữa một thanh ghi
và một toán hạng tức thời. Các toán tử của ALU ñược chia làm 3 loại chính: Số học, logic,
và xử lý bit. Một số phép xử lý của kiến trúc này cũng cung cấp bộ nhân số có dấu và
không có dấu và dạng phân số.
• Bit 7 – I: Global Interrupt Enable- bit cho phép ngắt toàn cục
Bit cho phép ngắt toàn cục phải ñược ñặt ñể cho các ngắt có thể hoạt ñộng. ðiều
khiển hoạt ñộng của các ngắt riêng biệt ñược thực hiện trong các thanh ghi ñiều khiển
riêng biệt. Nếu thanh ghi cho phép ngắt toàn cục ñược xóa, không có một ngắt riêng biệt
nào ñược hoạt ñộng (Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào ñược phục
vụ). Bit I ñược xóa bởi phần cứng sau khi một ngắt xảy ra và ñược ñặt bởi lệnh RETI ñể
cho 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 .
• Bit 4 – S: Sign Bit, S = N ⊕ V – bit dấu
Bit S là phép XOR giữa cờ âm và cờ tràn V .
• Bit 3 – V: Two’s Complement Overflow Flag – cờ tràn mã bù 2
Cờ tràn V hỗ trợ phép toán số bù 2.
• Bit 2 – N: Negative Flag – cờ âm
Cờ âm N hiển thị kết quả âm của phép toán logic hoặc số học.
• Bit 1 – Z: Zero Flag
Cờ Zero Z hiển thị kết quả bằng 0 của phép toán logic hoặc số học.
• Bit 0 – C: Carry Flag
Cờ nhớ C hiển thị số nhớ trong phép toán logic hoặc số học.
3. Các thanh ghi chức năng chung.
Phần ñầu Register File từ R0 ñến R31 (32 thanh ghi) là các thanh ghi ña mục ñích.
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.
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC ñược lưu vào
ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi
thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và
khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn
xếp cần ñược chương trình ñặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình
con ñược gọi hoặc các ngắt ñược cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải
lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
5. Các thanh ghi xử lý phần cứng
Có 3 thanh ghi chủ yếu cho mỗi port pin: DDxn, PORTxn và PINxn (x là chữ cái B,
C, D, n là số của chân port. Ví dụ PB1 chỉ chân số 1 của port B (15).
DDxn - Port Direction Register : Thanh ghi qui ñịnh chiều cho chân port. Nếu
DDxn ñược ghi 1, chân Pxn là chân ngõ vào (input). Nếu DDxn ñược ghi 0, chân Pxn là
ngõ ra (output). Giá trị mặc ñịnh lúc bật nguồn của DDxn là logic 0.
PORTxn - Port Data Register: Thanh ghi xuất dữ liệu cho chân port. Khi Pxn cấu
hình ngõ ra (output), nếu PORTxn ñược ghi logic 1, chân Pxn xuất mức cao, nếu PORTxn
ñược ghi mức thấp, chân Pxn xuất mức thấp. Khi Pxn cấu hình ngõ vào (input - DDnx=1),
nếu PORTxn = 1, ñiện trở kéo lên ñược tích cực; nếu PORT xn = 0, Pxn ở trạng thái ngõ
vào tổng trở cao (tri-stated).
PINxn - Port Input Pins Address: Thanh ghi này dùng ñể ñọc tín hiệu vào.
6. ð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 – bảng 3.1.
Khi ñịa chỉ càng nhỏ thì thứ tự ưu tiên càng cao.
Các vector ngắt có thể ñược chuyển sang ñầu của vùng Boot Flash bằng cách ñặt
bit IVSEL trong thanh ghi ñiều khiển ngắt (MCUCR). Reset Vector có thể ñược chuyển
sang ñầu của vùng Boot Flash bằng cách lập trình BOOTRST fuse.
Khi một ngắt xảy ra, bit I (bit cho phép ngắt toàn cục) ñược xóa và tất cả các ngắt
ñược loại bỏ. Phần mềm sử dụng có thể ghi mức logic 1 vào bit I ñể cho phép các ngắt tiếp
theo. Tấ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.
IV. Atmega8.
1. Sơ ñồ chân cửa Atmega8
Ba kênh ñiều chế ñộ rộng xung PWM ñược nạp nguồn từ 2 chân AVCC
(chân số 20) và AREF (chân số 21) với ñầu ra là chân OCR2 ( chân số 17).
Sáu kênh ADC (chân 23 ñến chân 28) trong ñó có 2 kênh ADC4 và ADC5 xử lý tín hiệu 8
bit , 4 kênh xử lý tín hiệu 10 bit là ADC0, ADC3, ADC6 và ADC7.
Kít thí nghiệm có ñầy ñủ những gì ñể ta thực hành với Amega8 như: các port ñược
ñưa ra ngoài bằng các chân sẵn, có một biến trở ñể tex ADC, một cổng COM và ñặc biệt
có thêm một cổng USB ñể thuận tiện cho việc thí nghiệm không cân dùng nguồn ngoài, ta
tận dụng ñược nguồn từ cổng USB của máy tính.
ðể máy tính có thể nhận ñược kít thí nghiệm này ta cần phải cài ñặt Driver cho máy.
Ta có thể thấy rằng mạch nạp này khá ñơn giản, nó chỉ một con Atmega8 một tụ
thạch anh 12000MHZ vài con ñiện trở…
Sơ ñồ nguyên lý của mạch nạp.
Tính năng.
Nạp ñược hầu hết các dòng AVR và một số chip 89S của Atmel.
Hỗ trợ ñầy ñủ các tác vụ nạp chip thông thường như: Ghi/xóa/ñọc nội dung trong
chip, kiểm tra lỗi sau khi nạp.
Hỗ trợ khóa chip và lập trình fuse bit .
Header nạp ISP chuẩn ICE 5x2 như dòng KIT thí nghiệm STK của ATMEL giúp
kết nối thuận tiện.
Tốc ñộ nạp cao, sử dụng ñược với hầu hết các trình biên dịch: Code Vision, AVR
Studio...
Cực kì ñơn giản trong kết nối, cài ñặt và sử dụng.
Danh sách chip ñược hỗ trợ:
AT89S53 ATmega8
AT89S8252 ATmega8515
AT90S2313 ATmega8535
AT90S8515 ATmega16
ATtiny26 ATmega32
ATtiny45 ATmega64
ATtiny2313 ATmega128
ATmega48 AT90CAN12
VII. Cảm biến nhiệt ñộ LM35.
Một số cảm biến nhiệt ñộ thông dụng như:
• Giới hạn nhiệt ñộ của cảm biến là: -600C ñến 1500C.
• ðộ nhạy 10mV/1oC.
PHẦN II
ðể mở một trang lâp trình mới cũng giống như những chương trinh khác ta làm như
sau: File/ New chương trình sẻ hiện cửa sổ sau.
Chọn Project sau ñó click chuột vào OK ñược cửa sổ hỏi xem có sử dụng Code
Winzard không:
Sử dụng chíp AVR nào và thạch anh tần số bao nhiêu ta nhập vào tab Chip.
ðể khởi tạo cho các cổng IO ta chuyển qua tab Ports.
Các chân IO của AVR mặc ñịnh trạng thái IN, muốn chuyển thành trạng thái OUT ñể có thể ñưa
các mức logic ra ta click chuột vào các nút IN (mầu trắng) ñể nó chuyển thành OUT trong các
Tab Port.
Sau khi khỏi tạo các port ra vao ta tiếp tục khỏi tạo ñến tính năng ADC.
Ta check vào Use 8 bít, ñể ADC trả về giá trị 8 bít, và ta ADC dùng ngắt check vào
Interrupt, về ñiện áp tham khảo AREF thì lấy ñiện áp của chân AREF của AVR ñược nối
với 5V. Tần số ADC tùy các bạn thích nhanh hoặc chậm chọn giá trị phù hợp. Trong box
Automatically Scan Inputs các bạn check vào Enabled. Vì chúng ta cần ADC 2 kênh, 1
kênh dùng biến trở ñể test ADC, một kênh từ LM35 ñấu với 2 bit 0 và 1 của PORTA do
ñó chọn First 0, Last 1.
Tiếp tục ta khỏi tạo cổng nối tiếp các bước khởi tạo.
Trong tab USART check vào các ô Receiver ñể cho phép nhận dữ liệu; Rx Interrupt
ñể nhận dữ liệu sử dụng ngắt; Transmitter ñể cho phép truyền dữ liệu; Tx Interrupt ñể
truyền dữ liệu sử dụng ngắt.
Các thông số còn lại: Receiver Buffer và Transmitter Buffer là bộ nhớ ñệm nhận và
ñệm truyền. Trong ứng dụng ñơn giản chúng ta ñể mặc ñịnh là 8, trong các ứng dụng
truyền số lượng thông tin lớn ta có thể tăng bộ ñệm ñể tránh mất thông tin. Tốc ñộ baud
mặc ñịnh là 9600 (bit/s). Các thông số của bộ truyền: 8 bit, 1 bit dừng(stop), không ưu
tiên. Chế ñộ truyền không ñồng bộ.
Sau khi khởi tạo tất cả các port và các chuẩn xong ta tiến hành lưu: chọn
File/Generate, Save and Exit.
ðược cửa sổ yêu cầu nhớ các file của Project.
Sau khi nhớ song 3 file : IO.c – IO.prj – IO.cwp ñược cửa sổ như sau:
Chúng ta ñã ñược code vision khởi tạo code. Trong ñó có ñầy ñủ code cần
thiết mà khi nãy chúng ta cấu hình cho cổng IO, ADC, truyền nối tiếp. Chúng ta
bắt ñầu soạn code.
2. Code soạn thảo cho AVR.
Sau khi ñã khởi ñộng phần mềm Visual Studio 2005, ta thực hiện các bước tạo
giao diện cho chương trình như sau.
Sau khi hoàn thành ta ñược giao diện thiết kế như sau:
Chú ý:
+ Cách kiểm tra lỗi:
Như vậy với phần mềm Visual Studio 2005 ta ñã thiết kế xong giao diện ñể chạy
chương trình.
PHẦN III
Ta tiếp tục ñiều chỉnh hai thông số (giới hạn trên và dưới) của chương trình, ñể khi
nhiệt ñộ thay ñổi trong từng giới hạn tương ứng, chương trình sẽ có sự thay ñổi hiệu ứng
thích hợp ñể người dùng dễ nhận biết.
II. Ứng dụng của ñồ án.
Với sản phẩm ñược tạo ra ở trên ta có thể sử dụng ñể:
• ðo nhiệt ñộ phòng, từ dữ liệu thu thập ñược ta có thể ñiều khiển các thiết bị
trong phòng một cách tự ñộng như: quạt, ñiều hoà, báo cháy…
• Ứng dụng trong việc ño nhiệt ñộ của lò nhiệt trong các thí nghiệm.
MỤC LỤC