Đăng ký Đăng nhập
Trang chủ đo nhiệt độ và đặt giờ tưới nước cho vườn - copy...

Tài liệu đo nhiệt độ và đặt giờ tưới nước cho vườn - copy

.PDF
48
246
142

Mô tả:

Học Viện Công Nghệ Bưu Chính Viễn Thông Cơ sở tại thành phố Hồ Chí Minh ĐỒ ÁN MÔN HỌC Môn học: Kĩ thuật ghép nối và thiết bị ngoại vi Đề tài : đo nhiệt độ và đặt giờ tưới nước cho vườn Giáo viên hướng dẫn : Ths. Phạm Thế Duy Họ và tên sinh viên: 1. Trịnh Phi Hùng MSSV : 409190009 2. Nguyễn Đăng Khoa MSSV : 409190011 Hồ chí minh năm 2013 ---------- -1- MỤC LỤC trang Lời nói đầu Mô tả công việc và lý do chọn đề tài: 1. Lý do chọn đề tài 2. Mô tả đề tài Tìm hiểu linh kiện và các thiết bị trong đề tài 1. MCU Atmega32 a. Đặc điểm b. Các I/O c. Chức năng ADC d. Giao tiếp sử dụng I2C e. Giao tiếp USART 2. IC thời gian thực DS1307 a. Cấu tạo ngoài và đặc điểm b. Các thanh ghi của IC c. Giao tiếp I2C với AVR 3. Cảm biến độ ẩm DHT-11 a. Đặc điểm kỹ thuật và cấu tạo chân linh kiện b. Nguyên lý hoạt động 4. Cảm biến nhiệt độ LM35 a. Đặc điểm kỹ thuật và cấu tạo chân linh kiện b. Nguyên lý hoạt động 5. LCD 1602 a. Đặc điểm và cấu tạo ngoài LCD 1602 b. Các hàm điều khiển LCD 6. Truyền nhận dữ liệu qua cổng nối tiếp a. Cấu trúc cổng nối tiếp b. Cổng RS-232 trên PC c. Truyền dữ liệu d. Nhận dữ liệu 7. IC chuyển đổi tín hiệu USART-RS-232 MAX 232 a. Đặc điểm và sơ đồ chân IC MAX 232 b. Nguyên lý hoạt động 8. USB-COM với PL2303 a. Đặc điểm và sơ đồ chân IC PL2303 b. Nguyên lý hoạt động 9. Kết nối mạng RS-485 a. Khái niệm đa mạng b. Chuẩn RS-485 c. Một số vấn đề liên quan đến RS-485 d. Các kiểu truyền nhận trong mạng RS-485 Thiết kế phần cứng 1. Khối xử lí và hiển thị 2. Khối thời gian thực 3. Khối giao tiếp máy tính -2- Thiết kế phần mềm 1. Giải thuật cho máy tính 2. Giải thuật cho vi điều khiển a. Lưu đồ chương trình chính b. Chương trình hiển thị thời gian và nhiệt độ c. Giải thuật hiển thị giờ tưới hằng ngày d. Giải thuật chỉnh thời gian thực Kết quả thi công 1. Hình ảnh 2. Hạn chế 3. Hướng giải quyết tiếp theo -3- Lời nói đầu Với một lượng lớn dân số trong nước là nông dân và những năm gần đây các mô hình như VAC, VACR, trang trại, nhà kính, … đã được các hộ dân quy hoạch với diện tích có thể lên đến hàng trăm hecta, ngoài ra các nhân lực làm trong ngành nông nghiệp thường đã cao tuổi. Khi đó gánh nặng công việc đã đặt ra làm sao có một mô hình tưới cây, rau, vườn ươm… một cách hoàn toàn tự động hoặc bán tự động đã là mục tiêu cho chúng em chọn đề tài này. Hi vọng với mô hình tưới cây sẽ giảm được phần nào công việc cho các hộ gia đình và nâng cao năng suất cây trồng, đạt được giá trị thương phẩm cao hơn. Tuy nhiên do hạn chế của đề tài chỉ dừng lại ở mức độ nghiên cứu đơn giản và tìm hiểu nên nhóm em mong được sự hướng dẫn và góp ý thêm để chúng em hoang thành đề tài trong tương lai. “Không thầy đố mày làm nên ”. Em xin cảm ơn tất cả các thầy, cô trong khoa điện tử 2 đã giúp đỡ chúng em trong thời gian học tập tại trường và đã góp ý cho em nhưng ý kiến quý báu. Đặc biệt em xin cảm ơn thầy Phạm Thế Duy và thầy Tôn Thất Bảo Đạt là giáo viên bộ môn và giao viên hướng dẫn đã khuyến khích và giúp đỡ chúng em trong quá trình thiết kế và thi công đề tài. -4- I. MÔ TẢ LÝ DO VÀ MỤC TIÊU CÔNG VIỆC: Lý do chọn đề tài: Nhóm em chọn đề tài mô hình tưới cây tự động và cảm biến nhiệt độ và độ ẩm với lý do: Công việc nhà nông rất vất vả và nhiều công đoạn Xu hướng trồng ra oan toàn trên những cánh đồng lớn đang được triển khai và nhân rộng ở khắp các tỉnh thành - Đối tượng làm nông chủ yếu là người lớn tuổi vì vậy muốn giảm gánh nặng công việc cho khi làm nông - Mô hình có thể áp dụng ở các cánh đồng rau, các vườn cây ăn quả hoặc các vườn cây công nghiệp. 2. Mô tả đề tài: - Mô hình hoạt động dựa trên đồng hồ thời gian thực, độ chính xác cao, từ đó đặt giờ tưới và các thông số khác (lần tưới, thời lượng tưới) một cách chính xác. - Hoạt động hoàn toàn tự động, chỉ cần đặt một lần và hoạt động cho các lần kế tiếp. - Các cảm biến độ ẩm và nhiệt độ giúp thu thập thông tin vườn cây để có các phương án tưới phù hợp. - Có giao tiếp máy tính để có thể cập nhập thông tin về vườn cây, rau qua giao diện máy tính. - Sơ đồ khối: 1/0 LCD 1602 I/O analog LM35 1/0 DS1307 I2C ADC 1. - Cảm biến độ ẩm analog 1/0 I/O Đáp ứng(vòi tưới) MCU (ATmega8 hoặc 32) RS-232 USART Các phím bấm Máy tính 1/0 I/O Vcc,Vref,GND 5V DC Nguồn Mô tả: - MCU (atmega8 hoặc atmega32): làm bộ xử lý trung tâm các tín hiệu số, tương tự để hiển thị và thực thi chương trình chính và làm một số giao tiếp với IC khác hoặc với máy tính cá nhân. IC DS1307: IC thời gian thực được giao tiếp với MCU qua giao tiếp I2C. -5- - II. Các sensor: dùng làm chức năng đo các thông số môi trường rồi gửi các tín hiệu tương tự tới bộ ADC của MCU để chuyển đổi và hiển thị nó mục đích kiểm soát và điều khiển. Các phím bấm: dùng khi ta có thao tác điều khiển và cài đặt các thông số bằng tay trên mạch. Lcd 1602 : hiển thị các thông số(thời gian, cài đặt tưới, nhiệt độ…) khi thực hiện đặt thông số bằng tay. Vòi tưới: được dùng để đóng mở cái relay khi đến thời gian tưới định sẵn. Máy tính: giao tiếp với các mạch bên ngoài và điều khiển các mạch. Nó còn được dùng để quản lý các vườn khác nhau. Nguồn: (nguồn cho mạch): sử dụng điện áp DC5V để các IC, MCU, lcd hoạt động. TÌM HIỂU CÁC LINH KIỆN THIẾT BỊ TRONG ĐỀ TÀI : Đề tài có sử dụng một số linh kiện điện tử là các IC và MCU cùng một số chuẩn giao tiếp cơ bản như USART, I2C, cảm biến được sử dụng như LM35, cảm biến độ ẩm, hiển thị bằng LCD 1602L, giao tiếp máy tính có IC MAX232, IC chuyển đổi USB-COM hoặc cable chuyên dụng. 1. a. - MCU ATmega32: Đặc điểm: Đây là dòng vi điều khiển của hãng Atmel có nhiều tính năng nổi trội Cấu trúc tập lệnh thu gọn RISC, đơn giản, dể lập trình Tiết kiệm năng lượng Có 32 chân I/O, 4 port xuất nhập dữ liệu đa chức năng 32 thanh ghi đa dụng Bộ nhớ 32Kb bộ nhớ Flash lập trình được, 1024Byte EEPROM Tốc độ tối đa lên tới 16MHz, có thể sử dụng cả dao động nội chip và thạch anh ngoài 2 bộ Timer/counter 8 bit, một bộ so sánh 1 bộ timer/counter 16 bit 4 kênh PWM 8 kênh ADC hỗ trợ độ phân giải 10 bit và 8 bit Các giao tiếp hỗ trợ như: I2C, SPI, USART Điện áp hoạt động 4,5-5 V Sơ đồ chân và đóng gói: loại 40 chân PDIP và loại TQFP/MLF (linh kiện dán) -6- 1-8 9 Chân số Tên chân PORT B RESET 10, 11 Nguồn 12, 13 Chân gắn dao động ngoài Chức năng Port xuất nhập B, ngoài ra còn có chức năng là giao tiếp SPI Chân reset của atmega 32, chân này được kích khi có một tích cực mức thấp tác động lên, khi đó atmega32 sẽ hoạt động lại VCC, chân cấp nguồn dương VCC và GND Hai chân gắn thạch anh dao động ngoài của chip khi sử dụng, muốn sử dụng được dao động ngoài ta cần fuse bít để chip được set sử dụng thạch anh -7- 14-21 PORT D 22-29 Port C 30-31 32 33-40 Chân nguồn Vref Port A Port truy xuất I/O, ngoài ra còn có chức năng khác như: - Pd0-pd1: chân rxd và txd sử dụng giao tiếp USART - Pd2-pd3: chân ngắt ngoài - Pd4-pd5: ngõ ra so sánh Port truy xuất I/O, ngoài ra còn có chức năng khác như: - Pc0-pc1: chân giao tiếp i2c Chân acvv và gnd Chân điện áp so sánh (dùng trong chế độ adc) Port truy xuất I/O, ngoài ra còn có chức năng là 8 kênh adc. b. Các I/O: - Ngõ ra cực máng hở. DDxn 0 0 0 1 1 ATmega32 có 4 PORT xuất nhập dữ liệu là: A, B,C,D Có 3 thanh ghi chức năng để lập trình vào ra cho các chân I/O là: DDR, PIN, PORT. Cấu hình I/O theo bảng sau: PORTxn 0 1 1 0 1 I/O Input Input Input Output Output Pull-up không Có Không Không Không Chức năng Trạng thái Hi-z trở kháng cao Ngõ vào có điện trở kéo lên Trạng thái Hi-z trở kháng cao Ngõ ra mức thấp Ngõ ra mức cao - Thanh ghi PINx để nhận các tín hiệu vào. c. Chức năng ADC: - PORT A của ATmega32 có chức năng ADC kiêm cổng vào ra số Đặc điểm : - Độ phân giải 10 bit hoặc 8 bit tùy chức năng -8- - 8 kênh ADC đơn Tốc độ chuyển đổi 13μs - 260μs. 0 – Vcc ADC dãi điện áp ngõ vào. Ngắt ADC khi chuyển đổi xong Có 4 thanh ghi trong AVR để dùng chức năng ADC - ADMUX: thanh ghi 8 bit dùng để chọn điện áp tham chiếu cho ADC, 1 trong 3 nguồn điện áp tham chiếu có thể chọn là : điện áp từ chân VREF, điện áp tham chiếu nội 2,56V hoặc điện áp VCC theo bảng sau: - ADCSRA (ADC Control and Status Register A): là thanh ghi điều khiển hoạt động và chứa trạng thái của module ADC.  Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho phép module ADC được sử dụng. Tuy nhiên khi ADEN=1 không có nghĩa là ADC đã hoạt động ngay, bạn cần set một bit khác lên 1 để bắt đầu quá trình chuyển đổi, đó là bit ADSC. Bit 6 - ADSC(ADC Start Conversion): set bit nà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. Vì vậy bạn không cần và cũng không nên viết giá trị 0 vào bit này ở bất kỳ tình huống nào. Để 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, bit nà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 khi thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự hoàn tất. Bit 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 và các giá trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa trong 2 thanh ghi ADCL và ADCH). Bit 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     -9- - ADPS cho phép người dùng chọn hệ số chia từ nguồn clock chính đến ADC. Tham khảo bảng 4 để biết cách chọn hệ số chia. ADCL và ADCH (ADC Data Register): hai thanh ghi chứa giá trị chuyển đổi. Do độ phân giải của module ADC trên AVR là 10 bit nên cần hai thanh ghi chứa giá trị chuyển đổi. Do tổng hai thanh ghi là 16 bit nên bít ADLAR trong thanh ghi ADMUX quy định cách ghi kết quả vào hai thanh ghi này: ADLAR =0: ADLAR =1: d. - Giao tiếp sử dụng I2C: Giao thức truyền thông đơn giản, đường bus chỉ cần hai dây scl và sda 7 bit địa chỉ cho phép lên tới 128 thiết bị slave. Tốc độ truyền dữ liệu lên tới 400kHz. Giao tiếp I2C là một ứng dụng hỗ trợ trong nhiều dòng vi xử lí, nó cho phép thiết kế hệ thống kết nối lên đến 128 thiết bị mà chỉ cần hai dây bus, một dây clock (scl) và một dây data (sda). - 10 - - - Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL. Slave : là chip có địa chỉ cố định, được gọi bởi master và phục vụ yêu cầu của master. Các thanh ghi sử dụng giao tiếp I2C trên AVR gồm 5 thanh ghi gồm có thanh ghi tốc độ giữ nhịp TWBR, thanh ghi điều khiển TWCR, thanh ghi trạng thái TWSR, thanh ghi địa chỉ TWAR, thanh ghi dữ liệu TWDR. TWBR: quy định tốc độ phát xung giữ nhịp trên đường SCL của chip master. Tốc độ xung giữ nhịp tính theo công thức: TWBR : giá trị trong thanh ghi TWBR TWPS : giá trị hai bit TWPS1 và TWPS0 nằm trong thanh thi trạng thái TWSR - TWCR: thanh ghi điều khiển hoạt động của I2C: Thanh ghi này gồm 8 bít để điều khiển các hoạt động của I2C: - TWSR: thanh ghi trạng thái 8 bit, trong đó có 5 bít chứa code trạng thái của TWI và 3 bit lựa chọn hệ số prescaler. - 11 - - TWDR: thanh ghi dữ liệu chính của TWI. Trong quá trình nhận dữ liệu được lưu trong TWDR, trong quá trình gửi dữ liệu sẽ được lấy và truyền trên đường SDA. - TWAR: thanh ghi chứa các địa chỉ của các chip slave. e. - Giao tiếp USART: Chế độ truyền song công (vừa truyền vừa nhận)’ Chế độ đồng bộ và cận đồng bộ. Hỗ trợ khung truyền nối tiếp với 5,6,7,8 hoặc 9 bit dữ liệu và 1,2 stop bit. Báo tràn dữ liệu Có 5 thanh ghi được dùng trong giao tiếp USART là: - UDR: thanh ghi dữ liệu, chứa các dữ liệu nhận và phát đi của USART, thực chất nó là hai thanh ghi TXB và RXB có chung địa chỉ. - UCSRA: đây là thanh ghi quan trọng điều khiển USART - 12 - Thanh ghi UCSRA gồm các bit trạng thái như bit báo quá trình nhận kết thúc RXC, truyền kết thúc TXC, báo thanh ghi dữ liệu trống UDRE, khung truyền có lỗi FE, dữ liệu tràn DOR, kiểm tra parity có lỗi PE. - UCSRB: cũng là một thanh ghi điều khiển USART quan trọng:  - RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận kế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 khi USART được dung nhận dữ liệu.  TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyền kết thúc.  UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi thanh 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 thanh ghi UCSRC.  RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bạn nhớ lại rằng USART trong AVR 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 trong thanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín, RXD8 là bit thứ chín này. Bạn chú ý là các bit được đánh số từ 0, vì thế bit thứ chín sẽ có chỉ số là 8, vì lẽ đó mà bit này có tên là RXD8 (không phải RXD9).  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: thanh ghi này dùng để quy định các thông số về khung truyền và chế độ truyền  UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thông đồng bộ và không đồng bộ. Nếu UMSEL=0, chế độ không đồng bộ được chọn, ngược lại nếu UMSEL=1, chế độ đồng bộ được kích hoạt. Xem bảng sau: - 13 -  Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra pariry. Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng), UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng, UPM1:0=11 parity lẻ được sử dụng xem bảng sau:  USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2 Stop bit được dùng.  Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 2 tóm tắt các giá trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng.  UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông đồng bộ. nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp, nếu UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp. Nếu bạn sử dụng chế độ truyền thông không đồng bộ, hãy set bit này bằng 0. - 14 - - UBRRL và UBRRH: hai thanh ghi thấp và cao quy định tốc độ baud. Bảng tính tốc độ Baud: Với mỗi thạch anh gắn ngoài có một sai số truyền tính bằng công thức: 2. IC thời gian thực DS1307: a. Cấu tạo ngoài và đặc điểm: Thứ tự chân Chức năng - 15 - 1,2 3 4,8 5,6 7 Chân dao động, gắn thạch anh dao động. Gắn nguồn PIN ngoài phòng khi mất nguồn nuôi Chân nguồn Vcc và GND Chân giữ xung nhịp và dữ liệu trong giao tiếp I2C Chân cấp xung ra ngoài IC được hãng DALLAS sản xuất và giới thiệu. IC thời gian thực (Real Timer Clock) có thể sử dụng để đếm thời gian (giờ, phút, giây), lịch (thứ, ngày, tháng, năm). - Được thiết kế tới lịch của năm 2100. - 56-byte, dùng nguồn PIN ngoài phòng khi mất điện. - Giao tiếp I2C với vi điều khiển. b. Các thanh ghi của IC: - Ds1307 có 64 thanh ghi 8 bit đáng dấu từ địa chỉ 00H-3FH, chỉ 8 thanh ghi có chức năng đồng hồ còn lại 56 thanh ghi còn lại có chức năng như bộ nhớ RAM của IC - - Ba thanh ghi đầu từ địa chỉ 00H- 02H có chức năng là đồng hồ gồm có : SECONDS, MINUTES, HOURS Bốn thanh ghi từ địa chỉ 03H-06H có chức năng ghi lại lịch gồm: DAY, DATE, MONTH, YEAR Thanh ghi thứ 8 (CONTROL) có chức năng cấp một xung ra chân số 7. - 16 - Tổ chức các thanh ghi trong IC ds1307: Thanh ghi giây SECONDS: thanh ghi này là thanh ghi đầu tiên trong bộ nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp của thanh ghi này chứa mã BCD 4-bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của chữ số hàng chục là 5 (không có giây 60) nên chỉ cần 3 bit (các bit SECONDS 6:4) là có thể mã hóa được (số 5 =101, 3 bit). Bit cao nhất bit 7 trong thanh ghi này là 1 bit điều khiển có tên CH (Clock halt – treo đồng hồ), nếu bit này được set bằng 1 bộ dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Vì vậy, nhất thiết phải reset bit này xuống 0 ngay từ đầu. - Thanh ghi phút MINUTES: có địa chỉ 0x01, chứa giá trị phút của đồng hồ. Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này được dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0 - Thanh ghi giờ HOURS: có thể nói đây là thanh ghi phức tạp nhất trong DS1307. Thanh ghi này có địa chỉ 0x02. Trước hết 4-bits thấp của thanh ghi này được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ trợ 2 loại hệ thống hiển thị giờ (gọi là mode) là 12h (1h đến 12h) và 24h (1h đến 24h) giờ, bit6 xác lập hệ thống giờ. Nếu bit6=0 thì hệ thống 24h được chọn, khi đó 2 bit cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá trị lớn nhất của chữ số hàng chục trong trường hợp này là 2 (=10, nhị phân) nên 2 bit 5 và 4 là đủ để mã hóa. Nếu bit6=1 thì hệ thống 12h được chọn, với trường hợp này chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 chỉ buổi trong ngày, AM hoặc PM. Bit5 =0 là AM và bit5=1 là PM. Bit 7 luôn bằng 0. - Thanh ghi thứ (DAY – ngày trong tuần): nằm ở địa chĩ 0x03. Thanh ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong 1 tuần. Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa. - Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong tháng (1 đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00 đến 99). Chú ý, DS1307 chỉ dùng cho 100 năm, nên giá trị năm chỉ có 2 chữ số, phần đầu của năm do người dùng tự thêm vào (ví dụ 20xx). c. Giao tiếp i2c với AVR: - DS 1307 hoạt động với AVR ở chế độ slave - - 17 - - Địa chỉ của ds1307 trong i2c là số nhị phân cố định 1101000 vì thế trong mạch này không thể tồn tại 2 IC ds1307, ta có thể sử dụng các hàm trong codevision để đọc giờ và lịch trong ds1307 và đưa vào AVR xử lí. Hàm void rtc_get_time(unsigned char *hour, unsigned char *min, unsigned char *sec) void rtc_set_time(unsigned char hour, unsigned char min, unsigned char sec) void rtc_get_date(unsigned char *date, unsigned char *month, unsigned char *year) Chức năng Đọc giá trị hiện tại của ds1307 Cài đặt giờ , phút, giây cho ds1307 Cài đặt ngày, tháng, năm cho ds1307 3. Cảm biến độ ẩm DHT11: a. đặc điểm kĩ thuật và cấu tạo chân linh kiện: - DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 - Thông số kỹ thuật: - 18 - + Do độ ẩm: 20%-95% + Nhiệt độ: 0-50ºC + Sai số độ ẩm ±5% + Sai số nhiệt độ: ±2ºC b. Nguyên lý hoạt động: - Sơ đồ kết nối vi xử lý: - Nguyên lý hoạt động: Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2 bước: + Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại. + Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt độ đo được. - Bước 1: gửi tín hiệu Start + MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng thời gian >18ms. Trong Code mình để 25ms. Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm. + MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào. + Sau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11. - 19 - + Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong 80us. Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếp được với DHT11 ko. Nếu tín hiệu đo được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT. - Bước 2: đọc giá trị trên DHT11 + DHT11 sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó: Byte 1: giá trị phần nguyên của độ ẩm (RH%) Byte 2: giá trị phần thập phân của độ ẩm (RH%) Byte 3: giá trị phần nguyên của nhiệt độ (TC) Byte 4 : giá trị phần thập phân của nhiệt độ (TC) Byte 5 : kiểm tra tổng. + Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa. + Đọc dữ liệu: Sau khi giao tiếp được với DHT11, DHT11 sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU, tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm. Bit 0: Bit 1: - 20 -
- Xem thêm -

Tài liệu liên quan

Tài liệu vừa đăng