⚡ 1 июля магазин не работает, все оформленные заказы будут обработаны 2 июля
  • Производится отгрузка заказов через пункты выдачи Boxberry!
  • Производится курьерская доставка по г. Москва!
  • Производится курьерская доставка EMS!
  • Остальные способы получения заказа временно недоступны.
  • КОРЗИНА
    0 ТОВАРА
    8 (499) 500-14-56 | ПН. - ПТ. 12:00-20:00
    ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"
     Датчик кислотности жидкости (pH-метр) для Arduino ардуино
     Датчик кислотности жидкости (pH-метр) для Arduino ардуино

    Датчик кислотности жидкости (pH-метр) для Arduino

    Модификация
    Артикул: # 863 Наличие: 0 шт.
    Сообщить о поставке на e-mail:
    {{ status }}


    Возможен безналичный расчёт для юридических лиц при оформлении заказа

    С этим товаром берут

    Общие сведения

    Датчик кислотности жидкости (pH-метр) — это датчик, позволяющий определить pH (potentia Hydrogenii) уровень жидкостей.

    У чистой воды (H2O) при температуре 25 °C нейтральный уровень pH = 7. Чем выше кислотность жидкости, тем ниже её уровень pH, а в щелочных растворах уровень pH выше.

    Принято считать, что уровень pH определён диапазоном от 0 до 14, но в действительности у сильно агрессивных сред он может выходить за указанный диапазон.

    Видео

    Характеристики

    • Напряжение питания модуля: 5 В постоянного тока.
    • Диапазон измерений: 0...14 pH.
    • Зависимость напряжения на выходе модуля от pH растворов: 1 pH = 2/7 В.
    • Температура измеряемых растворов: 0...60 ℃.
    • Точность измерений: ± 0.1 pH (при температуре 25 ℃).
    • Время измерений: до 1 мин.
    • Длина кабеля от датчика до разъема BNC на плате модуля: 660 мм.
    • Размер модуля: 43x32 мм.
    • Размер датчика: 143,7 мм.

    Подключение

    Синий провод шлейфа, с которого будут сниматься показания, подключается к любому аналоговому выводу Arduino.

    Питание

    Для удобства подключения к Arduino воспользуйтесь Trema ShieldTrema Power ShieldMotor Shield или Trema Set Shield.

    Напряжение питания 5 В постоянного тока подаётся на красный (Vcc) и чёрный (GND) провод шлейфа pH-метра.

    Подробнее о датчике

    pH уровень (водородный показатель) является отрицательным десятичным логарифмом концентрации ионов водорода в жидкости: pH = - lg[H+]. В воде помимо молекул H2O имеются ионы водорода [H+] и гидроксид-ионы [OH]. Если их количество равно (нейтральная среда), то концентрация ионов водорода [H+] составляет 10−7 моль/л, следовательно pH = -lg[10-7] = 7.

    • Если в воду добавить кислоту, то концентрация ионов водорода [H+] увеличится, а гидроксид-ионов [OH−] упадет, следовательно уменьшится pH. Например при увеличении концентрации ионов водорода [H+] до 10−6 моль/л (степень отрицательная), pH упадёт до -lg[10-6] = 6.
    • Если в воду добавить щелочь, то концентрация водорода [H+] упадёт, а гидроксид-ионов [OH−] увеличится, следовательно увеличится pH. Например при уменьшении концентрации ионов водорода [H+] до 10−9 моль/л (степень отрицательная), pH увеличится до -lg[10-9] = 9.

    В основу работы pH-метра заложен ионометрический метод определения pH. Этот метод заключается в измерении ЭДС гальванической цепи включающей специальный стеклянный электрод, потенциал которого зависит от концентрации ионов водорода [H+] в окружающем растворе, см таблицу в разделе «примечание».

    Калибровка и измерения

    При первом включении pH-метра (и в дальнейшем примерно раз в пол года) его нужно откалибровать. Опустите сенсор pH-метра в нейтральный раствор (раствор хлорида калия KCL, его pH = 7.0), который находится в колпачке pH-метра и поворотом многооборотного потенциометра на плате добейтесь напряжения на выходе модуля в 2 В.

    Изменение уровня pH исследуемого раствора на 1 pH приводит к изменению напряжения на выходе модуля на 2/7 В. Значит после калибровки напряжение на выходе модуля 2 В соответствует pH = 7, напряжение 0 В соответствует pH = 0, а напряжение 4 В соответствует pH = 14, см. таблицу в разделе «Примечание». Значит для преобразования считанного с модуля уровня напряжения в уровень pH исследуемой жидкости, достаточно разделить это напряжение на 2/7 или умножить на 3,5: U/(2/7) = U*7/2 = U*3,5.

    Для измерения pH исследуемого раствора опустите в него сенсор pH-метра и слегка помешайте, подождите стабилизации показаний в течении 30-60 секунд.

    Не опускайте сенсор pH-метра в калибровочную жидкость (раствор хлорид калия KCL в колпачке датчика) после проведения измерений щелочных и кислых сред, так как остатки этих жидкостей на сенсоре pH-метра могут изменить pH калибровочной жидкости. Сначала промойте сенсор в проточной воде и стряхните её остатки, после чего оденьте колпачок с калибровочной жидкостью на датчик pH-метра.

    Дополнительно

    Зависимость напряжений от уровня pH исследуемой жидкости:

    pH0123457 891011121314
    В00,290,570,861,141,431,7122,292,572,863,143,433,714
    мВ414,12354,96295,8236,64177,48118,3259,160-59,16-118,32-177,48-236,64-295,8-354,96-414,12

    В вольтах указано напряжение на выходе модуля (после калибровки) которое подаётся на вход Arduino. В милливольтах указано напряжение на выходе датчика (разъема BNC) который подключается к разъему BNC модуля.

    Примеры

    Вывод в монитор порта значения pH.

    #define SensorPin        A0                                                                   // pH meter Analog output to Arduino Analog Input 0
    #define Offset           -0.00                                                                // Компенсация смещения
    #define LED              13                                                                   // Номер вывода светодиода, который является индикатором нормальной работы скетча
    #define samplingInterval 20                                                                   // Интервал в мс между измерениями
    #define printInterval    800                                                                  // Интервал в мс между выводами показаний
    #define ArrayLenth       40                                                                   // Количество выборок
    int pHArray[ArrayLenth];                                                                      // Массив для определения среднего показания напряжения считанного с датчика
    int pHArrayIndex=0;                                                                           // Индекс элемента массива pHArray значения которого требуется изменить
                                                                                                  //
    void setup(void){                                                                             //
        pinMode(LED,OUTPUT);                                                                      // Конфигурируем вывод светодиода как выход
        Serial.begin(9600);                                                                       // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бит/с
        Serial.println("pH meter experiment!");                                                   // Выводим надпись "pH meter experiment!"
    }                                                                                             //
    void loop(void){                                                                              //
        static unsigned long samplingTime = millis();                                             // Определяем переменную samplingTime для хранения времени прошедшего с момента старта (переменная создаётся при первом проходе цикла loop и не теряется по его завершении)
        static unsigned long printTime    = millis();                                             // Определяем переменную printTime    для хранения времени прошедшего с момента старта (переменная создаётся при первом проходе цикла loop и не теряется по его завершении)
        static float pHValue, voltage;                                                            // Объявляем переменные для хранения значений напряжения и pH
    //  Проводим измерения:                                                                       //
        if(millis() - samplingTime > samplingInterval){                                           // Выполняем код в теле оператора if через каждые samplingInterval мс
            pHArray[pHArrayIndex++] = analogRead(SensorPin);                                      // Читаем данные в очередной элемент массива pHArray
            if(pHArrayIndex==ArrayLenth) pHArrayIndex=0;                                          // Если достигли последнего элемента массива pHArray, то сбрасываем номер текущего элемента этого массива в 0
            voltage = averagearray(pHArray, ArrayLenth) * 5.0 / 1023;                             // Получаем среднее напряжение в мВ из массива напряжений pHArray
            pHValue = 3.5 * voltage + Offset;                                                     // Преобразуем мВ в pH
            samplingTime = millis();                                                              // Обновляем время для переменной samplingTime
        }                                                                                         //
    //  Выводим показания в монитор:                                                              //
        if(millis() - printTime > printInterval){                                                 // Выполняем код в теле оператора if через каждые printInterval мс
            Serial.print("Voltage:");                                                             // Выводим надпись "Voltage:"
            Serial.print(voltage,2);                                                              // Выводим среднее напряжение
            Serial.print("    pH value: ");                                                       // Выводим надпись "    pH value: "
            Serial.println(pHValue,2);                                                            // Выводим значение pH
            digitalWrite(LED,digitalRead(LED)^1);                                                 // Меняем состояние светодиода
            printTime = millis();                                                                 // Обновляем время для переменной printTime
        }                                                                                         //
    }                                                                                             //
                                                                                                  //
    //  Функция определения среднего значения напряжения                                          // Эта функция возвращает среднее арифметическое значение данных массива arr без учёта одного максимального и одного минимального значения массива.
    double averagearray(int* arr, int number){                                                    //
        int i,max,min;                                                                            // Объявляем переменные для цикла и экстремумов
        double avg;                                                                               // Объявляем переменную для вывода среднего значения
        long amount=0;                                                                            // Определяем переменную для подсчёта среднего значения
        if(number<=0){ Serial.println("Error number for the array to avraging!/n");  return 0;}   // В массиве arr не может быть 0 и менее элементов
        if(number< 5){ for(i=0; i<number; i++){amount+=arr[i];} avg = amount/number; return avg;  // Если в массиве arr менее 5 элементов, то среднее значение является средним арифметическим значением
        }else{                                                                                    // Если в массиве arr более 5 элементов, то среднее значение считаем иначе ...
            if(arr[0]<arr[1]){ min = arr[0]; max=arr[1];}                                         // Определяем минимальное и максимальное число из первых двух элементов массива
            else             { min = arr[1]; max=arr[0];}                                         // Определяем минимальное и максимальное число из первых двух элементов массива
            for(i=2; i<number; i++){                                                              // Проходим по остальным элементам массива
                     if(arr[i]<min){ amount+=min; min=arr[i]; }                                   // Если значение очередного элемента меньше минимального,  то добавляем к значению amount предыдущее минимальное значение  и обновляем значение min
                else if(arr[i]>max){ amount+=max; max=arr[i]; }                                   // Если значение очередного элемента больше максимального, то добавляем к значению amount предыдущее максимальное значение и обновляем значение max
                else               { amount+=arr[i];          }                                   // Если значение очередного элемента находится в пределах между min и max, то добавляем значение этого элемента к amount
            }                                                                                     //
            avg = (double) amount/(number-2);                                                     // Получаем среднее арифметическое значение (без учета значений первых двух элементов массива arr, т.к. они не добавлялись к amount)
        }                                                                                         //
        return avg;                                                                               // Возвращаем полученное среднее значение
    }                                                                                             //
    

    Комплектация

    • 1x Датчик с кабелем, колпачком и контрольным раствором;
    • 1x Модуль с разъемом BNC;
    • 1x Трёхпроводной шлейф для подключения к Arduino;

    Ссылки

    Похожие товары

    Гарантии и возврат Используя сайт Вы соглашаетесь с условями