Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
637,25 KB
Nội dung
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN ĐIỀU KHIỂN HỌC BÁO CÁO MÔN: HỆ THỐNG ĐIỀU KHIỂN NHÚNG TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI BÁO CÁO TỔNG KẾT HỆ THỐNG ĐIỀU KHIỂN NHÚNG NHĨM Thuộc lĩnh vực khoa học cơng nghệ: Điện - Điện tử Sinh viên thực hiện: Lưu Minh Lâm Phạm Khắc Hải Nguyễn Việt Tuấn Hoàng Văn Nguyễn Quang Hưng Hải Nguyễn Xuân Tùng(1408989) Nguyễn Văn Nguyễn Xuân Tùng(1408988) Khanh Nguyễn Minh Thành Long 10 Nguyên Bá Lớp: Tự động hóa - điều khiển K55 Khoa: Điện - Điện Tử Năm thứ: 3/Số năm đào tạo: 4.5 Ngành học: Kỹ thuật điều khiển tự động hóa Hà Nội, 26/03/2017 Mục lục Phần 1: khái quát VXL PIC16f877a Phần 2:CODE-Mơ lập trình .8 ❖ Bài 1: Đo nhiệt độ LM35 hiển thị mà hình LCD sử dụng vdk ❖ ❖ ❖ ❖ ❖ ❖ pic16f877a ' ? Bài 2: Đo nhiệt độ LM35 nhiệt độ lớn 40 đóng quạt chạy làm mát 16 BÀI 3: ĐO TỐC ĐỘ ĐỘNG CƠ BẰNG ENCODER SỬ DỤNG NGẮT NGOÀI VÀ TIMER1 CỦA VĐK PIC16F877A 22 Bài 4:Đo khoảng Cách sử dụng cảm biến siêu âm SRF05 hiển thị LCD16X02 .' ? 28 Bài 5:Gửi chuỗi kí tự qua UART 35 Bài 6: Truyền thông I2C 51 Bài 7: Đảo chiều, dừng động sử dụng L298 kết hợp đo tốc độ truyền tốc độ qua UART ’ .’ 57 Phần I: Khái quát VXL PIC16F877A SƠ ĐỒ NỐI CHÂN CỦA PIC16F877A 40-Pin PDIP -C 4C 3—RS7.’PG0 RAT.AMi c 3ữ —— PB5 GC RA-AM — E 3Í —— RB5 RAÍ ASỈ^Tir^CVKr — ĩ 37 3—— =6RA3-AM»M%«♦ *—*E » J —— «Đ3*Í>GM RA4iT0CKi'ClOUr —— E 35 —— ^2 AN4'55ỊC2OUT —— E • 33 —— RCGRC>A\5 ■*”*£ 32 *— VDC REl^tẠNC —* c 31 VS5 RE2ÕSAN7 L 1-3 3“ RD7.PSP7 Voo—— E •• —— RD€.PSPfi E 12 28 J —RCỖ.PSP5 'AR c 13 27 OSC1ICLK13—■ RD4.PSP4 OSCICLKO « ~ «CMWDT RCí^lOSOĩtCK —*d 15 28 3— -CC.TX CK RC1T1OSl>CCP2 E 15 RC2CCP1 ♦—E ,r 24 3—* «C^SDC HCiSCKSCL —c 'B 23 RC-í-SDrSOA RDÍPPSPO —— r 19 22 ] — RDÌPSP3 RD1 '=SP1 —- E 23 21 RD2.PSP2 Chức chân PORTA Chân RA0/AN0 - RA0: xuất/ nhập số - bit thứ củaport A - AN0: ngõ vào tương tự kênh thứ Chân RA1/AN1 - RA1: xuất/nhập số - bit thứ port A - AN 1: ngõ vào tương tự kênh thứ Chân RA2/AN2/VREF-/CVREF - RA2: xuất/nhập số - bit thứ port A - AN2: ngõ vào tương tự kênh thứ - VREF-: ngõ vào điện áp chuẩn (thấp) ADC - CVREF: điện áp tham chiếu VREF ngõ vào so sánh Chân RA3/AN3/VREF+ - RA3: xuất/nhập số - bit thứ port A - AN3: ngõ vào tương tự kênh thứ - VREF+: ngõ vào điện áp chuẩn (cao) A/D Chân RA4/TOCKI/C1OUT - RA4: xuất/nhập số - bit thứ port A - TOCKI: ngõ vào xung clock từ bên cho Timer0 - C1OUT: ngõ so sánh Chân RA5/AN4/SS/ C2OUT - RA5: xuất/nhập số - bit thứ port A - AN4: ngõ vào tương tự kênh thứ - SS : ngõ vào chọn lựa SPI tớ (Slave SPI device) - C2OUT: ngõ so sánh - Chức chân PORTB Chân RB0/INT - RB0: xuất/nhập số - bit thứ port B - INT: ngõ vào nhận tín hiệu ngắt ngồi Chân RB1 - RB1: xuất/nhập số - bit thứ port B Chân RB2 - RB2: xuất/nhập số - bit thứ port B Chân RB3 - RB3: xuất/nhập số - bit thứ port B Chân RB4 - RB4: xuất/nhập số - bit thứ port B Chân RB5 - RB5: xuất/nhập số - bit thứ port B Chân RB6 - RB6: xuất/nhập số Chân RB7 - RB7: xuất/nhập số - Chức chân PORTC Chân RC0/T1OSO/T1CKI (15): có chức năng: - RC0: xuất/nhập số - bit thứ port C - T1OSO: ngõ dao động Timer1 - T1CKI: ngõ vào xung clock từ bên ngồi Timer1 Chân RC1/T1OSI/CCP2 (16): có chức năng: - RC1: xuất/nhập số - bit thứ port C - T1OSI: ngõ vào dao động Timer1 - CCP2: ngõ vào Capture2, ngõ compare2, ngõ PWM2 Chân RC2 /P1A/CCP1 (17): có chức năng: - RC2: xuất/nhập số - bit thứ port C - P1A: ngõ PWM - CCP1: ngõ vào Capture1, ngõ compare1, ngõ PWM1 Chân RC3/SCK/SCL (18): có chức năng: - RC3: xuất/nhập số - bit thứ port C - SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ chế độ SPI - SCL: ngõ vào xung clock nối tiếp đồng bộ/ngõ chế độ I2C Chân RC4/SDI/SDA (23): có chức năng: - RC4: xuất/nhập số - bit thứ port C - SDI: ngõ vào liệu truyền liệu kiểu SPI - SDA: xuất/nhập liệu I2C Chân RC5/SDO (24): có chức năng: - RC5: xuất/nhập số - bit thứ port C - SDO: ngõ xuất liệu truyền liệu kiểu SPI Chân RC6/TX/CK (25): có chức năng: - RC6: xuất/nhập số - bit thứ port C - TX: ngõ phát liệu chế độ truyền bất đồng USART - CK: ngõ cấp xung clock chế độ truyền đồng USART Chân RC7/RX/DT - RC7: xuất/nhập số - bit thứ port C - RX: ngõ vào nhận liệu chế độ truyền bất đồng EUSART - DT: ngõ phát nhận liệu chế độ truyền đồng EUSART - Chức chân PORTD Chân RD0 - RD0: xuất/nhập số - bit thứ port D - Chân RD1 RD1: xuất/nhập số - bit thứ port D Chân RD2 - RD2: xuất/nhập số - bit thứ port D Chân RD3 - RD3: xuất/nhập số - bit thứ port D Chân RD4 - RD4: xuất/nhập số - bit thứ port D Chân RD5 - RD5: xuất/nhập số - bit thứ port D - ngõ PWM Chân RD6 - RD6: xuất/nhập số - bit thứ port D Chân RD7 - RD7: xuất/nhập số - bit thứ port D - Chức chân PORTE Chân RE0/AN5 (8): có chức năng: - RE0: xuất/nhập số - AN5: ngõ vào tương tự Chân RE1/AN6 (9): có chức năng: - RE1: xuất/nhập số - AN6: ngõ vào tương tự kênh thứ Chân RE2/AN7 (10): có chức năng: - RE2: xuất/nhập số - AN7: ngõ vào tương tự kênh thứ Phần II: CODE - Mô Phỏng Các Bài Lập Trình Nhúng Bài :ĐO NHIỆT ĐỘ BẰNG CẢM BIẾN LM35 HIỂN THỊ LÊN LCD SỬ DỤNG VĐK 16F877A • Nguyên lý: Tín hiệu đại lượng vật lý cần đo nhiệt độ biến đổi thành tín hiệu điện thông qua cảm biến nhiệt độ LM35 Tín hiệu đưa vào vi điều khiển Ở vi điều khiển PIC16F877A có tích hợp sẵn chuyển đổi ADC Ở sử dụng để đo nhiệt độ nên cần sử dụng kênh đo ADC vi điều khiển Module ADC vi điều khiển PIC16F877A gồm có ghi ADRESH, ADRESL, ADCON0, ADCON1 Giá trị sau chuyển đổi lấy giá trị 10 bit tính tốn chuyển thành nhiệt độ tương ứng hiển thị lên LCD16x2 Nếu nhiệt độ đo lớn 40 độ có thơng báo hiển thị lên LCD loa kêu lên Bây tìm hiểu ghi ADC vi điều khiển ■ ADCON0: ADCONO REGISTER (ADDRESS Fh) R/W-ũ R/W-0 U-0 R/W-Ũ ADCS1 ADCSỨ CHS2 CHS1 CHSŨ blt GŨ/DŨN — E bltũ ADŨN Bit 7-6 ADCS1:ADCS0: bit kết hợp với bit ADCS2 ghi ADCON1 dùng để cài đặt tần số chuyển đổi ADC ADCS2 (ADCON1) 0 ADCS1:ADCS0 (ADCON0) 00 01 Tần số đọc ADC FOSC/2 FOSC/8 10 FOSC/32 11 FRC 00 FOSC/4 01 FOSC/16 10 FOSC/32 11 FRC Bit - CH2:CH0: bit lựa chọn kênh analog module ADC 000 = Channel (AN0) 001 = Channel (AN1) 010 = Channel (AN2) 011 = Channel (AN3) 100 = Channel (AN4) 101 = Channel (AN5) 110 = Channel (AN6) 111 = Channel (AN7) Bit Go/Done: bit trạng thái chuyển đổi ADC 0: Quá trình đọc ADC thực xong 1: trình đọc ADC tiến hành thực xong bit bị xóa Bit ADON: 0: module ADC bị tắt 1: module ADC kích hoạt ■ ADCON1: ADC REGISTER ỊADDRESS u-ũ RA/V-Ũ u-0 ON1 9Fh) R/W-Ũ R/W-Ũ R/VV-Ũ R/W-ũ ADFM bit7 ADCS2 — — PCFG3 PCFG2 PCFG1 bít ũ PCFG0 Bit ADFM: bit dùng để cài đặt việc lưu giá trị ADC đọc ghi 0: bit thấp ghi ADRESL không dùng 10bit ADC lưu vào bit lại ghi 1: bit cao ghi ADRESH không dùng 10bit ADC lưu vào bit lại ghi Bit 3-0 PCFG3:PCFG0: Bit để cài đặt kênh ADC PCFG AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 VREF+ VREF- C/R A A A A A A A A A VREF + A A A A A A VOD AN3 Vss 8/0 7/1 0010 0011 D D D D VREF+ A A A A A A VOD AN3 Vss D A A A D Vss 5/0 4/1 0100 0101 D □ D D D D D D □ A A A A VDO VREF+ AN3 Vss Vss 3/0 2/1 Ollx 1000 D A D A A D A A — AN2 D D A A — AN3 D D A A VREF+ 1001 D A A VDD Vss 0/0 6/2 6/0 1010 D D A A VREF+ A A A AN3 Vss 5/1 1011 1100 D D D D D D D A D D D D A A D D D VREF+ VREF+ VREFVREF- VREF + VREF- A A A D D A A A A A AN3 AN3 AN3 AN2 AN2 AN2 Vss AN2 4/2 3/2 2/2 1/0 /2 0000 0001 1101 1110 1111 D A D D D A D D VREF- D VREF+ VREF- VDD AN3 Vss ■ ADRESH ADRESL: Chứa 10 bit ADC sau chuyển đổi xong ■ LM35: Nhiệt độ xác định cách đo hiệu điện ngõ LM35 Đơn vị nhiệt độ C Nhiệt độ thay đổi tuyến tính 10mV/ C Độ xác thực tế: 1/4°C nhiệt độ phịng 3/4°C ngồi trời.Nhiệt độ đo khoảng -55°C tới 150°C LM35 có hiệu cao, công suất tiêu thụ 60uA Như vậy, cách đưa vào chân bên trái cảm biến LM35 hiệu điện 5V, chân phải nối đất, đo hiệu điện chân chân RA0/AN0 bạn có nhiệt độ (0-150°C) cơng thức: Nhiệt độ = (5000.0Í) /1023*giá trị ADC đọc được/10 o o * File: slave.c * Author: minhlam * * Created on March 13, 2017, 12:07 AM */ #include #include #define _XTAL_FREQ 20000000 // #pragma config statements should precede project file includes // Use project enums instead of #define for ON and OFF // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (XT oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled) // Low-Voltage Serial Programming #pragmaIn-Circuit config LVP = OFF Enable bit #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit #pragma config WRT = OFF // Flash Program Memory Write Enable bits // Flash Program Memory Code Protection bit #pragma config CP = OFF unsigned int z; void I2C_Slave_Init (unsigned int add) { SSPSTAT=0x80; SSPADD= add; SSPCON=0x36; SSPCON2bits.SEN=1; TRISCbits.TRISC3=1; TRISCbits.TRISC4=1; INTCONbits.GIE=1; INTCONbits.PEIE=1; PIR1bits.SSPIF=0; // xoa co tran PIE1bits.SSPIE=1; // cho phép ng?t I2C } void interrupt I2C_Slave_Read() { if(PIR1bits.SSPIF=1) { SSPCONbits.CKP=0; if ((SSPCONbits.SSPOV) || (SSPCONbits.WCOL)) //If overflow or collision { z = SSPBUF; // Read the previous value to clear the buffer SSPCONbits.SSPOV = 0; // Clear the overflow flag SSPCONbits.WCOL = 0; // Clear the collision bit SSPCONbits.CKP = 1; } if(!SSPSTATbits.D_nA && !SSPSTATbits.R_nW) //If last byte was Address + Write { z = SSPBUF; while(!BF); PORTD = SSPBUF; SSPCONbits.CKP = 1; } else if(!SSPSTATbits.D_nA && SSPSTATbits.R_nW) //If last byte was Address + Read { z = SSPBUF; BF = 0; SSPBUF = PORTB ; SSPCONbits.CKP = 1; while(SSPSTATbits.BF); } SSPIF = 0; } } //void main(void) { // nRBPU = 0; //Enables PORTB internal pull up resistors // TRISB = 0xFF; //PORTB as input // TRISD = 0x00; //PORTD as output // PORTD = 0x00; //All LEDs OFF // I2C_Slave_Init(0x30); //Initialize as a I2C Slave with address 0x30 // while(1); //} //unsigned int z; //void interrupt I2C_Slave_Read() //{ // if(SSPIF == 1) // { // SSPCONbits.CKP = 0; // // if ((SSPCONbits.SSPOV) || (SSPCONbits.WCOL)) // { // z = SSPBUF; // Read the previous value to clear the buffer // SSPCONbits.SSPOV = 0; // Clear the overflow flag // SSPCONbits.WCOL = 0; // Clear the collision bit // SSPCONbits.CKP = 1; // } // // if(!SSPSTATbits.D_nA && !SSPSTATbits.R_nW) // { // z = SSPBUF; // while(!BF); // PORTD = SSPBUF; // SSPCONbits.CKP = 1; // } // else if(! SSPSTATbits.D_nA && SSPSTATbits.R_nW) // { // z = SSPBUF; // BF = 0; // SSPBUF = PORTB ; // SSPCONbits.CKP = 1; // while(SSPSTATbits.BF); // } // // SSPIF = 0; // } //} //void I2C_Slave_Init(short address) //{ // SSPSTAT = 0x80; // SSPADD = address; // SSPCON = 0x36; // SSPCON2 = 0x01; // TRISC3 = 1; //Setting as input as given in datasheet // TRISC4 = 1; //Setting as input as given in datasheet // GIE = 1; // PEIE = 1; // SSPIF = 0; // SSPIE = 1; //} void main() { nRBPU = 0; //Enables PORTB internal pull up resistors TRISB = 0xFF; //PORTB as input TRISD = 0x00; //PORTD as output PORTD = 0x00; //All LEDs OFF I2C_Slave_Init(0x30); //Initialize as a I2C Slave with address 0x30 while(1); } Bài 7: Đảo chiều, dừng động sử dụng L298 kết hợp đo tốc độ truyền tốc độ qua UART IC L298 IC tích hợp nguyên khối gồm mạch cầu H bên Với điện áp làm tăng công suất nhỏ động DC loại vừa Mình tóm tắt qua chức chân L298 - chân INPUT: IN1, IN2, IN3, IN4 nối với chân 5, 7, 10, 12 L298 Đây chân nhận tín hiệu điều khiển - chân OUTUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với chân INPUT) nối với chân 2, 3,13,14 L298 Các chân nối với động - Hai chân ENA ENB dùng để điều khiển mạch cầu H L298 Nếu mức logic “1” (nối với nguồn 5V) cho phép mạch cầu H hoạt động, mức logic “0” mạch cầu H khơng hoạt động Với tốn trên, bạn cần lưu ý đến cách điều khiển chiều quay với L298: - Khi ENA = 0: Động không quay với đầu vào - Khi ENA = 1: INT1 = 1; INT2 = 0: Động quay thuận INT1 = 0; INT2 = 1: Động quay nghịch INT1 = INT2: Động dùng tức Với ENB tương tự với INT3, INT4 Trong sử dụng module L298 V1 để điều khiển chiều quay động DC Sơ đồ nguyên lý: HEADER 10 - Driver: L298N tích hợp hai mạch cầu H -Điện áp điều khiển: +5 V ~ +35 V - Dòng tối đa cho cầu H là: 2A - Điện áp tín hiệu điều khiển: +5 V ~ +7 V - Dòng tín hiệu điều khiển: ~ 36mA - Cơng suất hao phí: 20W (khi nhiệt độ T = 75 C) - Nhiệt độ bảo quản: -25 C ~ +130 C - Driver: L298N tích hợp hai mạch cầu H -Điện áp điều khiển: +5 V ~ +35 V - Dòng tối đa cho cầu H là: 2A - Điện áp tín hiệu điều khiển: +5 V ~ +7 V - Dịng tín hiệu điều khiển: ~ 36mA - Cơng suất hao phí: 20W (khi nhiệt độ T = 75 C) - Nhiệt độ bảo quản: -25 C ~ +130 C /* * File: main.c * Author: xuantung * * Created on March 19, 2017, 10:58 PM */ #define _XTAL_FREQ 20000000 #define RS RD1 #define EN RD3 #define D4 RD4 #define D5 RD5 #define D6 RD6 #define D7 RD7 #include #include #include "lcd.h" #include // BEGIN CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) //END CONFIG float dem=0; float Soxungdem=0; float tongsoxung=0; float count; void _KhoiTaoTIMER1(void) { //chu ki dem cua timer1 //T = * (1/Fosc) * (Pres) // T= * (1/20*10A6) * = 1.6us //tinh gia tri dat vao timerl tao thoi gian trich mau la 10ms //10ms = 10000us = (65536-value)*1.6us // value = 59286 T1CONbits.TMR1CS = 0; T1CONbits.T1CKPS1 = 1; T1CONbits.T1CKPS0 = 1;//ti le chia 1:8 TMR1=59286; T1CONbits.TMR1ON = 1; PIE1bits.TMR1IE=1; //cho phep ngat timer1 } void _KhoiTaoNgatNgoai(void) { TRISBbits.TRISB0=1; INTCONbits.PEIE=1;//ngat ngoai vi INTCONbits.INTE=1; //ngat RB0 OPTION_REGbits.INTEDG=1; //ngat canh xuong INTCONbits.INTF=0; } void main(void) { //khai bao bien cuc bo o day float TocDo; TRISD=0x00; PORTDbits.RD2=0; unsigned char s[20]; _KhoiTaoTIMER1(); _KhoiTaoNgatNgoai(); INTCONbits.GIE=1;// ngat toan cuc Lcd_Init(); while(1) { if(INTCONbits.INTF) { Soxungdem=Soxungdem+1; INTCONbits.INTF=0; } if(PIR1bits.TMR1IF) { INTCONbits.INTE=0;// ko cho ngat RB0 T1CONbits.TMR1ON=0; tongsoxung=Soxungdem; Soxungdem=0; // INTCONbits.INTE=0;// cho ngat RB0 T1CONbits.TMR1CS = 0; T1CONbits.T1CKPS1 = 1; T1CONbits.T1CKPS0 = 1;//ti le chia 1:8 TMR1=59286; T1CONbits.TMR1ON = 1; PIE1bits.TMR1IE=1; //cho phep ngat timer1 dem++; PIR1bits.TMR1IF=0; } if(dem>=10) { dem=0; TocDo=(((1000)/10)*tongsoxung*(60))/(200);//(1000f/25f) doi tu ms => s // Lcd_Set_Cursor(1,1); Lcd_Write_String("SO XUNG:"); sprintf(s,"%f ",tongsoxung); Lcd_Set_Cursor(1,10); Lcd_Write_String(s); Lcd_Set_Cursor(2,1); Lcd_Write_String("TOC DO:"); sprintf(s,"%f ",TocDo ); Lcd_Set_C ursor(2,10); Lcd_Write_String(s); } } } thông số động Ị Edit Component Part Reíerence: Hidden: □ Hidden: □ Part Value: Ne /' ,1 Elemeiit: USA Model Rle: ENCMOTOR Hide All Nominal Voltage: 5V Hide All Coil Resistance: Hide All Coil Inductance: 1D&Ĩ1H Hide All Zeno Load RPM: 720 Hide All Load/Max Torque X 30 Hide All Effective Mass: 001 Hide All 200 Hide All Pulses per Revolution: Other Praperties: A V ... 1: Đo nhiệt độ LM35 hiển thị mà hình LCD sử dụng vdk ❖ ❖ ❖ ❖ ❖ ❖ pic16f877a ' ? Bài 2: Đo nhiệt độ LM35 nhiệt độ lớn 40 đóng quạt chạy làm mát 16 BÀI 3: ĐO TỐC ĐỘ ĐỘNG CƠ BẰNG... hiệu đưa vào vi điều khiển Ở vi điều khiển PIC16F877A có tích hợp sẵn chuyển đổi ADC Ở sử dụng để đo nhiệt độ nên cần sử dụng kênh đo ADC vi điều khiển Module ADC vi điều khiển PIC16F877A gồm... Trình Nhúng Bài :ĐO NHIỆT ĐỘ BẰNG CẢM BIẾN LM35 HIỂN THỊ LÊN LCD SỬ DỤNG VĐK 16F877A • Ngun lý: Tín hiệu đại lượng vật lý cần đo nhiệt độ biến đổi thành tín hiệu điện thơng qua cảm biến nhiệt độ LM35