Примечание: Этот продукт содержит описание продукта, схему проводки, исходный код, пожалуйста, посмотрите вниз!
Разница между данным продуктом и DTS: большой диапазон: 1 мс/cm-20ms/см.DTS подходит для коротких-измерение диапазона бытовых сточных вод качестваКраткое описание продукта
Этот аналоговый Измеритель проводимости имеет характеристики простого подключения, удобства и практичности. Очень удобно измерять проводимость раствора, соединяя линии в соответствии с схемой схемы, а затем контролировать их с помощью программы.
Самое главное, что мы источник всего дизайна и кода. Пользователи могут легко собрать данные о проводимости через Arduino для дальнейшего контроля и исследований. Мы рады вам поработать и поделиться, а также предоставить ценный совет.
Проводимость-это способность вещества передавать ток и взаимное сопротивление. В жидкостях для измерения проводимости часто используется взаимное сопротивление-mdash; проводимость. Проводимость воды является важным индексом для измерения качества воды. Он может отражать степень электролитов в воде. В соответствии с концентрацией электролита в водном растворе, степень проводимости отличается. В международной Единичная система, блок проводимости называется Siemens/m (S/m), и другие единицы являются S/m, ms/cm, & Mu и S/cm.
Применение Сфера
Обнаружение качества воды
Смешанное земледелие почвы и воды
Аквакультуры
Декоративных аквариумных рыб
Технический параметр
Рабочее напряжение: + 5,00 в Размер печатной платы: 45 мм и раз; 32 мм Диапазон измерения: 1 мс/см-20 мс/см Применимая температура: 5-40 C Точность: & lt; & plusmn; 10% F. S. (Определенная точность зависит от вашей точности калибровки)
XH2.54 Интерфейс (3-пластырь для ног) BNC интерфейс кондуктометрический электрод (электродная постоянная 1)
Проводящий Электрод длина кабеля: около 60 см Мощность индикаторная лампа
Схема подключения
Ec-метр ---- Arduino
V---5,0 V;
G--- GND;
A-Simulate IO (соответствует исходному коду)
Счетов-фактур
Один BNC интерфейс проводящий электрод Ec-метр PCB-1 шт. Передача (1 шт.)
Arduino исходный код: & nbsp;
# Включают в себя
# Определить startconvert 0
# Определить readtemperature-1 шт.
Число конст-байтов = 20;/количество раз образца
Байт ecsensorpin = A1;/ec-метр с аналоговым выходом, булавки в аналоговый-1 шт.
Байт DS18B20_Pin = 2/DS18B20 сигнала, закрепить цифровой 2
Неподписанный Инт аналогичный интервал = 25, printInterval = 700, темпсамплинтервал = 850;/аналоговый интервал образца; Последовательный интервал печати; температурный интервал образца
Неподписанные Инт показания [НУМ показания];/показания от аналогового входа
Индекс байта = 0;/Индекс тока чтения
Неподписанный длинный аналоговый итог = 0;/общее количество бега
Неподписанный Инт аналог = 0, среднее значение = 0;/среднее
Неподписанные длинные аналоги, принты, темпсампле;
Температура поплавка, ток;
/Температурный чип i/o
OneWire ds (DS18B20_Pin);/на цифровой контакт 2
Настройка void () {
/Инициализация последовательной связи с компьютером:
Сериал. начать (115200);
/Инициализируйте все показания до 0:
Для (байт thisReading = 0; thisReading <numches; thisReading + +)
Показания [thisReading] = 0;
Tempprocess (startconvert)/пусть DS18B20 начать преобразования
Аналог = millis ();
PrintTime = millis ();
TempSampleTime = millis ();
}
Void loop () {
/*
Каждый раз за некоторое время, образец аналогового значения и рассчитать среднее.
*/
If (millis ()-AnalogSampleTime> = аналогичный интервал)
{
Аналог = millis ();
/Вычтите последнее чтение:
Аналог-итог = аналог-итог-показания [индекс];
/Считывается с датчика:
Показания [индекс] = аналог (эксенсорпин);
/Добавьте чтение в общее:
Аналог-итог = аналог-итог + показания [индекс];
/Заранее к следующей позиции в массиве:
Индекс = индекс + 1;
/Если мы в конце массива...
Если (индекс> = число)
/. .. Оберните вокруг начала:
Индекс = 0;
/Рассчитать Среднее:
Аналог средний = аналог Валовой/цифр;
}
/*
Каждый раз в то время, MCU, узнать температуру от DS18B20, а затем пусть DS18B20 начать преобразования.
Внимание: интервал между запуском преобразования и считыванием температуры должен быть больше 750 миллисекунд, или температура не точная!
*/
If (millis ()-tempSampleTime> = tempSampleInterval)
{
TempSampleTime = millis ();
Температура = tempprocess (прочитайте Температура)/считывать текущее значение Температура из 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);
Коэффициент поплавка = (поплавок) averageVoltage/темпкоэффициент;
If (CoefficientVolatge <150) Серийный. println («Нет решения! ");/25 ^ C 1413us/см <--> около 216мв, если напряжение (Компенсирует) <150, то есть <1 мс/см, вне диапазона
Иначе, если (CoefficientVolatge> 3300) Серийный. println («вне диапазона!»);/> 20 мс/см, вне диапазона
Другое
{
Если (коэффициент <= 448) eccurate = 6,84 * CoefficientVolatge-64.32;/1 мс/см \
Иначе, если (коэффициент <= 1457) ток = 6,98 * CoefficientVolatge-127;/3 мс/см
Другой ток = 5,3 * коэффициент + 2278;/10 мс/см \
Eccurent/= 1000;/преобразует us/см в ms/см
Серийный. печать (eccurток, 2);/две десятичные
Серийный. печатающий элемент ("ms/cm");
}
}
}
/*
Ch = 0, пусть DS18B20 начать преобразования; ch = 1, MCU, ознакомьтесь с текущей температуры от DS18B20.
*/
Поплавок темппроцесс (bool ch)
{
/Возвращает температуре от одного DS18B20 в градусах Цельсия
Статические данные байт [12];
Статический байт addr [8];
Статический поплавок temperaturesum;
Если (! 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;
}
Для пульта дистанционного управления