Nội dụng báo cáo bao gồm: mạch sạc ác quy 12V, mạch cảnh báo sụt áp trên acquy, mạch báo tình trạng acquy, thuật toán và code phần lập trình chương trình cảnh báo và hiển thị LCD. Nằm trong đề tài nghiên cứu thực tập công nhân Khoa Điện Tử Viễn Thông Đại học Bách Khoa ĐÀ Nẵng.
BÁO CÁO THỰC TẬP CÁ NHÂN I GIỚI THIỆU ĐỀ TÀI Đề tài : Thiết kế thi công mạch giám sát lò vi sinh Nhiệm vụ cá nhân: • Làm mạch: Thiết kế mạch sạc ác quy mạch cảnh báo ác quy BR2 Q5 J6 2N3055 R5 0.1 2k R37 1k DIODE VO Q7 2K R36 C16 D15 1K 100u J9 1N4372A 10k accu (+) accu (-) R13 2K c1815 D11 C15 DIODE DIODE R11 2.7K C12 C13 103 470 U8:B D12 R12 2.7K D14 D5 DIODE RV2 1N4372A LM358 R14 1K C14 1 45% D9 1N4372A b Nguyên lý làm việc: C18 1 CONN-H2 10k R8 1K LM358 4.7K R17 R4 R22 D13 GND VI 42% 1A RV4 10k 7808 CAUCHI RV5 U5 DIODE 1 D4 1K C17 2 1K R35 U8:A d468 R38 Q6 R3 GSIB1580 CONN-H2 45% II 12 v • Lập trình: lập trình chương trình cảnh báo hiển thị LCD LÀM MẠCH: Thiết kế thi công mạch sạc ác quy 12v: -Có nhiệm vụ nạp nguồn điện dự trữ, phòng ngừa điện, để cung cấp cho thiết bị hoạt động a Sơ đồ mạch: 2K R15 0.1 - Q1 transistor công suất 2N3055, tản nhiệt kỹ (100 gr nhôm) mắc darlington với Q2 D468 để khuếch đại dòng nạp với phân cực chung darlington 4K7 Q3 C1815 làm nhiệm vụ thường trực bảo vệ, có tác dụng mở đóng dòng nạp - 1/2 Op-Amp đôi (phía trên) đặt cổng (-) điện áp mẫu 6V với Zenner tụ lọc MF, cổng (+) biến trở phối hợp với cầu điện trở để kiểm tra điện áp accu, chỉnh để điện áp accu 14V Op-Amp đổi trạng thái ngõ lên 8V (cấp 7808), điện áp qua diod đổ vào base Q3 làm dẫn mạnh -> ngắt nguồn nạp bình đạt đến 14V - 1/2 Op-Amp (phía dưới) nhận điện áp mẫu cổng (+), cổng (-) nhận điện áp rơi điện trở công suất R1 = Ohm cộng với điện áp 3V zenner cho dễ so sánh Khi nạp điện áp điện trở tăng cao Khi bình đầy dòng nạp thấp xuống, ta chĩnh biến trở 10K để điện áp mẫu cao điện áp rơi + 3V, Op-Amp đổi trạng thái ngõ lên cao > dòng đổ qua diod vào base Q3 > ngắt dòng nạp Như nạp đầy > dòng nạp giảm đến mức tới hạn theo định ngắt nguồn 2.Mạch cảnh báo sụt điện áp ac quy 12v: -Có nhiệm vụ cảnh báo ác quy sụt điện áp a Sơ đồ mạch: K R42 470 D16 10k LED A D18 R39 11v R40 Q10 330 J7 2sc1815 Q11 CONN-H2 2sc1815 R41 C19 10k 1u D17 DIODE mach canh bao sut dien ap acquy 12v b.Nguyên lý làm việc: -Khi lấy nguồn từ ác quy J7, điện áp lớn 12V làm cho zenner dẫn, kích thích cho Q11 dẫn, tương tự Q10 dẫn làm cho led sáng lên - Do cảnh báo ác quy giảm xuống 12V 3.Mạch báo tình trạng ác quy 12V -Có nhiệm vụ báo tình trạng ac quy mức điện áp Volt, để để kiểm soát sạc ac quy a Sơ đồ mạch: R43 R46 150 470 R47 470 R45 K LED-BLUE A D26 LED-GREEN A D24 LED-RED 6V A D21 D19 J8 K K 1k D27 12V D20 D22 5V CONN-H2 DIODE Q8 Q9 2sc1815 2sc1815 R44 10k D23 DIODE R48 D25 10k DIODE b.Nguyên lý làm việc: -Khi lấy nguồn từ ac quy vào J8, điện áp nhỏ 10V có ledđỏ sáng kích dẫn diode zenner D19, D20,D27 - Khi điện áp ac quy lớn 11V kích dẫn diode D19,D20 làm cho Q9 dẩn , led-green sáng -Khi điện áp ac quy lơn 12V kích dẫn diode zenner D27 làm cho Q8 dẫn, vây Led-blue sáng Mạch in: a) Quy trình thực : *Quá trình làm mạch in rửa mạch: Dùng Proteus để vẽ sơ đồ nguyên lý layout mạch - Cắt nhỏ board đồng lớn thành board nhỏ, phù hợp với mạch - Xử lí bề mặt board đồng, tránh oxi hóa - Sử dụng bàn ủi để ủi mạch, thời gian ủi 10 phút - Bóc lớp giấy bên để giữ lại phần mực đen board - Cho board vào dung dịch FeCl3, lắc cho phản ứng xảy nhanh - Sau tan hết đồng, làm lớp đen bên mạch, lại phần mạch đồng - Tuy nhiên, trình ủi số mạch in không dính nên ta sử dụng bút xóa để sửa lại *Quá trình khoan mạch: - Chọn mũi khoan phù hợp cho chân linh kiện - Đối với đế IC chọn mũi khoang 1mm Các linh kiện điện trở, tụ, trở thanh, BJT thường chọn mũi khoan 0.6mm 0.8mm Đối với BJT công suất chọn mũi 1.2mm - b) Mạch in: tổng thể ba khối 5.Kiểm tra linh kiện: - LM7809 : điện áp cung cấp chiều 10-19V, cho dòng 9V -Kiểm tra BJT: Đặt thang đo x1, đo từ B sang C B sang E ( que đen vào B ) tương đương đo hai diode thuận chiều => kim lên , tất trường hợp đo khác kim không lên -Kiểm tra diode.Đặt thang đo vị trí x1 Đặt que đen vào cực âm, que đỏ vào cực âm kim lên, ngược lại kim không lên -Kiểm tra tụ điện phân cực.Đặt thang đo vị trí x1k, đặt que đen cực âm, que đỏ cực dương Ta thấy kim lên sau xuống lại từ từ III LẬP TRÌNH: 1) Lưu đồ thuật toán: a, Hiển thị LCD : Bắt Đầu Khởi tạo LCD S Kiểm tra đầu vào Hiển thị lên LCD Đ Kết thúc b, Báo Động: Bắt Đầu Nhập điều kiện báo động: nhiệt độ, độ ẩm, Vch(V cửa hở) Đọc liệu Nhiệt độ = điều kiện Loa, S led-red S Đ Hiển thị lên LCD Nhiệt độ=? Độ ẩm = điều kiện Đ Hiển thị lên LCD Độ ẩm=? Loa, led-yellow S Vch = điều kiện Đ Hiển thị lên LCD Vch=? S Loa,led-green Kết thúc 2) Chương trình: a Chương trình cảnh báo: #include "regx51.h" #define bat #define tat #define nhietdo P1^0 #define doam P1^1 #define cuaho P1^2 sbit Leddo = P2^7; sbit Ledxanh = P2^6; sbit Ledvang = P2^5; sbit loa = P2^0; void delay(unsigned int time) { unsigned int i,j; for(i=0;i 24) {Leddo = bat; delay(1000); Leddo = bat; delay(1000); Leddo= tat; delay(1000); loa = bat; delay(1000);} else Leddo= tat; if(78 >doam>82) {Ledxanh = bat; delay(1000); Ledxanh=tat ; delay(1000); Ledxanh = bat; delay(1000); loa = bat; delay(1000);} else Ledxanh=tat; if( cuaho < 3.6) {Ledvang = bat; delay(1000); Ledvang=tat; delay(1000); Ledvang = bat; delay(1000); loa = bat; delay(1000); else Ledvang=tat; } } b Chương trình hiển thị LCD: #include #include //Dinh nghia LCD #define LINE_1 0x80 #define LINE_2 0xC0 #define CLEAR_LCD 0x01 //Dinh nghia chan su dung giao tiep LCD Sbit LCD_D4 = P2^3; Sbit LCD_D5 = P2^2; Sbit LCD_D6 = P2^1; Sbit LCD_D7 = P2^0; Sbit LCD_E = P2^5; Sbit LCD_RW = P2^6; Sbit LCD_RS = P2^7; sbit DQ = P1^0 ; sbit relay = P3^6; sbit sw1 =P0^0; sbit sw2 =P0^1; //Ham tre thoi gian void delay_ms(unsigned int Time) {unsigned int i,j,t; t=Time; for(i=0;i2)&1; LCD_D7 = (cX>>3)&1; } // Ham Gui Lenh Cho LCD void lcd1602_send_command (unsigned char cX ) {P3_7=0; lcd1602_send_4bit_data ( cX >>4 ); lcd1602_enable() ; lcd1602_send_4bit_data ( cX ); lcd1602_enable() ; } // Ham Khoi Tao LCD void lcd1602_init ( void ) {P3_7=0; lcd1602_send_4bit_data ( 0x00 ); delay_ms(200); LCD_RS=0; LCD_RW=0; LCD_E=0; lcd1602_send_4bit_data ( 0x03 ); lcd1602_enable() ; lcd1602_enable () ; lcd1602_enable () ; lcd1602_send_4bit_data ( 0x02 ); lcd1602_enable() ; lcd1602_send_command( 0x2C lcd1602_send_command( 0x80); lcd1602_send_command( 0x0C); lcd1602_send_command( 0x06 ); lcd1602_send_command( CLEAR_LCD ); } // Ham Thiet Lap Vi Tri Con Tro void lcd1602_gotoxy(unsigned char x, unsigned char y) {unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); } // Ham Xoa Man Hinh LCD void lcd1602_clear(void) {P3_7=0; lcd1602_send_command( CLEAR_LCD ); //delay_us(300); }// Ham Gui Ky Tu Len LCD void lcd1602_putchar ( unsigned int cX ) {P3_7=0; LCD_RS=1; lcd1602_send_command( cX ); LCD_RS=0; } // Ham Gui Chuoi Ky Tu Len LCD void lcd1602_puts(char *s) { while (*s) {lcd1602_putchar(*s); s++; } } int xung,dem,frequency; void delay_18B20(unsigned int i) { while(i );} void Init_DS18B20(void) { unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20); } unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i ) {DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; delay_18B20(4); } return(dat); } void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i ) {DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; }} int ReadTemp(void) {unsigned char a=0; unsigned char b=0; unsigned char t=0; int nhiet_thuc; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); delay_18B20(100); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); delay_18B20(100); a=ReadOneChar(); b=ReadOneChar(); nhiet_thuc=b4; return(nhiet_thuc); } code int HS1101_Table[101]={ 8109,8090,8070,8051,8033,8015,7997,7979,7961,7944, 7927,7910,7894,7878,7862,7846,7830,7815,7799,7784, 7769,7755,7740,7726,7711,7697,7683,7669,7655,7641, 7628,7614,7600,7587,7574,7560,7547,7534,7521,7507, 7494,7481,7468,7455,7442,7429,7416,7403,7390,7377, 7364,7350,7337,7324,7311,7298,7284,7271,7257,7244, 7230,7216,7203,7189,7175,7161,7147,7132,7118,7103, 7089,7074,7059,7045,7029,7014,6999,6984,6968,6952, 6936,6920,6904,6888,6872,6855,6838,6821,6804,6787, 6770,6752,6735,6717,6699,6680,6662,6644,6625,6606, 6587}; int HS1101_GetHumi(int frequency) {int i; for(i=0;iHS1101_Table[i])return i; } return 100; } void ngat0(void) interrupt { xung++; } void ngat_timer_0(void) interrupt {P3_7=0; dem++; if(dem >= 4000) { dem=0; frequency = xung-2600; xung=0; }} void main(void) { int humi,nhiet_do,nhiet_do2,nhiet_do3,nhiet_do_khong_che=40,fr; char str[20]; TMOD = 0x02; TH0=TL0=-250; IT0=1; IE=0x83; TR0=1; lcd1602_init(); lcd1602_clear(); while(1) {P3_7=0; if(sw1 == 0){nhiet_do_khong_che++; if(nhiet_do_khong_che>=150) nhiet_do_khong_che=0; } if(sw2 == 0){nhiet_do_khong_che ; if(nhiet_do_khong_che= nhiet_do-4)&&(nhiet_do2 = nhiet_do2-4)&&(nhiet_do3 nhiet_do_khong_che) relay =1; else relay=0; humi=HS1101_GetHumi(frequency); sprintf(str,"Do Am: %d %% ,humi"); lcd1602_gotoxy(1,0); lcd1602_puts(str); sprintf(str,"Nhiet do: %doC ,nhiet_do"); lcd1602_gotoxy(1,1) lcd1602_puts(str); } delay_ms(100); } }