GIỚI THIỆU ĐỀ TÀIa) Ý tưởng:− Trồng cây thủy canh là phương pháp mà dinh dưỡng được chuyển hóa dướidạng lỏng nên phụ thuộc rất nhiều vào độ pH của nước chứ không bị tác độngnhiều bởi đất.− Ở môi trường đất, cây chỉ lấy và khả năng hấp thụ khoảng 5% dinh dưỡng từmôi trường đất, 95% dinh dưỡng còn lại là do cây tự tổng hợp trong quá trìnhquang hợp và sử dụng. Môi trường đất ở đây chỉ đóng vai trò làm nơi lưu trữdinh dưỡng cho quá trình phát triển của cây, cây sẽ sử dụng từ từ lượng dinhdưỡng này trong quá trình phát triển và lớn lên. Với thủy canh, dinh dưỡngđược chuyển hóa dưới dạng lỏng (dạng dễ hấp thụ nhất cho cây) để cây dễdàng hấp thụ trong quá trình phát triển nên ta hoàn toàn không cần dùng đấtlàm môi trường sống cho cây.→ Do vậy nên ta có thể sử dụng giá thể (cát, trấu, vỏ xơ dừa, than bùn,vermiculite perlite…) để làm môi trường sống cho cây.− Bí quyết của kỹ thuật này là cung cấp đủ và đúng lúc cho cây trồng các nguyêntố khoáng cần thiết. Cung cấp đầy đủ cái ăn, bảo đảm đủ ánh sáng, CO2 choquá trình quang hợp,
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ PBL3: THIẾT KẾ THIẾT BỊ ỨNG DỤNG VI ĐIỀU KHIỂN VÀ CẢM BIẾN ĐỀ TÀI: HỆ THỐNG TRỒNG CÂY THỦY CANH Giáo viên hướng dẫn: TS ĐỖ THẾ CẦN Sinh viên thực hiện: NGUYỄN VĂN THƯƠNG TÔN THẤT TIẾN Lớp: 20CDT1 Nhóm: 20.04B Đà Nẵng, tháng năm 2023 MỤC LỤC LỜI NÓI ĐẦU GIỚI THIỆU ĐỀ TÀI a) Ý tưởng: b) Đặc điểm sống cây: Cây mồng tơi .6 c) Mô tả hệ thống: GIỚI THIỆU VỀ PIC a) Sơ lược PIC 16F877A b) Cấu trúc PIC 16F877A c) Một số đặc điểm PIC 16F877A .9 d) Cấu hình chân PIC 10 e) Các đặc tính ngoại vi: .11 CÁC LINH KIỆN ĐIỆN TỬ KHÁC: .12 a) Cảm biến nhiệt độ độ ẩm DHT11: 12 b) Module quang trở: 15 c) Cảm biến độ ẩm đất: .18 d) Cảm biến đo độ pH: 19 e) LCD 20 f) Giao tiếp cổng nối tiếp UART − RS232 25 THIẾT KẾ SƠ ĐỒ VÀ THỰC HIỆN LÀM MẠCH 30 a) Thiết kế sơ đồ mạch nguyên lý .30 b) PCB Layout 35 c) Mơ hình mạch 3D 36 d) Mạch thực tế: 38 THIẾT KẾ VÀ GIA CƠNG CƠ KHÍ .40 a) Bản vẽ 2D chi tiết 40 b) Bản vẽ 3D mơ hình 42 c) Mơ hình khí thực tế: 42 MƠ HÌNH HỒN THIỆN 43 CODE VÀ GIAO DIỆN TRÊN MÁY TÍNH 45 a) Lưu đồ thuật toán 45 b) Code phần mềm CCS 47 c) Giao diện điều hành 54 d) Code phần mềm Visual Studio .55 KẾT LUẬN 61 TÀI LIỆU THAM KHẢO 62 LỜI NÓI ĐẦU Điện tử lĩnh vực trọng hàng đầu quốc gia toàn giới Đây tảng cho phát triển vượt bậc lĩnh vực kinh tế, trị, cơng nghệ, khoa học,… mà chứng kiến Thông qua học phần PBL3: Thiết kế TB ƯD Vi điều khiển cảm biến, chúng em tiếp xúc nhiều với linh kiện điện tử, từ học hỏi trau dồi thêm kinh nghiệm chuyên ngành Chúng em phải áp dụng kiến thức môn học kĩ thuật điện tử, điện tử công nghiệp, kĩ thuật xung số đo lường điện tử để tính tốn, thiết kế mạch, lập trình cho mạch hoạt động giao tiếp với máy tính; ứng dụng phần mềm chuyên ngành đặc biệt phần mềm Proteus trình thiết kế mạch, phần mềm CCS việc lập trình phần mềm Visual Studio Code việc thiết kế giao diện máy tính Khi tiếp cận với phần mềm trên, chúng em gặp nhiều bỡ ngỡ tiếp xúc chúng em thấy thú vị điều tạo cho chúng em nhiều động lực để học tập Đây đồ án chúng em tự nghĩ đề tài thực hóa em tin với hỗ trợ thầy Đỗ Thế Cần việc đưa góp ý dẫn lúc chúng em thực đồ án thầy Đặng Phước Vinh việc giảng dạy môn kĩ thuật vi điều khiển cảm biến cơng nghiệp Nhờ vậy, chúng em có tảng kiến thức vững hướng dẫn kịp thời để chúng em hồn thiện đồ án cách tốt Chúng em xin cảm ơn thầy thầy đem lại cho tụi em không kinh nghiệm kiến thức mà cịn thúc đẩy để tụi em ln nỗ lực, chăm để hoàn thiện bước phát triển GIỚI THIỆU ĐỀ TÀI a) Ý tưởng: − Trồng thủy canh phương pháp mà dinh dưỡng chuyển hóa dạng lỏng nên phụ thuộc nhiều vào độ pH nước không bị tác động nhiều đất − Ở môi trường đất, lấy khả hấp thụ khoảng 5% dinh dưỡng từ môi trường đất, 95% dinh dưỡng lại tự tổng hợp q trình quang hợp sử dụng Mơi trường đất đóng vai trị làm nơi lưu trữ dinh dưỡng cho trình phát triển cây, sử dụng từ từ lượng dinh dưỡng trình phát triển lớn lên Với thủy canh, dinh dưỡng chuyển hóa dạng lỏng (dạng dễ hấp thụ cho cây) để dễ dàng hấp thụ q trình phát triển nên ta hồn tồn khơng cần dùng đất làm mơi trường sống cho → Do nên ta sử dụng giá thể (cát, trấu, vỏ xơ dừa, than bùn, vermiculite perlite…) để làm mơi trường sống cho − Bí kỹ thuật cung cấp đủ lúc cho trồng nguyên tố khoáng cần thiết Cung cấp đầy đủ ăn, bảo đảm đủ ánh sáng, CO2 cho trình quang hợp, 𝑂2 cho q trình hơ hấp, trồng phát triển khỏe mạnh theo ý muốn người trồng − Các loại trồng thủy canh phổ biến như: xà lách, mồng tơi, ngị, rau muống, rau dền, cải bó xơi, cà chua, dưa leo, dâu tây, ớt,… − Các hệ thống trồng thủy canh phổ biến: hệ thống khí canh, hệ thống thủy canh dạng bấc, hệ thống tưới nhỏ giọt, hệ thống ngập & rút định kỳ, hệ thống thủy canh hồi lưu,… − Một số lưu ý trồng thủy canh: + Chọn không gian trồng thơng thống, đủ ánh sáng: Trồng rau thủy canh phù hợp cho nhiều loại không gian khác nhau, rau phát triển tốt trồng không gian thơng thống đầy đủ ánh sáng trực tiếp + Chọn giống rau tương ứng theo mùa: • Đối với mùa mưa, thông thường bị thiếu nắng nên chọn có khả sinh trưởng khỏe cần rau muống, xà lách • Đối với mùa nắng trồng loại rau như: rau muống, rau đay, rau dền, rau thơm, rau cải ngọt, cải xanh, cải bẹ dúm, dưa chuột,… Đây loại dễ trồng, thích ứng tốt với thời tiết nắng nóng, độ ẩm cao − Trồng thủy canh có nhiều ưu điểm Hình 1.1: Lợi ích hệ thống trồng thủy canh Hình 1.2: Hình ảnh hệ thống thủy canh hồi lưu b) Đặc điểm sống cây: Cây mồng tơi − Rau mồng tơi loại thân leo Rau phát triển tốt nhận ánh nắng mặt trời nhiều (vào mùa hè) Tuy nhiên nên thường xuyên tạo độ ẩm cho đất để phát triển tốt Nếu đất bị khơ hoa có vị đắng nhiều Cây ưa sống loại đất khác nhau, dễ sinh trưởng phát triển điều kiện môi trường − Nhiệt độ: Rau mồng tơi có nguồn gốc từ vùng nhiệt đới ơn đới Mặc dù chịu nhiệt độ từ 11 - 35 độ C điều kiện nhiệt độ lý tưởng để rau mồng tơi sinh trưởng từ 25 - 30 độ C, phát triển nhiệt độ 15 độ C − Ánh sáng: Chúng loại ưa bóng, khơng cần ánh sáng q nhiều Khi sinh trưởng điều kiện râm mát, ánh sáng vừa phải chúng phát triển nhanh so với nơi nắng nóng Theo khảo sát, ánh sáng tiếng/ngày làm chúng sinh trưởng − Độ ẩm, độ pH đất: Độ ẩm tốt từ 85%, chúng yêu cầu đất trồng có độ acid nhẹ từ khoảng 5.5 - 6.5 tốt Cây mồng tơi không chịu ngập úng vào điều kiện đất úng nước hay mưa nhiều − Mồng tơi sinh trưởng nhiều loại đất đất thịt nhẹ, đất thịt pha cát, đất tơi xốp,…; đất cát thích hợp nhất, độ ẩm đất có tác dụng kích thích mồng tơi hoa Đất tốt, nhiều mùn, giàu dinh dưỡng, nước tốt thích hợp để trồng mồng tơi Hình 1.3: Một mơ hình trồng mồng tơi thủy canh c) Mô tả hệ thống: − Hệ thống đo thông số mơi trường sau: nhiệt độ, độ ẩm khơng khí, độ ẩm giá thể, ánh sáng, độ pH nước − Trong trường hợp thiếu ánh sáng độ ẩm cho cây, máy bơm đèn bật cho phù hợp với điều kiện sống − Sau đó, thơng số đo đạc hiển thị lên giao diện máy tính thơng qua cổng COM Hình 1.4: Quy trình truyền liệu từ cảm biến lên giao diện GIỚI THIỆU VỀ PIC a) Sơ lược PIC 16F877A − PIC 16F877A điều khiển thuộc họ 16F sản xuất bời hãng Microchip với tập lệnh gồm 35 lệnh có độ dài 14 bit − PIC 16F877A sản xuất đóng gói với hai kiểu PDIP TQFP Tùy thuộc vào đặc điểm ứng dụng cụ thể mà người dùng lựa chọn kiểu đóng gói thích hợp Hình 2.1: Chip vi điều khiển PIC 16F877A b) Cấu trúc PIC 16F877A Hình 2.2: Cấu trúc PIC 16F877A c) − − − − − − − − − − − − − − − − − − Một số đặc điểm PIC 16F877A 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi Bộ nhớ FLASH ROM tùy chọn từ 256 byte đến 256 Kbyte Các cổng xuất/nhập với mức logic Các chuẩn giao tiếp ngoại vi nối tiếp USART, AUSART, EUSARTs Có thể hoạt động với nhiều tần số dao động khác Bộ chuyển đổi ADC với độ phân giải 10 bit Có so sánh điện áp Có hai module CPP giống hệt nhau: Capture/Compare/PWM Thuộc họ PIC 16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Tất lệnh chu kỳ máy, ngoại trừ chương trình hai chu kỳ máy Một chu kỳ lệnh vi điều khiển bao gồm bốn xung clock Bộ nhớ chương trình FLASH với dung lượng 8K × 14 bit, với khả ghi/xóa lên đến 100000 lần Bộ nhớ liệu RAM với dung lượng 368 byte Bộ nhớ EEPROM với dung lượng 256 byte, với khả ghi/xóa lên đến 1000000 lần lưu trữ liệu lên đến 40 năm Sử dụng nguồn 4.0 ÷ 5.5 VDC Có chế độ SLEEP (chế độ ngủ) để tiết kiệm lượng Có cổng xuất/nhập đặt tên A, B, C, D, E với 33 chân xuất/nhập Hỗ trợ giao tiếp USB, Ethernet, CAN, LIN, IrDA Hình 2.3: Vùng điện áp tần số hoạt động PIC 16F877A RUN = 0; LED = 0; PUMP = 0; } if(c == '3') { RUN = 0; LED = 1; PUMP = 0; } if(c == '4') { RUN = 0; LED = 0; PUMP = 1; } if(c == '5') { RUN = 0; LED = 1; PUMP = 1; } } void CHECK_DHT11() { if(TMR1 == 1) { loop ++; if(loop == 5) 48 { DHT11_read(&HUMI,&TEMP); loop = 0; } TMR1 = 0; set_timer1(15536); } } void main() { set_tris_d(0); set_tris_b(1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_timer1(15536); lcd_init(); lcd_putc('\f'); lcd_set_cgram_char(0,SOIL_ICON); lcd_set_cgram_char(1,PUMP_ICON); lcd_set_cgram_char(2,LED_ICON); lcd_set_cgram_char(3,TEMP_ICON); lcd_set_cgram_char(4,NONE); setup_adc_ports(RA0_RA1_RA3_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); dht11_init(); 49 while(TRUE) { //! read analog set_adc_channel(0); delay_ms(10); PH_VALUE = read_adc(); set_adc_channel(1); delay_ms(10); LIGHT_VALUE = read_adc(); set_adc_channel(3); delay_ms(10); SOIL_VALUE = read_adc(); //! FLOAT PH = 7+(2.5-(PH_VALUE*5/1023))*0.167; FLOAT PH = (1023-PH_VALUE)*14/1023.0; LIGHT_VALUE = Kalman(LIGHT_VALUE,2); //! int8 LIGHT = (1024-LIGHT_VALUE)*100/1024; int8 SOIL = (1023-SOIL_VALUE)*100/1023; CHECK_DHT11(); RS232(); if(RUN == 1) { if(LIGHT_VALUE > LIGHT_LIMIT) { output_high(PIN_C1); LED = 1; lcd_gotoxy(16,1); lcd_putc(2); 50 } else { output_low(PIN_C1); lcd_gotoxy(16,1); lcd_putc(4); LED = 0; } if(SOIL_VALUE > SOIL_LIMIT) { output_high(PIN_C2); PUMP = 1; lcd_gotoxy(16,2); lcd_putc(1); } else { output_low(PIN_C2); lcd_gotoxy(16,2); lcd_putc(4); PUMP = 0; } } else { output_bit(PIN_C1,LED); output_bit(PIN_C2,PUMP); if(LED == 1) { 51 lcd_gotoxy(16,1); lcd_putc(2); } else { lcd_gotoxy(16,1); lcd_putc(4); } if(PUMP == 1) { lcd_gotoxy(16,2); lcd_putc(1); } else { lcd_gotoxy(16,2); lcd_putc(4); } } printf("%2d %2d %1.1lf %02d %d %d %04ld\n",TEMP, HUMI, PH, SOIL, LED, PUMP, LIGHT_VALUE); //! print lcd lcd_gotoxy(1,1); printf(lcd_putc,"T:%d",TEMP); lcd_gotoxy(5,1); lcd_putc(3); lcd_gotoxy(6,1); printf(lcd_putc,"C"); 52 lcd_gotoxy(8,1); printf(lcd_putc,"RH:%d%%",HUMI); lcd_gotoxy(1,2); printf(lcd_putc,"PH:%.1lf",PH); lcd_gotoxy(8,2); lcd_putc(0); lcd_gotoxy(9,2); printf(lcd_putc,":%2d%%",SOIL); } } − File Main.h: #include #device ADC=10 #use delay(crystal=4MHz) #FUSES NOWDT, NOBROWNOUT #use rs232(baud = 9600, parity = N, xmit = PIN_C6, RCV = PIN_C7) #define LCD_ENABLE_PIN PIN_D3 #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 #include #include #include #include #include #bit TMR1 = 0x0C.0 53 c) Giao diện điều hành Hình 7.1: Giao diện máy tính − Cách thao tác với giao diện: + Sau chọn cổng COM cần kết nối ô COM, bấm Connect máy tính kết nối với vi điều khiển thông qua cổng COM Nếu muốn ngắt kết nối bấm nút Disconnect + Có hai chế độ Auto Manual để điều khiển thiết bị: • Ở chế độ Manual điều khiển thiết bị trạng thái • Ở chế độ Auto trạng thái bật hay tắt bơm đèn thể ô trạng thái + Khi PH vượt ngưỡng hiển thị cảnh báo 54 d) Code phần mềm Visual Studio − File Form1.cs: using using using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Globalization; System.IO.Ports; System.Linq; System.Text; System.Threading.Tasks; System.Windows.Forms; System.Windows.Media.Media3D; namespace PBL3 { public partial class PBL3 : Form { private int LIGHT_VALUE; private string Lap,Auto = "1",Temp,Humi,Ph,Soil,Led,Pump,LIGHT; public PBL3() { InitializeComponent(); textBox1.BackColor = Color.Red; } private void button2_Click(object sender, EventArgs e) { COM.Close(); textBox1.BackColor = Color.Red; timer1.Stop(); } private void button1_Click(object sender, EventArgs e) { if (COM.IsOpen == false) { COM.Open(); timer1.Start(); textBox1.BackColor = Color.Green; } } 55 private void timer1_Tick(object sender, EventArgs e) { Lap = COM.ReadLine(); COM.DiscardInBuffer(); if (Lap.Length > 20) { string[] LapValues = Lap.Split(' '); Temp = LapValues[0]; Humi = LapValues[1]; Ph = LapValues[2]; Soil = LapValues[3]; Led = LapValues[4]; Pump = LapValues[5]; LIGHT = LapValues[6]; LIGHT_VALUE = (1024 - int.Parse(LIGHT)) * 100 / 1024; if (Auto == "1") { if (Led == "1") { radioButton1.Checked = true; } else { radioButton2.Checked = true; } if (Pump == "1") { radioButton4.Checked = true; } else { radioButton3.Checked = true; } } progressBar1.Value = int.Parse(Temp); progressBar2.Value = int.Parse(Humi); label6.Text = Temp + "°C"; label7.Text = Humi + " %"; if (float.Parse(Ph, CultureInfo.InvariantCulture)>7.5 || float.Parse(Ph, CultureInfo.InvariantCulture) < 5) { chart2.BackColor = Color.Red; } else { 56 chart2.BackColor = Color.White; } chart1.Series["Độ ẩm đất"].Points.Add(int.Parse(Soil), 0, 0); chart1.Series["Độ sáng"].Points.Add(LIGHT_VALUE, 0, 0); chart2.Series["PH"].Points.Add(float.Parse(Ph, CultureInfo.InvariantCulture), 0, 0); } } private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text.Length > 0) COM.PortName = textBox1.Text; } private void radioButton2_CheckedChanged(object sender, EventArgs e) { if (Auto == "0" & radioButton2.Checked == true) { if (Pump == "1") { COM.Write("4"); } else { COM.Write("2"); } } } private void radioButton4_CheckedChanged(object sender, EventArgs e) { if (Auto == "0" & radioButton4.Checked == true) { if (Led == "1") { COM.Write("5"); } else { COM.Write("4"); } } } private void radioButton3_CheckedChanged(object sender, EventArgs e) { if (Auto == "0" & radioButton3.Checked == true) { 57 if (Led == "1") { COM.Write("3"); } else { COM.Write("2"); } } } private void button1_Click_1(object sender, EventArgs e) { if (comboBox1.Text != "Auto") { Auto = "0"; if (Led == "1") { if (Pump == "1") { COM.Write("5"); } else { COM.Write("3"); } } else { if (Pump == "1") { COM.Write("4"); } else { COM.Write("2"); } } } else { Auto = "1"; COM.Write("1"); } } private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (Auto == "0" & radioButton1.Checked == true) 58 { if (Pump == "1") { COM.Write("5"); } else { COM.Write("3"); } } } } } − File Form1.Designer.cs: namespace PBL3 { partial class PBL3 { /// /// Required designer variable /// private System.ComponentModel.IContainer components = null; /// /// Clean up any resources being used /// /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private private private private private private private private private private private System.Windows.Forms.PictureBox pictureBox1; System.Windows.Forms.PictureBox pictureBox2; System.Windows.Forms.Panel panel1; System.Windows.Forms.Label label1; System.Windows.Forms.Panel panel2; System.Windows.Forms.Button button2; System.Windows.Forms.Button Connect; System.Windows.Forms.Panel panel3; System.Windows.Forms.Timer timer1; System.Windows.Forms.Label Lb_Com; System.Windows.Forms.TextBox textBox1; 59 private private private private private private private private private private private private private private private private private private private private private private private System.Windows.Forms.PictureBox pictureBox3; System.Windows.Forms.Label label2; System.Windows.Forms.PictureBox pictureBox4; System.Windows.Forms.ComboBox comboBox1; System.Windows.Forms.Label label3; System.Windows.Forms.Panel panel4; System.Windows.Forms.Panel panel5; System.Windows.Forms.RadioButton radioButton2; System.Windows.Forms.Panel panel6; System.Windows.Forms.RadioButton radioButton3; System.Windows.Forms.RadioButton radioButton4; System.Windows.Forms.DataVisualization.Charting.Chart chart1; System.Windows.Forms.Button button1; System.Windows.Forms.DataVisualization.Charting.Chart chart2; System.Windows.Forms.ProgressBar progressBar1; System.Windows.Forms.Label label4; System.Windows.Forms.Label label5; System.Windows.Forms.ProgressBar progressBar2; System.Windows.Forms.Label label6; System.Windows.Forms.Label label7; System.Windows.Forms.Panel panel7; System.IO.Ports.SerialPort COM; System.Windows.Forms.RadioButton radioButton1; } } − File Program.cs: using using using using using System; System.Collections.Generic; System.Linq; System.Threading.Tasks; System.Windows.Forms; namespace PBL3 { internal static class Program { /// /// The main entry point for the application /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new PBL3()); } } } 60 KẾT LUẬN − Với kiến thức học môn cảm biến công nghiệp, kĩ thuật vi điều khiển, chúng em có tảng vững vàng thực đồ án PBL3 Những kiến thức linh kiện, lập trình C cơng cụ quan trọng để thực hóa ý tưởng chúng em thành thực Chúng em biến suy nghĩ thành mơ hình hoạt động theo ý muốn, điều khơng đem lại thú vị mà động lực để chúng em phát triển thân làm điều lớn lao − Thông qua đồ án PBL3, chúng em có thêm nhiều học trải nghiệm thực tiễn quy trình thiết kế thi cơng mạch, lập trình cho mạch hoạt động thiết kế giao diện HMI điều khiển hệ thống Những cơng việc giúp chúng em trau dồi nhiều kỹ kinh nghiệm chuyên ngành Bên cạnh đó, q trình thực đồ án, chúng em gặp nhiều khó khăn cố, điều tạo cho chúng em động lực cảm hứng để tìm tịi khám phá Nhờ vậy, chúng em tiếp thu thêm nhiều kiến thức linh kiện điện tử phương pháp chỉnh sửa mạch hư hỏng Đây học vô quý chúng em khắc ghi; sở để chúng em sáng tạo, phát triển đồ án PBL đường tương lai − Chúng em xin cảm ơn thầy Đỗ Thế Cần thầy Đặng Phước Vinh hỗ trợ chúng em việc hình thành, phát triển thực hóa ý tưởng thành mơ hình thực tế hoạt động Điều thầy đem đến kiến thức để thực đồ án mà động lực để thúc đẩy chúng em hoàn thành tốt đồ án Khi gặp cố mạch hay q trình lập trình có sai sót giúp đỡ thầy điều mà chúng em ln ln cần kiến thức chúng em thu thập chưa xác Vì vậy, học quý báu mà thầy mang lại giúp chúng em có thêm tự tin kinh nghiệm giải vấn đề gặp phải khó khăn 61 TÀI LIỆU THAM KHẢO − https://dientuviet.com/quang-tro/ − https://dientutuonglai.com/gioi-thieu-pic-16f877a.html − https://www.beelab.info/2017/06/vi-ieu-khien-pic-bai-14-cam-biennhiet.html?m=0&fbclid=IwAR0szGUiffI7OHvuBBnd_VjzmDZWbirBOYN 9TsOu2lHIbeMx2aPKnVpIYA8 − https://dientu360.com/module-cam-bien-do-do-ph-ph0-14 − https://accgroup.vn/nguyen-ly-cam-bien-do-am-dat/ − Giáo trình lập trình kỹ thuật vi điều khiển PIC – TS Đặng Phước Vinh, TS Võ Như Thành − Lập trình vi điều khiển PIC thiết bị ngoại vi – TS Đặng Phước Vinh, ThS Trần Quang Khải, TS Đoàn Lê Anh, TS Võ Như Thành, TS Phạm Anh Đức − Kalman.c :https://drive.google.com/file/d/1Zxcbe8sVxnWNqVr3fcE_5WM4 8U-QX6DC/edit 62