tìm hiểu và thiết kế sản phẩm đo nhiệt độ môi trường dùng vi điều khiển pic16f877a

16 1K 3
tìm hiểu và thiết kế sản phẩm đo nhiệt độ môi trường dùng vi điều khiển pic16f877a

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỤC LỤC I. Mở đầu…………………………………………………………………… 1. Giới thiệu chung về vi điều khiển…………………………………… 2. Phạm vi Tính khả thi của project ……… II. Chi tiết các linh kiện trong mạch ……………………………………… 1. Khối tạo nguồn điện áp chuẩn 5v ( phục vụ cho mạch chính )……… 1.1 Biến áp 1A………………………………………………………………. 1.2 IC ổn áp LM137………………………………………………………… 2. Khối mạch chính…………………………………………………………… 2.1 Vi điều khiển Pic16F877A……………………………………………… 2.2 Sensor cảm biến nhiệt độ LM35………………………………………. 2.3 Led 7 thanh…………………………………………………………… III. Sơ đồ mạch hoàn chỉnh………………………………………………… 1. Sơ đồ mạch nguyên lý…………………………………………………… IV. Chương trình phần mềm nạp cho vi điều khiển………………… 1. Code chương trình nạp cho Pic16F877A………………………………… V. Kết luận……………………………………………………… I. Mở đầu 1. Giới thiệu chung về vi điều khiển Ngày nay cùng với sự phát triển không ngừng của khoa học kĩ thuật đã đem đến cho cuộc sống của con người tiện nghi hơn đầy đủ hơn.Sức người được giải phóng, những công việc nặng nhọc trước kia đã dần được thay thế bởi máy móc. 1 Hòa vào dòng chảy đó sự bùng nổ về điện tử cùng các công nghệ về xử lý số đã đem lại cho con người những thành tuu to lớn, giúp con người có thể dễ dàng đạt được mục đích của mình trong mọi thiết kế.Các quá trình tính toán phức tạp đòi hỏi tốn kém về thời gian, công sức sự tỉ mỉ tưởng như khó có thể thực hiện lại được hóa dải một cách dễ dàng bằng các khối điều khiển. Không chỉ bó hẹp ứng dụng trong phạm vi công nghiệp, vi điều khiển đã thực sự khẳng định được chỗ đứng vững chắc của mình trong mọi lĩnh vực, mọi công việc ,nó trở lên gần gữi với con người như là một thứ không thể thiếu được trong cuộc sống. Bạn có thể bắt gặp các ứng dụng của vi điều khiển tại mọi nơi mọi lúc từ những chiếc đồng hồ đeo tay ,điện thoại ,đèn giao thông….đến các hệ thống phức tạp khác. Từ những kiến thức đã học, để hiểu hơn về vi điều khiển cần phải có những kiến thức thực tế.Nhóm chúng em đã thống nhất chọn tìm hiểu thiết kế sản phẩm “Đo nhiệt độ môi trường” dùng vi điều khiển Pic16F877A. 2. Phạm vi tính khả thi của project Như đã biết, Việt Nam là nước có khí hậu nhiệt đới,khí hậu nóng ẩm nên khâu bảo quản các sản phẩm nông sản gặp rất nhiều khó khăn.Để nâng cao chất lượng sản phẩm thì yếu tố ổn định nhiệt độ phải đặt lên hàng đầu. Do kiến thức còn nhiều hạn chế thời gian không cho phép nên không thể đi sâu vào lĩnh vực này nhóm chúng em chỉ xin làm về công đoạn đầu của quá trình ổn định nhiệt độ là “đo nhiệt độ môi trường” với dải nhiệt độ đo từ 0 0 C đến 100 0 C hiển thị ra led 7 thanh. Về tính khả thi của project thì từ những kiến thức đã tiếp thu được ở trên lớp những kiến thức tự tìm hiểu thì việc thiết kế theo như phạm vi đã xác định là hoàn toàn thực hiện được. Một yếu tố nữa là linh kiện phục vụ cho project thì dễ dàng được tìm thấy với giá cả hợp lý đảm bảo cho project hoàn thành đúng như dự định ban đầu. II. Chi tiết các linh kiện trong mạch 1. Khối tạp nguồn điện áp chuẩn 5V Để mạch hoạt động chính xác ổn định sự cần thiết phải cấp đúng các thông số điện áp dòng như khuyến cáo của nhà sản xuất.Nhóm đã nghiên cứu thiết kế ra mạch cấp nguồn 5V dòng ra là 0,85A với 2 linh kiện chính là Biến áp 1A IC ổn áp LM317. 2 BR1 2W005G C1 1000u VI 3 VO 2 ADJ 1 U1 LM317L R1 470 RV1 0.21k +88.8 Volts TR2 TRAN-2P2S 1.1 Biến áp 1A Biến áp 1A được sử dụng trong project biến nguồn xoay chiều 220V thành các nguồn 12V, 9V,6v với dòng xoay chiều là 1A. 1.2 IC ổn áp LM317 IC ổn áp LM317 có chức năng là cung cấp điện áp ổn định 5V cho mạch ngoài. 3 2. Khối mạch chính Trong khối mạch chính ta sử dụng vi điều khiển PIC16F877A ,LM35 led7 thanh.Ta sẽ xét cụ thể chức năng của từng linh kiện ngay sau đây : 2.1 Vi điều khiển PIC16F877A Đặc tính kĩ thuật của Pic16F877A - Vi điều khiển PIC16F877A là loại CPU có đặc tính cao được tích hợp trên công nghệ RISC. - Tập lệnh gồm có 35 lệnh ,mỗi lệnh là một từ đơn. - Tất cả các lệnh (ngoại trù các lệnh rẽ nhánh) được thực hiện trong 2 chu kì máy. - Tần số xung nhịp có thể đạt tới 20 MHz. - Bộ nhớ chương trình được tích hợp theo công nghệ Flash với dung lượng 8Kx14 từ (8192 lệnh ),368x8 byte bộ nhớ Ram,256x8 byte bộ nhớ EEPROM. - 14 nguồn ngắt (Bao gồm cả ngắt cứng ngắt mềm). - Ngăn xếp phần cứng 8 mức. - Gồm 3 chế độ định địa chỉ : trực tiếp, gián tiếp định địa chỉ tương đối. - Reset khi mở nguồn. - Gồm 3 bộ định thời (Time0, Time1, Time2). 4 Có thay thế LM317 bằng IC có chức năng tương đương như IC7805. Tuy nhiên điểm mạnh của LM317 là có thể điều chỉnh được điện áp đầu ra thông qua chân Adj. - Bộ định thời đáp ứng theo sự kiện của ngoại vi (Watchdog Timer). - Mã bảo vệ lập trình được. - Tiết kiệm năng lượng ở chế độ chờ (Sleep Mode). - Thay đổi nguồn xung nhịp. - Khả năng thiết kế đây đủ. - Nguồn cung cấp từ 2V đến 5.5V. - Tích hợp mạch lập trình trong thông qua cổng nối tiếp (ICSP) lập trình với nguồn đơn 5V. - Dòng điện ở mức cao ở các đường dữ liệu có thể đạt tới 25mA. - PIC16F877A gồm 3 bộ định thời/bộ đếm là time0,time1 time2.trong đó Time0 Time2 là Time 8 bit còn Time1 là Time16 bit.Tất cả các Timer đều có thể thực hiện như một bộ đếm (counter).Tất cả các Time đều có thể đặt trước tỉ lệ. - 2 bộ bắt giữ ngõ vào ,so sánh điều chế độ rộng xung.Bắt giữ ngõ vào 16 bỉ với độ phân giải 12,5 ns,so sánh với 1 bit với độ phân giải 200ns, điều rộng xung với độ phân giải 10 bit. - 8 kênh ADC 10 bit. - Truyền nhận đa năng đồng bộ bất đồng bộ với 9 bit địa chỉ. - giao tiếp dữ liệu song song 8 bit. Sơ đồ chân: Tổ chức bộ nhớ - các cổng vào ra 1 số chân đặc biệt: PIC 16F877A có 3 khối bộ nhớ: bộ nhớ chương trình, bộ nhớ dữ liệu bộ nhớ EEPROM. Bộ nhớ chương trình bộ nhớ dữ liệu có đường bus riêng vậy có thể truy cập vào từng bộ nhớ một cách riêng rẽ. Bộ nhớ chương trình có 13 bit vậy không gian địa chỉ sẽ là 8k word x 8bit. Truy cập ngoài vùng không gian trên sẽ gây lỗi. 5 Bộ nhớ dữ liệu được chia thành 4 bank, trong các bank chứa thanh ghi thường các thanh ghi chức năng đặc biệt. Bank được chọn phụ thuộc vào bit RP1 RP0 (bit thứ 6 bit thứ 5) của thanh ghi trạng thái status. Các thanh ghi chức năng đặc biệt được CPU bộ ngoại vi sử dụng để điều khiển các thiết bị. Các thanh ghi này hoạt động như một thanh RAM tĩnh. Thanh ghi trạng thái chứa trạng thái số học của ALU, trạng thái Reset các bít chọn bank ở bộ nhớ dữ liệu. Các cổng vào ra của PIC: các Port A, B, C, D, E hoạt động bình thường như cổng vào ra hai chiều. - Port A: có 6 bit (tương ứng với 6 chân RA0÷RA5). Các chân của cổng A có tích hợp một số chức năng ngoại vi, nếu một thiết bị ngoại vi được enable thì cổng này sẽ không hoạt động như một cổng vào ra. Thanh ghi xác định chiều tương ứng của các chân port A là thanh ghi TrisA. Các bít ở thanh ghi TrisA bằng 1 sẽ xác định các chân ở port A là đầu vào ngược lại sẽ là đầu ra. - Port B: rộng 8 bit( RB0÷RB7). Thanh ghi quy định chiều của port B là thanh ghi TrisB. Thiết lập các bit ở Tris B bằng 1 sẽ làm cho cổng B là cổng vào, ngược lại sẽ là cổng ra. - Port C: rộng 8 bit(RC0÷RC7). Thanh ghi quy định chiều của port C là TrisC. Các chân RC3, RC4 dùng để kết nối truyền nhận thông tin với các thiết bị ngoại vi. - Port D: rộng 8 bit(RD0÷RD7). Port D có thể được cấu hình như một cổng vi xử lý rộng 8 bit bằng cách thiết lập bit điều khiển PSPSTATUS (TrisE.4). Ở chế độ này thì đầu vào là tín hiệu TTL. - Port E: rộng 3 bit (RE0÷RE2). Port E có thể là đầu vào khi bit PSPSTATUS (TrisE.4) được thiết lập. Từ hình vẽ ta thấy, pic 16F877A có 2 chân Vcc 2 chân GND, để PIC có thể hoạt động được ta phải cung cấp nguồn cho tất cả các chân này. Ngoài cung cấp nguồn ta phải cấp nguồn xung dao động để cho vi điều khiển hoạt động. Nguồn dao động được cấp qua chân 13 14 của PIC. 6 Mạch Reset cho vi điều khiển là một công tắc để hở thông qua chân MCLR của vi điều khiển. Mạch sẽ thực hiện reset khi chân này từ mức logic 1 xuống mức logic 0. Khi công tắc hở thì chân này luôn mang mức logic 1 do luôn được nối với nguồn thông qua một điện trở hạn dòng R1, điện trở này có giá trị nhỏ hơn 40K để đảm bảo điện áp cung cấp cho vi điều khiển. 2.2 Cảm biến nhiệt độ LM35 Để thu nhiệt độ của môi trường, ta sử dụng các sensor nhiệt độ. Cụ thể sensor được dùng trong project là LM35. Đây là loại sensor rất dễ dàng sử dụng phổ biến trên thị trường ta sẽ xét các thông số của loại sensor này ngay sau đây : - LM35 là cảm biến được chế tạo từ những chất bán dẫn Nguyên lý của chúng là dựa trên mức độ phân cực của các lớp P-N tuyến tính với nhiệt độ môi trường . - Để sensor hoạt động thì ta chỉ cần cấp một nguồn duy nhất trong dải từ 4 đến 20V.Để cho thuận tiện nhóm đã dùng nguồn 5V cấp cho vi điều khiển làm nguồn đẻ nuôi IC LM35 hoạt động. - Dải nhiệt độ đo là từ -55 đến 150 0 C. - Nhiệt độ tăng 1 0 C thì đầu ra của cảm biến tăng 10 mV. - Độ nhạy là 0,5 o C ở 25 o C. - Sai số đo là ¼ o C. II.3. LED 7 thanh x 4 LED 7 đoạn là một công cụ thông dụng được dùng để hiển thị các thông số dưới dạng các số từ 0 đến 9. Mặc dù công cụ LCD giúp ta thể hiện các thông số một cách linh động hơn 7 Cảm biến LM35 có 3 chân 1 chân cấp nguồn cho IC hoạt động.1 chân nối đất, 1 chân xuất tín hiệu analog.Theo khuyến cáo của nhà sản xuất thì nên mắc 1 điện trở 1K giữa chân output với đất. nhưng LED 7 đoạn vẫn được sử dụng nhiều trong công nghiệp do các ưu thế của nó như: ít chịu ảnh hưởng của nhiệt độ, dễ tạo sự chú ý góc nhìn rộng. LED 7 đoạn bao gồm 7 đoạn LED được đánh dấu là các kí tự a, b, c, d, e, f, g một dấu chấm thập phân kí hiệu là dp. Ta có thể xem LED 7 đoạn là một tổ hợp gồm 8 LED. 8 LED này có một đầu (Anode hoặc Cathode) được nối chung được bố trí theo một qui tắc nhất định dùng để hiển thị các chữ số thập phân. Có hai loại LED 7 đoạn, đó là loại Anode chung (cực Anode của các LED được nối chung với nhau) loại Cathode chung (cực Cathode của các LED được nối chung với nhau). Tùy theo từng loại LED mà ta có các phương pháp điều khiển các LED trong tổ hợp đó sáng tắt một cách thích hợp. Đối với loại Anode chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đo la mức logic 0. Đối với loại Cathode chung, một LED sẽ được bật sáng nếu mức logic đưa vào chân điều khiển đoạn LED đo là mức logic 1.HV III. Sơ đồ mạch hoàn chỉnh 1.1 Sơ đồ mạch nguyên lý 8 IV. Chương trình phần mềm nạp cho vi điều khiển 1. Chương trình nạp cho vi điều khiển 9 // dau tien cac cau doc tu ham voi main() sau do roi den vòng lap while truoc nhe. sau do cu lan luot theo do mà doc các ham khac #include <16f877A.h> #include <def_877a.h> #device *= 16 ADC = 10 #include <math.h> #FUSES NOWDT,HS, NOPROTECT,NOLVP, NOWRT #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3) #include "lcd.c" #include "ds1307.c" #bit SW=0x07.5 #bit SW1=0x07.6 #bit SW2=0x07.7 #define LED7 PORTB int8 Num_Char[10] = {0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; float value; float x;//y; int8 chuc,dv; int16 adc; int16 i; int8 led = 0; byte mode; void read_time(); void tg(); void keyscan(); void ndo(); BYTE sec,min,hour,day,month,year,j; int get_bcd(BYTE data) // ham chuyen doi tu he hexa sang he 10, cai nay ko can phai tim hieu ki { int nibh; int nibl; nibh=data/10; nibl=data-(nibh*10); return((nibh<<4)|nibl); } int rm_bcd(BYTE data) //ham chuyen doi tu he so 10 sang he hexa, cai này ko can phai tim hieu ki dau 10 [...]... scan_led(value); */ V } Kết luận Như đã nêu ở trong mục ‘phạm vi của project ’ sản phẩm của chúng em mới chỉ là công đo n đầu trong quá trình ổn định nhiệt độ ,sản phẩm còn nhiều điều được như ý như : thuật toán còn dài,mạch chưa được gọn, mức độ nhạy với nhiệt độ thay đổi đột ngột kém… Trong thời gian tới chúng em sẽ cố gắng thiết kế mạch hoạt động ổn định phát triển mỏ rộng phạm vi ứng dụng của sản phẩm để có... scan_led(float num) { int8 chuc; int8 dvi; num = Floor (num); chuc = num / 10; dvi = (int8)num % 10; // N?u giá tr? hàng ch?c c?a nhi?t ?? # 0oC thì Led1 sáng các Led khác t?t if(chuc != 0) { output_e(led+0x01); output_b(Num_Char[chuc]); delay_ms(1); clear_led(); delay_us(100); } // Led hàng ??n v? sáng các led khác t?t 11 output_e(led+0x02); output_b(Num_Char[dvi]); delay_ms(1); clear_led(); delay_us(100);... Led hàng ??n v? sáng các led khác t?t 11 output_e(led+0x02); output_b(Num_Char[dvi]); delay_ms(1); clear_led(); delay_us(100); } void main(){ lcd_init(); init_DS1307(); mode=0; // Thi?t l?p các c?ng vào ra b? bi?n ??i ADC // Set_TRIS_D (0x00); // Set_TRIS_C (0x00); set_TRIS_B (0x00); set_TRIS_A (0x00); set_TRIS_E (0x00); setup_adc_ports(ALL_ANALOG); setup_adc(adc_clock_internal); set_adc_channel(0);... thay đổi đột ngột kém… Trong thời gian tới chúng em sẽ cố gắng thiết kế mạch hoạt động ổn định phát triển mỏ rộng phạm vi ứng dụng của sản phẩm để có thể hiển thị ngày giờ thực có thể giao tiếp với mày tính giúp cho vi c thống theo dõi được dễ dàng Trong quá trình thực hiện nhóm đã gặp không ít khó khăn nhưng được sự hướng dẫn chỉ bảo tận tình của thầy.Chúng em xin cảm ơn thầy đồng thời rất... delay_us(10); write_DS1307(0x00,0x00); // L?y m?u nhi?t ?? l?n 1 x =read_adc(); value= (float)x * 0.48828125; i = 0; while(true){ ndo(); keyscan(); tg(); } } void read_time(){ // ham nay nhap du lieu tu DS1307 vào LCD day= rm_bcd(read_DS1307(4)); month= rm_bcd(read_DS1307(5)); year= rm_bcd(read_DS1307(6)); hour= rm_bcd(read_DS1307(2)); min= rm_bcd(read_DS1307(1)); sec= rm_bcd(read_DS1307(0)); } void tg(){ read_time();... //xuat hien nam printf(lcd_putc,"nam :%02d ",year); j=year; { up_time(); if(j>0x99)j=0x00; } { down_time(); if(j6)mode=0; } 14 void ndo(){// day la ham nhiet do int8 temp; set_adc_channel(0); delay_us(10); adc=read_adc(); chuc=(adc*0.48828125)/10; dv=(adc*0.48828125)-chuc*10; . thống nhất chọn tìm hiểu và thiết kế sản phẩm Đo nhiệt độ môi trường dùng vi điều khiển Pic16F877A. 2. Phạm vi và tính khả thi của project Như đã biết, Vi t Nam là nước có khí hậu nhiệt đới,khí. dụng vi điều khiển PIC16F877A ,LM35 và led7 thanh.Ta sẽ xét cụ thể chức năng của từng linh kiện ngay sau đây : 2.1 Vi điều khiển PIC16F877A Đặc tính kĩ thuật của Pic16F877A - Vi điều khiển PIC16F877A. không thể đi sâu vào lĩnh vực này nhóm chúng em chỉ xin làm về công đo n đầu của quá trình ổn định nhiệt độ là đo nhiệt độ môi trường với dải nhiệt độ đo từ 0 0 C đến 100 0 C và hiển thị ra

Ngày đăng: 23/04/2014, 17:13

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan