Cần chú ý đến nhiễu khi đặt điện áp tham chiếu, nếu dùng điện ápngoài đặt trên chân VREF thì điện áp này phải được lọc thật tốt, nếu dùng điện áptham chiếu nội 2.56V hoặc AVCC thì chân V
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KHOA : CƠ HỌC KỸ THUẬT VÀ TỰ ĐỘNG HÓA
BÀI TẬP LỚN
ĐỀ TÀI: THIẾT KẾ BỘ ĐO VÀ KHỐNG CHẾ NHIỆT ĐỘ, HIỂN THỊ LCD
“Nhiệt độ khống chế được đặt bằng LM35 thao tác khống chế được mô phỏng bằng
3 led với 3 màu khác nhau, sai số cho phép là ±0.5°C”
Giáo viên hướng dẫn: Phạm Mạnh Thắng
Sinh viên thực hiện: 1.Phạm Tiến Anh
2.Nguyễn Thị Đào 3.Bùi Thị Hiền
4.Hoàng Thị Toàn
Trang 2LỜ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ấtnhiề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ĩnhvự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, emchỉ dùng vi điều khiển để đo và khống chế nhiệt độ, đồng thời cho hiển thị lênLCD
Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệmnhững ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triểnnhiề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áchtham 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 và các bạn
Trang 3-Đầu ra ứng dụng : các led hiển thị.
III CẤU TẠO VÀ NGUYÊN LÝ HOẠT ĐỘNG CƠ BẢN CỦA TỪNG VI MẠCH.
Bộ xử lý trung tâm
ATMEGA8
Khối hiển thị LCD
Khối điều khiển khống chế
Đầu ra ứng dụng
Trang 41.Tạo nguồn 5V cho mạch điều khiển
Nội dung: Mạch ổn áp cố định dùng Diode Zener,mạch ổn áp dùng tranzitokhuếch đại,IC ổn áp LM 7805 ứng dụng của IC ổn áp trong mạch cấp nguồn
1 Mạch ổn áp cố định dùng Diode Zener
Mạch ổn áp tạo áp 33V cố định cung cấp
cho mạch dò kênh trong Ti vi mầu
Từ nguồn 110V không cố định thông qua điện trở hạn dòng R1 vàgiảm trên Dz 33V để lấy ra một điện áp cố định cung cấp cho mạch
dò kệnh
Khi thiết kế một mạch ổn áp như trên ta cần tính toán điện trởhạn dòng sao cho dòng điện ngược cực đại qua Dz phải nhỏ hơndòng mà Dz chịu được, dòng cực đại qua Dz là khi dòng qua R2 = 0
Như sơ đồ trên thấy dòng cực đại qua Dz bằng sụt áp trên R1chia cho giá trị R1 , gọi dòng điện này là I1 ta có :
Trang 5Mạch ổn áp có Tranzitor khuếch đại
Ở mạch trên điện áp tại điểm A có thể thay đổi và còn gợn xoaychiều nhưng điện áp tại điểm B không thay đổi và tương đối phẳng
Nguyên tắc ổn áp : Thông qua điện trở R1 và Dz gim cố định điện
áp chân B của
Transistor Q1, giả sử khi điện áp chân E đèn Q1 giảm => khi đóđiện áp UBE tăng => dòng qua đèn Q1 tăng => làm điện áp chân
E của đèn tăng , và ngược lại
Mạch ổn áp trên đơn giản và hiệu quả nên được sử dụng rất rộngdãi và người ta đã sản xuất các loại IC họ LA78 để thay thế chomạch ổn áp trên, IC LA78 có sơ đồ mạch như phần mạch có mầuxanh của sơ đồ trên
Trang 6Họ IC78 chỉ cho dòng tiêu thụ khoảng 1A trở xuống, khi ráp ICtrong mạch thì U in > Uout từ 3 đến 5V khi đó IC mới phát huy tácdụng.
1.1 Nguyên lý hoạt động chung của IC đo nhiệt độ
IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tínhiệu điện dưới dạng dòng điện hay điện áp Dựa vào đặc tính rất nhạy của các bán
Trang 7dẫn với nhiệt độ, tạo ra điện áp hoặc dòng điện tỷ lệ thuận với nhiệt độ tuyệt đối Đotín hiệu điện ta biết được giá trị của nhiệt độ cần đo Sự tác động của nhiệt độ tạo rađiện tích tự do và các lỗ trống trong chất bán dẫn Bằng sự phá vỡ các phân tử, bứtcác electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuấthiện các lỗ trống Làm cho tỷ lệ điện tử tự do và lỗ trống tăng lên theo quy luật hàm
3.Hiển thị LCD
Trong các ứng dụng của vi điều khiển thì LCD đóng vai trò quan trọng nó là bộphận giao tiếp giữa người và thiết bị Có rất nhiều loại LCD khác nhau của các hãngkhác nhau Có loại LCD 8x1,8x2,16x2 Ngày nay, hầu hết các bộ hiển thị LCDthông minh đều tuân theo một tiêu chuẩn chung Tùy theo yêu cầu về hiển thị thôngtin mà ta chọn loại nào cho phù hợp Trong bài tập lớn này chúng em dùng LCD loại8x2 2 dòng 8 kí tự một dòng Do loại này dễ dùng và giá thành cũng phải chăng dovậy chúng em dùng để hiển thị nhiệt độ và các thông báo khác
0= thanh ghi lệnh1=thanh ghi dữ liệu
Trang 81=đọc từ LCD module
0:vô hiệu hóa1: hoạt động
Từ 1 xuống 0: bắt đầu đọc/ghi
b.Mạch trong đồ án
c.Nguyên tắc hiển thị ký tự trên LCD
một chương trình hiển thị ký tự trên LCD sẽ đi theo bốn bước sau:
Trang 9+Các bước 3, 4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự.
+ Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD cần phải kiểm tra cờbận trước Vì vậy, cần phải chủ động phân phối thời gian khi ra lệnh cho LCD( ví
dụ sau khi xóa màn hình sau khoảng 2ms mới ra lệnh khác vì thời gian để LCD xóamàn hình là 1,64ms).+chế độ hiển thị mặc định sẽ là hiển thị dịch, vị trí con trỏ mặcđịnh sẽ là đầu dòng thứ nhất
trỏ về
đầu dòng
đưa về đầudòng trên, vănbản nếu cóđược dịch đimột kí tựDịch
chuyển
chuyển con trỏsau khi một kí
tự xuất hiệnHiển thị
kí tự tại vị trícon trỏ BDịch
Trang 10vào bộ nhớhay bộ phát kítự
Đọc dữ
liệu
bộ nhớ hay bộphát kí tự
4.Vi điều khiển ATMEGA8
4.1.Tổng quan:
SRAM: 1Kbytes
EEPROM : 512 bytes
28 thanh ghi I/O
160 thanh ghi vào ra mở rộng
32 thanh ghi đa mục đích
Bộ so sánh tương tự có thể lựa chọn ngõ vào
Khối USART lập trình được
Khối truyền nhận nối tiếp SPI
Trang 11 Điện thế : 4.5v - 5.5v
…v.v…
Sơ đồ cách tổ chức bộ nhớ và các cấu trúc thanh ghi của ATMEGA8
đã chỉ rất rõ trong tài liệu datasheet, trong phạm vi bài tập củachúng em.Chúng em xin trình bày cấu trúc các thanh ghi của bộchuyển đổi ADC và khối giao tiếp UART
4.2 Bộ chuyển đổi ADC
*Đặc điểm
5 chân trên PORTC của atmega8 được dùng cho bộ ADC, chân PC0 tương ứngkênh ADC0 và chân PC5 tương ứng với kênh ADC5
Độ phân giải 10 bit, có tất cả 6 kênh đơn (các chân ADC0 đến ADC5)
Sai số tuyệt đối: ±2 LSB
Thời gian chuyển đổi từ 13-260µs,
Dải tín hiệu ngõ vào từ 0v-Vcc,
Bộ ADC của atmega8 là loại ADC xấp xỉ liên tiếp với 2 chế độ là chuyển đổi liêntục và chuyển đổi từng bước
Sơ đồ khối của khối ADC
ADC chứa mạch giữ và lấy mẫu để đảm bảo cho điện thế vào được giữ cố địnhtrong suốt quá trình chuyển đổi ADC trên AVR cần được “nuôi” bằng nguồn điện
áp riêng ở chân AVCC, giá trị điện áp cấp cho AVCC không được khác nguồn nuôichip (VCC) quá ± 0.3V Nhiễu là vấn đề rất quan trọng khi sử dụng các bộ ADC, để
Trang 12giảm thiểu sai số chuyển đổi do nhiễu, nguồn cấp cho ADC cần phải được “lọc” kỹcàng Một cách đơn giản để tạo nguồn AVCC là dùng một mạch LC kết nối từnguồn VCC của chip như minh họa trong hình vẽ
Điện áp tham chiếu cho ADC trên AVR có thể được tạo bởi 3 nguồn: dùng điện áptham chiếu nội 2.56V (cố định), dùng điện áp AVCC hoặc điện áp ngoài đặt trênchân VREF Cần chú ý đến nhiễu khi đặt điện áp tham chiếu, nếu dùng điện ápngoài đặt trên chân VREF thì điện áp này phải được lọc thật tốt, nếu dùng điện áptham chiếu nội 2.56V hoặc AVCC thì chân VREF cần được nối với một tụ điện ADC chuyển đổi một điện áp vào tương tự thành một giá trị số qua phương phápxấp xỉ liên tiếp Giá trị nhỏ nhất tương ứng với đất và giá trị lớn nhất là giá trị điện
áp tham chiếu trên chân AVEF trừ 1 LSB
Kết quả của quá trình chuyển đổi
ADC= Vin 1024 Vref.
Vin- là điện thế đầu vào
VREF- điện áp tham chiếu
* Các thanh ghi
Có 4 thanh trong bộ ADC trên AVR trong đó có 2 thanh ghi chứa dữ liệu sau khichuyển đổi, 2 thanh ghi điều khiển và chứa trạng thái của ADC
Trang 13Thanh ghi ADMUX:
Đọc/ghi Đọc/ghi Đọc/ghi Đọc/ghi Đọc Đọc/ghi Đọc/ghi Đọc/ghi Đọc/ghiGiá trị
đầu
điện áp tham chiếu có thể được chọn là: điện áp ngoài từ chân VREF, điện áp tham chiếu nội 2.56V hoặc điện áp AVCC Bảng tóm tắt giá trị các bit và điện áp tham chiếu tương ứng
REFS1 REFS0 Điện áp tham chiếu
Bits 3:0-MUX3:0: là các bít cho phép chọn kênh và chế độ cho ADC, nếu giá trị các
bít này thay đổi khi đang chuyển đổi thì nó cũng không gây ảnh hưởng gì cho đếnkhi quá trình chuyển đổi kết thúc
Trang 14Bít 6: ADSC(ADC Start Conversion): Trong chế độ chuyển đổi đơn kênh, set bitnày lên 1 là bắt đầu khởi động quá trình chuyển đổi Trong suốt quá trình chuyểnđổi, bit ADSC sẽ được giữ nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tựđộng), bit này sẽ được trả về 0 Để thực hiện một chuyển đổi, thông thường chúng ta
sẽ set bit ADEN=1 trước và sau đó set ADSC=1
Bit 4 – ADIF(ADC Interrupt Flag): cờ báo ngắt Khi một chuyển đổi kết thúc, bitnày tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit này trước khithực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự hoàntất
Bít 3-ADIE(ADC Interrupt Enable): bit cho phép ngắt, nếu bit này được set bằng 1
và bit cho phép ngắt toàn cục (bit I trong thanh ghi trạng thái của chip) được set,một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc
Bít 2…0: ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia xung nhịp cho ADC ADC, cũng như tất cả các module khác trên AVR, cần được giữ nhịp bằng một nguồn xung clock Xung nhịp này được lấy từ nguồn xung chính của chip thông qua một hệ số chia Các bit ADPS cho phép người dùng chọn hệ số chia từ nguồn clock chính đến ADC
Trang 1516, con số này nhiều hơn 10 bit của kết quả chuyển đổi, vì thế chúng ta được phépchọn cách ghi 10 bit kết quả vào 2 thanh ghi này Bit ADLAR trong thanh ghiADMUX quy định cách mà kết quả được ghi vào.
ADLAR=0
15 14 13 12 11 10 9
8
7 6 5 4 3 2 1
0
Khi đọc giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả, cần đọc thanh ghi ADCLtrước và ADCH sau
4.3.UART- Universal Asynchronous serial Reveiver and Transmitter-bộ truyền
nhận nối tiếp không đồng bộ
Khái niệm UART thường để chỉ thiết bị phần cứng (device, hardware), không phảichỉ một chuẩn giao tiếp UART cần phải kết hợp với một thiết bị chuyển đổi mứcđiện áp để tạo ra một chuẩn giao tiếp nào đó Ví dụ, chuẩn RS232 (hay COM) trêncác máy tính cá nhân là sự kết hợp của chip UART và chip chuyển đổi mức điện áp.Tín hiệu từ chip UART thường theo mức TTL: mức logic high là 5, mức low là 0V.Trong khi đó, tín hiệu theo chuẩn RS232 trên máy tính cá nhân thường là -12V chomức logic high và +12 cho mức low
Trang 16Tín hiệu tương đương của UART và RS232.
Các thông số quan trọng của UART|
Baud rate (tốc độ Baud): tốc độ baud là số bit truyền trong 1 giây Ví dụ nếu tốc
độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200
~52.083us
Frame (khung truyền): Khung truyền bao gồm các quy định về số bit trong mỗilần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài
ra số lượng các bit trong một data cũng được quy định bởi khung truyền
start bit : start là bit đầu tiên được truyền trong một frame truyền, bit này có chứcnăng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới
Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – LeastSignificant Bit, bit bên phải) của dữ liệu sẽ được truyền trước và cuối cùng là bit cóảnh hưởng lớn nhất (MSB–Most Significant Bit, bit bên trái)
Parity bit: parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tươngđối) Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity) Paritychẵn nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn Ngượclại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ
Stop bits: stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu
đã được gởi xong Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm trakhung truyền để đảm bảo tính chính xác của dữ liệu Stop bits là các bits bắt buộcxuất hiện trong khung truyền
Trang 17Vi điều khiển Atmega8 có 1 module truyền thông nối tiếp USART Có 3 chân chínhliên quan đến module này đó là chân xung nhịp - XCK (chân số 1), chân truyền dữliệu – TxD (Transmitted Data) và chân nhận dữ liệu – RxD (Reveived Data) Trong
đó chân XCK chỉ được sử dụng như là chân phát hoặc nhận xung giữ nhịp trong chế
độ truyền động bộ Tuy nhiên bài này chúng em chỉ sử dụng chế độ truyền thôngkhông đồng bộ Vì các chân truyền/nhận dữ liệu chỉ đảm nhiệm 1 chức năng độc lập(hoặc là truyền, hoặc là nhận), để kết nối các chip AVR với nhau (hoặc kết nối AVRvới thiết bị hỗ trợ UART khác) ta phải đấu “chéo” 2 chân này TxD của thiết bị thứnhất kết nối với RxD của thiết bị 2 và ngược lại Module USART trên chipAtmega32 hoạt động “song công” (Full Duplex Operation), nghĩa là quá trình truyền
và nhận dữ liệu có thể xảy ra đồng thời
Các thanh ghi:
Có 5 thanh ghi được thiết kế riêng cho hoạt động và điều khiển của USART, đó là:
UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi
của USART Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB (Transmitdata Buffer) và RXB (Reveive data Buffer) có chung địa chỉ Đọc UDR thu đượcgiá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tương đương đặt giá trị vàothanh ghi đệm phát, chuẩn bị để gởi đi Chú ý trong các khung truyền sử dụng 5, 6hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ không được sử dụng
7 6 5 4 3 2 1 0
RXB[7:0]
TXB[7:0]
UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điều
khiển hoạt động của module USART.
R R/W R R R R R/W R/W
Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận kếtthúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khungtruyền có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE)…một số bit quantrọng của thanh ghi này:
UDRE: (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệuUDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo Vì thếnếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có bằng 1
Trang 18hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR đểtruyền đi.
U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ truyền
so cao gấp 2 lần so với khi bit này mang giá trị 0
MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor)
UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng
điều khiển USART.
RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhậnkết thúc Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộthường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khiUSART được dung nhận dữ liệu
TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyềnkết thúc
UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khithanh ghi dữ liệu UDR trống
RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART, đềkích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1
TXEN (Transmitter Enable) là bit điều khiển bộ phát Set bit này lên 1 bạn sẽ khởiđộng bộ phát của USART
UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quyđịnh độ dài của dữ liệu truyền/nhận Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanhghi UCSRC
RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8 Bạn nhớ lại rằng USART trongAVR có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu làthanh ghi 8 bit Do đó, khi có gói dữ liệu 9 bit được nhận, 8 bit đầu sẽ chứa trongthanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín,
TXB8 (Transmit Data Bit 8), tương tự như bit RXD8, bit TXB8 cũng đóng vai tròbit thứ 9 truyền thông, nhưng bit này được dung trong lúc truyền dữ liệu
UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy định
khung truyền và chế độ truyền Thanh ghi này lại có cùng địa chỉ với thanh ghi
UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud) Bit 7 trong thanh
ghi này, tức bit URSEL là bit chọn thanh ghi Khi URSEL=1, thanh ghi này đượcchip AVR hiểu là thanh ghi điều khiển UCSRC, nhưng nếu bit URSEL=0 thì thanhghi UBRRH sẽ được sử dụng