Trong dự án này, chúng tôi sẽ chế tạo một máy đo pH cầm tay bằng cách sử dụng mạch đọc Analog, đầu dò pH Analog của Atlas Scientific và Arduino Uno. Các kết quả đọc sẽ được hiển thị trên màn hình LCD ký tự 20×4
Chuẩn bị linh kiện:
- 1 – Arduino Uno
- 1 – Mạch đọc cảm biến PH Analog
- 1 – Đầu dò pH
- Màn hình LCD 20×4
- 1 hộp kích thước 158x90x60mm
- 1 – breadboard mini
- Dây bẹ đực – cái
- Tấm acrylic (plexiglass)
- trụ đồng và vít 4 – 11mm
- Điện trở 1 – 220Ω và 1 – 1kΩ
Chuẩn bị dụng cụ
Máy khoan, mũi khoan, mũi khoan cấp , tua vít, cưa lọng, súng bắn keo và keo nến, mỏ hàn và dụng cụ hàn, thước cặp kỹ thuật số, thước kẻ.
Bước 1: Làm vỏ hộp
Bạn sử dụng các dụng cụ chuẩn bị bên trên để tạo hình các lỗ và cắt khung màn hình ở mặt trước như các hình bên trên.
Bước 2: Lắp các thiết bị vào hộp
1) Lắp tấm đế mica vào phần dưới cùng của vỏ. Giữ cố định bằng vít hoặc keo nóng.
2) Gắn cảm biến pH trên tấm đế. Đảm bảo chắt chắn với các điểm dừng bằng vít.
3) Gắn Arduino Uno lên tấm đế. Giữ chặt bằng vít .
4) gắn breadboard mini lên tấm đế.
5) Hàn các hàn rào vào màn hình LCD. Chèn màn hình LCD vào phần trên của vỏ và sử dụng một ít keo nóng để giữ cho màn hình cố định.
Bước 3: Kết nối nối các mạch lại với nhau theo sơ đồ
Nối dây các module như trong sơ đồ trên.
Sử dụng breadboard mini để cấm các điện trở 1kΩ và 220Ω và để phân phối nguồn 5V và chân nối đất của Arduino.
Hai điện trở được sử dụng để chỉnh độ tương phản của màn hình hoặc bạn có thể sử dụng biến trở để chỉnh.
Sản phẩm hoàn thiện sau khi kết nối dây.
Sau khi đấu dây xong:
a) cố định vỏ hộp lại bằng các vít kèm theo.
b) Kết nối đầu dò pH với đầu nối BNC.
Bước 4: Tải thư viện pH và nạp code
a) Tải thư viện Atlas_gravity về theo link tại đây: LINK
Tệp sẽ được lưu dưới dạng “Atlas_gravity.zip”. Trong IDE, Bạn giải nén thư viện ra và duy chuyển thư viện vào Documents > Arduino > libraries
b) Thêm thư viện Màn hình LCD 20X4: Trong Arduino IDE, ở menu chọn Sketch -> Include library -> Manage libraries . Trong thanh tìm kiếm của Trình quản lý thư viện, hãy nhập “liquidcrystal”. Tìm gói có tiêu đề “LiquidCrystal Built-in by Arduino, Adafruit”. hãy chọn gói và nhấp vào cài đặt .
c) Tiếp theo, chúng ta phải tải code cho máy đo pH tại LINK này sau đó giải nén và mở code bằng Arduino IDE.
/*
Once uploaded, open the serial monitor, set the baud rate to 9600 and append "Carriage return"
The code allows the user to observe real time pH readings as well as calibrate the sensor.
One, two or three-point calibration can be done.
Calibration commands:
low-point: "cal,4"
mid-point: "cal,7"
high-point: "cal,10"
clear calibration: "cal,clear"
*/
#include "ph_grav.h" //thư viện Atlas Scientific gravity pH sensor
#include "LiquidCrystal.h" //thư viện màn hình LCD
String inputstring = ""; //Chuỗi dư liệu giao tiếp với máy tính
boolean input_string_complete = false; //a flag to indicate have we received all the data from the PC
char inputstring_array[10]; //a char array needed for string parsing
Gravity_pH pH = A0; //assign analog pin A0 of Arduino to class Gravity_pH. connect output of pH sensor to pin A0
LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); //make a variable pH_lcd and assign arduino digital pins to lcd pins (2 -> RS, 3 -> E, 4 to 7 -> D4 to D7)
void setup() {
Serial.begin(9600); //enable serial port
pH_lcd.begin(20, 4); //start lcd interface and define lcd size (20 columns and 4 rows)
pH_lcd.setCursor(0,0); //place cursor on screen at column 1, row 1
pH_lcd.print("--------------------"); //display characters
pH_lcd.setCursor(0,3); //place cursor on screen at column 1, row 4
pH_lcd.print("--------------------"); //display characters
pH_lcd.setCursor(5, 1); //place cursor on screen at column 6, row 2
pH_lcd.print("pH Reading"); //display "pH Reading"
if (pH.begin()) { Serial.println("Loaded EEPROM");}
Serial.println(F("Use commands \"CAL,4\", \"CAL,7\", and \"CAL,10\" to calibrate the circuit to those respective values"));
Serial.println(F("Use command \"CAL,CLEAR\" to clear the calibration"));
}
void serialEvent() { //if the hardware serial port_0 receives a char
inputstring = Serial.readStringUntil(13); //read the string until we see a <CR>
input_string_complete = true; //set the flag used to tell if we have received a completed string from the PC
}
void loop() {
if (input_string_complete == true) { //check if data received
inputstring.toCharArray(inputstring_array, 30); //convert the string to a char array
parse_cmd(inputstring_array); //send data to pars_cmd function
input_string_complete = false; //reset the flag used to tell if we have received a completed string from the PC
inputstring = ""; //clear the string
}
Serial.println(pH.read_ph()); //output pH reading to serial monitor
pH_lcd.setCursor(8, 2); //place cursor on screen at column 9, row 3
pH_lcd.print(pH.read_ph()); //output pH to lcd
delay(1000);
}
void parse_cmd(char* string) { //For calling calibration functions
strupr(string); //convert input string to uppercase
if (strcmp(string, "CAL,4") == 0) { //compare user input string with CAL,4 and if they match, proceed
pH.cal_low(); //call function for low point calibration
Serial.println("LOW CALIBRATED");
}
else if (strcmp(string, "CAL,7") == 0) { //compare user input string with CAL,7 and if they match, proceed
pH.cal_mid(); //call function for midpoint calibration
Serial.println("MID CALIBRATED");
}
else if (strcmp(string, "CAL,10") == 0) { //compare user input string with CAL,10 and if they match, proceed
pH.cal_high(); //call function for highpoint calibration
Serial.println("HIGH CALIBRATED");
}
else if (strcmp(string, "CAL,CLEAR") == 0) { //compare user input string with CAL,CLEAR and if they match, proceed
pH.cal_clear(); //call function for clearing calibration
Serial.println("CALIBRATION CLEARED");
}
}
d) Biên dịch chương trình trên và nạp xuống board Arduino.
e) Các kết quả đo pH sau đó sẽ được hiển thị trên màn hình LCD 20X4. Bạn cũng có thể xem các kết quả đọc trên Serial port bằng cách nhấn vào biểu tượng góc phải màn hình hoặc đi tới Tools -> Serial Monitor hoặc nhấn Ctrl + Shift + M trên bàn phím của bạn. Đặt tốc độ truyền là 9600.
Bước 5: Hiệu chỉnh cảm biến pH
Lưu ý: Nếu bạn định sử dụng nguồn điện bên ngoài cho Arduino, hãy kết nối nó với Arduino trước khi thực hiện hiệu chuẩn. Điều này sẽ đảm bảo rằng các mức tham chiếu điện áp được đặt thích hợp, điều này sẽ hỗ trợ việc hiệu chuẩn chính xác.
Máy đo pH này có thể được hiệu chuẩn theo hiệu chuẩn một, hai hoặc ba điểm. Phải chuẩn bị dung dịch đệm tiêu chuẩn (pH 4,7 và 10).
Màn hình Serial port được sử dụng cho quá trình hiệu chuẩn. Người dùng sẽ có thể quan sát sự thay đổi dần dần của các máy đo và đợi khi nó ổn định và gửi các lệnh thích hợp.
Dữ liệu hiệu chuẩn được lưu trữ trong EEPROM của Arduino.
Lưu ý rằng phải hiệu chuẩn pH 7 trước.
Các lệnh hiệu chỉnh
Điểm giữa: cal, 7
Điểm thấp: cal, 4
Điểm cao: cal, 10
Xóa hiệu chuẩn và đưa về mặt định: cal, clear
Các bước hiệu chỉnh
a) Tháo chai đựng dung dịch chuẩn và rửa sạch đầu dò pH.
b) Đổ một ít dung dịch có pH = 7 vào cốc. Đảm bảo rằng có đủ để ngập vùng cảm biến của đầu dò.
c) Đặt đầu dò vào cốc và khuấy xung quanh để loại bỏ bong bóng khí bên trong đầu dò. Quan sát kết quả đọc trên màn hình Serial máy tính. Đặt đầu dò trong dung dịch cho đến khi các số đọc ổn định (thay đổi nhỏ từ số đọc này sang số đọc tiếp theo là bình thường)
d) Sau khi các số đọc ổn định, nhập lệnh cal, 7 vào màn hình nối tiếp. Hiệu chuẩn đến pH 7 hiện đã hoàn tất.
Lặp lại các bước cho pH4 và pH10. Nhớ rửa sạch đầu dò khi bạn tiếp tục với các dung dịch đệm khác nhau.
về bù nhiệt độ thì sao?
Cảm biến được sử dụng trong dự án này có độ chính xác +/- 0,2%. Máy đo pH sẽ hoạt động với độ chính xác này trong khoảng nhiệt độ từ 7 – 46 ° C. Ngoài phạm vi này, máy đo sẽ phải được sửa đổi để bù nhiệt độ. Lưu ý: Đầu dò pH chỉ có thể nằm trong phạm vi từ 1 – 60 ° C.
Đây là hướng dẫn cơ bản và cho các bạn đã sử dụng cơ bản về phần mềm Arduino IDE và board Arduino. Các bạn chạy bằng PlatformIO vui lòng liên hệ kỹ thuật của FUVITECH để được hướng dẫn cụ thể.
Mai Minh Mẫn Dịch từ Instructables
[…] cảm biến tích hợp được bán trên thị trường bạn có thể mua chúng tại fuvitech.vn. Chúng tôi cung cấp các thành phần hỗ trợ cần thiết cho cảm biến, vì vậy […]