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

Arduino pH 측정기

구성품 및 소모품

Arduino UNO
× 1
Atlas Scientific Gravity™ 아날로그 pH 센서
× 1
Atlas Scientific 소비자 등급 pH 프로브
× 1
20x4 LCD 모듈
× 1
158x90x60mm 인클로저
× 1
미니 브레드보드
× 1
저항 220옴
× 1
저항 1k 옴
× 1
11mm 스탠드오프 및 나사(pH 센서와 함께 제공)
× 4
점퍼 와이어
× 1
아크릴 시트(플렉시 유리)
× 1

필요한 도구 및 기계

드릴, 드릴 비트, 건식 벽체 커터 비트, 줄, 드라이버, 탁상용 바이스, 띠톱, 글루건 및 글루 스틱, 납땜 인두 및 땜납, 디지털 캘리퍼스, 자

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

이 프로젝트에서는 Atlas Scientific 및 Arduino Uno의 Gravity 아날로그 pH 회로와 프로브를 사용하여 탁상용 pH 측정기를 만들 것입니다. 판독값은 액정 디스플레이(LCD)에 표시됩니다.

참고:

- 이 측정기는 Windows 컴퓨터에서 개발되었습니다. Mac에서는 테스트되지 않았습니다.

- 인클로저는 방수가 되지 않습니다.

1단계:숙소 준비

안전 :도구/기계류 취급 시 주의하고 고글, 장갑, 호흡기 등 적절한 안전 장비를 착용하는 것을 잊지 마십시오.

사용된 하우징은 ABS 플라스틱 인클로저입니다. pH 미터용으로 수정해야 합니다.

LCD용 컷 오프닝

a) LCD는 인클로저의 상단 부분(커버)에 배치됩니다. 표지 중앙에 98x40mm 직사각형을 맞춥니다.

b) 바이스에 조각을 넣고 표시된 직사각형에 3.2mm(1/8") 파일럿 구멍을 뚫습니다.

다) 이 파일럿 구멍을 3.2mm(1/8") 건식 벽체 절단 날의 시작점으로 사용하십시오. 이 작업은 작은 작업이므로 건식 벽체 절단기보다 핸드 드릴의 비트를 사용합니다. 내부 작업 드릴에 있는 이 비트로 직선으로 절단하기가 약간 어려울 수 있으므로 선 대신 직사각형을 사용하십시오.

d) 그런 다음 손 파일을 사용하여 초과 재료를 제거하고 직사각형을 필요한 크기로 만듭니다.

BNC 커넥터 및 Arduino 포트용 구멍 절단

BNC 커넥터와 Arduino 포트를 위한 구멍은 인클로저의 바닥 부분 측면에 있습니다.

a) 아래 제공된 치수를 사용하여 원의 중심점을 표시하고 두 직사각형의 윤곽선을 표시하십시오.

b) 바이스에 조각을 넣고 구멍을 자릅니다. 원형 구멍은 드릴 비트를 사용하여 만들어집니다. 직사각형은 LCD용 구멍을 만드는 데 사용되는 유사한 공정을 따라 만들어집니다.

구성요소를 장착할 베이스 플레이트 장착

베이스 플레이트는 Arduino, pH 센서 및 미니 브레드보드를 ​​장착하는 데 사용됩니다. 3.2mm 두께의 아크릴 시트를 사용하였습니다.

a) 띠톱을 사용하여 아크릴 시트를 135x62.5mm로 자릅니다.

b) 아래와 같이 4개의 구멍 위치를 표시합니다. 2.38mm(3/32") 직경의 구멍을 뚫습니다. 플레이트 한쪽의 구멍을 3mm 깊이와 4.4mm(11/64") 직경으로 카운터싱크합니다. 이는 스탠드오프를 고정하기 위해 나사를 삽입할 때 평평한 밑면을 유지하는 데 필요합니다.

다) 제공된 나사를 사용하여 11mm 스탠드오프를 부착합니다. pH 센서는 4개의 스탠드오프와 나사와 함께 제공됩니다. 아두이노용으로 2개를 사용하세요.

2단계:하우징에 전자 제품 설치

a) 베이스 플레이트를 하우징의 바닥 부분에 삽입합니다. 나사나 뜨거운 접착제로 제자리에 고정하십시오.

b) 베이스 플레이트에 pH 센서를 장착합니다. 나사로 스탠드오프에 고정합니다.

다) Arduino Uno를 베이스 플레이트에 장착합니다. 나사로 스탠드오프에 고정합니다.

d) 미니 브레드보드를 ​​베이스 플레이트에 추가합니다.

) 헤더 핀을 LCD에 납땜합니다(핀 제공). LCD를 하우징 상단에 삽입하고 뜨거운 접착제를 사용하여 화면을 제자리에 고정합니다.

3단계:전자 제품을 함께 연결

배선 구성 요소는 위의 회로도에 나와 있습니다.

1kΩ 및 220Ω 및 Arduino의 5V 및 접지 핀 분배에는 미니 브레드보드를 ​​사용하십시오.

두 개의 저항은 화면 대비를 설정하는 데 사용됩니다.

데이터시트

중력 pH 센서, pH 프로브

4단계:조립 완료

배선이 완료된 후:

a) 제공된 나사를 사용하여 하우징의 상단과 하단 부분을 함께 맞춥니다.

b) 프로브를 BNC 커넥터에 연결합니다.

5단계:Arduino Uno에 코드 업로드

이 프로젝트의 코드는 사용자 정의 라이브러리와 헤더 파일을 사용합니다. 코드를 사용하려면 Arduino IDE에 추가해야 합니다. 아래 단계에는 IDE에 추가하는 과정이 포함되어 있습니다.

a) Arduino를 컴퓨터에 연결하고 IDE를 엽니다. IDE가 없는 경우 이 LINK에서 다운로드할 수 있습니다. T도구 -> 보드 -> Arduino/Genuino Uno 선택으로 이동합니다. . 도구 -> 포트 -> 포트 선택으로 이동합니다. Arduino가 연결된 곳입니다.

b) Liquid Crystal Display 라이브러리 추가:IDE에서 스케치 -> 라이브러리 포함 -> 라이브러리 관리로 이동합니다. . 라이브러리 관리자의 검색 표시줄에 "liquidcrystal"을 입력합니다. "LiquidCrystal Built-in by Arduino, Adafruit"라는 패키지를 찾으십시오. 설치될 수도 있고 설치되지 않을 수도 있습니다. 그렇지 않은 경우 패키지를 선택하고 설치를 클릭합니다. .

다) Atlas Gravity 센서 라이브러리 추가:다음 링크에서 zip 파일을 다운로드합니다. 파일은 "Atlas_gravity.zip"으로 저장됩니다. IDE에서 스케치 -> 라이브러리 포함 -> Add.ZIP 라이브러리로 이동합니다. . "Atlas_gravity.zip" 파일을 찾아 추가하도록 선택합니다.

d) 다음으로 pH 미터용 코드를 추가해야 합니다. 이 LINK에서 IDE 작업 패널로 코드를 복사합니다.

e) 코드를 컴파일하여 Arduino에 업로드합니다.

f) 그러면 pH 판독값이 LCD에 표시됩니다. 직렬 모니터에서 판독값을 볼 수도 있습니다. 직렬 모니터를 열려면 도구 -> 직렬 모니터로 이동합니다. 또는 Ctrl+Shift+M 누르기 당신의 키보드에. 전송 속도를 9600으로 설정하고 "캐리지 리턴"을 선택합니다.

6단계:pH 센서 보정

참고:Arduino에 외부 전원 공급 장치를 사용하려는 경우 보정을 수행하기 전에 Arduino에 연결하십시오. 이렇게 하면 기준 레벨이 적절하게 설정되어 올바른 보정에 도움이 됩니다.

이 pH 미터는 1, 2 또는 3점 교정으로 교정할 수 있습니다. 표준 완충액(pH 4, 7 및 10)이 필요합니다.

직렬 모니터는 보정 프로세스에 사용됩니다. 사용자는 안정화에 이르면서 판독값의 점진적인 변화를 관찰하고 적절한 명령을 보낼 수 있습니다.

교정 데이터는 Arduino의 EEPROM에 저장됩니다.

보정 명령

최저점:cal, 4

중간 지점:cal, 7

최고점:cal, 10

명확한 보정:cal, clear

단계

a) 담그는 병을 제거하고 pH 프로브를 헹굽니다.

b) pH 4 용액의 일부를 컵에 붓습니다. 프로브의 감지 영역을 충분히 덮을 수 있는지 확인하십시오.

다) 프로브를 컵에 넣고 주위를 저어 갇힌 공기를 제거합니다. 직렬 모니터의 판독값을 관찰합니다. 판독값이 안정화될 때까지 프로브를 용액에 그대로 두십시오(한 판독값에서 다음 판독값으로의 작은 움직임은 정상임)

d) 판독값이 안정화되면 cal, 4 명령을 입력합니다. 직렬 모니터에. 이제 pH 4로 보정이 완료되었습니다.

pH7 및 pH10에 대해 ~d단계를 반복합니다. 다른 버퍼 용액으로 진행할 때 프로브를 헹구는 것을 잊지 마십시오.

온도 보상은 어떻습니까?

이 프로젝트에 사용된 센서의 정확도는 +/- 0.2%입니다. pH 측정기는 7 - 46°C의 온도 범위에서 이 정확도 내에서 작동합니다. 이 범위를 벗어나면 온도 보상을 위해 미터를 수정해야 합니다. 참고:pH 프로브는 1 ~ 60°C 범위에 노출될 수 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • arduino pH 측정기 코드
  • arduino pH 측정기 코드C/C++
    /*업로드되면 직렬 모니터를 열고 전송 속도를 9600으로 설정하고 "Carriage return"을 추가합니다. 코드를 사용하면 사용자가 실시간 pH 판독값을 관찰하고 센서를 보정할 수 있습니다.1, 2 또는 3점 보정을 수행할 수 있습니다. 보정 명령:저점:"cal,4" 중간점:"cal,7" 고점:"cal,10" 보정 지우기:"cal,clear"*/#include "ph_grav. h" //Atlas Scientific 중력 pH 센서용 헤더 파일#include "LiquidCrystal.h" //액정 디스플레이용 헤더 파일(lcd)String inputstring =""; //PCboolean에서 들어오는 데이터를 저장할 문자열 input_string_complete =false; // PCchar에서 모든 데이터를 수신했음을 나타내는 플래그 inputstring_array[10]; //문자열 파싱에 필요한 char 배열Gravity_pH pH =A0; //Arduino의 아날로그 핀 A0을 Gravity_pH 클래스에 할당합니다. pH 센서의 출력을 핀 A0LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7)에 연결합니다. //변수 pH_lcd를 만들고 arduino 디지털 핀을 lcd 핀에 할당합니다. (2 -> RS, 3 -> E, 4 -> 7 -> D4 - D7)void setup() { Serial.begin(9600); //시리얼 포트 활성화 pH_lcd.begin(20, 4); //LCD 인터페이스 시작 및 LCD 크기 정의(20열 및 4행) pH_lcd.setCursor(0,0); //화면의 1열, 1행에 커서를 놓습니다. pH_lcd.print("--------------------"); //표시 문자 pH_lcd.setCursor(0,3); //화면의 1열, 4행에 커서를 놓습니다. pH_lcd.print("--------------------"); //표시 문자 pH_lcd.setCursor(5, 1); //화면의 6열, 2행에 커서를 놓습니다. pH_lcd.print("pH Reading"); // "pH 판독값" 표시 if (pH.begin()) { Serial.println("Loaded EEPROM");} Serial.println(F("사용 명령 \"CAL,4\", \"CAL,7\ ", 및 \"CAL,10\"을 사용하여 해당 값으로 회로를 교정합니다.")); Serial.println(F("교정을 지우려면 \"CAL,CLEAR\" 명령을 사용하십시오.")); }void serialEvent() { //하드웨어 직렬 port_0이 문자를 수신하는 경우 inputstring =Serial.readStringUntil(13); // 이 보일 때까지 문자열을 읽습니다. input_string_complete =true; //PC에서 완성된 문자열을 받았는지 알려주는 플래그 설정}void loop() { if (input_string_complete ==true) { //데이터가 수신되었는지 확인 inputstring.toCharArray(inputstring_array, 30); //문자열을 char 배열로 변환 parse_cmd(inputstring_array); //pars_cmd에 데이터 보내기 function input_string_complete =false; //PC에서 완성된 문자열을 받았는지 알려주는 데 사용되는 플래그를 재설정합니다. 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) { //사용자 입력 문자열을 CAL,4와 비교하고 일치하면 pH.cal_low()를 진행합니다. //저점 보정을 위한 함수 호출 Serial.println("LOW CALIBRATED"); } else if (strcmp(string, "CAL,7") ==0) { //사용자 입력 문자열을 CAL,7과 비교하고 일치하면 pH.cal_mid()를 진행합니다. //중간점 보정을 위한 함수 호출 Serial.println("MID CALIBRATED"); } else if (strcmp(string, "CAL,10") ==0) { //사용자 입력 문자열을 CAL,10과 비교하고 일치하면 pH.cal_high()를 진행합니다. //하이포인트 보정을 위한 함수 호출 Serial.println("HIGH CALIBRATED"); } else if (strcmp(string, "CAL,CLEAR") ==0) { //사용자 입력 문자열을 CAL,CLEAR와 비교하고 일치하면 pH.cal_clear()를 진행합니다. //캘리브레이션을 지우기 위한 함수 호출 Serial.println("CALIBRATION CLEARED"); }}

    회로도


    제조공정

    1. Arduino 스파이봇
    2. FlickMote
    3. 수제 TV B-Gone
    4. 마스터 시계
    5. 나를 찾기
    6. Arduino Power
    7. Tech-TicTacToe
    8. Arduino Quadruped
    9. Arduino 조이스틱
    10. CNC 기계