본 절은 [PH-4502C pH ] 아두이노 센서와 LCD16X2 키패드실드를 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노 센서의 특징, 동작원리, 사양, 연결 핀 배열, 출력 값, 주의사항을 알아본다. 간단한 코딩으로 센서를 쉽게 실습할 수 있다.
목차
PH-4502C pH 아두이노 센서 (LCD16X2 + RGB + DS18B20)
PH-4502C pH 센서란?
PH-4502C는 물의 pH를 측정하는 센서이다.
PH-4502C pH 센서 하드웨어 연결
다음과 같이 PH-4502C pH 아두이노 센서를 연결할 수 있다.
PH-4502C pH 센서 소프트웨어 코딩
하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 PH-4502C pH 아두이노 센서 소스코드를 코딩할 수 있다. PH-4502C pH 센서 코드는 다음과 같다.
/*
PH Meter + RGB Led + DS18B20
315-DFR0300_LCD.ino
@ author STEAMEDU123 <steamedu123@gmail.com>
*/
#include <LiquidCrystal.h>
#include <OneWire.h>
const int redPin = A3;
const int greenPin = A4;
const int bluePin = A5;
const int PHsensorPin = A1;
const int DS18B20_Pin = 2;
int sensorValue = 0;
unsigned long int avgValue;
float b;
int buf[10], temp;
float pHVol;
float phValue;
float temperature;
unsigned long tempSampleTime;
unsigned int tempSampleInterval = 850;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
OneWire ds(DS18B20_Pin);
void setup() {
Serial.begin(9600);
initLCD();
initRGB();
}
void loop() {
PH_read();
DS18B20_read();
delay(500);
}
void PH_read() {
float calibration = 6.42 - (-14.50); //change this value to calibrate
averageAnalogRead();
pHVol = ((float)avgValue * 5.0 / 1024 / 6) - 0.08;
phValue = (-5.70 * pHVol + calibration) ;
displayLCD();
}
void averageAnalogRead() {
for (int i = 0; i < 10; i++)
{
buf[i] = analogRead(PHsensorPin);
delay(30);
}
for (int i = 0; i < 9; i++)
{
for (int j = i + 1; j < 10; j++)
{
if (buf[i] > buf[j])
{
temp = buf[i];
buf[i] = buf[j];
buf[j] = temp;
}
}
}
avgValue = 0;
for (int i = 2; i < 8; i++) {
avgValue += buf[i];
}
}
void DS18B20_read() {
if (millis() - tempSampleTime >= tempSampleInterval) {
tempSampleTime = millis();
temperature = TempProcess(1);
TempProcess(0);
}
}
//----------------------- DS18B20 -------------------------------------------
float TempProcess(bool ch)
{
//returns the temperature from one DS18B20 in DEG Celsius
static byte data[12];
static byte addr[8];
static float TemperatureSum;
if (!ch) {
if ( !ds.search(addr)) {
Serial.println("no more sensors on chain, reset search!");
ds.reset_search();
return 0;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return 0;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized!");
return 0;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
} else {
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB);
TemperatureSum = tempRead / 16;
}
return TemperatureSum;
}
//----------------------- Display -------------------------------------------
void initLCD() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("PH probe Sensor");
delay(1000);
lcd.clear();
}
void displayLCD() {
Serial.print("sensor = ");
Serial.print(pHVol);
Serial.print(" ");
Serial.println(phValue);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP:");
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print("V:");
lcd.print(pHVol);
lcd.print(" PH:");
lcd.print(phValue);
if (phValue <= 4 ) setRGBcolor(255, 0, 0);
else if (phValue <= 7 ) setRGBcolor(0, 255, 0);
else setRGBcolor(0, 0, 255);
}
//----------------------- Display RGB LED -------------------------------------------
void initRGB() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void setRGBcolor(int red, int green, int blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
PH-4502C pH 센서 동작확인
PH-4502C pH 하드웨어 연결, 소프트웨어 코딩이 완료되면 다음과 같이 동작 화면을 확인할 수 있다.
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드:아두이노 UNO 확인
- 메뉴 → 스케치 → 확인/컴파일
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
03 아두이노 우노 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
04 동작 확인
센서의 동작을 확인할 수 있다.
[동작영상]
PH-4502C pH 센서 마무리
아두이노와 PH-4502C pH 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다.
모두의 아두이노 환경 센서
[모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 영풍문고, 반디앤루니스 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.
'모두의 아두이노 센서 > 아두이노 센서 (물)' 카테고리의 다른 글
HC-SR04 아두이노 센서 (LCD16X2 키패드실드) (0) | 2021.05.16 |
---|---|
SEN0244 TDS 아두이노 센서 (LCD16X2 키패드실드) (0) | 2021.05.15 |
SEN0244 TDS 아두이노 센서 (0) | 2021.05.15 |
PH-4502C pH 아두이노 센서 (LCD16X2 키패드실드) (0) | 2021.05.13 |
PH-4502C pH 아두이노 센서 (0) | 2021.05.13 |
DS18B20 센서 동작확인 (LCD1602 I2C) (0) | 2021.05.04 |
DS18B20 센서 동작확인 (LCD16X2 키패드실드) (0) | 2021.05.04 |
MH-RD 빗물 감지 아두이노 센서(LCD16X2 키패드실드) (0) | 2021.05.04 |
댓글