KHUYẾN MÃI
Combo Raspberry Pi 3 Model B+ SỐ 1
1,400,000 vnđ 1,175,000 vnđ
Combo Raspberry Pi 3 Model B+ SỐ 2
1,680,000 vnđ 1,455,000 vnđ
Raspberry Pi 3 Model B+
1,200,000 vnđ 1,000,000 vnđ

Đo pH của chất lỏng

Tiếp theo bài viết hướng dẫn sử dụng cảm biến đo pH

Bài viết hôm này hướng dẫn làm một project nhỏ: Đo pH của nước, truyền thông hiển thị dữ liệu đo được lên máy tính

Có thể ứng dụng trong rất nhiều lĩnh vực

- Quan trắc chất lượng nước sinh hoạt

- Quan trắc chất lượng nước trong nuôi trồng thủy hải sản

- Ứng dụng trong mô hình thí nghiệm

Chuẩn bị phần cứng

1 Mạch Arduino: các bạn có thể tham khảo các link dưới

http://mlab.vn/1697809-uno-vn01-arduino-uno-phien-ban-viet-nam.html

http://mlab.vn/2356225-dfrduino-uno-r3-arduino-uno-r3-compatible.html

1 Cảm biến đo pH

http://mlab.vn/2433600-cam-bien-do-ph.html

1 Nguồn nuôi: có thể 5V/9V/12V

http://mlab.vn/1272384-adapter-dc-12v-1a.html

1 Dung dịch chất lỏng cần đo pH

 

Kết nối

Cảm biến pH      Arduino   
- Gnd Gnd
+ Vcc 5V
A Signal Pin A0

 

Code mẫu

/*
 # This sample code is used to test the pH meter V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter
 # SKU    : SEN0161
*/
#define SensorPin A0            //pH meter Analog output to Arduino Analog Input 0
#define Offset 0.00            //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth  40    //times of collection
int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
int pHArrayIndex=0;    
void setup(void)
{
  pinMode(LED,OUTPUT);  
  Serial.begin(9600);  
  Serial.println("pH meter experiment!");    //Test the serial monitor
}
void loop(void)
{
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval)
  {
      pHArray[pHArrayIndex++]=analogRead(SensorPin);
      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
      pHValue = 3.5*voltage+Offset;
      samplingTime=millis();
  }
  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
  {
	Serial.print("Voltage:");
        Serial.print(voltage,2);
        Serial.print("    pH value: ");
	Serial.println(pHValue,2);
        digitalWrite(LED,digitalRead(LED)^1);
        printTime=millis();
  }
}
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<5){   //less than 5, calculated directly statistics
    for(i=0;i<number;i++){
      amount+=arr[i];
    }
    avg = amount/number;
    return avg;
  }else{
    if(arr[0]<arr[1]){
      min = arr[0];max=arr[1];
    }
    else{
      min=arr[1];max=arr[0];
    }
    for(i=2;i<number;i++){
      if(arr[i]<min){
        amount+=min;        //arr<min
        min=arr[i];
      }else {
        if(arr[i]>max){
          amount+=max;    //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
        }
      }//if
    }//for
    avg = (double)amount/(number-2);
  }//if
  return avg;
}

Chúc các bạn thành công :)

Phạm Xuân Lập - MLAB

 

Hướng dẫn sử dụng cảm biến đo pH
 

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: