Thiết kế, chế tạo hệ thống lấy mẫu và đo các thông số ph, do trong môi trường nuôi tảo

81 0 0
Thiết kế, chế tạo hệ thống lấy mẫu và đo các thông số ph, do trong môi trường nuôi tảo

Đ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

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM KHOA CƠ ĐIỆN = = = = = = = = ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ, CHẾ TẠO HỆ THỐNG LẤY MẪU VÀ ĐO CÁC THÔNG SỐ PH, DO TRONG MÔI TRƯỜNG NUÔI TẢO Người thực : NGUYỄN THỊ HƯƠNG LY Lớp : K59 - TĐHB Mã sinh viên : 597584 Chuyên ngành : TỰ ĐỘNG HÓA Người hướng dẫn : ThS NGUYỄN KIM DUNG Hà Nội - 2021 LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng tôi, kết nghiên cứu trình bày đồ án trung thực, khách quan chưa dùng để bảo vệ cho đồ án môn học Tôi xin cam đoan giúp đỡ cho việc thực đồ án cám ơn, thơng tin trích dẫn đồ án rõ nguồn gốc Hà Nội, ngày … tháng … năm 2021 Tác giả đồ án Nguyễn Thị Hương Ly i LỜI CẢM ƠN Trong trình học tập sinh hoạt Học viện Nông Nghiệp Việt Nam, đặc biệt khoảng thời gian em thực đồ án tốt nghiệp, em nhận giúp đỡ tận tình mặt quý thầy, cô trường Nay em xin chân thành gửi lời cảm ơn đến: Học viện Nông Nghiệp Việt Nam khoa Cơ - Điện cung cấp điều kiện học tập tốt cho em suốt thời gian qua để em hồn thành tốt khóa học Em xin chân thành gửi lời cảm ơn đến tồn thể q thầy mơn Tự Động Hóa khoa Cơ - Điện, người trực tiếp truyền đạt kiến thức chuyên môn kiến thức xã hội với tâm tận tụy để em an tâm bước trường phục vụ xã hội Đặc biệt em xin chân thành gửi lời cảm ơn đến cô Th.S Nguyễn Kim Dung tận tình hướng dẫn đưa ý kiến, ý tưởng với kiến thức chun mơn để hồn thành đồ án cách tốt Em xin cảm ơn gia đình tích cực động viên, khuyến khích, tạo điều kiện trực tiếp hỗ trợ kinh phí, tinh thần để đồ án tốt nghiệp hồn thành thời hạn Do kiến thức thời gian cịn hạn chế nên khóa luận khơng thể tránh khỏi thiếu xót mong q thầy bạn đóng góp ý kiến để khóa luận em hồn chỉnh tốt Em xin chân thành cảm ơn! Hà Nội, ngày … tháng … năm 2021 Sinh viên Nguyễn Thị Hương Ly ii MỤC LỤC LỜI CAM ĐOAN i  LỜI CẢM ƠN ii  MỤC LỤC iii  DANH MỤC BẢNG v  LỜI MỞ ĐẦU 1  Mục đích đề tài 2  Đối tượng nghiên cứu 2  Phương pháp nghiên cứu 2  Nội dung 2  5. Giới hạn đề tài CHƯƠNG I TỔNG QUAN TÀI LIỆU 3  1.1 Tổng quan tảo trình sinh trưởng tảo 3  1.1.1 Khái niệm chung tảo 3  1.1.2 Một số hình ảnh nuôi tảo quy mô lớn 6  1.1.3 Vai trò tảo 8  1.2 Tìm hiểu phương pháp kỹ thuật đo giám sát thông số theo dõi môi trường nuôi giống thủy sản 8  1.2.1 Các yếu tố môi trường ảnh hưởng đến nuôi thủy sản 8  1.2.2 Phương pháp kỹ thuật đo giám sát pH ao nuôi 10  1.2.3 Phương pháp kỹ thuật đo giám sát Oxy hòa tan(DO) ao nuôi 11  1.2.4 Các phương pháp giám sát nuôi giống tảo 15  1.3 Tổng kết chương I 15  CHƯƠNG II NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 16  2.1 Tổng quan hệ thống 16  2.2 Thiết bị phần cứng 17  2.2.1 Module cảm biến pH 17  iii 2.2.2 Module Cảm Biến Oxy Hòa Tan DO SV1.0 Arduino 22  2.2.3 Lựa chọn MCU 24  2.2.4 IC cách ly nguồn B1205s 2W 31  2.2.5 Module Relay 12VDC HIGH/LOW kênh cách ly 32  2.2.6 Module relay 12VDC HIGH/LOW kênh cách ly 33  2.2.7 Nguồn tổ ong 12VDC – 10A 34  2.2.8 LCD 16x2 34  2.2.9 Module I2C cho hình LCD 37  2.2.10 Van nước điện từ thường đóng 37  2.2.11 Bơm nhu động kamoer 38  2.2.12 Dug dịch chuẩn để đo pH 39  2.2.13 Các linh kiện điện tử khác 39  2.3 Thiết kế, chế tạo phần cứng 40 2.3.1 Chế tạo giá đỡ hệ thống 40  2.3.2 Chế tạo bình trích mẫu 41  2.3.3 Các linh kiện khác 41  2.4 Lưu đồ thuật toán 42  2.5 Sơ đồ điều khiển 43  2.6 Sơ đồ động lực 43  2.7 Hiệu chỉnh cảm biến 44  CHƯƠNG III KẾT QUẢ VÀ THẢO LUẬN 46  3.1 Một số hình ảnh hệ thống chế tạo 46  3.2 Thực nghiệm đánh giá hệ thống 49  3.3 Thảo luận 55  KẾT LUẬN VÀ KIẾN NGHỊ 56  PHỤ LỤC 58  iv DANH MỤC BẢNG Bảng 2.1 Mối quan hệ giá trị pH đầu điện cực 25 18 Bảng 2.2 Chức chân module pH 21 Bảng 2.3 Chức chân atmega328p 29 Bảng 2.4 Chức chân LCD 16x2 36 Bảng 2.5 Kết mối quan hệ điện áp giá trị pH 45 Bảng 3.1 Đánh giá quy trình 50  Bảng 3.2 Kết đo sử dụng hệ thống chế tạo 51  Bảng 3.3 Kết đo với dung dịch mẫu pH 52  Bảng 3.4 Kết sai số dung dịch pH mẫu 53  v DANH MỤC HÌNH Hinh 1.1 Quy mơ ni tảo phịng thí nghiệm Hình 1.2 Hồ nuôi tảo xoắn Hoa Kỳ Hình 1.3 Hệ thống nhân giống tảo khép kín Photobioreactor Trung tâm Nghiên cứu Phát triển Công nghệ sinh học Vi tảo thuộc Học viện Nông nghiệp Việt Nam Hình 1.4 Máy đo, bút đo hộp test 11 Hình 1.5 Đo oxy hòa tan nước phương pháp Winkler 13 Hình 1.6 Đo oxy hịa trong nước máy đo DO 14 Hình 2.1 Sơ đồ cấu trúc mạch 16 Hình 2.2 Cảm biến đo pH analog 17 Hình 2.3 Kích thước module chuyển đổi giá trị pH 20 Hình 2.4 Sơ đồ chân module chuyển đổi giá trị pH 21 Hình 2.5 Cảm biến đo Oxy hịa tan DO 22 Hình 2.6 Atmega328p 27 Hình 2.7 Sơ đồ chân atmega 328p 28 Hình 2.8 IC B1205s 2W 31 Hình 2.9 Module Relay 12VDC kênh cách ly 32 Hình 2.10 Module Relay 12VDC kênh cách ly 33 Hình 2.11 Nguồn tổ ong 12VDC – 10A 34 Hình 2.12 Màn hình LCD 16x2 35 Hình 2.13 Module I2C 37 Hình 2.14 Van nước điện tử thường đóng 37 Hình 2.15 Bơm nhu động 38 Hình 2.16 Dung dịch chuẩn pH 4.00, 7.00, 10.00 nước cất 39 Hình 2.17 Giá đỡ hệ thống 40 Hình 2.18 Bình trích mẫu 43 vi Hình 2.19 Lưu đồ hệ thống 42 Hình 2.20 Sơ đồ mạch điều khiển 43 Hình 2.21 Sơ đồ mạch động lực 43  Hình 2.22 Đồng hồ số 44  Hình 2.23 Đồ thị quan hệ điện áp giá trị pH 45  Hình 3.1 Tổng quan mơ hình hệ thống chế tạo 46  Hình 3.2 Mặt hệ thống có bình để mẫu 47  Hình 3.3 Mặt có để hộp điều khiển nguồn 47  Hình 3.4 Tổng quát mơ hình hệ thống sau hiệu chỉnh 48  Hình 3.5 Hình mặt hệ thống sau hiệu chỉnh 48  vii LỜI MỞ ĐẦU Ngày với phát triển mạnh mẽ ngành khoa học kỹ thuật, cơng nghệ kỹ thuật điện tử mà kỹ thuật tự động điều khiển đóng vai trị quan trọng lĩnh vực khoa học kỹ thuật, quản lí, cơng nghiệp, cung cấp thơng tin Do sinh viên chuyên ngành Tự động hóa phải biết nắm bắt vận dụng cách có hiệu nhằm góp phần vào phát triển khoa học kỹ thuật giới nói chung phát triển kỹ thuật điện tử nói riêng Bên cạnh cịn thúc đẩy phát triển kinh tế nước nhà Trên giới Việt Nam với phát triển kinh tế xã hội thay đổi nhu cầu thực phẩm gia tăng nhu cầu tiêu dùng vi tảo người Việc nuôi trồng quy mơ lớn lồi vi tảo giới bắt đầu Nhật Bản vào năm 1960 Đến nay, có nhiều lồi vi tảo ni trồng với quy mơ cơng nghiệp, điển hình kể tới lồi vi tảo Spirulina platensis, Chlorella, Dunalliella… Để nuôi trồng tảo quy mô công nghiệp, người nuôi trồng phải hiểu rõ đặc điểm sinh lý, hóa sinh loại tảo Việc nuôi trồng vi tảo quy mô công nghiệp đòi hỏi đầu tư sở hạ tầng thiết bị kỹ thuật đặc biệt Tuy nhiên, việc nuôi trồng vi tảo hệ thống mở yêu cầu số tiêu chí định nồng độ muối, nhiệt độ, độ pH, oxi hòa tan (DO) Từ tình hình thực tế, việc nghiên cứu chế tạo thiết bị đo độ pH, độ oxi hòa tan nước góp phần thúc đẩy q trình ni vi tảo ta theo hướng cơng nghiệp hóa, đại hóa Vì em chọn ý tưởng nghiên cứu là: “Thiết kế, chế tạo hệ thống lấy mẫu đo thông số pH, DO mơi trường ni tảo ” 1 Mục đích đề tài Thiết kế, chế tạo hệ thống lấy mẫu đo thông số pH, DO ứng dụng môi trường nuôi tảo Sử dụng thiết bị điều khiển để thiết kế chế tạo thiết bị đo độ pH, DO Giám sát nồng độ pH, DO bể nuôi vi tảo Đối tượng nghiên cứu Độ pH, DO mơi trường ni tảo Tìm hiểu module cảm biến đo độ pH, module cảm biến đo độ oxi hồ tan(DO) Tìm hiểu vi điều khiển ATMega8 phần mềm viết chương trình AVR Code Vision Phương pháp nghiên cứu Phương pháp nghiên cứu kế thừa: Kế thừa từ cơng trình nghiên cứu khoa học sử dụng phần mềm Autocad, Avr code vision Phương pháp tham khảo tài liệu: cách thu thập thơng tin từ sách, tạp chí điện tử truy cập internet Nghiên cứu thiết bị để nghiên cứu, chế tạo thiết bị: Thiết bị điều khiển: Vi điều khiển ATMega8 Nội dung Chương I Tổng quan đề tài Chương II Nội dung phương pháp nghiên cứu Chương III Kết thảo luận Giới hạn đề tài Thiết kế, chế tạo hệ thống lấy mẫu đo thông số pH, DO ứng dụng môi trường nuôi tảo #define CT LiquidCrystal_I2C lcd(0x27, 20, 4); int ao1 = 0, ao2 = 0, ao3 = 0, xa = 0, i = 0, cp = 0, data = 0, gui = 0, ac = 0, cd = 0, ac1 = 0, ac2 = 0, ac3 = 0, xaa = 0, cd_ht = 0, gui3 = 0; int ao11 = 0, ao12 = 0, ao21 = 0, ao22 = 0, ao31 = 0, ao32 = 0, cd2 = 0, cd1 = 0; int mang[10], dem = 0; int mang2[35]; int data2 = 0; int pHArray[ArrayLenth]; //Store the average value of the sensor feedback int pHArrayIndex = 0; const int analogInPin = A1; int sensorValue = 0; unsigned long int avgValue; int buf[110], temp; float pHValue = 0; float pHVol = 0; int ecArray[ArrayLenth]; int ecArrayIndex = 0; float ecValue, v2, ecv; int ec_n = 0, ec_tp = 0, ph_n = 0, ph_tp = 0, do_n = 0, do_tp = 0; unsigned long int time_do = 0; unsigned long int time_ht = 0; float doValue; //current dissolved oxygen value, unit; mg/L float temperature = 25; //default temperature is 25^C, you can use a temperature sensor to read it char receivedBuffer[ReceivedBufferLength + 1]; // store the serial command byte receivedBufferIndex = 0; int analogBuffer[SCOUNT]; //store the analog value in the array, readed 59 from ADC int analogBufferTemp[SCOUNT]; int analogBufferIndex = 0, copyIndex = 0; float SaturationDoVoltage, SaturationDoTemperature; float averageVoltage; float doValuee = 13.56; int gio_set1 = 0, gio_set2 = 0, gio_set3 = 0, phut_set1 = 0, phut_set2 = 0, phut_set3 = 0, sc = 0, mh = 0, mh_s = 0, capnhap = 0; const float SaturationValueTab[41] PROGMEM = { dissolved oxygen concentrations at various temperatures 14.46, 14.22, 13.82, 13.44, 13.09, 12.74, 12.42, 12.11, 11.81, 11.53, 11.26, 11.01, 10.77, 10.53, 10.30, 10.08, 9.86, 9.66, 9.46, 9.27, 9.08, 8.90, 8.73, 8.57, 8.41, 8.25, 8.11, 7.96, 7.82, 7.69, 7.56, 7.43, 7.30, 7.18, 7.07, 6.95, 6.84, 6.73, 6.63, 6.53, 6.41, }; long distance = 0; unsigned long int t1 = 60000; unsigned long int t2 = 260000; unsigned long int t3 = 350000; unsigned int t_do = 120000; void setup() { Serial.begin(9600); 60 //saturation lcd.begin(); lcd.backlight(); pinMode(DoSensorPin, INPUT); readDoCharacteristicValues(); //read Characteristic Values calibrated from the EEPROM pinMode(BOM1, OUTPUT); pinMode(BOM2, OUTPUT); pinMode(VAN1, OUTPUT); pinMode(VAN2, OUTPUT); pinMode(CT, INPUT_PULLUP); digitalWrite(BOM1, HIGH); digitalWrite(BOM2, HIGH); digitalWrite(VAN1, HIGH); digitalWrite(VAN2, HIGH); } void loop() { //doo(); //pHH(); // // hien_thi(); if(digitalRead(CT) == 0){ lcd.setCursor(12,0); lcd.print("AUTO"); Auto(); } else{ lcd.setCursor(12,0); 61 lcd.print(" "); } } // -// // -// void hien_thi() { static unsigned long time_ht = 0; if (millis() - time_ht > 200) { lcd.setCursor(0, 0); lcd.print(F("DO=")); lcd.print(doValue); lcd.print(F(" ")); // lcd.setCursor(0, 0); // lcd.print(F("v=")); // lcd.print(pHVol); // lcd.print(F(" ")); lcd.setCursor(0, 1); lcd.print(F("pH=")); lcd.print(pHValue); lcd.print(F(" ")); time_ht = millis(); } } // -// // -// void Auto() { digitalWrite(VAN1, LOW); 62 delay(t1); digitalWrite(VAN1, HIGH); delay(1000); digitalWrite(VAN2, LOW); delay(t1); digitalWrite(VAN2, HIGH); delay(1000); digitalWrite(BOM1, LOW); delay(t2); digitalWrite(BOM1, HIGH); delay(500); time_do = millis(); while (millis() - time_do 0-0123 delay(10); } for (int i = 0; i < 99; i++) { for (int j = i + 1; j < 100; j++) { if (buf[i] > buf[j]) { temp = buf[i]; buf[i] = buf[j]; buf[j] = temp; } } } avgValue = 0; for (int i = 10; i < 90; i++){ avgValue += buf[i]; } avgValue = avgValue/80; pHVol = (float)avgValue * 5.0 / 1023; pHValue = -4.9586 * pHVol + 21.446; 64 } // -// // -// void doo() { static unsigned long samplingTime = millis(); static unsigned long printTime = millis(); // if(millis()-samplingTime > samplingInterval) // { // ecArray[ecArrayIndex++]=analogRead(ECSensorPin); // if(ecArrayIndex==ArrayLenth)ecArrayIndex=0; // v2 = avergearray(ecArray, ArrayLenth)*5.0/1024; // ecValue = 5.0515*v2 + 0.0996; // // samplingTime=millis(); // } if (millis() - printTime > printInterval) //Every 800 milliseconds, print a numerical, convert the state of the LED indicator { // Serial.print("Voltage:"); // Serial.println(v2); // Serial.println(analogRead(ECSensorPin)); // Serial.print(" EC value: "); // Serial.println(ecValue,2); // // Serial.println(pHValue,2); digitalWrite(LED,digitalRead(LED)^1); printTime = millis(); } static unsigned long analogSampleTimepoint = millis(); 65 if (millis() - analogSampleTimepoint > 30U) //every 30 milliseconds,read the analog value from the ADC { analogSampleTimepoint = millis(); analogBuffer[analogBufferIndex] = analogRead(DoSensorPin); //read the analog value and store into the buffer analogBufferIndex++; if (analogBufferIndex == SCOUNT) analogBufferIndex = 0; } static unsigned long tempSampleTimepoint = millis(); if (millis() - tempSampleTimepoint > 500U) // every 500 milliseconds, read the temperature { tempSampleTimepoint = millis(); //temperature = readTemperature(); // add your temperature codes here to read the temperature, unit:^C } static unsigned long printTimepoint = millis(); if (millis() - printTimepoint > 1000U) { printTimepoint = millis(); for (copyIndex = 0; copyIndex < SCOUNT; copyIndex++) { analogBufferTemp[copyIndex] = analogBuffer[copyIndex]; } averageVoltage = getMedianNum(analogBufferTemp, SCOUNT) * (float)VREF / 1024.0; // read the value more stable by the median filtering 66 algorithm // Serial.print(F("Temperature:")); // Serial.print(temperature,1); // Serial.print(F("^C")); doValue = pgm_read_float_near( (int)(SaturationDoTemperature + 0.5) &SaturationValueTab[0] + ) / * averageVoltage SaturationDoVoltage; //calculate the value, doValue = Voltage / SaturationDoVoltage * SaturationDoValue(with temperature compensation) // Serial.print(F(", DO Value:")); // Serial.print(doValue,2); // Serial.println(F("mg/L")); } if (serialDataAvailable() > 0) { byte modeIndex = uartParse(); //parse the uart command received doCalibration(modeIndex); // If the correct calibration command is received, the calibration function should be called } } // -// // -// void guidulieu() { } // -// boolean serialDataAvailable(void) { char receivedChar; static unsigned long receivedTimeOut = millis(); 67 // while ( Serial.available() > ) // { // if (millis() - receivedTimeOut > 500U) // { // receivedBufferIndex = 0; // memset(receivedBuffer, 0, (ReceivedBufferLength + 1)); // } // receivedTimeOut = millis(); // receivedChar = Serial.read(); // if (receivedChar == '\n' || receivedBufferIndex == ReceivedBufferLength) // { // receivedBufferIndex = 0; // strupr(receivedBuffer); // return true; // } else { // receivedBuffer[receivedBufferIndex] = receivedChar; // receivedBufferIndex++; // } // } return false; } byte uartParse() { byte modeIndex = 0; if (strstr(receivedBuffer, "CALIBRATION") != NULL) modeIndex = 1; else if (strstr(receivedBuffer, "EXIT") != NULL) modeIndex = 3; 68 else if (strstr(receivedBuffer, "SATCAL") != NULL) modeIndex = 2; return modeIndex; } void doCalibration(byte mode) { char *receivedBufferPtr; static boolean doCalibrationFinishFlag = 0, enterCalibrationFlag = 0; float voltageValueStore; switch (mode) { case 0: if (enterCalibrationFlag) // Serial.println(F("Command Error")); break; case 1: enterCalibrationFlag = 1; doCalibrationFinishFlag = 0; // Serial.println(); // Serial.println(F(">>>Enter Calibration ModePlease put the probe into the saturation oxygen water! Saturation Calibration Finish!Calibration Successful")); else Serial.print(F(">>>Calibration Failed")); // Serial.println(F(",Exit Calibration Mode

Ngày đăng: 06/07/2023, 22:31

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

Tài liệu liên quan