Автор Тема: EC-метр на базе ардуино  (Прочитано 18789 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vad

  • Ветеран
  • *****
  • Сообщений: 6609
  • Мой аватар вырос.. на гидропонике :)
EC-метр на базе ардуино
« Ответ #135 : 22 Октября 2017, 17:47:46 »
Цитировать (выделенное)
Измерения не зависят от материала электрода.
первые два дня *???*
Форум сгнил.

Оффлайн allex_step

  • Ветеран
  • *****
  • Сообщений: 1386
  • Слава Богу!
    • Email
EC-метр на базе ардуино
« Ответ #136 : 22 Октября 2017, 18:15:23 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать (выделенное)
Измерения не зависят от материала электрода.
первые два дня *???*
здравое рассуждение...
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход, пусть электроды помокнут в растворе с недельку (лучше конечно  в активном применении), а потом снова повторите икзпиримент

Оффлайн vladindre

  • Постоялец
  • ***
  • Сообщений: 175
    • Email
EC-метр на базе ардуино
« Ответ #137 : 22 Октября 2017, 19:17:34 »
Цитировать (выделенное)
пусть электроды помокнут в растворе с недельку
Точно так же хотел предложить. Но только не покиснут , а желательно имитировать реальную деятельность.
Нагружать их ежедневно хоть немного - измерять.
Предполагаю , что на меди образуется р-п переход и измерения будут нехило искажаться. В этом смысле даже алюминий выглядит более кошерно , хотя в электролите тоже у него образуется переход. Ну а графит вне конкуренции - полный пассив.

Оффлайн PAA

  • Новичок
  • *
  • Сообщений: 16
    • Email
EC-метр на базе ардуино
« Ответ #138 : 22 Октября 2017, 19:50:07 »
...." но при частоте выше 10 кГц уменьшается стабильность результатов, требуется большее число измерений для усреднения."...
- скорее всего на частотах выше 10 кГц не справляется АЦП (ИМХО). Нужно проверить замкнув электроды постоянным резистором и плавно увеличивая частоту замеров и т.о. установить частоту среза (загиба характеристики) внутреннего АЦП контроллера.  Исходя из этих данных выбрать частоту переключения электродов. Уважаемый serge mat, вы можете проделать такой эксперимент и поделится результатом?

Оффлайн serge mat

  • Старожил
  • ****
  • Сообщений: 311
  • химик со стажем
    • Email
EC-метр на базе ардуино
« Ответ #139 : 22 Октября 2017, 21:28:43 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
...." но при частоте выше 10 кГц уменьшается стабильность результатов, требуется большее число измерений для усреднения."...
- скорее всего на частотах выше 10 кГц не справляется АЦП (ИМХО). Нужно проверить замкнув электроды постоянным резистором и плавно увеличивая частоту замеров и т.о. установить частоту среза (загиба характеристики) внутреннего АЦП контроллера.  Исходя из этих данных выбрать частоту переключения электродов. Уважаемый serge mat, вы можете проделать такой эксперимент и поделится результатом?
Я наблюдаю не перегиб, а разброс точек. При малых частотах после первых 5-9 измерений все следующие точки отличаются от среднего значения не более чем на 3 единицы, обычно на 1-2. При высоких частотах измерений точки прыгают на десятки единиц, доходит даже до сотни. А среднее значение остается прежним.
Я пробовал давать задержку после подачи напряжения на электроды (думал не успевает стабилизироваться), но это ничего не изменило.

Оффлайн serge mat

  • Старожил
  • ****
  • Сообщений: 311
  • химик со стажем
    • Email
EC-метр на базе ардуино
« Ответ #140 : 22 Октября 2017, 21:39:12 »
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.

Оставил медные электроды в растворе. Посмотрю динамику.
Я не планировал в реальной ситуации измерять чаще чем пару раз в день. Думаю, и с этими электродами пару раз за день получится погонять их.

Оффлайн Vad

  • Ветеран
  • *****
  • Сообщений: 6609
  • Мой аватар вырос.. на гидропонике :)
EC-метр на базе ардуино
« Ответ #141 : 22 Октября 2017, 23:14:58 »
вы же не уровень раствора измеряете..
типа  "он есть" или "он кончился"
вы замаетесь калибровать это "произведение лени"
вчерашние 2.5 mS  завтра не будет ими :D

кратковременный, одноразовый результат - типа "работает и показывает ок!" никого не интересует...
представьте  линейку из резинки для трусов :D
вот это  то же самое :D
Форум сгнил.

Оффлайн siv237

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3254
EC-метр на базе ардуино
« Ответ #142 : 23 Октября 2017, 01:37:05 »
Измерять нужно в обе стороны, а не просто переключать частотой. Потому резистор в топку, только прямое включение. Разница в измерениях при положительной и отрицательной фазе есть поляризация и её нужно убирать из расчетов. Без снятия данных АЦП в обеих фазах, поляризацию не исключить. Разница в показаниях плывущая при изменении частоты как раз и вытекает из-за поляризации.
Соберите ПО и схему из моей темы.

Отличный пример, возьмите батарейку 3 вольта и измерьте её контактами электрода. Правильное измеренное значение будет стабильным вне зависимости от полярности её подключения к электродам. А вот значение поляризации сменит знак (в моем ПО).

Моя схема работает уже полгода и результат стабилен (пока корешки в электроды не врастают :)
« Последнее редактирование: 23 Октября 2017, 01:41:13 от siv237 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход

Оффлайн PAA

  • Новичок
  • *
  • Сообщений: 16
    • Email
EC-метр на базе ардуино
« Ответ #143 : 23 Октября 2017, 07:33:09 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.
Вы немного не поняли. Вы обращаете внимание только на величину отклонения измерения (дисперсию) от среднего значения (математического ожидания). Дисперсия это очень важный параметр, но не менее важным является и частота появления ошибки (спектральная плотность). Т.е. допустим при 1кГц отклонения  возникают в среднем на каждом десятом измерении, на 5кГц на каждом третьем, на 10кГц на каждом пятом и т.д.. Тогда из дисперсии и спектральной плотности  ошибок можно установить доверительный интервал и выбрать оптимальную частоту и алгоритм усреднения.
..."+-3 единицы при любом количестве измерений." - это скорее всего похоже на шумы преобразования в АЦП, их можно исключить применив операцию сдвига на 1-2 разряда, можно попытаться их уменьшить хорошим источником питания. Вы чем питаете Ардуину?

Оффлайн serge mat

  • Старожил
  • ****
  • Сообщений: 311
  • химик со стажем
    • Email
EC-метр на базе ардуино
« Ответ #144 : 24 Октября 2017, 19:54:40 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.
Вы немного не поняли. Вы обращаете внимание только на величину отклонения измерения (дисперсию) от среднего значения (математического ожидания). Дисперсия это очень важный параметр, но не менее важным является и частота появления ошибки (спектральная плотность). Т.е. допустим при 1кГц отклонения  возникают в среднем на каждом десятом измерении, на 5кГц на каждом третьем, на 10кГц на каждом пятом и т.д.. Тогда из дисперсии и спектральной плотности  ошибок можно установить доверительный интервал и выбрать оптимальную частоту и алгоритм усреднения.
..."+-3 единицы при любом количестве измерений." - это скорее всего похоже на шумы преобразования в АЦП, их можно исключить применив операцию сдвига на 1-2 разряда, можно попытаться их уменьшить хорошим источником питания. Вы чем питаете Ардуину?
Сейчас ардуина работает от ноутбука, питается по USB.
Как лучше считать частоту появления ошибки? Допустим, я рассчитал среднее отклонение от математического ожидания. Могу теперь я просто сосчитать точки с большим отклонением и поделить на общее число измерений?

Оффлайн PAA

  • Новичок
  • *
  • Сообщений: 16
    • Email
EC-метр на базе ардуино
« Ответ #145 : 24 Октября 2017, 20:47:40 »
Я сейчас тоже взялся за реализацию ЕС метра на Ардуино. Я не видел вашего кода уважаемый serge mat, но вот  производители рекомендуют встроенное АЦП для 328 МК гонять на частотах 50-200 кГц, при этих частотах ошибки преобразования минимальны. Кроме того в качестве ИОН для АЦП использовать внешний AREF (выбирается настройками регистра ADMUX).  В этом же регистре настройки позволяют отбрасывать два младших разряда ADC value которые шумят. Настройки делителя по умолчанию дают коэф. деления 128, что для 16 МГЦ составляет 125 кГц тактовой частоты. Максимальное время преобразования (для полной шкалы)-13 тактов или  13/125*103 = 0.1056ms = 8.13 кГц - это в теории, на практике частота переключения электродов д.б. ещё меньше процентов на 20. Siv и Vad используют настройки регистра ADCSRA так что у них тактовая частота 1мГц, что позволяет получит время преобразования  13 мкс или 77кГц на электродах, но при такой частоте производитель не гарантирует заявленную точность. Кроме того, межэлектродный промежуток в растворе представляет собой параллельно включенную емкость (паразитная) и сопротивление (раствор). Емкость при переключении создает переходные процессы, которые влияют на уровень ошибок. Разработчики рекомендуют первое измерение вообще отбрасывать и не учитывать в обработке, т.е. на каждом электроде производить  в одном такте минимум два измерения, т.е. по сравнению с расчетной, частота должна быть снижена в два раза.  Вот где то так.

Оффлайн Пресвятой_ДжимБим

  • Ветеран
  • *****
  • Сообщений: 817
EC-метр на базе ардуино
« Ответ #146 : 24 Октября 2017, 21:49:51 »
Привет))
Давно не виделись  :)
Смотрю тема разрослась. Не ожидал.
Создавал-то ради прикола. А оно вона как))

Оффлайн serge mat

  • Старожил
  • ****
  • Сообщений: 311
  • химик со стажем
    • Email
EC-метр на базе ардуино
« Ответ #147 : 24 Октября 2017, 22:18:29 »
Измерения производятся следующим кодом:
        PORTB |= B00000100; //   digitalWrite (10,  HIGH);
        m1 [c] = analogRead (ECpin);
        PORTB &= B11110011; //   digitalWrite (10,  LOW);
        PORTB |= B00001000; //   digitalWrite (11,  HIGH);
        m2 [c] = analogRead (ECpin);
        PORTB &= B11110011; //   digitalWrite (11,  LOW);

Для ускорения процесса команды digitalWrite заменены записью в PORTB. Ускорение команд analogRead делается путем изменения трех бит в системных переменных. К сожалению, не смог до конца понять этот механизм. Код взят из интернета и немного переделан для возможности менять скорость непосредственно по ходу измерений. Он состоит из двух участков. Первый заголовочный:
#define FASTADC 1
// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

Второй представляет собой функцию для изменения скорости, которая принимает в качестве аргумента число от 0 до 7, т.е. имеет 8 вариантов скорости. Реально два верхних значения я не использовал, поскольку результаты замеров при той скорости не выглядели нисколько похожими на правду.
void setSpeed (int n)  {
#if FASTADC
if  (n & 4)   cbi(ADCSRA,ADPS2) ;
else    sbi(ADCSRA,ADPS2) ;
if  (n & 2)   cbi(ADCSRA,ADPS1) ;
else    sbi(ADCSRA,ADPS1) ;
if  (n & 1)   cbi(ADCSRA,ADPS0) ;
else    sbi(ADCSRA,ADPS0) ;
#endif
}

Результаты измерений предлагаю посмотреть в виде таблицы Excel. В ней в колонке kHz измеренная частота смены полярности, ЕС - усредненный результат измерений, Summ - контрольная сумма (измерения положительной и отрицательной полярности усредняются независимо и складываются, теоретически должно получится число 1023, отклонения показывают достоверность измерений), ~n~ - число пропущенных (холостых) измерений, т.е. код выполнялся, но результаты не сохранялись. Далее идут усредненные отклонения от среднего значения для определенного количества измерений (d10 означает, что было взято 10 измерений, d320 - 320 измерений.

Оффлайн serge mat

  • Старожил
  • ****
  • Сообщений: 311
  • химик со стажем
    • Email
EC-метр на базе ардуино
« Ответ #148 : 24 Октября 2017, 22:45:35 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Разработчики рекомендуют первое измерение вообще отбрасывать и не учитывать в обработке, т.е. на каждом электроде производить  в одном такте минимум два измерения, т.е. по сравнению с расчетной, частота должна быть снижена в два раза.  Вот где то так.
Не вижу смысла делать по два измерения. Сам факт работы АЦП никак не должен влиять на ситуацию в растворе. Если надо подождать, то лучше использовать команду delayMicroseconds непосредственно перед измерением. Так есть возможность выбрать задержку максимально плавно. Но я не заметил влияния задержки даже на самых высоких частотах.
Я пока не пробовал менять тактовую частоту, видимо это будет следующей темой...  ;)

Оффлайн Vad

  • Ветеран
  • *****
  • Сообщений: 6609
  • Мой аватар вырос.. на гидропонике :)
EC-метр на базе ардуино
« Ответ #149 : 24 Октября 2017, 23:37:03 »
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
..... Vad используют настройки регистра ADCSRA так что у них тактовая частота 1мГц, что позволяет получит время преобразования  13 мкс или 77кГц на электродах, но при такой частоте производитель не гарантирует заявленную точность.
....
не-не..
Вад, использует встроенный ИОН,  измеряет  всего 10 раз.. на каждом из  4х ЕС метрах, медленно и методично, не подгоняя АЦП,  использует всю шкалу, все 10 бит, включая 2 младших, которые у него не шумят "потому что" Вад никуда не спешит.
Ардуина у Вада производит замеры ЕС между делом, между тем.. как обслуживаются HTTP запросы, отдаются страницы, сливается статистика на сервер, между прерыванями по таймеру, для отсчета времени работы многочисленных помп, ламп, нагревателей, отслеживания состояния датчиков уровня, света, влажности....

В общем моя ардуина работает за всех :D
она полностью автономна... если это требуется
« Последнее редактирование: 24 Октября 2017, 23:43:52 от Vad »
Форум сгнил.