Đồ án Đo nhiệt độ và đặt giờ tưới nước cho vườn

1. Khối xử lí và hiển thị: - Các thành phần gồm có: MCU Atmega32, thạch anh 8MHz, LCD 1602L, cảm biến LM35, các nút điều khiển. 2. Khối thời gian thực - Các thành phần gồm có: IC DS1307, thạch anh 32,768kHz 3. Khối giao tiếp máy tính: - Các thành phần gồm có: IC chuyển đổi USB-COM PL2303, IC chuyển đổi USART-RS-232 MAX232

docx48 trang | Chia sẻ: tienthan23 | Lượt xem: 4209 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Đồ án Đo nhiệt độ và đặt giờ tưới nước cho vườn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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: Trịnh Phi Hùng MSSV : 409190009 Nguyễn Đăng Khoa MSSV : 409190011 Hồ chí minh năm 2013 -----š›&š›----- MỤC LỤC trang Lời nói đầu Mô tả công việc và lý do chọn đề tài: Lý do chọn đề tài Mô tả đề tài Tìm hiểu linh kiện và các thiết bị trong đề tài MCU Atmega32 Đặc điểm Các I/O Chức năng ADC Giao tiếp sử dụng I2C Giao tiếp USART IC thời gian thực DS1307 Cấu tạo ngoài và đặc điểm Các thanh ghi của IC Giao tiếp I2C với AVR Cảm biến độ ẩm DHT-11 Đặc điểm kỹ thuật và cấu tạo chân linh kiện Nguyên lý hoạt động Cảm biến nhiệt độ LM35 Đặc điểm kỹ thuật và cấu tạo chân linh kiện Nguyên lý hoạt động LCD 1602 Đặc điểm và cấu tạo ngoài LCD 1602 Các hàm điều khiển LCD Truyền nhận dữ liệu qua cổng nối tiếp Cấu trúc cổng nối tiếp Cổng RS-232 trên PC Truyền dữ liệu Nhận dữ liệu IC chuyển đổi tín hiệu USART-RS-232 MAX 232 Đặc điểm và sơ đồ chân IC MAX 232 Nguyên lý hoạt động USB-COM với PL2303 Đặc điểm và sơ đồ chân IC PL2303 Nguyên lý hoạt động Kết nối mạng RS-485 Khái niệm đa mạng Chuẩn RS-485 Một số vấn đề liên quan đến RS-485 Các kiểu truyền nhận trong mạng RS-485 Thiết kế phần cứng Khối xử lí và hiển thị Khối thời gian thực Khối giao tiếp máy tính Thiết kế phần mềm Giải thuật cho máy tính Giải thuật cho vi điều khiển Lưu đồ chương trình chính Chương trình hiển thị thời gian và nhiệt độ Giải thuật hiển thị giờ tưới hằng ngày Giải thuật chỉnh thời gian thực Kết quả thi công Hình ảnh Hạn chế Hướng giải quyết tiếp theo 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. 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. 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: analog LM35 I/O 1/0 LCD 1602 MCU (ATmega8 hoặc 32) ADC I2C 1/0 DS1307 analog Đáp ứng(vòi tưới) Cảm biến độ ẩm I/O 1/0 Máy tính Các phím bấm RS-232 USART I/O 1/0 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. 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. 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) Chân số Tên chân Chức năng 1-8 PORT B Port xuất nhập B, ngoài ra còn có chức năng là giao tiếp SPI 9 RESET 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 10, 11 Nguồn VCC, chân cấp nguồn dương VCC và GND 12, 13 Chân gắn dao động ngoài 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 14-21 PORT D 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 22-29 Port C 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 30-31 Chân nguồn Chân acvv và gnd 32 Vref Chân điện áp so sánh (dùng trong chế độ adc) 33-40 Port A Port truy xuất I/O, ngoài ra còn có chức năng là 8 kênh adc. Các I/O: Ngõ ra cực máng hở. 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: DDxn PORTxn I/O Pull-up Chức năng 0 0 Input không Trạng thái Hi-z trở kháng cao 0 1 Input Có Ngõ vào có điện trở kéo lên 0 1 Input Không Trạng thái Hi-z trở kháng cao 1 0 Output Không Ngõ ra mức thấp 1 1 Output Không Ngõ ra mức cao Thanh ghi PINx để nhận các tín hiệu vào. 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 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 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: 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). 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. 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. 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 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: 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. 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: IC thời gian thực DS1307: Cấu tạo ngoài và đặc điểm: Thứ tự chân Chức năng 1,2 Chân dao động, gắn thạch anh dao động. 3 Gắn nguồn PIN ngoài phòng khi mất nguồn nuôi 4,8 Chân nguồn Vcc và GND 5,6 Chân giữ xung nhịp và dữ liệu trong giao tiếp I2C 7 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. 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. 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). Giao tiếp i2c với AVR: DS 1307 hoạt động với AVR ở chế độ slave Đị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 Chức năng void rtc_get_time(unsigned char *hour, unsigned char *min, unsigned char *sec) Đọc giá trị hiện tại của ds1307 void rtc_set_time(unsigned char hour, unsigned char min, unsigned char sec) Cài đặt giờ , phút, giây cho ds1307 void rtc_get_date(unsigned char *date, unsigned char *month, unsigned char *year) Cài đặt ngày, tháng, năm cho ds1307 Cảm biến độ ẩm DHT11: đặ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: + Do độ ẩm: 20%-95% + Nhiệt độ: 0-50ºC + Sai số độ ẩm ±5% + Sai số nhiệt độ: ±2ºC 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. + 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: Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên 1. Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1. Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó delay 50us. Nếu giá trị Cảm biến nhiệt độ LM35: Đặc điểm kĩ thuật và cấu tạo chân linh kiện: Sử dụng thang nhiệt giai Celsius (oC) Độ chia 10mV/1 oC Tầm đo từ -55 oC - +150 oC. Sơ đồ chân và đóng gói: Thứ tự chân Chức năng 1,3 Chân nguồn VCC và GND 2 Chân out (điện áp) đưa tới chân ADC Của MCU hoặc IC ADC Nguyên lý hoạt động: Chân điện áp tham chiếu Vref sẽ được nối lên Vcc để tham chiếu cho tín hiệu analog đầu vào. Kết nối chân 1 lên Vcc và chân 3 xuống GND. Chân 2 thì cho vào 1 trong 6 chân ADC của MCU. Lập trình cho MCU sử dụng chế độ ADC trong codevision Theo datasheet thì cứ 10mV ứng với 10C , ở 00C thì điện áp là 0V giá trị ADC là 0, với độ phân giải 8 bit thì giá trị ADC nằm trong khoảng 0-256. Nếu Vref = 5V thì ta có mỗi giá trị ADC = 5V/256 =19.53mV. Vì vậy để tăng độ phân giải ADC thì ta giảm Vref Công thức tính giá trị: ADCx = (Vin.1024)/Vref LCD 1602: Đặc điểm và cấu tạo chân LCD 1602: Con trỏ kích thước 5x8. Kích thước 2 hàng và 16 cột. Sử dụng nguồn 3 - 5VDC. 1/16 chu kỳ. Có hai chế độ 4 và 8 bit dữ liệu. Sử dụng đèn nền LED khi trời tối. Các chân chức năng: Chân số Chức năng 1 VSS nối xuống GND 2 Vdd nối lên 3-5VDC 3 V0, chỉnh độ sáng hiển thị 4 R/S, H/L chọn tín hiệu vào là lệnh hay dữ liệu 5 R/W, H/L đọc hay là ghi dữ liệu vào LCD 6 E, H/L cho phép LCD. 8,9,10,11,12,13,14 Các chân dữ liệu tương ứng từ D0-D7 15 A/Vee : chân dương đèn nền led 16 K: chân nguồn âm cho đèn nền LED Các hàm điều khiển LCD Trong trương trình codevision có hỗ trợ đầy đủ các hàm để điều khiển và hiển thị LCD ở chế độ 4 bit như: Hàm Chức năng void lcd_gotoxy(unsigned char x, unsigned char y) Đưa con trỏ tới vị trí hang x, cột thứ y, chỉ số đánh dấu bắt đầu từ 0 void lcd_putchar(char c) Hiển thị các kí tự c tại vị trí hiện tại void lcd_puts(char *str) Hiển thị tại vị trí hiện tại một chuỗi kí tự kiểu string được lưu trên RAM void lcd_putsf(char flash *str) Hiển thị kí tự tại vị trí hiện tại được lưu trong bộ nhớ Flash void lcd_clear Xóa màn hình đưa con trỏ về dòng 1 cột 1. Truyền nhận dữ liệu qua cổng nối tiếp Cấu trúc cổng nối tiếp: Cổng nối tiếp là cổng dùng để truyền dữ liệu từ máy tính xuống các thiết bị ngoại vi, cổng nối tiếp có các ưu điểm sau: Khoảng cách truyền xa hơn truyền song song. Số dây liên kết dữ liệu ít( thông thường 2 dây). Mạch điện đơn giản Có thể dùng hồng ngoại để truyền nhận qua cổng nối tiếp Cho phép nối mạng Có thể ngắt kết nối khỏi mạng trong khi thiết bị đang hoạt động. Các thiết bị ghép nối được chia làm hai loại là: DTE(data terminal Enquipment) và DCE(data communication enquipment). DCE là các thiết bị trung gian như modem còn DTE là các thiết để thực hiện truyền hay nhận dữ liệu như là PLC, mạch điều khiển Việc truyền nhận dữ liệu được thực hiện thông thường qua hai chân RxD và TxD, các tín hiệu còn lại còn gọi là các tín hiệu bắt tay. Khi dùng tín hiệu bắt tay chúng ta có thể kiểm soát đường truyền. Tín hiệu truyền theo chuẩn RS-232 được quy định mức logic 1 ứng với điện áp nằm trong khoảng -3V đến -12V, mức logic 0 từ +-3V đến 12V và có khả năng cung cấp dòng từ 10mA tới 20mA. Các cổng ra có chống chập mạch. Chuẩn RS-232 cho phép tốc độ truyền tới 20kbps nhưng nếu cáp đủ ngắn thì tốc độ có thể tới 115kbps. Các phương thức nối giữa DTE và DCE: Đơn công: truyền dữ liệu theo một hướng. Bán song công: dữ liệu được truyền theo hai hướng nhưng tại một thời điểm chỉ có một bên(máy phát/thu) được phép truyền. Song công: dữ liệu được truyền đồng thời theo cả hai hướng. Định dạng khung truyền theo chuẩn RS-232 bao gồm: Start bit: bít nhận dạng khung truyền Data bít: bít dữ liệu 7-8 bít Parity bit: bít chẵn lẻ, dùng kiểm tra lỗi sai khung truyền Stop bit: bít kết thúc của khung truyền. Khi không truyền dữ liệu thì đường truyền sẽ ở trạng thái mark(điện áp -10V). Khi bắt đầu truyền thì DTE sẽ đưa ra xung start (10V) và sau đó lần lượt truyền data từ d0-d7 và parity, kết thúc khung truyền là một stop bit(-10V). Định dạng tín hiệu truyền như hình sau: Đặc tính kĩ thuật và các mức điện áp của chuẩn RS-232 được cho bới bảng sau: Đặc điểm kĩ thuật, điện áp Thông số Chiều dai cable cực đại 15m Tốc độ dữ liệu cực đại 20kbps Điện áp ngõ ra cực đại ± 25V Điện áp ngõ ra có tải ± 5V đến ±15V Trở kháng tải 3K đến 7KΩ Điện áp ngõ vào ±15V Độ nhạy ngõ vào ±3V Trở kháng ngõ vào 3K đến 7KΩ Các tốc độ buad thông dụng trong truyền dữ liệu nối tiếp là: 1200kbps, 4800kbps, 9600kbps, 19200kbps. Cổng RS-232 trên PC Các cổng dữ liệu RS-232(COM) hầu hết được trang bị trên máy tính bàn và các thế hệ trước đây, hiện nay nó hầu như không còn xuất hiện trên các máy tính xách tay cá nhân. Chân số Tín hiệu Hướng truyền Chức năng 1 DCD DCE-DTE DCE phát tín hiệu sóng mang 2 RxD DCE-DTE Dữ liệu nhận 3 TxD DTE-DCE Dữ liệu truyền 4 DTR DTE-DCE DTE sẵn sàng làm việc 5 GND 6 DSR DCE-DTE DCE sẵn sàng làm việc 7 RTS DTE-DCE DTE yêu cầu truyền dữ liệu 8 CTS DCE-DTE DCE sẵn sàng nhận dữ liệu 9 RI DCE-DTE Báo chuông Truyền thông giữa hai nút: Các sơ đồ khi kết nối các cổng nối tiếp: Kết nối đơn giản của giao tiếp nối tiếp đơn giản Khi ghép nối như vậy ta phải đảm bảo bên truyền và nhận phải có tốc độ truyền (tốc độ baud) giống nhau, có khung dữ liệu giống nhau. Sự kiện truyền: Truyền dữ liệu qua cổng nối tiếp RS-232 được thực hiện không đồng bộ. Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp theo . Bit này luôn bắt đầu bằng mức 0. Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII( có thể là 5,6,7 hay 8 bit dữ liệu) Sau đó là một Parity bit ( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit stop có thể là 1, 1,5 hay 2 bit stop. Nhận dữ liệu: Khi bit RXEN được set bằng 1 thì mới cho phép nhận dữ liệu và cấu hình của bên nhận (khung dữ liệu, tốc độ baud, parity bit, stop bit) nếu không sẽ bị lỗi khi nhận, dữ liệu nhận sẽ được lưu trong thanh ghi UDR và bít RXC bật lên 1 (báo đã nhận xong), sau khi thanh ghi UDR được đọc thì bit RXC được tự động set lại bằng 0 để nhận dữ liệu gửi về tiếp theo. Cơ bản ta có hai để nhận dữ liệu từ USART gửi xuống, cách 1 ta hỏi vòng xem bít RXC lên 1 chưa thì đọc UDR, cách 2 là sử dụng ngắt nhận hoàn tất RCI (Reveice Complete Interup) bằng cách set cho bit này được phép ngắt nhận hoàn tất Lập trình giao tiếp trên máy bằng C# IC chuyển đổi tín hiệu USART – RS-232 MAX232: Đặc điểm và sơ đồ chân IC MAX 232: Tốc độ chuyển đổi 120kbit/s. Dòng điện thấp 8mA. Nguyên lý hoạt động: Trong giao tiếp USART tín hiệu được truyền đi trong một khung tín hiệu nhưng nó lại khác mức điện áp truyền đi, vì vậy IC MAX232 có nhiệm vụ chuyển đổi mức điện áp đồng nhất giữa máy tính và MCU theo chuẩn RS-232 để chúng có thể bắt tay nhau. USB-COM với PL 2303 IC dùng để chuyển đổi từ giao tiếp USB sang giao tiếp như RS-232, để windows có thể nhận thêm một cổng COM ảo thì ta cần cài thêm một trình điều khiển được nhà sản xuất cung cấp. PL2303 có chức năng như một cầu nối giữa hai chuẩn giao tiếp USB-RS-232, hai bộ đệm trong IC có chức năng lưu dữ liệu của hai bus khác nhau, dữ liệu từ giao tiếp USB có dữ liệu lớn được đi qua để có thể truyền với tốc độ tối da. Tại cổng nối tiếp có hỗ trợ bắt tay tự động, một tốc độ buad cao có thể được truyền như một giao tiếp USART truyền thống, IC này cũng tiêu thụ điện năng từ cổng USB phù hợp và nó có thể được điều khiển và cảnh báo từ xa, chỉ có một lượng nhỏ điện năng được tiêu thụ trong chế độ tốc độ cao Bằng các tích hợp tất cả các chức năng cơ bản của một bộ chuyển đổi USB-COM, chip này phù hợp với việc nhúng trong sợi cáp chuyển đổi và người dùng chỉ việc đơn giản là cắm vào cổng USB hoặc Hub USB của máy tính là có thể kết nối với các thiết bị theo chuẩn RS-232 khác. Đặc điểm và sơ đồ chân IC: Chân số Loại Tên Mô tả 1 TXD O Dữ liệu ra từ port nối tiếp 2 DTR_N O Dữ liệu từ thiết bị cuối sẵn sàng, hoạt động tích cực mức thấp 3 RTS_N O Hồi đáp của tín hiệu gửi, hoạt động tích cực mức thấp 4 VDD_232 P 5 RXD I Dữ liệu vào bus nối tiếp 6 RI_N I 7,8,20,21 GND P Nguồn nuôi IC 9 DSR_N I 10 DCD_N I Phát hiện dữ liệu đệm, hoạt động tích cực mức thấp. 11 CTS_N I Xóa các ký tự truyền, hoạt động tích cực mức thấp. 12 SHTD_N O Tắt chế độ truyền RS-232 13 EE_CLK I/O 14 EE_DATA I/O Tín hiệu của dữ liệu nối tiếp từ ROM 15 DP I/O Tín hiệu DPLUS từ USB 16 DM I/O Tín hiệu DMINUS từ USB 17 VDD_3V3 P Nguồn 3.3V của USB truyền 18 GND_3V3 P Nối đất của 3.3V 19 RESET I Reset hệ thống 22 TRI_STATE I 23 LD_MD/SHTD I/O 24 VDD_PLL P Nguồn 5V tới PLL 25 GND_PLL P Nối đất tới PLL 26 PLL_TEST I Kiểm tra các chế độ điều khiển của PLL 27 OSC1 I Ngõ vào dao động thạch anh 28 OSC2 I Ngõ ra của dao động thạch anh IC PL2303 có bộ điều khiển linh hoạt các định dạng khung truyền như: stop bit, parity bit, data bits linh hoạt. Có một bộ tạo tốc độ Baud có thể lập trình và hỗ trợ tốc độ baud lên đến 1.2M bps. Ta có thể xem chi tiết ở bảng sau: Cấu hình khung truyền Điện áp hoạt động : Nguyên lý hoạt động: Tín hiệu từ cổng USB được đưa tới khối USB SIE (USB Serial Interface Engine) từ đó tín hiệu D+ và D- sẽ được chuyển đổi thành các mức logic cụ thể của tín hiệu RS-232. Để có thể truyền tín hiệu với tốc độ cao ta sẽ cần thêm hai bộ đệm dữ liệu của tín hiệu usb và RS-232. Sau khi tín hiệu USB – RS-232 được chuyển đổi sẽ được đưa đến khối giao tiếp nối tiếp RS-232. Để lập trình giao tiếp usb- RS-232 bằng PL2303 ta cần có một drive của ic pl2303, để hỗ trợ lập trình thi ic sẽ có một eeprom để ta có thể cài đặt các thông số cho giao tiếp (khung truyền, tốc độ buad). Sau khi được thiết lập lại thì hai byte đầu tiên của EEPROM được kiểm tra, nếu giá trị là 067Bh thì cấu hình sẽ được sử dụng trong EEPROM ngoài, nếu không sẽ là cấu hình mặc định của chip Các thông số chứa trong eeprom sẽ được truy xuất để thiết lập cho IC này. Một vài thông số được liệt kê trong bảng sau: Kiểm tra trạng thái eeprom, cấu hình của USB (nhà sản xuất, ID, cấu hình, số phát hành) Cấu hình các thanh ghi của thiết bị, thiết lập các thông số điều khiển, các chế độ bắt tay, thiết lập truyền nhận Mạch nguyên lý chuyển đổi từ USB-COM: Cable usb-com được bán ngoài thị trường. Kết nối mạng RS-485: Khái niệm đa mạng: Khi truyền tư máy tính xuống thiết bị bằng chuẩn RS-232,usb hay internet thì ta chỉ có thể kết nối duy nhất một thiết bị với cổng com,usb, RJ45 trên máy tính, vấn đề đặt ra là làm sao để quản lý một khu vực rộng với nhiều thiết bị rãi rác. Để quản lý ta sẽ thu tất cả các mạng về một đường bus chung và đưa tới máy tính chủ quản. Để làm được việc đó ta cần một tiêu chuẩn mạng mới có thể kết nối các mạng RS-232 lại bằng giao tiếp usart trên các thiết bị. Vì thế RS-485 là một tiêu chuẩn phù hợp. Mô hình đa mạng điển hình Ngoài ra ta còn sử dụng các bộ chia (Hub) để kết nối nhiều thiết bị theo chuẩn usb hay internet. Chuẩn RS-485: Có thể xem RS-485 là một cải tiến của RS-232 về phương thức truyền thông nối tiếp, những bộ chuyển đổi từ RS-232/RS-485 cho phép người dùng có thể giao tiếp với bất kì thiết bị nối tiếp nào được gắn vào mạng. Những đặc điểm của mạng RS-485 là nó có thể cho phép tối đa 32 thiết bị ngoại vi trên một bus truyền, tốc độ có thể lên tới 115200 baud cho một khoảng cách 4000 feet(khoảng 1200 mét). Các thông số của mạng RS-485: Thông số Điều kiện min max Đơn vị Áp ngõ ra điều khiển khi hở mạch 1.5 -1.5 6 -6 V Áp ngõ ra điều khiển khi có tải RL = 100Ω 1.5 -1.5 6 -6 6 -6 Dòng ngắn mạch ngõ ra điều khiển Một ngõ ra nối với điểm chung ±250 mA Thời gian cạnh lên ngõ ra điều khiển RL = 54Ω CL = 50pF 30 % độ rộng bít Áp kiểu chung điều khiển RL = 54Ω ±3 V Ngưỡng nhạy thu vào -7V≤ VCM ≤12V ±200 mV Phạm vi áp chung thu vào -7 12 V Tổng trở ngõ vào phía thu 12 kΩ Với kiểu truyền cân bằng và các dây cáp được xoắn lại với nhau vì thế nếu có nhiễu tác động thì cả hai dây sẽ bị tác động. Điều này làm cho điện áp sai lệch trên hai dây bị thay đổi không đáng kể tại nơi thu Một số vấn đề liên quan đến RS-485: Truyền dẫn cân bằng: Hệ thống truyền dẫn cân bằng gồm hai dây tín hiệu A,B nhưng không có dây mass. Gọi là truyền dẫn cân bằng là do tín hiệu trên dây này ngược với tín hiệu trên dây kia, nghĩa là nếu dây A đang phát mức cao thì dây B đang phát mức thấp và ngược lại. Mức tín hiệu: Với hai dây tín hiệu A,B cân bằng thì tín hiệu TTL được quy định khi áp trên dây A lớn hơn dây B tối thiểu 200mV, tín hiệu mức thấp TTL được quy định khi sai lệch hai dây tối thiểu là 200mV. Nếu điện áp VAB rơi trong khoảng -200mV≤ VAB ≤200mV thì nó sẽ được quy định là một vùng bất định, có thể là mức cao hoặc mức thấp. Điên thế của mỗi dây tín hiệu so với mass bên phía thu phải rơi trong tầm -7V đến +12V. Cặp dây xoắn: Như đã đề cập ở trên, cặp dây xoắn (Twisted-pair wire) đơn giản là sử dụng hai dây tín hiệu có chiều dài bằng nhau. Sử dụng cặp dây xoắn sẽ giảm thiểu được nhiễu từ bên ngoài tác động, nhất là khi truyền với khoảng cách xa và tốc độ cao. Trở kháng đặc tính cặp dây xoắn: Tùy theo hình dạng và chất liệu làm dây mà nó sẽ có một trở kháng đặc tính riêng (Characteristic Impedence - Zo), điều này sẽ được nhà sản xuất cung cấp các thông số trên dây, nó thường dao động từ 100-200Ω. Điện áp kiểu chung: Tín hiệu truyền dẫn trên dây không có dây mass để so sánh nên ta sẽ so sánh sai lêch điện áp trên dây để từ đó quy định mức logic là thấp hay cao. Điện áp chung(common-mode voltage - VCM) về toán học thì được phát biểu như là giá trị trung bình của hai điện áp tín hiệu được tham chiếu với một điểm chung. VCM = VA+VB2 Cách xác định điện áp kiểu chung Vấn đề nối đất: Tín hiệu trên hai dây khi được tham chiếu với một điêm chung là đất(Ground) thì khi đó nó cần được xem xét kĩ lưỡng. Lúc này bộ nhận sẽ xác định tín hiệu bằng cách tham chiếu tín hiệu đó với đất của nơi nhận, nếu đất của nơi nhận và nơi thu có một sự chênh lệch thì nó sẽ làm cho tín hiệu bị sai và nguy hiểm hơn và phá hỏng thiết bị. Điều này cho ta thấy mạng RS-485 chỉ có hai dây tín hiệu nhưng có ba mức điện áp được xem xét. Do đất là một vật dẫn điện không tốt nên nó có một điện trở xác định làm cho chênh lệch điện thế từ điểm này tới điểm kia, đặc biệt tại nơi thường xuyên có sấm chớp, máy móc tiêu thụ dòng lớn, những bộ chuyển đổi được lắp đặt và có nối đất. Truyền RS-485 khi tham chiếu với đất(Ground) Chuẩn RS-485 cho phép chênh lệch điện thế đất lên tới 7V, lơn hơn 7V là không được. Như vậy dây mass là môt điện áp tham chiếu không có tin tưởng và một cách tốt nhất là ta sẽ đi một dây thứ 3, dây này được nối mass tại máy phát để làm điện áp tham chiếu. Điện trở đầu cuối: Điện trở đầu cuối đơn giản là điện trở được đặt tại hai điểm tận cùng kết thúc của đường truyền. Giá trị của điện trở đầu cuối lý tưởng là bằng giá trị đặc tính trở kháng của dây xoắn, thường thì 100-200Ω. Cách đặt điện trở đầu cuối trong mạng RS-485 Nếu điện trở đầu cuối không phù hợp với giá trị trở kháng đặc tính của đường dây thì nhiễu có thể xảy ra do có sự phản xạ xuất hiện trên đường truyền (rất nguy hiểm khi truyền tốc độ cao), nhiễu ở mức độ nhỏ thì không đáng kể nhưng nếu lớn sẽ làm tín hiệu bị sai lệch. Mô tả tín hiệu với hai giá trị điện trở RT Phân cực đường truyền: Khi mạng RS-485 ở trạng thái rãnh các thiết bị sẽ ở trạng thái lắng nghe đường truyền và các khối phát đều ở trạng thái tổng trở cao cách li với đường truyền. Lúc này trạng thái của đường truyền được xem như là bất định. Nếu -200mV≤VAB≤200mV thì trạng thái logic tại ngõ ra khối thu sẽ mang giá trị của bit cuối cùng nhận được. Điều này không đảm bảo vì đường truyền rãnh trong truyền dữ liệu nối tiếp đòi hỏi phải ở mức cao để khối thu không hiểu nhầm là có tín hiệu đường truyền trên bus. Để duy trì trạng thái mức cao khi đường truyền đang rãnh thì việc phân cực đường truyền (Biasing) phải thực hiện. Một điện trở kéo lên nguồn (pull-up) ở đường A và một điện trở kéo xuống mass (pull-down) ở đường dây B sao cho VAB ≥ 200mV sẽ ép đường truyền lên mức cao. Phân cực cho đường truyền RS 485 Các kiểu truyền nhận trong mạng RS 485: Một truyền, một nhận: Sơ đồ một phát, một nhận của RS-485 Trong kiểu mẫu sử dụng cặp dây xoắn, hai điện trở đầu cuối RT Một phát, nhiều nhận: Sơ đồ một phát, nhiều nhận trong RS-485 Hai bộ truyền nhận: Sơ đồ này việc truyền nhận được thực hiện bằng một cặp dây xoắn nên truyền nhận dữ liệu không thể diễn ra đồng thời mà phải theo hình thức bán song công(half duplex), tại một thời điểm chỉ có một bộ thực hiện truyền. Nhiều bộ nhận truyền: Sơ đồ sử dụng nhiều bộ truyền nhận trong RS-485 Tương tự như trong sơ đồ hai bộ truyền nhận, hình thức truyền dữ liệu ở đâu là bán song công. Đoạn dây rẽ nhánh: Đoạn dây rẽ nhánh (stub) là một đoạn dây nối từ cặp dây chính (bus) tới một thiết bị (một trạm). Đoạn dây rẽ nhánh nếu dài quá sẽ ảnh hưởng tới sự phối hợp trở kháng. Vì vậy đoạn dây rẽ nhánh càng ngắn càng tốt. Một đoạn dây rẽ nhánh hợp lí Cách truyền một mã ASCII theo chuẩn RS-485: Biểu đồ truyền một mã ascii theo chuẩn RS-485 Bình thường đường truyền rãnh (Idle line) sẽ ở mức cao, VAB > 200mV, tín hiệu TX control cho phép phát tín hiệu đi. Mỗi bít tín hiệu TXD phát đi sẽ được biễu diễn tương ứng dưới dạng tín hiệu VAB theo chuẩn RS-485. Bit 1 tương ứng với VAB dương, bit 0 tương ứng VAB âm. Sau khi phát đi đủ 10 bit thì đường truyền lại lên mức cao báo tín hiệu rãnh. THIẾT KẾ PHẦN CỨNG : Khối xử lí và hiển thị: Các thành phần gồm có: MCU Atmega32, thạch anh 8MHz, LCD 1602L, cảm biến LM35, các nút điều khiển. Khối thời gian thực Các thành phần gồm có: IC DS1307, thạch anh 32,768kHz Khối giao tiếp máy tính: Các thành phần gồm có: IC chuyển đổi USB-COM PL2303, IC chuyển đổi USART-RS-232 MAX232 Khối 1 - MCU Khối 2- ds1307 Khối 3-max-232 Để có thể sử dụng rs-485 làm bus chủ kết nối với các thiết bị ta cần bộ chuyển đổi rs-232/rs-485, có thử sử dụng IC max 485 hoặc SN75176B làm IC giao tiếp. Tại mỗi thiết bị kết nối vào mạng ta có một bộ chuyển đổi và tại cổng com máy tính ta có một bộ chuyển đổi. Sơ đồ nguyên lý THIẾT KẾ PHẦN MỀM Giải thuật cho máy tính: Giải thuật cho máy tính: Giao diện giao tiếp: Giải thuật cho vi điều khiển: Lập trình cho MCU theo kiểu hướng đối tượng nên ta có lưu đồ cho các chương trình con như sau: Lưu đồ chương trình chính: Giải thuật hiển thị thời gian và nhiệt độ: Giải thuật hiện giờ tưới trong ngày: Giải thuật điều chỉnh thời gian thực tế: Kế quả thi công: Hình ảnh: Hạn chế: Chưa phát hiện được thời tiết khi có mưa nên có thể sẽ tưới khi trời đang mưa Hướng phát triển tiếp theo: Để hoàn thiện sản phẩm hơn nhóm em đã có các phương án giải quyết nhằm tối ưu hóa hệ thống như sau: Hệ thống được điều khiển hoàn toàn tự động qua máy tính. Lập cơ sở dữ liệu về quá trình phát triển của cây trồng từ đó lập ra một kế hoạch tưới tối ưu Lắp đặt và lập trình thêm cho các cảm biến như cảm biến mưa, cảm biến chuyển động, nhằm xác định thới tiết có mưa không để ngừng tưới hoặc hủy tưới và kiểm tra các động vật phá hoại như chuột, trâu, bò

Các file đính kèm theo tài liệu này:

  • docxdo_nhiet_do_va_dat_gio_tuoi_nuoc_cho_vuon_0298.docx