pH-метр Arduino
Компоненты и расходные материалы
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
![]() |
|
Об этом проекте
В этом проекте мы будем делать настольный pH-метр с использованием аналоговой схемы pH Gravity и датчика от Atlas Scientific и Arduino Uno. Показания будут отображаться на жидкокристаллическом дисплее (LCD).
Примечание:
- Этот счетчик был разработан на компьютере под управлением Windows. Он не тестировался на Mac.
- Корпус не является водонепроницаемым.
Шаг 1. Подготовка жилья
Безопасность :Не забывайте соблюдать осторожность при обращении с инструментами / механизмами и носить надлежащую защитную одежду, такую как очки, перчатки и респираторы.
Используемый корпус представляет собой корпус из АБС-пластика. Его необходимо модифицировать для pH-метра.
Вырежьте отверстие для ЖК-дисплея
а) ЖК-дисплей находится в верхней части (крышке) корпуса. Отцентрируйте прямоугольник 98x40 мм на крышке.
б) Поместите деталь в тиски и просверлите пилотное отверстие 3,2 мм (1/8 дюйма) в отмеченном прямоугольнике.
в) Используйте это пилотное отверстие в качестве отправной точки для сверла для резки гипсокартона 3,2 мм (1/8 дюйма). Поскольку это небольшая работа, мы будем использовать сверло на ручном сверле, а не на станке для резки гипсокартона. Работайте с внутренней частью прямоугольник вместо линий, так как это может быть затруднительно при прямом резании этим сверлом на сверле.
г) Затем с помощью ручного напильника удалите излишки материала и придайте прямоугольнику желаемый размер.

Вырежьте отверстия для разъема BNC и портов Arduino
Отверстия для разъема BNC и портов Arduino находятся сбоку в нижней части корпуса.
а) Используя размеры, указанные ниже, отметьте центральную точку круга и контуры двух прямоугольников.
б) Вставьте деталь в тиски и прорежьте отверстия. Круглое отверстие делается с помощью сверл. Прямоугольные изготавливаются по той же технологии, что и отверстие для ЖК-дисплея.

Используйте опорную пластину для установки компонентов
Базовая пластина используется для установки Arduino, датчика pH и мини-макета. Используется акриловый лист толщиной 3,2 мм.
а) С помощью ленточной пилы отрежьте акриловый лист до размеров 135x62,5 мм.
б) Отметьте позиции для четырех отверстий, как показано ниже. Просверлите отверстия диаметром 2,38 мм (3/32 дюйма). Зенковайте отверстия на одной стороне пластины до глубины 3 мм и диаметра 4,4 мм (11/64 дюйма). Это необходимо для того, чтобы во время вставки винтов для удержания стоек оставалась плоская нижняя поверхность.
в) Прикрепите стойки диаметром 11 мм с помощью прилагаемых винтов. Датчик pH поставляется с 4 стойками и винтами. Используйте два из них для Arduino.

Шаг 2. Установите электронику в корпус
а) Вставьте опорную пластину в нижнюю часть корпуса. Закрепить винтами или горячим клеем.

б) Установите датчик pH на опорную плиту. Закрепите на стойках винтами.

в) Установите Arduino Uno на опорную пластину. Закрепите на стойках винтами.

г) Добавьте мини-макетную плату на основание.

д) Припаяйте контакты заголовка к ЖК-дисплею (контакты входят в комплект). Вставьте ЖК-дисплей в верхнюю часть корпуса и с помощью горячего клея удерживайте экран на месте.

Шаг 3. Соедините электронику вместе

Подключение компонентов показано на схеме выше.
Используйте миниатюрную макетную плату для 1 кОм и 220 Ом, а также для распределения контактов 5 В и заземления Arduino.
Два резистора используются для настройки контрастности экрана.

Таблицы данных
Датчик pH гравитационный, зонд pH
Шаг 4. Завершите сборку
После завершения электромонтажа:
а) Соедините верхнюю и нижнюю части корпуса вместе с помощью прилагаемых винтов.
б) Подключите пробник к разъему BNC.

Шаг 5. Загрузите код в Arduino Uno
В коде этого проекта используются настраиваемые библиотеки и файлы заголовков. Вам нужно будет добавить их в вашу Arduino IDE, чтобы использовать код. Приведенные ниже шаги включают процесс внесения этого дополнения в среду IDE.
а) Подключите Arduino к компьютеру и откройте IDE. IDE можно скачать по этой ССЫЛКЕ, если у вас ее нет. Перейдите в меню T ools -> Board -> Select Arduino / Genuino Uno . . Перейдите в Инструменты -> Порт -> выберите порт . где подключен Arduino.
б) Добавление библиотеки жидкокристаллического дисплея:в среде IDE выберите Эскиз -> Включить библиотеку -> Управление библиотеками . . В строке поиска Менеджера библиотеки введите «жидкий кристалл». Найдите пакет под названием «LiquidCrystal, встроенный в Arduino, Adafruit». Он может быть установлен, а может и не быть. Если нет, выберите пакет и нажмите установить . .
в) Добавьте библиотеку датчиков силы тяжести Atlas:загрузите zip-файл по следующей ССЫЛКЕ. Файл будет сохранен как «Atlas_gravity.zip». В среде IDE выберите Эскиз -> Включить библиотеку -> Добавить библиотеку ZIP . . Найдите файл Atlas_gravity.zip и выберите его, чтобы добавить.
г) Затем нам нужно добавить код для pH-метра. Скопируйте код из этой ССЫЛКИ на рабочую панель IDE.
д) Скомпилируйте и загрузите код в Arduino.
е) Показания pH будут отображаться на ЖК-дисплее. Вы также можете просмотреть показания на последовательном мониторе. Чтобы открыть монитор последовательного порта, выберите Инструменты -> Монитор последовательного порта . или нажмите Ctrl + Shift + M на клавиатуре. Установите скорость передачи 9600 и выберите «Возврат каретки».
Шаг 6. Калибровка датчика pH
Примечание. Если вы планируете использовать внешний источник питания для Arduino, подключите его к Arduino перед выполнением калибровки. Это обеспечит правильную установку опорных уровней, что поможет в правильной калибровке.
Этот pH-метр может быть откалиброван для калибровки по одной, двум или трем точкам. Требуются стандартные буферные растворы (pH 4, 7 и 10)
Монитор последовательного порта используется для процесса калибровки. Пользователь сможет наблюдать постепенное изменение показаний по мере их стабилизации и отправлять соответствующие команды.
Данные калибровки хранятся в EEPROM Arduino.
Команды калибровки
Нижняя точка: кал, 4
Средняя точка: кал, 7
Высшая точка: кал, 10
Очистить калибровку: калибровка, очистить
Шаги
а) Снимите бутыль для замачивания и промойте зонд pH.
б) Налейте немного раствора с pH 4 в чашку. Убедитесь, что этого достаточно, чтобы покрыть чувствительную область датчика.
в) Поместите зонд в чашку и перемешайте, чтобы удалить захваченный воздух. Наблюдайте за показаниями на серийном мониторе. Оставьте зонд в растворе до тех пор, пока показания не стабилизируются (небольшое перемещение от одного показания к другому является нормальным)
г) После стабилизации показаний введите команду cal, 4 . в серийный монитор. Калибровка pH 4 завершена.
Повторите шаги a-d для pH7 и pH10. Не забывайте промывать зонд при переходе к другим буферным растворам.
А как насчет температурной компенсации?
Датчик, используемый в этом проекте, имеет точность +/- 0,2%. PH-метр будет работать с этой точностью в диапазоне температур 7–46 ° C. За пределами этого диапазона измеритель необходимо будет модифицировать для компенсации температуры. Примечание. Датчик pH может работать в диапазоне от 1 до 60 ° C.
Код
- код pH-метра arduino
код pH-метра arduino C / C ++
/ * После загрузки откройте монитор последовательного порта, установите скорость передачи на 9600 и добавьте «Возврат каретки». Код позволяет пользователю наблюдать за показаниями pH в реальном времени, а также калибровать датчик. Одно-, двух- или трехточечное. можно выполнить калибровку. Команды калибровки:low-point:"cal, 4" mid-point:"cal, 7" high-point:"cal, 10" очистить калибровку:"cal, clear" * / # include "ph_grav. h "// файл заголовка для датчика гравитационного pH Atlas Scientific # include" LiquidCrystal.h "// файл заголовка для жидкокристаллического дисплея (lcd) String inputstring =" "; // строка для хранения входящих данных от PCboolean input_string_complete =false; // флаг, указывающий, все ли мы получили данные из PCchar inputstring_array [10]; // массив символов, необходимый для разбора строки Gravity_pH pH =A0; // назначаем аналоговый вывод A0 Arduino классу Gravity_pH. подключите выход датчика pH к выводу A0LiquidCrystal pH_lcd (2, 3, 4, 5, 6, 7); // создаем переменную pH_lcd и назначаем цифровые выводы Arduino выводам ЖК-дисплея (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 () {// если аппаратный последовательный порт_0 получает char inputstring =Serial.readStringUntil (13); // читаем строку, пока не увидимinput_string_complete =true; // устанавливаем флаг, используемый для определения того, получили ли мы завершенную строку от ПК} void loop () {if (input_string_complete ==true) {// проверяем, получены ли данные inputstring.toCharArray (inputstring_array, 30); // преобразовываем строку в массив символов parse_cmd (inputstring_array); // отправляем данные в pars_cmd function input_string_complete =false; // сбрасываем флаг, используемый для определения того, получили ли мы завершенную строку от ПК inputstring =""; // очищаем строку} Serial.println (pH.read_ph ()); // вывод значения pH на серийный монитор pH_lcd.setCursor (8, 2); // помещаем курсор на экран в столбец 9, строку 3 pH_lcd.print (pH.read_ph ()); // вывод 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 ("КАЛИБРОВКА ОЧИЩЕНА"); }}
Схема

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