Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Точный pH-метр на Arduino с датчиком Atlas Scientific — подробное руководство

Компоненты и материалы

Arduino UNO × 1
Atlas Scientific Gravity™ Analog pH Sensor × 1
Atlas Scientific Consumer Grade pH Probe (зонд) × 1
LCD-модуль 20×4 (с I2C-адаптером удобнее) × 1
Корпус 158×90×60 мм × 1
Мини-breadboard × 1
Резистор 220 Ом × 1
Резистор 1 кОм × 1
Стойки 11 мм и винты (в комплекте с pH-сенсором) × 4
Перемычки × 1
Акриловый лист (плексиглас) для базовой платы × 1

Инструменты

Программное обеспечение

О проекте

Создадим настольный pH-метр на базе аналогового pH-цифрового преобразователя Gravity и зонда Atlas Scientific с Arduino Uno. Показания выводятся на LCD-дисплей.

Примечания:

Шаг 1: Подготовка корпуса

Безопасность: используйте очки, перчатки, респиратор.

Корпус — ABS-пластик, требует модификации.

Вырез под LCD (в крышке)

  1. Разметьте прямоугольник 98×40 мм по центру крышки.
  2. Закрепите в тисках, просверлите отверстие 3.2 мм внутри контура.
  3. Фрезой для гипсокартона на дрели вырежьте отверстие, работая изнутри контура.
  4. Напильником доводите до точного размера.

Вырезы под BNC-разъём и порты Arduino (в боковой стенке основания)

  1. Разметьте по размерам: круг для BNC, два прямоугольника для USB и питания Arduino.
  2. Вырежьте аналогичным способом: круг — сверлами, прямоугольники — фрезой + напильник.

Базовая плата для компонентов

  1. Вырежьте из акрила 3.2 мм плату 135×62.5 мм (ленточной пилой).
  2. Разметьте и просверлите 4 отверстия ⌀2.38 мм (3/32"). Зенкуйте с одной стороны до глубины 3 мм, ⌀4.4 мм — для за versenкивания головок винтов.
  3. Прикрутите 11-мм стойки (2 от pH-сенсора на Arduino, 2 — на сенсор).

Шаг 2: Установка электроники в корпус

  1. Установите базовую плату в основание корпуса (винты или термоклей).
  2. Закрепите pH-сенсор на стойках.
  3. Закрепите Arduino Uno на стойках.
  4. Приклейте мини-breadboard на базовую плату.
  5. Припаяйте пины к LCD, вставьте в вырез крышки, зафиксируйте термоклеем.

Шаг 3: Монтаж и пайка

Схема подключения прилагается. Используйте мини-breadboard для резисторов 1 кОм и 220 Ом (контраст LCD) и распределения 5V/GND Arduino.

Даташиты: Gravity pH sensor, pH probe.

Шаг 4: Финальная сборка

  1. Скрутите крышку и основание корпусом.
  2. Подключите pH-зонд к BNC-разъёму.

Шаг 5: Загрузка кода в Arduino

Код использует кастомные библиотеки. Порядок действий:

  1. Подключите Arduino, откройте IDE. Tools → Board → Arduino/Genuino Uno. Tools → Port → выберите порт.
  2. Библиотека LiquidCrystal: Sketch → Include Library → Manage Libraries → поиск «liquidcrystal» → установить «LiquidCrystal Built-in by Arduino, Adafruit».
  3. Библиотека Atlas Gravity: скачайте ZIP (ссылка), Sketch → Include Library → Add .ZIP Library → выберите Atlas_gravity.zip.
  4. Скопируйте код скетча (см. ниже) в IDE.
  5. Компилируйте и загрузите.
  6. Откройте Serial Monitor (Ctrl+Shift+M), baud 9600, «Carriage return» — для калибровки и отладки.

Шаг 6: Калибровка pH-сенсора

Важно: если планируете внешний блок питания — подключите его ПЕРЕД калибровкой для корректных опорных уровней.

Поддерживается 1-, 2- или 3-точечная калибровка. Нужны стандартные буферные растворы pH 4, 7, 10.

Калибровка через Serial Monitor: наблюдайте стабилизацию показаний, отправляйте команды.

Данные калибровки сохраняются в EEPROM Arduino.

Команды калибровки:

Процедура:

  1. Снимите защитный флакон, промойте зонд дистиллированной водой.
  2. Налейте раствор pH 4 в стакан (чтобы закрыть сенсорную часть).
  3. Опустите зонд, перемешайте (уберите пузырьки). Наблюдайте за показаниями до стабилизации (малые колебания норм).
  4. В Serial Monitor введите cal,4 — калибровка низкой точки готова.
  5. Повторите для pH 7 и pH 10, каждый раз промывая зонд.

Температурная компенсация

Датчик точен ±0.2% в диапазоне 7–46°C. Вне этого диапазона нужна модификация для термокомпенсации. Зонд выдерживает 1–60°C.

Код (arduino pH meter code)

/* После загрузки откройте Serial Monitor, baud 9600, append "Carriage return"
   Реальные показания pH + калибровка (1-3 точки).
   Команды: "cal,4" "cal,7" "cal,10" "cal,clear" */

#include "ph_grav.h"          // Atlas Scientific Gravity pH
#include "LiquidCrystal.h"    // LCD

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

Gravity_pH pH = A0;                    // Выход pH-сенсора → A0
LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); // LCD пины: RS=2, E=3, D4-D7=4-7

void setup() {
  Serial.begin(9600);
  pH_lcd.begin(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\", \"CAL,10\" to calibrate"));
  Serial.println(F("Use command \"CAL,CLEAR\" to clear calibration"));
}

void serialEvent() {
  inputstring = Serial.readStringUntil(13);
  input_string_complete = true;
}

void loop() {
  if (input_string_complete) {
    inputstring.toCharArray(inputstring_array, 30);
    parse_cmd(inputstring_array);
    input_string_complete = false;
    inputstring = "";
  }
  Serial.println(pH.read_ph());
  pH_lcd.setCursor(8, 2);
  pH_lcd.print(pH.read_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");
  }
}

Схемы

Схема подключения прилагается.

Производственный процесс

  1. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  2. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  3. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  4. Создание пользовательских LED-часов с будильником — видно с 12 метров
  5. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  6. Оптимизированные решения питания для проектов на Arduino
  7. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  8. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  9. Своё рулевое управление (джойстик) для игр на Arduino
  10. Построение полнофункционального станка с ЧПУ на базе Arduino Nano R3