산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아틀라스 사이언티픽 센서로 정밀 아두이노 pH 미터 만들기 – 부품 & 가이드

부품 및 소모품

아두이노 우노 (Arduino UNO) ×1
아틀라스 사이언티픽 Gravity™ 아날로그 pH 센서 ×1
아틀라스 사이언티픽 컨슈머 등급 pH 프로브 ×1
20×4 LCD 모듈 ×1
158×90×60mm 인클로저 ×1
미니 브레드보드 ×1
저항 220Ω ×1
저항 1kΩ ×1
11mm 스탠드오프 및 나사 (pH 센서 동봉) ×4
점퍼 와이어 ×1
아크릴 시트 (플렉시글라스) ×1

필요한 도구 및 장비

앱 및 온라인 서비스

프로젝트 소개

이 프로젝트에서는 아틀라스 사이언티픽의 Gravity 아날로그 pH 회로와 프로브, 아두이노 우노를 사용하여 벤치탑 pH 미터를 만듭니다. 측정값은 액정 디스플레이(LCD)에 표시됩니다.

참고:

1단계: 하우징 준비

안전: 공구/기계 사용 시 주의하고 고글, 장갑, 호흡기 등 보호구 착용 필수.

ABS 플라스틱 인클로저를 pH 미터용으로 개조합니다.

LCD용 개구부 절단

  1. 인클로저 커버(윗부분) 중앙에 98×40mm 직사각형 표시
  2. 바이스에 고정하고 직사각형 내부에 3.2mm(1/8") 파일럿 홀 드릴링
  3. 이 홀을 시작점으로 3.2mm 드라이월 커터 비트로 절단 (핸드 드릴 사용, 직선 절단 어려우니 내부에서 작업)
  4. 줄로 여분 제거 후 직사각형 크기로 다듬기

BNC 커넥터 및 아두이노 포트용 개구부 절단

아래쪽 인클로저 측면에 BNC 커넥터용 원형 개구부와 아두이노 포트용 직사각형 개구부 2개를 만듭니다.

  1. 제공된 치수로 중심점과 외곽선 표시
  2. 바이스에 고정 후 절단. 원형은 드릴 비트, 직사각형은 LCD 개구부와 같은 방식으로 작업

베이스 플레이트 제작 및 부품 장착 준비

아두이노, pH 센서, 미니 브레드보드 장착용 베이스 플레이트에는 3.2mm 두께 아크릴 시트 사용.

  1. 밴드 쏘로 아크릴 시트를 135×62.5mm로 절단
  2. 아래 그림과 같이 4개 홀 위치 표시. 2.38mm(3/32") 홀 드릴링. 한 면은 카운터싱크(깊이 3mm, 직경 4.4mm/11/64")로 가공해 나사 머리 들어갈 공간 확보
  3. 제공된 11mm 스탠드오프를 나사로 고정. pH 센서에 동봉된 4개 중 2개는 아두이노용으로 사용

2단계: 하우징에 전자부품 장착

  1. 베이스 플레이트를 하우징 아래쪽에 넣고 나사나 핫글루로 고정
  2. pH 센서를 베이스 플레이트에 장착, 스탠드오프에 나사로 고정
  3. 아두이노 우노를 베이스 플레이트에 장착, 스탠드오프에 나사로 고정
  4. 미니 브레드보드를 베이스 플레이트에 부착
  5. LCD에 헤더 핀 납땜 (동봉). LCD를 위쪽 하우징에 끼우고 핫글루로 고정

3단계: 전자부품 배선

위 회로도와 같이 배선합니다.

데이터시트: Gravity pH 센서, pH 프로브

4단계: 조립 마무리

  1. 제공된 나사로 위/아래 하우징 결합
  2. 프로브를 BNC 커넥터에 연결

5단계: 아두이노 우노에 코드 업로드

이 프로젝트 코드는 커스텀 라이브러리와 헤더 파일을 사용합니다. 아두이노 IDE에 추가해야 합니다.

  1. 아두이노를 컴퓨터에 연결하고 IDE 열기 (없으면 여기서 다운로드). 도구 → 보드 → Arduino/Genuino Uno 선택. 도구 → 포트에서 아두이노 연결 포트 선택.
  2. LiquidCrystal 라이브러리 추가: IDE에서 스케치 → 라이브러리 포함 → 라이브러리 관리. 검색창에 "liquidcrystal" 입력. "LiquidCrystal Built-in by Arduino, Adafruit" 패키지 찾아 설치 (이미 설치됐을 수 있음).
  3. 아틀라스 Gravity 센서 라이브러리 추가: 여기서 ZIP 다운로드 ("Atlas_gravity.zip"로 저장). IDE에서 스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가로 파일 선택.
  4. pH 미터 코드 복사: 이 링크에서 코드 복사 후 IDE 작업 패널에 붙여넣기.
  5. 컴파일 및 업로드
  6. 시리얼 모니터 열기 (도구 → 시리얼 모니터 또는 Ctrl+Shift+M). 보드레이트 9600, "Carriage return" 선택.

6단계: pH 센서 캘리브레이션

참고: 외부 전원 공급 장치 사용 시 캘리브레이션 전에 아두이노에 연결하세요. 기준 레벨이 적절히 설정되어 정확한 캘리브레이션에 도움이 됩니다.

이 pH 미터는 1점, 2점, 3점 캘리브레이션을 지원합니다. 표준 완충 용액(pH 4, 7, 10) 필요.

시리얼 모니터로 캘리브레이션 진행. 읽기값이 안정화되는 과정 관찰 후 적절한 명령 전송.

캘리브레이션 데이터는 아두이노 EEPROM에 저장됩니다.

캘리브레이션 명령

절차

  1. 수분 보관 병 제거 후 pH 프로브 헹구기
  2. pH 4 용액을 컵에 붓고 프로브 감지 부분이 잠기게 함
  3. 프로브를 컵에 넣고 저어 갇힌 공기 제거. 시리얼 모니터 읽기값 관찰. 읽기값이 안정될 때까지 대기 (약간 변동은 정상)
  4. 안정되면 시리얼 모니터에 cal, 4 입력. pH 4 캘리브레이션 완료.

pH 7, pH 10도 동일하게 반복. 다른 완충 용액으로 넘어갈 때마다 프로브 헹구기 필수.

온도 보상은?

이 프로젝트의 센서 정확도는 ±0.2%. 7~46°C 범위에서 이 정확도로 동작. 이 범위 밖에서는 온도 보상 기능 추가 필요. 참고: pH 프로브 자체는 1~60°C 범위에서 사용 가능.

코드

C/C++

/* 업로드 후 시리얼 모니터 열기, 보드레이트 9600, "Carriage return" 추가
   실시간 pH 읽기 및 센서 캘리브레이션 가능. 1/2/3점 캘리브레이션 지원.
   캘리브레이션 명령:
   low-point: "cal,4"
   mid-point: "cal,7"
   high-point: "cal,10"
   clear calibration: "cal,clear"
*/
#include "ph_grav.h"        // 아틀라스 사이언티픽 Gravity pH 센서 헤더
#include "LiquidCrystal.h"  // LCD 헤더

String inputstring = "";
boolean input_string_complete = false;
char inputstring_array[10];

Gravity_pH pH = A0;                    // 아날로그 핀 A0을 Gravity_pH 클래스에 할당 (pH 센서 출력을 A0에 연결)
LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); // LCD 핀 할당 (2→RS, 3→E, 4~7→D4~D7)

void setup() {
  Serial.begin(9600);
  pH_lcd.begin(20, 4);                 // LCD 인터페이스 시작, 크기 20열 4행
  pH_lcd.setCursor(0, 0);
  pH_lcd.print("--------------------");
  pH_lcd.setCursor(0, 3);
  pH_lcd.print("--------------------");
  pH_lcd.setCursor(5, 1);
  pH_lcd.print("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 (Serial.available()) {
    inputstring = Serial.readStringUntil(13); // 까지 읽기
    input_string_complete = true;
  }
}

void loop() {
  if (input_string_complete == true) {
    inputstring.toCharArray(inputstring_array, 30);
    parse_cmd(inputstring_array);
    input_string_complete = false;
    inputstring = "";
  }
  
  Serial.println(pH.read_ph());          // 시리얼 모니터에 pH 출력
  pH_lcd.setCursor(8, 2);                // 9열, 3행
  pH_lcd.print(pH.read_ph());            // LCD에 pH 출력
  delay(1000);
}

void parse_cmd(char* string) {
  strupr(string); // 대문자 변환
  
  if (strcmp(string, "CAL,4") == 0) {
    pH.cal_low();
    Serial.println("LOW CALIBRATED");
  } else if (strcmp(string, "CAL,7") == 0) {
    pH.cal_mid();
    Serial.println("MID CALIBRATED");
  } else if (strcmp(string, "CAL,10") == 0) {
    pH.cal_high();
    Serial.println("HIGH CALIBRATED");
  } else if (strcmp(string, "CAL,CLEAR") == 0) {
    pH.cal_clear();
    Serial.println("CALIBRATION CLEARED");
  }
}

회로도

아틀라스 사이언티픽 센서로 정밀 아두이노 pH 미터 만들기 – 부품 & 가이드

제조공정

  1. 블루투스 제어 아두이노 스파이봇(Spybot) 만들기
  2. 플릭모트(FlickMote): 스마트 홈을 위한 제스처 제어 IR 리모컨
  3. DIY 아두이노 TV B-Gone: 모든 TV를 끄는 만능 리모컨
  4. 아두이노로 만드는 대형 LED 마스터 시계 (알람 기능 포함, 12m 거리에서도 식별 가능)
  5. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  6. 아두이노 프로젝트를 위한 최적화된 전원 솔루션
  7. 아두이노 틱택토 게임 - MAX7219 LED 매트릭스와 골판지 케이스
  8. 스마트 아두이노 4족 보행 로봇 제작: 단계별 완벽 가이드
  9. 게이밍용 커스텀 아두이노 조이스틱 스티어링 휠 만들기
  10. 아두이노 나노 R3로 완전한 기능의 CNC 머신 만들기