Описание
Профиль продукта
Этот аналоговый Измеритель проводимости, простое подключение, удобные и практичные функции. Подключите линии в соответствии с эскизом, через контроль программы, очень удобно измерять проводимость раствора.
Самое главное, что мы источник всего дизайна и кода. пользователи могут легко получить данные о проводимости, для дальнейшего контроля и исследований. энтузиасты приветствуются для учебы и обмена., предоставляем ценный совет 。
Проводимость-это способность вещества передавать ток. это взаимное сопротивление. обратное сопротивление в жидкостях-проводимость используется для измерения его проводимости. проводимость воды является важным индексом для измерения качества воды., это Может отражать степень электролита в воде. В зависимости от концентрации электролита в водном растворе степень проводимости раствора варьируется. В международной Единичная система блок проводимости называется Siemens. /рис (S/m), другие единицы Включает: S/m, ms/см, μS/см.
Сфера применения
Обнаружение качества воды Смешанное земледелие почвы и воды Аквакультуры Декоративных аквариумных рыбТехнический параметр
Рабочее напряжение: + 5,00 в Размер pcb: 45 мм × 32 мм Диапазон измерения: 1 мс/см-20 мс/см Применимая температура: 5-40 ℃ Точность: <± 10% F. S. (определенная точность зависит от вашей точности калибровки.) Xh2.54интерфейс (3 ноги патч) Кондуктометрический Электрод типа BNCInterface (постоянный электрод is1) Длина проводящий электрод кабеля: около 60 сантиметров Мощность индикаторная лампаСхема подключения
Ec-метр ---- Arduino
V ---- 5,0 V;
G ---- GND;
A ---- имитация (соответствует исходному коду)
Отгрузочная ведомость:
1 шт. BNC Тип интерфейса проводящий электрод 1 шт. EC MeterCircuit board 1 шт. адаптерArduinosource Код:
# Включают в себя \
\
# Определите startконвертировать 0 \
# Определение температуры чтения 1 \
\
Число конст-байт = 20;/количество раз образца \
Байт ECsensorPin = A1;/ЭЦ метр аналоговый выход, штырь на аналоге 1 \
Байт DS18B20_Pin = 2;/DS18B20 сигнал, pin на цифровом 2 \
Неподписанный Инт аналоговый интервал = 25, printInterval = 700, темпсамплинтервал = 850;/аналоговый интервал образца; Последовательный интервал печати; температурный интервал образца \
Неподписанные Инт показания [НУМ показания];/показания от аналогового входа \
Индекс байта = 0;/Индекс тока чтения \
Неподписанный длинный аналоговый итог = 0;/рабочий итог \
Неподписанный Инт аналог = 0, averageVoltage = 0;/средний \
Неподписанный длинный аналог, печатное время, темпсамплтайм;
Температура поплавка, ток; \
\
/Температурный чип i/o \
OneWire ds (DS18B20_Pin);/на цифровой контакт 2 \
\
Настройка void () {\
/Инициализация последовательной связи с компьютером: \
Серийный. Начать (115200); \
/Инициализируйте все показания до 0: \
Для (байт thisReading = 0; thisReading <numches; thisReading + +) \
Показания [thisReading] = 0; \
Темппроцесс (startконвертация);/позвольте DS18B20 начать Преобразование \
Аналог = millis (); \
PrintTime = millis (); \
TempSampleTime = millis (); \
} \
\
Void loop () {\
/* \
Каждый раз за некоторое время, образец аналогового значения и рассчитать среднее. \
* \
If (millis ()-AnalogSampleTime> = аналогичный интервал) \
{\
Аналог = millis (); \
/Вычтите последнее чтение: \
Аналог-итог = аналог-итог-показания [индекс]; \
/Считывается с датчика: \
Показания [индекс] = аналог (эксенсорпин);
/Добавьте чтение в общее: \
Аналог-итог = аналог-итог + показания [индекс]; \
/Заранее к следующей позиции в массиве: \
Индекс = индекс + 1; \
/Если мы в конце массива... \
Если (индекс> = число) \
/. .. Оберните вокруг начала: \
Индекс = 0; \
/Рассчитать Среднее: \
Аналог средний = аналог Валовой/цифр; \
} \
/* \
Время от времени MCU считывает температуру с DS18B20, а затем позволяет DS18B20 начать преобразование.
Внимание: интервал между запуском преобразования и считыванием температуры должен быть больше 750 миллисекунд, или температура не точная!
* \
If (millis ()-tempSampleTime> = tempSampleInterval) \
{\
TempSampleTime = millis (); \
Температура = темппроцесс (чтение температуры);/считывание температуры тока от DS18B20 \
TempProcess (startконвертация);/после чтения Начните Преобразование для следующего чтения \
} \
/* \
Время от времени Печатайте информацию на серийный монитор. \
* \
If (millis ()-printTime> = printInterval) \
{\
PrintTime = millis (); \
AverageVoltage = аналогичный средний * (поплавок) 5000/1024; \
Серийный. Печать ("аналоговое значение:"); \
Серийный. Печать (аналог);/аналоговый средний, от 0 до 1023 \
Серийный. Печать ("напряжение:"); \
Серийный. Печать (averageVoltage);/средний милливольт, от 0мв до 4995мв \
Серийный. Печать ("мВ"); \
Серийный. Печать ("Темп:"); \
Серийный. Печать (температура);/температура тока \
Серийный. Печать ("^ C EC:"); \
\
Поплавковый темпкоэффициент = 1,0 + 0,0185 * (температура-25,0);/Формула компенсации температуры: ffinalresit (25 ^ C) = ffinalresit (ток)/(1,0 + 0,0185 * (fTP-25.0);
Коэффициент поплавка = (поплавок) Коэффициент усреднения/темпкоэффициента; \
If (CoefficientVolatge <150) Серийный. println («Нет решения! ");/25 ^ C 1413us/см <--> около 216мв, если напряжение (Компенсирует) <150, то есть <1 мс/см, вне диапазона \
Иначе, если (CoefficientVolatge> 3300) Серийный. println («вне диапазона!»);/> 20 мс/см, вне диапазона \
Еще \
{\
Если (коэффициент <= 448) eccurate = 6,84 * CoefficientVolatge-64.32;/1 мс/см else if (коэффициент <= 1457) eccurent = 6,98 * CoefficientVolatge-127; /3 м/см ecurent = 5,3 * CoefficientVolatge + 2278;/10 м/см eccurent/= 1000;/преобразует us/см в ms/см \
Серийный. Печать (eccurток, 2);/две десятичные \
Серийный. println ("ms/cm");
} \
} \
\
} \
/* \
Ch = 0, позвольте DS18B20 начать преобразование; ch = 1, MCU считывает температуру тока от DS18B20. \
* \
Поплавковый темппроцесс (bool ch) \
{\
/Возвращается температура от одного DS18B20 в DEG Цельсия \
Статические данные байт [12]; \
Статический байт addr [8]; \
Статическая температура поплавка; \
Если (! ch) {\
Если (! Ds. search (addr) {\
Серийный. println ("нет больше датчиков на цепи, сброс поиска!"); \
Ds. reset_search (); \
Возврат 0; \
} \
Если (OneWire: crc8 (addr, 7)! = addr [7]) {\
Серийный. println ("CRC не является действительным!");
Возврат 0; \
} \
Если (addr [0]! = 0x10 & addr [0]! = 0x28) {\
Серийный. Печать ("устройство не распознано!"); \
Возврат 0; \
} \
Ds. reset (); \
Ds. Выберите (addr); \
Ds. write (0x44,1);/старт преобразования, с паразитом питания на конце \
} \
Больше {\
Байт = ds. reset (); \
Ds. Выберите (addr); \
Ds. write (0xBE);/чтение скребок \
Для (int i = 0; i <9; i + +) {/нам нужно 9 байт \
Данные [i] = ds. read (); \
} \
Ds. reset_search (); \
Байт MSB = данные [1]; \
Байт LSB = данные [0]; \
Float tempRead = (MSB <8) | LSB);/используя два комплимента \
Температура = темпреуд/16; \
} \
Возврат TemperatureSum; \
} \
\
\
# Включают в себя \
\
# Определите startконвертировать 0 \
# Определение температуры чтения 1 \
\
Число конст-байт = 20;/количество раз образца \
Байт ECsensorPin = A1;/ЭЦ метр аналоговый выход, штырь на аналоге 1 \
Байт DS18B20_Pin = 2;/DS18B20 сигнал, pin на цифровом 2 \
Неподписанный Инт аналоговый интервал = 25, printInterval = 700, темпсамплинтервал = 850;/аналоговый интервал образца; Последовательный интервал печати; температурный интервал образца \
Неподписанные Инт показания [НУМ показания];/показания от аналогового входа \
Индекс байта = 0;/Индекс тока чтения \
Неподписанный длинный аналоговый итог = 0;/рабочий итог \
Неподписанный Инт аналог = 0, averageVoltage = 0;/средний \
Неподписанный длинный аналог, печатное время, темпсамплтайм;
Температура поплавка, ток; \
\
/Температурный чип i/o \
OneWire ds (DS18B20_Pin);/на цифровой контакт 2 \
\
Настройка void () {\
/Инициализация последовательной связи с компьютером: \
Серийный. Начать (115200); \
/Инициализируйте все показания до 0: \
Для (байт thisReading = 0; thisReading <numches; thisReading + +) \
Показания [thisReading] = 0; \
Темппроцесс (startконвертация);/позвольте DS18B20 начать Преобразование \
Аналог = millis (); \
PrintTime = millis (); \
TempSampleTime = millis (); \
} \
\
Void loop () {\
/* \
Каждый раз за некоторое время, образец аналогового значения и рассчитать среднее. \
* \
If (millis ()-AnalogSampleTime> = аналогичный интервал) \
{\
Аналог = millis (); \
/Вычтите последнее чтение: \
Аналог-итог = аналог-итог-показания [индекс]; \
/Считывается с датчика: \
Показания [индекс] = аналог (эксенсорпин);
/Добавьте чтение в общее: \
Аналог-итог = аналог-итог + показания [индекс]; \
/Заранее к следующей позиции в массиве: \
Индекс = индекс + 1; \
/Если мы в конце массива... \
Если (индекс> = число) \
/. .. Оберните вокруг начала: \
Индекс = 0; \
/Рассчитать Среднее: \
Аналог средний = аналог Валовой/цифр; \
} \
/* \
Время от времени MCU считывает температуру с DS18B20, а затем позволяет DS18B20 начать преобразование.
Внимание: интервал между запуском преобразования и считыванием температуры должен быть больше 750 миллисекунд, или температура не точная!
* \
If (millis ()-tempSampleTime> = tempSampleInterval) \
{\
TempSampleTime = millis (); \
Температура = темппроцесс (чтение температуры);/считывание температуры тока от DS18B20 \
TempProcess (startконвертация);/после чтения Начните Преобразование для следующего чтения \
} \
/* \
Время от времени Печатайте информацию на серийный монитор. \
* \
If (millis ()-printTime> = printInterval) \
{\
PrintTime = millis (); \
AverageVoltage = аналогичный средний * (поплавок) 5000/1024; \
Серийный. Печать ("аналоговое значение:"); \
Серийный. Печать (аналог);/аналоговый средний, от 0 до 1023 \
Серийный. Печать ("напряжение:"); \
Серийный. Печать (averageVoltage);/средний милливольт, от 0мв до 4995мв \
Серийный. Печать ("мВ"); \
Серийный. Печать ("Темп:"); \
Серийный. Печать (температура);/температура тока \
Серийный. Печать ("^ C EC:"); \
\
Поплавковый темпкоэффициент = 1,0 + 0,0185 * (температура-25,0);/Формула компенсации температуры: ffinalresit (25 ^ C) = ffinalresit (ток)/(1,0 + 0,0185 * (fTP-25.0);
Коэффициент поплавка = (поплавок) Коэффициент усреднения/темпкоэффициента; \
If (CoefficientVolatge <150) Серийный. println («Нет решения! ");/25 ^ C 1413us/см <--> около 216мв, если напряжение (Компенсирует) <150, то есть <1 мс/см, вне диапазона \
Иначе, если (CoefficientVolatge> 3300) Серийный. println («вне диапазона!»);/> 20 мс/см, вне диапазона \
Еще \
{\
Если (коэффициент <= 448) eccurate = 6,84 * CoefficientVolatge-64.32;/1 мс/см else if (коэффициент <= 1457) eccurent = 6,98 * CoefficientVolatge-127; /3 м/см ecurent = 5,3 * CoefficientVolatge + 2278;/10 м/см eccurent/= 1000;/преобразует us/см в ms/см \
Серийный. Печать (eccurток, 2);/две десятичные \
Серийный. println ("ms/cm");
} \
} \
\
} \
/* \
Ch = 0, позвольте DS18B20 начать преобразование; ch = 1, MCU считывает температуру тока от DS18B20. \
* \
Поплавковый темппроцесс (bool ch) \
{\
/Возвращается температура от одного DS18B20 в DEG Цельсия \
Статические данные байт [12]; \
Статический байт addr [8]; \
Статическая температура поплавка; \
Если (! ch) {\
Если (! Ds. search (addr) {\
Серийный. println ("нет больше датчиков на цепи, сброс поиска!"); \
Ds. reset_search (); \
Возврат 0; \
} \
Если (OneWire: crc8 (addr, 7)! = addr [7]) {\
Серийный. println ("CRC не является действительным!");
Возврат 0; \
} \
Если (addr [0]! = 0x10 & addr [0]! = 0x28) {\
Серийный. Печать ("устройство не распознано!"); \
Возврат 0; \
} \
Ds. reset (); \
Ds. Выберите (addr); \
Ds. write (0x44,1);/старт преобразования, с паразитом питания на конце \
} \
Больше {\
Байт = ds. reset (); \
Ds. Выберите (addr); \
Ds. write (0xBE);/чтение скребок \
Для (int i = 0; i <9; i + +) {/нам нужно 9 байт \
Данные [i] = ds. read (); \
} \
Ds. reset_search (); \
Байт MSB = данные [1]; \
Байт LSB = данные [0]; \
Float tempRead = (MSB <8) | LSB);/используя два комплимента \
Температура = темпреуд/16; \
} \
Возврат TemperatureSum; \

