Гидропоника => Узлы, агрегаты, установки => Тема начата: Пресвятой_ДжимБим от 28 Июня 2017, 20:17:15

Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 20:17:15
Не выдержала душа поэта.. Не могу я зырить на потуги некоторых гениев.

Итак, готовое простое устройство для измерения электропроводности. С экранчиком, термокомпенсацией  и калибровкой.

Поскольку в качестве электрода все дружно ненавидят вилку шнура, то её и будем использовать :D

Схема подключения:


 (http://forum.ponics.ru/imagehost2/thumbs/5klk.jpg) (http://forum.ponics.ru/imagehost2/?v=5klk.jpg)

Номиналы и запчасти:
R1 = 510 Ом
R2 = 510 Ом
R3 = 4,7 Ком
S1 - обычная кнопка без фиксатора.
Ардуино Про Мини.
Экран с I2C шиной.
Датчик DS18b20.
Провода всякие  :)
Шнур с американской вилкой с дырочками на электродах(бывают и без дырочек, и они сделаны из крутой нержавки!).

Код:
Код: Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
#include <OneWire.h> //данная библиотека отредактирована для подключения температурного датчика ds18b20 напрямую(без резисторов). Ссылка на скачивание: [url]https://yadi.sk/d/osXYOMSI3KEThp[/url]
#include <DallasTemperature.h>
#include <EEPROM.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2); //У меня адрес экрана на кв.шине 0x3f, но бывает еще и 0x27, т.е. строка будет выглядеть так 'LiquidCrystal_I2C lcd(0x27,16,2);'

int button = 5;// пин кнопки
int buttonState = 0;

int R1 = 510; // R1=510 ом
int R2 = 510;// R2=510 ом
int Ra = 25; //Даже не спрашивайте! Rа=V/I(замеряйте, если хотите, сами)
int ECPin = A0;
float TemperatureCoef = 0.019;//темп.коэфф. ~ 2% на градус.
float K = 1.88;//константа первоначальной работы(для американской вилки с дырочками)

float CalibrationEC=2.19; // Здесь Вы задаете EC калибровочного раствора. У меня вода равна 0.19. плюс 1гр соли на 1 литр воды =2ЕС, итого = 2.19

//***********************Остальные переменные**********************************************//

int i = 0;
int j = 0;
int buf[140],temp;
unsigned long int avgValue;


float Temperature=10;
float EC = 0;
float EC25 = 0;
int ppm = 0;
 
 
float raw = 0;
float Vin = 5;
float Vdrop = 0;
float Rc = 0;

//**************************Переменные для Калибровки ******************************************//
float TemperatureFinish=0;
float TemperatureStart=0;
float Kt=0;
 
 
//*********************** Настройки eeprom ******************//
int value;
int addresCalibration=0;


float PPMconversion=0.5;

#define ONE_WIRE_BUS 9          // Сигнальный провод темп. датчика на 9 пине
const int TempProbePossitive =8;  // Плюсовой провод темп.датчика на пине 8
const int TempProbeNegative=7;    //Минусовой провод темп.датчика на пине 7

OneWire oneWire(ONE_WIRE_BUS);// Настраиваем шину
DallasTemperature sensors(&oneWire);// 



void setup() {
               
  Serial.begin(9600);
 
  ADCSRA &= B11111000; //Ускоряем АЦП до 1мГц
  ADCSRA |= B00000100; //-------------//---------------
 
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
 
  pinMode(button, INPUT);
  pinMode(ECPin, INPUT);
 
  pinMode(TempProbeNegative , OUTPUT );
  digitalWrite(TempProbeNegative , LOW );
  pinMode(TempProbePossitive , OUTPUT );
  digitalWrite(TempProbePossitive , HIGH );
 
  delay(100);// даем сенсору время на активацию
  sensors.begin();
  delay(100);
 
  R1=(R1+Ra);

  value = EEPROM.read(addresCalibration);
  if (value <=254) K=value*0.02;
  lcd.init();
  lcd.backlight();
}


 
void loop() {
GetEC();
Calibration();
}

void GetEC(){
 
  sensors.requestTemperatures();// Запрос от датчика температуры
  Temperature=sensors.getTempCByIndex(0); //Запись значений в переменные
 
  for(int i=0;i<140;i++) //берем 140 значений с АЦП
    {
  PORTD = B00000100;
  delayMicroseconds(83); // 83 микросекунды+ускоренный analoread() в течении 17 микросекунд=100микросекунд, что означает 10кГц работы устройства.         
  raw = analogRead(ECPin);
  buf[i] = raw;
  PORTD = B00001000;
  delayMicroseconds(100); //Противофаза, дабы исключить поляризацию.
 
    }
    PORTD = B00000000;
    for(int i=0;i<130;i++)                           
    {
      for(int j=i+1;j<140;j++)
      {
        if(buf[i]>buf[j])
        {
          temp=buf[i];
          buf[i]=buf[j];
          buf[j]=temp;
        }
      }
    }
    avgValue=0;
    for(int i=20;i<100;i++) // 80 средних значений
    avgValue+=buf[i];
    float ECValue=(float)avgValue/80;
   
    Vdrop = (Vin*ECValue)/1024.0; // перевод аналог.значений в милливольты
    Rc = (Vdrop*R1)/(Vin-Vdrop); //Вычисляем сопротивление воды
    Rc = Rc-Ra-R2; // вычитаем лишнее
    EC = 1000/(Rc*K); //получение чистого ЕС
 
 
//*************Компенсация температуры********************//
   EC25  =  EC/ (1+ TemperatureCoef*(Temperature-25.0));
   ppm = (EC25)*(PPMconversion*1000); // Переводим получившийся EC в ppm@0,5

//******************Вывод на Экран************************//   
  lcd.setCursor(0,0);
   lcd.print("Arduino EC-PPM   ");
   lcd.setCursor(0,1);
   lcd.print("EC:               ");
   lcd.setCursor(3,1);
    lcd.print(EC25);
   lcd.setCursor(9,1);
    lcd.print(Temperature);
    lcd.print("'C");
//*****************Информация для отладки******************//
Serial.print("EC: ");
Serial.print(EC);
Serial.print(" raw: ");
Serial.print(raw);
Serial.print(" Rc: ");
Serial.print(Rc);
Serial.print(" EC: ");
Serial.print(EC25);
Serial.print(" Simens  ");
Serial.print(ppm);
Serial.print(" ppm  ");
Serial.print(Temperature);
Serial.println(" *C ");
 
//}
}

void Calibration(){

buttonState = digitalRead(button);
if(buttonState!=HIGH) return;
 
lcd.setCursor(0,0);
lcd.print("Calibrating         ");
lcd.setCursor(0,1);
lcd.print("EC:                 ");
lcd.setCursor(3,1);
lcd.print(CalibrationEC); 
 
sensors.requestTemperatures();
TemperatureStart=sensors.getTempCByIndex(0);

i = 0;
j= 0;
 
for(int i=0;i<140;i++)
    {
  PORTD = B00000100;
  delayMicroseconds(83); // 83 микросекунды+ускоренный analoread() в течении 17 микросекунд=100микросекунд, что означает 10кГц работы устройства.         
  raw = analogRead(ECPin);
  buf[i] = raw;
  PORTD = B00001000;
  delayMicroseconds(100); //Противофаза, дабы исключить поляризацию.
 
    }
    PORTD = B00000000;
   
    for(int i=0;i<130;i++)                            //Сортируем аналоговые значения от меньшего к бОльшему.
    {
      for(int j=i+1;j<140;j++)
      {
        if(buf[i]>buf[j])
        {
          temp=buf[i];
          buf[i]=buf[j];
          buf[j]=temp;
        }
      }
    }
    avgValue=0;
    for(int i=20;i<100;i++)
    avgValue+=buf[i];
    float ECValue=(float)avgValue/80;
           
sensors.requestTemperatures();
TemperatureFinish=sensors.getTempCByIndex(0);
 
 
//*************Компенсация температуры********************//
EC = CalibrationEC*(1+(TemperatureCoef*(TemperatureFinish-25.0))) ;
 
//***************** Вычисление Сопротивления Калибровочного раствора **************************//
Vdrop= (((Vin)*(ECValue))/1024.0);
Rc=(Vdrop*R1)/(Vin-Vdrop);
Rc=Rc-Ra-R2; // вычитаем лишнее
Kt= 1000/(Rc*EC);
 
 
                    if (TemperatureStart==TemperatureFinish){
                      Serial.println("   Results are Trustworthy");
                      Serial.print("Calibration Fluid EC: "); 
                      Serial.print(CalibrationEC);
                      Serial.print(" S  ");  //add units here
                      Serial.print("Cell Constant K");
                      Serial.print(K);
                     
                     
                      lcd.setCursor(0,0);
                      lcd.print("GoodResults         ");
                     
                     
                      lcd.setCursor(0,1);
                      lcd.print("EC:                    ");
                      lcd.setCursor(3,1);
                      lcd.print(CalibrationEC);
                      lcd.setCursor(9,1);
                      lcd.print("K:");
                      lcd.setCursor(11,1);
                      lcd.print(Kt);
                     
                              while (1) {
                             
                             
                              if (buttonState==HIGH){
                               
                               
                              K=Kt; //записываем новую константу
                             
                           //********Запись нового значения в EEPROM**********//   
                            value=K/0.02;
                            EEPROM.write(addresCalibration, value);
 
 
                             
                              lcd.setCursor(0,0);
                              lcd.print("Saved Calibration        ");
                                                           
                              lcd.setCursor(0,1);
                              lcd.print("K:                        ");
                              lcd.setCursor(3,1);
                              lcd.print(Kt);
                              delay(5000);
                              return;
                              }
                             
                             
                             
                               
                              }
                     
                     
                      }
                       
                              else{
                               Serial.println("   Error Wait For Temperature To settle");
                                       
                                        lcd.setCursor(0,0);
                                        lcd.print("Bad Results         ");
                                        delay(5000);
                                        Calibration();
                                       
                            }
 
}


Электрод можно использовать любой двухконтактный.(Любой!!1111)

Калибруется просто. В коде находите строчку "float CalibrationEC=", и после знака "равно" прописываете цифрами ваш калибровочный раствор(например: 1.14, 1.38 или 2), далее после заливки скетча в ардуину нажимаете большую красную кнопку(предварительно макнув электрод с датчиком температуры в калибровочный раствор), и всё.
При надписи "Bad result" нажимаем кнопку повторно, и так до тех пор, пока экранчик Вас не поздравит с тем, что все прошло удачно и записалось в eeprom.

Вот.
И теперь живите с этим как хотите.
 :P

P.s. Тех кого мучает вопрос телеметрии - флаг в руки. Делается все элементарно на уровне 5-го класса среднеобразовательной школы.
P.p.s. Устройство ваще никак не претендует на суперточность. Для домашней гидропоники. Не более.
Название: EC-метр на базе ардуино
Отправлено: Borodach1 от 28 Июня 2017, 20:54:48
Схема подключения порадовала.)))
Интересно,  сколько человек воткнёт вилку в розетку?  ;)
))))))))))))))))))))))))))
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:03:58
Ай мля. Забыл питание к экрану пририсовать.
Да и пофиг. Кто знает - разберётся.
А чё со схемой не так? :D ;D ;D
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 21:16:21
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Схема подключения порадовала.)))
Интересно,  сколько человек воткнёт вилку в розетку?  ;)
))))))))))))))))))))))))))
спецом плоская вилка!
чеб не втыкнули  :D

Пресвятой_ДжимБим, наведи порядок с переменными, нельзя так жестоко разбрасываться памятью..
всю статику загоняй в #define (номера кнопок, пинов, коэффициенты,  резисторы )
какого черта он будет всю жизьнь держать в голове  то, что требовалось 1 раз при старте.. и то для удобства писателю! ;)

это что за переменные?
int i = 0;
int j = 0;
они нигде не используются

да и вообще, все временные переменные объявляй внутри функции...
меньше путаницы будет..

Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:22:27
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Схема подключения порадовала.)))
Интересно,  сколько человек воткнёт вилку в розетку?  ;)
))))))))))))))))))))))))))
спецом плоская вилка!
чеб не втыкнули  :D

Пресвятой_ДжимБим, наведи порядок с переменными, нельзя так жестоко разбрасываться памятью..
всю статику загоняй в #define (номера кнопок, пинов, коэффициенты,  резисторы )
какого черта он будет всю жизьнь держать в голове  то, что требовалось 1 раз при старте.. и то для удобства писателю! ;)

это что за переменные?
int i = 0;
int j = 0;
они нигде не используются

да и вообще, все временные переменные объявляй внутри функции...
меньше путаницы будет..
Переменные i и j используются. В операторе for, и далее.
А код такой сделал, Штобе чайникам понятнее было.
Да и не интересен мне данный код в целом.. это просто работающий пример.
Эдакая фиговина с меандром в 10кГц.
Просто Сив устал уже это устройство рожать. Я в роли акушера..
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:25:44
Ой, да. i и j объявлены внутри for))))
Исправлю))
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 21:31:49
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Исправлю))

Приучай чайников к основным правилам..
ведь чайники до сих пор не знают очень много  ;)
должны начинать учиться *???*
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 21:34:28
int buttonState = 0;

обьявлена как целая, а используется как булева
обьяви ее boolean
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:39:36
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Исправлю))

Приучай чайников к основным правилам..
ведь чайники до сих пор не знают очень много  ;)
должны начинать учиться *???*
Да по большому счету я и сам чайник ещё.  Ничо. Учусь потихоньку.
Устройство работает, как ни странно. И даже показывает что-то  :D
Так-что обычному пользователю только останется повторить схему и залить скетч в дуину.
Но опять же.
И даже этот вариант я читаю микроскопом для забивания гвоздей.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:41:07
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
int buttonState = 0;

обьявлена как целая, а используется как булева
обьяви ее boolean
Оу.. точно. На автомате воткнул. Можно было и без этой переменной обойтись..
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 21:55:58
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
И даже этот вариант я читаю микроскопом для забивания гвоздей.
кто-то решит к этому  микроскопу ручку деревянную приделать, обточить до  удобной формы, и тут..  неожиданно закончится память :D
она всегда неожиданно заканчивается :D
особенно когда вот так, int buf[140],temp; "глобально" выкинули 140 байт  ;)
Название: EC-метр на базе ардуино
Отправлено: allex_step от 28 Июня 2017, 21:58:02
а как ЭТО интегрировать в Mega2560 для добавления в автоматизацию функции контроля ЕС? (а дальше - регулирование)
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 21:59:53
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
И даже этот вариант я читаю микроскопом для забивания гвоздей.
кто-то решит к этому  микроскопу ручку деревянную приделать, обточить до  удобной формы, и тут..  неожиданно закончится память :D
она всегда неожиданно заканчивается :D
особенно когда вот так, int buf[140],temp; "глобально" выкинули 140 байт  ;)
А 140 значений - это жЫрный троллинг ващет))
Кому нужно 140 значений?))) Хватило бы и 10-ти.
Но так веселее. Этож микроскоп и гвозди.
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 22:00:50
лучше никак, это  стендалон версия..
гальванически не развязано..  по сути  игрушечно-настольный вариант *???*
Название: EC-метр на базе ардуино
Отправлено: ...Andrew... от 28 Июня 2017, 22:03:11
А какая повторяемость показаний получилась?
raw-замеров и очищенных с помощью медианного фильтра?
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 22:03:18
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
А 140 значений - это жЫрный троллинг ващет))
Кому нужно 140 значений?))) Хватило бы и 10-ти.
Но так веселее.
троллинг обьявлять 140 байт темп в глобальных переменных  ))
объяви его внутри функции, сразу за  void
пока функция не исполняется, память свободна..
как только  попадем в функцию  память будет выделена, а после  выхода освобождена..

всего то *???*
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 22:03:59
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
а как ЭТО интегрировать в Mega2560 для добавления в автоматизацию функции контроля ЕС? (а дальше - регулирование)
Никак. Это для уно, про мини, микро.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 22:06:01
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
А 140 значений - это жЫрный троллинг ващет))
Кому нужно 140 значений?))) Хватило бы и 10-ти.
Но так веселее.
троллинг обьявлять 140 байт темп в глобальных переменных  ))
объяви его внутри функции, сразу за  void
пока функция не исполняется, память свободна..
как только  попадем в функцию  память будет выделена, а после  выхода освобождена..

всего то *???*
Тоже верно. Чет я не додумался)) Перепишу, да.
Название: EC-метр на базе ардуино
Отправлено: allex_step от 28 Июня 2017, 22:07:52
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
это  стендалон версия..
гальванически не развязано..  по сути  игрушечно-настольный вариант *???*
пичалько... начит бум смареть в другой бок
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 22:10:58
и так ли нужен медианный фильтер? :-\
среднеарифметического недостаточно?
дисперсия большая?
Название: EC-метр на базе ардуино
Отправлено: ...Andrew... от 28 Июня 2017, 22:14:02
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
и так ли нужен медианный фильтер? :-\
среднеарифметического недостаточно?
дисперсия большая?
Я как-то делал примерно то же самое, вот такая картина получилась (верх-raw сигнал, посредине-медианный фильтр из 10 значений, снизу-среднеарифметический из 10 значений)
(http://img10.lostpic.net/2016/08/04/bda78e7d8347923a2e0f98749fc2a111.png)
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 22:15:31
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
и так ли нужен медианный фильтер? :-\
среднеарифметического недостаточно?
дисперсия большая?
Я от вилки шнура ожидал большей дисперсии, поэтому подстраховался.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 22:16:19
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
и так ли нужен медианный фильтер? :-\
среднеарифметического недостаточно?
дисперсия большая?
Я как-то делал примерно то же самое, вот такая картина получилась (верх-raw сигнал, посредине-медианный фильтр из 10 значений, снизу-среднеарифметический из 10 значений)
(http://img10.lostpic.net/2016/08/04/bda78e7d8347923a2e0f98749fc2a111.png)
Спасибо за картинко! Очень наглядно.
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 22:17:20
вот для чего нужна синусоида и гальваническая развязка ;)
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 28 Июня 2017, 22:19:19
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
вот для чего нужна синусоида и гальваническая развязка ;)
Можно развязать саму ардуину, и использовать ее только в качестве ЕС. Но это вообще за гранью микроскопов.
Название: EC-метр на базе ардуино
Отправлено: Vad от 28 Июня 2017, 22:30:45
на переменке   получается вот такая дисперсия :-\
если это вообще можно дисперсией назвать
на графике одни сутки
(http://grow.wxinfo.ru/vad/EC_mag.png)
Название: EC-метр на базе ардуино
Отправлено: gena1 от 29 Июня 2017, 16:22:58
>ускоренный analoread() в течении 17 микросекунд
А как это рассчитано ? Чисто теоретически ?
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 16:47:29
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
>ускоренный analoread() в течении 17 микросекунд
А как это рассчитано ? Чисто теоретически ?
Вообще-то есть масса скетчей для замеров длительности выполнения команд.
Название: EC-метр на базе ардуино
Отправлено: gena1 от 29 Июня 2017, 17:34:21
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
>ускоренный analoread() в течении 17 микросекунд
А как это рассчитано ? Чисто теоретически ?
Вообще-то есть масса скетчей для замеров длительности выполнения команд.
А , да , что-то я протупил, не подумал о снятии разницы до и после ) . Почему-то асм вспомнился с расчётом времени на каждый шаг ))
Название: EC-метр на базе ардуино
Отправлено: Cyclamech от 29 Июня 2017, 19:45:02
Критика по коду нада? Или нет планов исправлять? Ведь какбэ работает - и ладно!
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 20:09:40
Нет пределов совершенству!
Этот код лишь отправная точка. Дальше можно нарастить все, что угодно. И оптимизировать как угодно.
Но явные ошибки готов выслушать.
Название: EC-метр на базе ардуино
Отправлено: Cyclamech от 29 Июня 2017, 20:22:58
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Но явные ошибки готов выслушать.
Не могу сказать, явные ли это ошибки ли нет. Для кого как. Попробуем на примере.
Предупрежу: для меня нет разницы между функцией и процедурой, я использую единое понятие - метод. Просто метод может не возвращать ничего (void-метод кагбэ становится процедурой).
Я читаю у Вас: getEC(). Но никакого гетЕС (дай мне значение ЕС!) мы не видим, ибо этот метод возвращает void. *???*
Читаем код метода и встречаем:
Цитировать
EC = 1000/(Rc*K); //получение чистого ЕС
 
 
//*************Компенсация температуры********************//
   EC25  =  EC/ (1+ TemperatureCoef*(Temperature-25.0));
   ppm = (EC25)*(PPMconversion*1000); // Переводим получившийся EC в ppm@0,5

//******************Вывод на Экран************************//   
  lcd.setCursor(0,0);
Да, заметно: Вы сами чувствовали, что выходит каша и использовали звёздочки. *crazy*
Надо было просто вернуть "чистое ЕС". Сделать метод терпокомпенсации и метод конвертации ЕС в ппм. Вывод на экран - вообще отдельная тема, м.б., библиотека.

Метод конвертации лучше сразу сделать "универсальным": если язык допускает перегрузку методов, то сделать один метод без параметров, а второй с параметром (коэффициент пересчёта). Из метода без параметра просто вызвать перегруженный, передав параметром константу, в которой "зашито" значение коэффициента перевода по умолчанию - 500. Если перегрузка методов недопустима, сделать 2 метода.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 20:40:10
Насчет каши категорически не согласен. Всё идёт своим чередом.
Возможно неверно откомментировал. Надо было не "Чистый ЕС", а "Первичный ЕС" назвать.
Конвертацию в ppm изначально делать не хотел. Не особо он и нужен. Но сделал. Без вывода на экран(но с выводом в дебаг).
Название: EC-метр на базе ардуино
Отправлено: Cyclamech от 29 Июня 2017, 20:42:58
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Насчет каши категорически не согласен.
Как угодно. *???*
Но звёздочки всё равно легко "палят" с потрохами код, стремящийся в кашу. Впрочем, думаю понятно, дело совсем не в звёздочках, а в мысли кодера.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 21:02:14
Смишной цикламех))) подержи в руках ардуину-то)
Название: EC-метр на базе ардуино
Отправлено: Cyclamech от 29 Июня 2017, 21:17:30
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Смишной цикламех))) подержи в руках ардуину-то)
Ммм… Эта "кинестетика" точно позволит мне грамотнее писать код?
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 21:24:21
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Смишной цикламех))) подержи в руках ардуину-то)
Ммм… Эта "кинестетика" точно позволит мне грамотнее писать код?
Тебе не дано.. *???*
Название: EC-метр на базе ардуино
Отправлено: vladindre от 29 Июня 2017, 21:27:21
Цитировать
масса скетчей для замеров длительности выполнения команд
Хм. Вроде как тривиальный отладчик типа AVR Studio легко указует в боковой панели время выполнения любого куска программы. Хоть в микросекундах , хоть в тактах.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 21:34:32
Отредактировал код с учетом справедливых замечаний Vad'a. Действительно немалая экономия памяти получается. В define переводить не стал, т.к. теряется читаемость кода.

ВСЁ! Больше редакций не будет.

Есть желание - делайте, а нет, то х*й с ним *crazy*

 (http://forum.ponics.ru/imagehost2/thumbs/5ksk.jpg) (http://forum.ponics.ru/imagehost2/?v=5ksk.jpg)

Код: Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
#include <OneWire.h> //данная библиотека отредактирована для подключения температурного датчика ds18b20 напрямую(без резисторов). Ссылка на скачивание: [url]https://yadi.sk/d/osXYOMSI3KEThp[/url]
#include <DallasTemperature.h>
#include <EEPROM.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2); //У меня адрес экрана на кв.шине 0x3f, но бывает еще и 0x27, т.е. строка будет выглядеть так 'LiquidCrystal_I2C lcd(0x27,16,2);'

int button = 5;// пин кнопки
boolean buttonState = 0;

int R1 = 510; // R1=510 ом
int R2 = 510;// R2=510 ом
int Ra = 25; //Даже не спрашивайте! Это сопротивление Output цифрового пина на другой цифровой пин, который в состоянии LOW. Rа=V/I(замеряйте, если хотите, сами)
int ECPin = A0;
float TemperatureCoef = 0.019;//темп.коэфф. ~ 2% на градус.
float K = 1.88;//константа первоначальной работы(для американской вилки с дырочками)

float CalibrationEC=2.19; // Здесь Вы задаете EC калибровочного раствора. У меня вода равна 0.19. плюс 1гр соли на 1 литр воды =2ЕС, итого = 2.19

//***********************Остальные переменные**********************************************//

unsigned long int avgValue;


float Temperature=10;
float EC = 0;
float EC25 = 0;
int ppm = 0;
 
 
float raw = 0;
float Vin = 5;
float Vdrop = 0;
float Rc = 0;

//**************************Переменные для Калибровки ******************************************//
float TemperatureFinish=0;
float TemperatureStart=0;
float Kt=0;
 
 
//*********************** Настройки eeprom ******************//
int value;
int addresCalibration=0;


float PPMconversion=0.5;

#define ONE_WIRE_BUS 9          // Сигнальный провод темп. датчика на 9 пине
const int TempProbePossitive =8;  // Плюсовой провод темп.датчика на пине 8
const int TempProbeNegative=7;    //Минусовой провод темп.датчика на пине 7

OneWire oneWire(ONE_WIRE_BUS);// Настраиваем шину
DallasTemperature sensors(&oneWire);// 



void setup() {
               
  Serial.begin(9600);
 
  ADCSRA &= B11111000; //Ускоряем АЦП до 1мГц
  ADCSRA |= B00000100; //-------------//---------------
 
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
 
  pinMode(button, INPUT);
  pinMode(ECPin, INPUT);
 
  pinMode(TempProbeNegative , OUTPUT );
  digitalWrite(TempProbeNegative , LOW );
  pinMode(TempProbePossitive , OUTPUT );
  digitalWrite(TempProbePossitive , HIGH );
 
  delay(100);// даем сенсору время на активацию
  sensors.begin();
  delay(100);
 
  R1=(R1+Ra);

  value = EEPROM.read(addresCalibration);
  if (value <=254) K=value*0.02;
  lcd.init();
  lcd.backlight();
}


 
void loop() {
GetEC();
Calibration();
}

void GetEC(){
  int buf[140],temp;
  sensors.requestTemperatures();// Запрос от датчика температуры
  Temperature=sensors.getTempCByIndex(0); //Запись значений в переменные
 
  for(int i=0;i<140;i++) //берем 140 значений с АЦП
    {
  PORTD = B00000100;
  delayMicroseconds(83); // 83 микросекунды+ускоренный analoread() в течении 17 микросекунд=100микросекунд, что означает 10кГц работы устройства.         
  raw = analogRead(ECPin);
  buf[i] = raw;
  PORTD = B00001000;
  delayMicroseconds(100); //Противофаза, дабы исключить поляризацию.
 
    }
    PORTD = B00000000;
    for(int i=0;i<130;i++)                           
    {
      for(int j=i+1;j<140;j++)
      {
        if(buf[i]>buf[j])
        {
          temp=buf[i];
          buf[i]=buf[j];
          buf[j]=temp;
        }
      }
    }
    avgValue=0;
    for(int i=20;i<100;i++) // 80 средних значений
    avgValue+=buf[i];
    float ECValue=(float)avgValue/80;
   
    Vdrop = (Vin*ECValue)/1024.0; // перевод аналог.значений в милливольты
    Rc = (Vdrop*R1)/(Vin-Vdrop); //Вычисляем сопротивление воды
    Rc = Rc-Ra-R2; // вычитаем лишнее
    EC = 1000/(Rc*K); //получение чистого ЕС
 
 
//*************Компенсация температуры********************//
   EC25  =  EC/ (1+ TemperatureCoef*(Temperature-25.0));
   ppm = (EC25)*(PPMconversion*1000); // Переводим получившийся EC в ppm@0,5

//******************Вывод на Экран************************//   
  lcd.setCursor(0,0);
   lcd.print("Arduino EC-PPM   ");
   lcd.setCursor(0,1);
   lcd.print("EC:               ");
   lcd.setCursor(3,1);
    lcd.print(EC25);
   lcd.setCursor(9,1);
    lcd.print(Temperature);
    lcd.print("'C");
//*****************Информация для отладки******************//
Serial.print("EC: ");
Serial.print(EC);
Serial.print(" raw: ");
Serial.print(raw);
Serial.print(" Rc: ");
Serial.print(Rc);
Serial.print(" EC: ");
Serial.print(EC25);
Serial.print(" Simens  ");
Serial.print(ppm);
Serial.print(" ppm  ");
Serial.print(Temperature);
Serial.println(" *C ");
 
//}
}

void Calibration(){
int buf[140],temp;
buttonState = digitalRead(button);
if(buttonState!=HIGH) return;
 
lcd.setCursor(0,0);
lcd.print("Calibrating         ");
lcd.setCursor(0,1);
lcd.print("EC:                 ");
lcd.setCursor(3,1);
lcd.print(CalibrationEC); 
 
sensors.requestTemperatures();
TemperatureStart=sensors.getTempCByIndex(0);

 
//************Estimates Resistance of Liquid ****************//
            for(int i=0;i<140;i++)
    {
  PORTD = B00000100;
  delayMicroseconds(83); // 83 микросекунды+ускоренный analoread() в течении 17 микросекунд=100микросекунд, что означает 10кГц работы устройства.         
  raw = analogRead(ECPin);
  buf[i] = raw;
  PORTD = B00001000;
  delayMicroseconds(100); //Противофаза, дабы исключить поляризацию.
 
    }
    PORTD = B00000000;
   
    for(int i=0;i<130;i++)                            //Сортируем аналоговые значения от меньшего к бОльшему.
    {
      for(int j=i+1;j<140;j++)
      {
        if(buf[i]>buf[j])
        {
          temp=buf[i];
          buf[i]=buf[j];
          buf[j]=temp;
        }
      }
    }
    avgValue=0;
    for(int i=20;i<100;i++)
    avgValue+=buf[i];
    float ECValue=(float)avgValue/80;
           
sensors.requestTemperatures();
TemperatureFinish=sensors.getTempCByIndex(0);
 
 
//*************Компенсация температуры********************//
EC = CalibrationEC*(1+(TemperatureCoef*(TemperatureFinish-25.0))) ;
 
//***************** Вычисление Сопротивления Калибровочного раствора **************************//
Vdrop= (((Vin)*(ECValue))/1024.0);
Rc=(Vdrop*R1)/(Vin-Vdrop);
Rc=Rc-Ra-R2; // вычитаем лишнее
Kt= 1000/(Rc*EC);
 
 
                    if (TemperatureStart==TemperatureFinish){
                      Serial.println("   Results are Trustworthy");
                      Serial.print("Calibration Fluid EC: "); 
                      Serial.print(CalibrationEC);
                      Serial.print(" S  ");  //add units here
                      Serial.print("Cell Constant K");
                      Serial.print(K);
                     
                     
                      lcd.setCursor(0,0);
                      lcd.print("GoodResults         ");
                     
                     
                      lcd.setCursor(0,1);
                      lcd.print("EC:                    ");
                      lcd.setCursor(3,1);
                      lcd.print(CalibrationEC);
                      lcd.setCursor(9,1);
                      lcd.print("K:");
                      lcd.setCursor(11,1);
                      lcd.print(Kt);
                     
                              while (1) {
                             
                             
                              if (buttonState==HIGH){
                               
                               
                              K=Kt; //записываем новую константу
                             
                           //********Запись нового значения в EEPROM**********//   
                            value=K/0.02;
                            EEPROM.write(addresCalibration, value);
 
 
                             
                              lcd.setCursor(0,0);
                              lcd.print("Saved Calibration        ");
                                                           
                              lcd.setCursor(0,1);
                              lcd.print("K:                        ");
                              lcd.setCursor(3,1);
                              lcd.print(Kt);
                              delay(5000);
                              return;
                              }
                             
                             
                             
                               
                              }
                     
                     
                      }
                       
                              else{
                               Serial.println("   Error Wait For Temperature To settle");
                                       
                                        lcd.setCursor(0,0);
                                        lcd.print("Bad Results         ");
                                        delay(5000);
                                        Calibration();
                                       
                            }
 
}
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 21:36:53
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать
масса скетчей для замеров длительности выполнения команд
Хм. Вроде как тривиальный отладчик типа AVR Studio легко указует в боковой панели время выполнения любого куска программы. Хоть в микросекундах , хоть в тактах.
есть) Вот тока я не пользуюсь AVR Studio))
Обычный IDE.
Ради такой фигни ставить AVR Studio считаю нецелесообразным. Код писался на коленке. Аж целый вечер)))
Название: EC-метр на базе ардуино
Отправлено: vladindre от 29 Июня 2017, 21:47:40
Цитировать
Ради такой фигни ставить AVR Studio считаю нецелесообразным
Ну если не занимаетесь постоянно. Хотя весчь очень сильная.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 21:53:50
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать
Ради такой фигни ставить AVR Studio считаю нецелесообразным
Ну если не занимаетесь постоянно. Хотя весчь очень сильная.
Я знаю. Вещь сильная. Изучал мельком.
Но вот не горю я ардуиной. И вообще в последнее время абстрагировался от цифровой техники. Разве только смартфоном и пользуюсь.
Название: EC-метр на базе ардуино
Отправлено: vladindre от 29 Июня 2017, 22:20:55
Цитировать
Разве только смартфоном и пользуюсь.
Страшная вещь. Сверление мозга электромагнитным излучением. Держусь от всего этого за километр.
На работе пытались всучить для работы забесплатно. Отбрыкался таки. Говорю здоровье дороже. Сами сверлитесь.
Посчитайте плотность потока ЭМП в районе мозга. Результат сильно неприятно удивит.
Название: EC-метр на базе ардуино
Отправлено: allex_step от 29 Июня 2017, 22:30:28
зависит от частоты-активности пользования...


или уходим в холивар?: дышать - вредно, кушать - вредно, да и жить вредно - от этого умирают...
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 22:39:01
А вчем плох смартфон? В интернете полазить, книжку почитать, музычку послушать. Да и по работе..
А поговорить - через блютуз-наушники, или громкую связь в машине.
Этож телефон сотовый..
Название: EC-метр на базе ардуино
Отправлено: allex_step от 29 Июня 2017, 22:50:27
коллега к тому что носить его нужно в свинцовом чумадане, а не в кармане - ибо либо близко к сердцу, либо близко к... междуног


я помню примерно в 2000г. когда еще носил такой
(http://i.piccy.info/i9/e2ac921670123c148480fc17a3e04510/1498766734/35618/1149857/439687_500.jpg) (http://piccy.info/view3/11332888/2c63f1b2e28ce7a46260c21e3bd30eae/)(http://i.piccy.info/a3/2017-06-29-20-05/i9-11332888/280x500-r/i.gif) (http://i.piccy.info/a3c/2017-06-29-20-05/i9-11332888/280x500-r)
то один дохтур рекомендовал носить как минимум в заднем кармане штанов - хоть ближе к >|<опе, а не к бэйцам...
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 29 Июня 2017, 23:12:32
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
коллега к тому что носить его нужно в свинцовом чумадане, а не в кармане - ибо либо близко к сердцу, либо близко к... междуног


я помню примерно в 2000г. когда еще носил такой
(http://i.piccy.info/i9/e2ac921670123c148480fc17a3e04510/1498766734/35618/1149857/439687_500.jpg) (http://piccy.info/view3/11332888/2c63f1b2e28ce7a46260c21e3bd30eae/)(http://i.piccy.info/a3/2017-06-29-20-05/i9-11332888/280x500-r/i.gif) (http://i.piccy.info/a3c/2017-06-29-20-05/i9-11332888/280x500-r)
то один дохтур рекомендовал носить как минимум в заднем кармане штанов - хоть ближе к >|<опе, а не к бэйцам...

У меня такой же был)) в 99году.
Название: EC-метр на базе ардуино
Отправлено: Vad от 30 Июня 2017, 01:04:03
Цитировать
Я читаю у Вас: getEC(). Но никакого гетЕС
:) есть..  я вижу, есть! :D

Вообще, это не критика, это до столба решено было доепариться :D

други, какая разница как назвать функцию или процедуру, метод.. да хоть "сущностью" назовите :D
Оно может и void возвращать, не обязано оно что-то возвращать и точка.
В данном случае, правильно назвать "подпрограмма",  процессе работы "поковырялась в памяти" и этого достаточно.
результат сложила в укромном месте :D
кто знает где он - найдет и возьмет ;)


Цитировать
Вывод на экран - вообще отдельная тема, м.б., библиотека.
там и так библиотека :D куда еще более ее  библиотечить? ;D



Название: EC-метр на базе ардуино
Отправлено: Vad от 30 Июня 2017, 01:13:52
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Отредактировал код с учетом справедливых замечаний Vad'a. Действительно немалая экономия памяти получается. В define переводить не стал, т.к. теряется читаемость кода.
пашему?
все остается как есть, только, (очень грубо) не имя переменной и ее значение используется  а "псевдоним числа", (число  "Пи" например... - классический  дефайн)

а компилятор, при сборке все псевдонимы подменит на значения... и все..
так что не стесняйся...  ;)

 

Название: EC-метр на базе ардуино
Отправлено: Cyclamech от 30 Июня 2017, 01:19:32
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вообще, это не критика, это до столба решено было доепариться :D
Неправда: я "честно" читал код сверху вниз и просто встретил звёздочки… *???*
Название: EC-метр на базе ардуино
Отправлено: Vad от 30 Июня 2017, 01:48:11
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вообще, это не критика, это до столба решено было доепариться :D
Неправда: я "честно" читал код сверху вниз и просто встретил звёздочки… *???*
и ?
чем октоторпы, минусы или равно лучше них :D
_______________________________
______ я так люблю делать _______
_______________________________
тут тело  сущности
=================================  < - это конец  сущности

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

это  же  дело вкуса..

кто-то переменные называет
Это_коэффициент_температурной_коррекции_сенсора = 1
Это_значение_временной_переменной_содержащей_предыдущее_значение_сенсора = 5

а потом перемножает :D
Это_результат_перемножения_коэффициента_температурной_коррекции_сенсора_и_значения_временной_переменной_содержащей_редыдущее_значение_сенсора = Это_коэффициент_температурной_коррекции_сенсора * Это_значение_временной_переменной_содержащей_предыдущее_значение_сенсора

Вот это КАША! ;D
а звездочки...  ну  звездочки ))
коменты же

Название: EC-метр на базе ардуино
Отправлено: vladindre от 30 Июня 2017, 04:14:23
Цитировать
тут тело  сущности
=================================  < - это конец  сущности
Кстати да. Я так давно делаю. Намного легче ориентироваться в однородномутной куче операторов. *8)*
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 30 Июня 2017, 07:15:48
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Отредактировал код с учетом справедливых замечаний Vad'a. Действительно немалая экономия памяти получается. В define переводить не стал, т.к. теряется читаемость кода.
пашему?
все остается как есть, только, (очень грубо) не имя переменной и ее значение используется  а "псевдоним числа", (число  "Пи" например... - классический  дефайн)

а компилятор, при сборке все псевдонимы подменит на значения... и все..
так что не стесняйся...  ;)

 
Согласен. Но не для этого кода. Уже не хочу этим кодом заниматься. Смысла в нем не вижу))
Название: EC-метр на базе ардуино
Отправлено: ...Andrew... от 04 Июля 2017, 23:10:33
У меня пара вопросов по коду. Может это помарки, может было так задумано, но я не понимаю, почему.
У Вас массив из 140 RAW-замеров. Вы к нему применяете медианный фильтр.

1. Но почему тогда при сортировке массива по возрастанию во внешнем цикле берете только 130 значений
for(int i=0;i<130;i++)   

2. Далее, берете, как указано в комментариях, 80 средних значений
for(int i=20;i<100;i++)
Но получается, не средних, отсекаете 20 низших и 40 высших. Нужно было, наверное, так?
for(int i=30;i<110;i++)
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 05 Июля 2017, 08:10:44
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
У меня пара вопросов по коду. Может это помарки, может было так задумано, но я не понимаю, почему.
У Вас массив из 140 RAW-замеров. Вы к нему применяете медианный фильтр.

1. Но почему тогда при сортировке массива по возрастанию во внешнем цикле берете только 130 значений
for(int i=0;i<130;i++)   

2. Далее, берете, как указано в комментариях, 80 средних значений
for(int i=20;i<100;i++)
Но получается, не средних, отсекаете 20 низших и 40 высших. Нужно было, наверное, так?
for(int i=30;i<110;i++)
По первому пункту ошибка. Там нужно 139. Все верно подметили.
По второму тоже недогляд. Вы также все верно подметили.
Писал на коленке за один вечер, повторюсь. Вот и мелкие недочёты повыскакивали. Ну не программер я. Я деньги зарабатываю на торговле...
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 05 Июля 2017, 11:57:04
Господа(и наверное дамы), а кто-нибудь вообще пробовал этот код и эту схему?
Теоретически должно работать :D  *crazy*
А на практике - хз  ;D  *crazy*
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 05 Июля 2017, 11:59:12
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
У меня пара вопросов по коду. Может это помарки, может было так задумано, но я не понимаю, почему.
У Вас массив из 140 RAW-замеров. Вы к нему применяете медианный фильтр.

1. Но почему тогда при сортировке массива по возрастанию во внешнем цикле берете только 130 значений
for(int i=0;i<130;i++)   

2. Далее, берете, как указано в комментариях, 80 средних значений
for(int i=20;i<100;i++)
Но получается, не средних, отсекаете 20 низших и 40 высших. Нужно было, наверное, так?
for(int i=30;i<110;i++)
По первому пункту ошибка. Там нужно 139. Все верно подметили.
По второму тоже недогляд. Вы также все верно подметили.
Писал на коленке за один вечер, повторюсь. Вот и мелкие недочёты повыскакивали. Ну не программер я. Я деньги зарабатываю на торговле...
Хотя по второму пункту вообще пофигу. Хоть от 50 до 100.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 05 Июля 2017, 17:52:09
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Господа(и наверное дамы), а кто-нибудь вообще пробовал этот код и эту схему?
Теоретически должно работать :D  *crazy*
А на практике - хз  ;D  *crazy*
Ты сам то проверил свою схему и ПО?
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 05 Июля 2017, 18:22:56
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Господа(и наверное дамы), а кто-нибудь вообще пробовал этот код и эту схему?
Теоретически должно работать :D  *crazy*
А на практике - хз  ;D  *crazy*
Ты сам то проверил свою схему и ПО?
А сам как думаешь!?  :D
Название: EC-метр на базе ардуино
Отправлено: siv237 от 05 Июля 2017, 19:26:13
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Господа(и наверное дамы), а кто-нибудь вообще пробовал этот код и эту схему?
Теоретически должно работать :D  *crazy*
А на практике - хз  ;D  *crazy*
Ты сам то проверил свою схему и ПО?
А сам как думаешь!?  :D
Ну нет конечно, раз пишешь
Цитировать
Теоретически должно работать :D  *crazy*
А на практике - хз  ;D  *crazy*
если я правильно понял сокращение хз.

При измерении на 1 ацп как по твоей схеме учтена изначальная поляризация раствора?
Если вместо вилки в растворе измерять батарейку, получишь ли ты идентичные значения её внутреннего сопротивления если подключать её сперва одной полярностью, потом другой?
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 05 Июля 2017, 19:33:51
Моя твая непонимай..
Йа не водка-бинт  *crazy*
Попробуй лучше сам. Потом свой опыт и опишешь.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 10:28:16
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Моя твая непонимай..
Йа не водка-бинт  *crazy*
Попробуй лучше сам. Потом свой опыт и опишешь.
Измерь батарейку и поймешь.
В твоем по вообще поляризацию раствора не учитывается.
И зачем ты занижаешь точность АЦП, ради скорости?

Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 10:51:59
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Моя твая непонимай..
Йа не водка-бинт  *crazy*
Попробуй лучше сам. Потом свой опыт и опишешь.
Измерь батарейку и поймешь.
В твоем по вообще поляризацию раствора не учитывается.
И зачем ты занижаешь точность АЦП, ради скорости?
Ты наркоман штоле? Тебе надо, ты и замеряй батарейки.
И ваще, кто тебе в ухо насрал, что точность АЦП понижается? Пруф в студию!
И даже если понижается, то специально для слабовидящих: Кусок кода, который называется медианный фильтр, призван повысить точность.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 11:16:33
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Моя твая непонимай..
Йа не водка-бинт  *crazy*
Попробуй лучше сам. Потом свой опыт и опишешь.
Измерь батарейку и поймешь.
В твоем по вообще поляризацию раствора не учитывается.
И зачем ты занижаешь точность АЦП, ради скорости?
Ты наркоман штоле? Тебе надо, ты и замеряй батарейки.
И ваще, кто тебе в ухо насрал, что точность АЦП понижается? Пруф в студию!
И даже если понижается, то специально для слабовидящих: Кусок кода, который называется медианный фильтр, призван повысить точность.
Ты даже не представляешь как глупо все твои слова выглядят и каким дураком ты себя выставляешь. Ты вообще не понимаешь в принципе что именно ты делаешь и зачем.
Я тебе два раза намекнул про батарейку. Человек хоть немного понимающий в теме бы сразу смекнул к чему был вопрос.
Про снижение точности ацп вообще рука лицо сплошная. На хрена ты перевел ацп на мегагерц и при этом вставляешь искусственные задержки?
Внести паразитные резюки в цепь измерения ты лишил себя шанса простого измерения поляризации раствора. Но это понятно, ты ведь вообще нихрена не понимаешь что делаешь. Зато экранчик приспособил.
Медианный фильтр он сделал  ;D ;D ;D.

Хватит копипастить чужие кривые решения, попробуй понять как и что работает и зачем.
Хотя кому я говорю. Человеку с вилкой в растворе. Который месяц не мог понять как полярность менять.

По твоей формуле "калибровки" можно легко получить отрицательные значения, да еще и в каких-то ppm.
Для кого ты это делал, для тех, кто EC в ppm измеряет?

Вот видит бог не хотел хаять твое решение, а мягко намекнул на принципиальные ошибки, но ты вместо благодарности начал хамить мурло.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 11:33:53
Наркоман Сиф разродился.
Иди в пень со своей батарейкой. Можешь засунуть себе в попец и измерить сопротивление своих полупопий.
Человек с батарейкой в заднице, который не понимает и не принимает ничьих советов, который даёт решения, ни к чему не применимые.
Рассуждатель-теоретик, млин. Даже библу Киберлиб умудрился обговнять. Не зная, в принципе, как она работает.
Иди туда-же, где у тебя батарейка!
Заодно подучишь матчасть.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 11:37:46
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Заодно подучишь матчасть.
Это ты мне говоришь, про матчасть?!  ;D ;D ;D ;D
Очень иронично.
Цитировать
Рассуждатель-теоретик, млин
Ты мое рабочее устройство не сумел скопировать, что-бы оно заработало, а меня теоретиком называешь?
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 11:40:25
 ;D ;D ;D
 :D
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 11:41:54
Рабочее устройство!!! ;D
Где ты там копию то увидел? Очки протри. :D
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 11:46:06
Дабы прекратить пустой трёп, объявляю:
1. Устройство полностью рабочее, проверено.
2. Уважаемые новички форума: Никогда. Никогда не слушайте Сифа. Проклянете гидропонику в итоге навечно.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 12:16:06
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Дабы прекратить пустой трёп, объявляю:
1. Устройство полностью рабочее, проверено.
2. Уважаемые новички форума: Никогда. Никогда не слушайте Сифа. Проклянете гидропонику в итоге навечно.
Да давайте тебя послушаем. Все слушайте джима. Вот он точно все знает и умеет :)
Что ты там вырастил? Напомни? Какие у тебя достижения?
То что ты тут ваду пытаешься лизать, это и так видно но поверь он вряд ли тебе предложит выйти за себя за муж  ;D ;D ;D
У вас любовь неравнозначная, ты никто, один из недоучек с 6 классами, который случайно мог подумать, что что-то значит в жизни раз читать научился и потому, что мама называла тебя умненьким?
С чего ты решил, что можешь кому-то советы давать?

В общем разговор считаю законченным. Спорить с тобой смысла нет пока не поумнеешь.
Название: EC-метр на базе ардуино
Отправлено: Vad от 07 Июля 2017, 12:27:04
Вафелка, не упоминай имя Вада всуе. *8)*
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 12:30:56
Чё, Сифа, попутал чето по жизни?
Давно тебя сапогом по лицу не пинали видать.
Небось ещё и армии не был. Откосил небось по плоскостопию.
Там истеричек не любят, и лечат быстро.

Теперь по теме.
Все, кто в этой ветке писал. Все писали по делу. Но разве что кроме Цикломеха. Но он странный, ему простительно.
Ты же какую-то непотребную куйню стал писать. А у меня аллергия на куйню, и на тех кто ее пишет.
Возьми осцилограф, замерь. Потом убери ускорение АЦП и задержки, и ещё раз замерь.
А потом засунь осцилограф(целиком) себе в гланды(да-да, через жопу), и ещё раз замерь.
Ну а потом тихо самоубейся со стремянки головой вниз. Дабы не калечить психику своей ущербностью у окружающих.

"Сказочный долбоеб..зря его из психушки выпустили"(с).
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 12:47:22
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Чё, Сифа, попутал чето по жизни?
Давно тебя сапогом по лицу не пинали видать.
Небось ещё и армии не был. Откосил небось по плоскостопию.
Там истеричек не любят, и лечат быстро.

Теперь по теме.
Все, кто в этой ветке писал. Все писали по делу. Но разве что кроме Цикломеха. Но он странный, ему простительно.
Ты же какую-то непотребную куйню стал писать. А у меня аллергия на куйню, и на тех кто ее пишет.
Возьми осцилограф, замерь. Потом убери ускорение АЦП и задержки, и ещё раз замерь.
А потом засунь осцилограф(целиком) себе в гланды(да-да, через жопу), и ещё раз замерь.
Ну а потом тихо самоубейся со стремянки головой вниз. Дабы не калечить психику своей ущербностью у окружающих.

"Сказочный долбоеб..зря его из психушки выпустили"(с).
Я смотрю тебя пролечили в армии, истеришь то тут ты. Вспомни какой бред ты в моей теме писал? Как кричал, что скоро родишь вещь и что ты родил?

По сути я тебе уже сказал да ты не понял.
Точность в разы хуже чем у меня, поляризация вообще не учитывается (для тех кто не в курсе, раствор электролита создает разность потенциалов на электродах, на этом принципе батарейки работают). Даже в самой моей первой версии этот момент был учтен, а ты даже понять не можешь о чем речь. Хорошо хоть дошло, что нужно переменку использовать. Хотя уверен, ты все еще не понимаешь почему.
Линейная калибровка это это просто песня. Я тебе лично вывел формулу нелинейной калибровки по двум точкам с третьей в нуле. Даже дал тебе в виде кода для ардуины.
Медианный фильтр присобачил, а измерений чуть больше 100. Даже первая версия моего кода большее 5 тысяч измерений на двух АЦП выполняет в режиме повышенной точности.
А текущая измеряет 3 независимых раствора да еще и с определением уровня.

Иди узри и успагойся уже, программист недоучка. Если нет понимания, что ты делаешь, его не скомпенсируешь усердием.

Еще скажи, я тебе не по сути написал :)
Название: EC-метр на базе ардуино
Отправлено: siv237 от 07 Июля 2017, 12:50:02
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вафелка, не упоминай имя Вада всуе. *8)*
Хватит использовать гейский сленг.
Я понимаю, что теперь всё всем дозволено но не всем тут приятно, когда ты тычешь своей ориентацией.

Вам с джимом надо пожениться, и в гейропу. Там таких любят.  Вы же вроде с одной местности родом, южные парнишки :)
Название: EC-метр на базе ардуино
Отправлено: Vad от 07 Июля 2017, 13:09:44
Пресвятой_ДжимБим.
Закрой тему. внизу страницы кнопка "ЗАБЛОКИРОВАТЬ ТЕМУ"
а то засерит ее наш друх.
его цель на форуме - засрать все. :D
Название: EC-метр на базе ардуино
Отправлено: orgail от 07 Июля 2017, 13:16:17
 (http://forum.ponics.ru/imagehost2/thumbs/13726897973363rfr.jpg) (http://forum.ponics.ru/imagehost2/?v=13726897973363rfr.jpg)
это я то злодей? )))
 :D :D :D ;D ;D ;D
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 07 Июля 2017, 13:44:19
У Сифа какое-то нездоровое словоблудие нащет геев и прочей гомосятины.
Значит что-то у него в жизни не так.. в задницу штоле отымели в своё время? Вот ему везде злые гомосеки мерещятся.
А аргументы смешные:
Типа, мол я пи****ый, и решение у меня круче, а ты херовый, и недоучка, и ваще))
А по делу - ноль.
Название: EC-метр на базе ардуино
Отправлено: orgail от 11 Июля 2017, 15:28:27
Всем хорошего настроения.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 14 Октября 2017, 16:52:45
А давайте я помучаю вопросами, а?!

Во-первых, зачем нам нужен температурный датчик? Если это только для гидропоники и ни на какую точность не претендует, то может быть можно обойтись? Каково влияние температуры в реальном диапазоне? Предположим, мой раствор почти всегда находится от 20° до 25°С, насколько большой окажется погрешность измерений если я не стану отслеживать температуру?

Второе. Зачем мы пишем в EEPROM? Как я понял, это память с ограниченным числом циклов записи. Использование ее, получается, изнашивает ресурс ардуинки. Какая надобность ее использовать?

Третье. Вы читаете только один пин (ECPin), но переписываете PORTD, т.е. восемь пинов за раз. Их нельзя использовать? Я не предполагал отдельную ардуинку отдавать на измерение ЕС, я хочу повесить на нее же и другие функции, контролировать и полив, и освещение, и, возможно, обновление раствора. В конце концов, зачем мне ЕС? Для того, чтобы принять решение что доливать: раствор или воду. Мне нужен пин на запуск насоса, пин на контроль объема прошедшей жидкости... Там набегает... Если для одного только измерения ЕС нужно задействовать столько пинов, то может быть проще купить датчик и задействовать один пин?
Название: EC-метр на базе ардуино
Отправлено: Vad от 14 Октября 2017, 17:28:08
Цитировать
Предположим, мой раствор почти всегда находится от 20° до 25°С, насколько большой окажется погрешность измерений если я не стану отслеживать температуру?
приблизительно, от 0.03 до 0.5% :D в зависимости от состава раствора и его электропроводности.
это меньше инструментальной погрешности.. нормального ЕС измерителя.. с платиновым электродом :D
к тому же, у всех солей температурные кривые - очень разные :D

я, мм.. :-\ да нет, нет, мы все ему это дооолго объясняли.. :D
но он "прочитал в интернетах"  ;D
Название: EC-метр на базе ардуино
Отправлено: vladindre от 14 Октября 2017, 19:02:45
Цитировать
Вы читаете только один пин (ECPin), но переписываете PORTD, т.е. восемь пинов за раз. Их нельзя использовать?

Хм. Ничто не мешает при чтении настроить вход на чтение , а потом восстановить прежнее состояние. Маской прочитать нужный бит. Аналогично на вывод маскируем биты , которые не требуется менять и выводим что нужно. Это ж обычный заурядный  программный метод.
Название: EC-метр на базе ардуино
Отправлено: PAA от 14 Октября 2017, 20:29:00
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вы читаете только один пин (ECPin), но переписываете PORTD, т.е. восемь пинов за раз. Их нельзя использовать?
Их можно использовать, просто применить маску, для каждого пина (входа). Прием чтения/записи в порт и из порта  по байтно  применяется для повышения быстродействия (на несколько порядков) по сравнению с обычной командой digitalRead/digitalWrite. Кроме того, прием чтения/записи в порт и из порта  по байтно позволяет значительно экономить внутреннюю память программ микропроцессора, что в конечном итоге оптимизирует программный код и расширяет возможности МП.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 14 Октября 2017, 23:05:24
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вы читаете только один пин (ECPin), но переписываете PORTD, т.е. восемь пинов за раз. Их нельзя использовать?
Их можно использовать, просто применить маску, для каждого пина (входа). Прием чтения/записи в порт и из порта  по байтно  применяется для повышения быстродействия (на несколько порядков) по сравнению с обычной командой digitalRead/digitalWrite. Кроме того, прием чтения/записи в порт и из порта  по байтно позволяет значительно экономить внутреннюю память программ микропроцессора, что в конечном итоге оптимизирует программный код и расширяет возможности МП.
Маска это когда
PORTD |= ...
или когда
PORTD &= ...
Но если я вижу
PORTD = B00001000;
то это же не маска! Это все восемь портов переписываются. Или я чего-то не понял?
Название: EC-метр на базе ардуино
Отправлено: Vad от 15 Октября 2017, 02:51:01
порт один, и это порт D
Название: EC-метр на базе ардуино
Отправлено: vladindre от 15 Октября 2017, 04:31:19
Цитировать
то это же не маска!
Разумеется не маска. Маска нужна при работе с одним , двумя и.т.д. битами.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 15 Октября 2017, 04:49:55
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, так как основной ограничивающий фактор в измерении ЕС, это ограничение скорости АЦП. Приходится переводить АЦП на скоростной опрос с потерей точности, а затем увеличить точность усреднением большого числа измерений (десятки тысяч).
Название: EC-метр на базе ардуино
Отправлено: PAA от 15 Октября 2017, 16:35:21
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, ...
Ну не скажите, команда digitalWrite() залитая через компилятор IDE исполняется на три порядка медленнее нежели битовая операция.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 15 Октября 2017, 16:42:45
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, ...
Ну не скажите, команда digitalWrite() залитая через компилятор IDE исполняется на три порядка медленнее нежели битовая операция.
Все верно и тем не менее это малозначимо для задачи.
Название: EC-метр на базе ардуино
Отправлено: PAA от 15 Октября 2017, 16:46:23
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вы читаете только один пин (ECPin), но переписываете PORTD, т.е. восемь пинов за раз. Их нельзя использовать?
Их можно использовать, просто применить маску, для каждого пина (входа). Прием чтения/записи в порт и из порта  по байтно  применяется для повышения быстродействия (на несколько порядков) по сравнению с обычной командой digitalRead/digitalWrite. Кроме того, прием чтения/записи в порт и из порта  по байтно позволяет значительно экономить внутреннюю память программ микропроцессора, что в конечном итоге оптимизирует программный код и расширяет возможности МП.
Маска это когда
PORTD |= ...
или когда
PORTD &= ...
Но если я вижу
PORTD = B00001000;
то это же не маска! Это все восемь портов переписываются. Или я чего-то не понял?
Здесь вы записываете байт в порт D, но при этом вам важен только 4-й бит. Если вам нужно активировать другой пин в этом порту, то пишите в порт допустим В00010000, если нужно активировать сразу оба пина, то выводите В00011000 и тд. и тп. А при чтении с порта D применяете соответствующие маски для выделения значения нужных вам пинов.
Название: EC-метр на базе ардуино
Отправлено: PAA от 15 Октября 2017, 16:50:17
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, ...
Ну не скажите, команда digitalWrite() залитая через компилятор IDE исполняется на три порядка медленнее нежели битовая операция.
Все верно и тем не менее это малозначимо для задачи.
Конкретно для этой задачи -да. Но ужимая общее время исполнения кода и его объем, можно запихнуть в ардуину ещё какие нибудь задачи.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 15 Октября 2017, 18:13:33
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, ...
Ну не скажите, команда digitalWrite() залитая через компилятор IDE исполняется на три порядка медленнее нежели битовая операция.
Все верно и тем не менее это малозначимо для задачи.
Конкретно для этой задачи -да. Но ужимая общее время исполнения кода и его объем, можно запихнуть в ардуину ещё какие нибудь задачи.
Теряется возможность использовать номера портов как переменные, а это сильно ограничивает гибкость. Например код опроса не запихнуть в функцию.
Название: EC-метр на базе ардуино
Отправлено: PAA от 15 Октября 2017, 19:12:25
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Управление скоростью цифровых портов с помощью битовых масок практически не имеет смысла, ...
Ну не скажите, команда digitalWrite() залитая через компилятор IDE исполняется на три порядка медленнее нежели битовая операция.
Все верно и тем не менее это малозначимо для задачи.
Конкретно для этой задачи -да. Но ужимая общее время исполнения кода и его объем, можно запихнуть в ардуину ещё какие нибудь задачи.
Теряется возможность использовать номера портов как переменные, а это сильно ограничивает гибкость. Например код опроса не запихнуть в функцию.
Ограничивается лишь квалификацией и опытом программиста. Спор не имеет смысла, т.к. задача не формализована. Человек просто хотел узнать для чего были использованы битовые операции, я объяснил как мог. Использовать их или нет дело вкуса или привычки, я самолично их не использую (если не нужно экономить память или поднять скорость работы).
Название: EC-метр на базе ардуино
Отправлено: vladindre от 15 Октября 2017, 19:15:35
Цитировать
затем увеличить точность усреднением большого числа измерений (десятки тысяч).
На фик стока ? В промышленных датчиках самое большее видел усреднение по 1024 измерениям. Сам как-то в одном проекте , с жиру бесясь , сделал 4096 , хотя нафик не надо было. Для измерения ЕС 16-64 за глаза и за уши.
К тому же уменьшая точность измерения на АЦП бессмысленно усреднять , если сами отсчеты становятся грубее.
Название: EC-метр на базе ардуино
Отправлено: Vad от 16 Октября 2017, 00:14:24
там еще один булыжник подводный..
от 1024 значений  ацп осталось только 100 :D
вот он усредняет и усредняет... усредняет и усредняет.. :D
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 01:36:16
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
там еще один булыжник подводный..
от 1024 значений  ацп осталось только 100 :D
вот он усредняет и усредняет... усредняет и усредняет.. :D
Именно так, слишком сильное загрубление АЦП при переходе на высокую частоту опроса требует значительно большего числа округлений. Если не загрублять АЦП, то скорости не достаточно для избежания окисления электродов.
Название: EC-метр на базе ардуино
Отправлено: vladindre от 16 Октября 2017, 05:59:07
Цитировать
слишком сильное загрубление АЦП
Именно сильное загрубление и не даст нужной точности. Поэтому бессмысленно делать большое усреднение.Несколько младших разрядов все равно теряются.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 16 Октября 2017, 06:05:05
То есть мы опять подходим к выбору материала.
Во избежание окисления электродов мы оказались вынуждены 1.) делать множество измерений и усреднять их, 2.) часто менять полярность электродов чтобы избежать их разрушения, 3.) ускорять ардуину в ущерб точности, 4.) переходить на низкий уровень программирования, чтобы ускорить выполнение кода...
Может быть лучше попробовать другой материал электродов?
Я еще раз задам вопрос, который спрашивал в другой теме, убедившись, что электрод не разрушается, проверили ли вы, что все микроэлементы остались? И прежде всего медь, она легко оседает на электродах...
Название: EC-метр на базе ардуино
Отправлено: serge mat от 16 Октября 2017, 06:08:06
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать
слишком сильное загрубление АЦП
Именно сильное загрубление и не даст нужной точности. Поэтому бессмысленно делать большое усреднение.Несколько младших разрядов все равно теряются.
Строго говоря это не так. Для ученых это вполне приемлемый подход: когда точность датчика очень мала повышать точность с помощью большого количества измерений.
Здесь хорошо бы проверить на контрольных растворах с близкими значениями ЕС.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 06:16:11
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
То есть мы опять подходим к выбору материала.
Во избежание окисления электродов мы оказались вынуждены 1.) делать множество измерений и усреднять их, 2.) часто менять полярность электродов чтобы избежать их разрушения, 3.) ускорять ардуину в ущерб точности, 4.) переходить на низкий уровень программирования, чтобы ускорить выполнение кода...
Может быть лучше попробовать другой материал электродов?
Я еще раз задам вопрос, который спрашивал в другой теме, убедившись, что электрод не разрушается, проверили ли вы, что все микроэлементы остались? И прежде всего медь, она легко оседает на электродах...
Дело не в материале электродов, а в продуктах электролиза. При недостаточной частоте измерений на электродах любого состава будут образовываться продукты электролиза (из состава раствора), которые будут вызывать постепенное "уплывание" измерений. При частоте ниже 2-3 кГц можно зрительно увидеть мелкие пузырьки при работе электродов. Чем выше "соленость" тем более высокую частоту нужно использовать.

Разница между "хорошим" и "плохим" электродами в таком случае сводятся к тому, что хороший можно вынуть и протереть, а плохой нужно будет чистить снимая пленку, частью которой стал материал самого электрода.

Усреднение показаний повышает реальную точность. Главное условие, не пытаться выделить медиану и прочие штуки с отсеиванием. Именно выбросы в системах с низкой битностью позволяют построить пятно вероятности. По сути АЦП ардуины на низкой частоте и занимается усреднением, а на высокой мы делаем это сами.

Предложите методику проверки выпадения микроэлементов. Я могу судить только по состоянию растений и внешнему виду контактов электродов. И то и другое никаких нареканий не вызывает.
Название: EC-метр на базе ардуино
Отправлено: orgail от 16 Октября 2017, 08:10:58
уверены, что эти пузырьки - результат электролиза?
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 08:31:54
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
уверены, что эти пузырьки - результат электролиза?
Они самые (кислород, водород и дихлор если не ошибаюсь). Они медленно поднимаются тоненькими дорожками к поверхности. Чем ниже частота, тем сильнее процесс газообразования.
Причем если искусственно вносить перекос фазы, изменяя время между сменой полярности, делая его неравномерным, можно заметить, как выделение газов смещается на один или второй электрод.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 16 Октября 2017, 08:35:32
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Предложите методику проверки выпадения микроэлементов. Я могу судить только по состоянию растений и внешнему виду контактов электродов. И то и другое никаких нареканий не вызывает.
Не думаю, что анализ раствора на микроэлементы окажется легкой задачей. Проще всего судить по состоянию растений, обращая особое внимание ни симптомы недостатка меди, марганца и железа. Если, например, Вы можете утверждать, что все время вегетации у Вас работал электрод и симптомов не обнаружилось, то это и будет ИМХО лучшим ответом.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 16 Октября 2017, 08:39:17
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Они самые (кислород, водород и дихлор если не ошибаюсь). Они медленно поднимаются тоненькими дорожками к поверхности. Чем ниже частота, тем сильнее процесс газообразования.
Причем если искусственно вносить перекос фазы, изменяя время между сменой полярности, делая его неравномерным, можно заметить, как выделение газов смещается на один или второй электрод.
Ну хлору-то у нас вроде бы не откуда взяться...
Да, кислород и водород.
Кстати, они могут не только образовываться, но и растворяться обратно тоже (если не успеют всплыть). Собственно смена фаз нужна не для того, чтобы не было электролиза, а для того, чтобы запустить обратный процесс. В нашем случае будет обратное растворение газообразного водорода вместо выделения кислорода.
Название: EC-метр на базе ардуино
Отправлено: orgail от 16 Октября 2017, 08:49:17
На частоте 2-3 кГц вы по идее не должны успевать видеть формирование пузырьков.
Что значит искусственно вносить? Или вы подаете на один электрод + а на другой - просто импульсы частотой 2-3 кГц?
Должна же быть смена полярности электродов с частотой 2-3 кГц, а не просто условие "импульсы"?
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 08:55:52
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Ну хлору-то у нас вроде бы не откуда взяться...
Ну отлаживал то я ПО на прозрачной банке с раствором хлорида натрия.
Цитировать
Если, например, Вы можете утверждать, что все время вегетации у Вас работал электрод и симптомов не обнаружилось, то это и будет ИМХО лучшим ответом.
Ну с середины лета как минимум. Томат, огурцы, клубника. Томаты и огурцы убрал с балкона (первый слишком сильно зарастил балкон, я нарезал его на черенки и в качестве подвоя использовал его мощный стебель для получения штамбового томата привоем редробин на ствол бычьего сердца. Выглядит прикольно :)
Огурцы попортил грибок и преждевременные холода. А вот клубника досихпор вегетирует, цветет и плодоносит несмотря на около нулевые ночные температуры:
 (http://forum.ponics.ru/imagehost2/thumbs/img6352.jpg) (http://forum.ponics.ru/imagehost2/?v=img6352.jpg)
На вид нехватки микры не заметно :)
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 09:01:12
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
На частоте 2-3 кГц вы по идее не должны успевать видеть формирование пузырьков.
Что значит искусственно вносить? Или вы подаете на один электрод + а на другой - просто импульсы частотой 2-3 кГц?
Должна же быть смена полярности электродов с частотой 2-3 кГц, а не просто условие "импульсы"?
Видно. Я могу управлять программно сменой полярности просто внося дополнительную задержку при переходе от минуса к плюсу например.
Ну и проверял я на довольно крутом растворе хлорида натрия с ЕС=10 мСи/см.
Название: EC-метр на базе ардуино
Отправлено: Borodach1 от 16 Октября 2017, 09:37:09
Возьмите два стакана. В один налейте раствор кислоты,  а в другой раствор щёлочи. Бросьте в каждый из стаканов по куску алюминиевого провода. Электричество подключать никуда не надо.
На обоих кусках провода появятся пузырьки. Это в обоих случаях водород.
Под воздействием кислот и щелочей разрушается знаменитая оксидная плёнка и алюминий уже без всяких кислот и щелочей начинает тупо реагировать с водой с выделением того же самого водорода.

Вывод.
Хватит тупить!!!
Алюминий очень активный металл. Пассивен только на воздухе и то из за образования оксидной плёнки. В растворах реагирует со всем подряд даже без воздействия электрического тока.
Для электродов не пригоден!!!
Название: EC-метр на базе ардуино
Отправлено: siv237 от 16 Октября 2017, 10:01:08
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Возьмите два стакана. В один налейте раствор кислоты,  а в другой раствор щёлочи. Бросьте в каждый из стаканов по куску алюминиевого провода. Электричество подключать никуда не надо.
На обоих кусках провода появятся пузырьки. Это в обоих случаях водород.
Под воздействием кислот и щелочей разрушается знаменитая оксидная плёнка и алюминий уже без всяких кислот и щелочей начинает тупо реагировать с водой с выделением того же самого водорода.

Вывод.
Хватит тупить!!!
Алюминий очень активный металл. Пассивен только на воздухе и то из за образования оксидной плёнки. В растворах реагирует со всем подряд даже без воздействия электрического тока.
Для электродов не пригоден!!!
Давайте возьмем тапки и бросим в грязную лужу. Вот видите какая это плохая обувь, вся мокрая и грязные следы оставляет. Нет будем ходить только в болотниках по квартире.

Вы хоть прочитайте внимательно, перед тем как умничать, процесс образования управляемый!
Я понимаю, что вам обидно что потратились на платиновые электроды начитавшись таких же умных теоретиков и никак вот это все покоя не дает. Жаба душит. Все ваши аргументы против алюминия давно разбиты в темах выше, разбиты реальной практикой, а не вашими бла бла, но вам доказывать бесполезно.

Так что ответственно заявляю
хватит тупить!!!
, ваше мнение не подкреплено практикой и теорией. Это только ваше мнение не несущее никакой продуктивности.
Название: EC-метр на базе ардуино
Отправлено: Vad от 16 Октября 2017, 14:17:52
вообще хватит  тупить :D
берем один корпус счетверенного ОУ.. и делаем  полнодиапазонный,  совершенно аналоговый, биполярный, измеритель EC :D
скармливаем его  в ардуину... которая при этом может делать что угодно, с какой угодно скоростью.. иногда(раз в  час например) отвлекаясь на 2-3 чтения аналогового пина :D

все ваши споры о "пузырьках и электродах" покажутся смешным :D
Название: EC-метр на базе ардуино
Отправлено: veresk от 16 Октября 2017, 19:08:51
Вот тоже решил сделать EC метр, расширяюсь  :). Вчера на симуляторе собрал такую схемку, мостовую. Ну как бы начало. Двуполярное питание тоже с оу будет.
 (http://forum.ponics.ru/imagehost2/thumbs/22uhu.jpg) (http://forum.ponics.ru/imagehost2/?v=22uhu.jpg)
Название: EC-метр на базе ардуино
Отправлено: vladindre от 16 Октября 2017, 19:24:29
Цитировать
Для электродов не пригоден!!!
Алюминий , конечно , сомнителен в качестве электрода. Несмотря на очень прочную оксидную пленку она все-таки пористая даже тонкая плотная. Контакт с алюминием все равно будет.Графитовые щетки совершенно надежный вариант.И по поводу самих измерений .
Независимо от материала ток надо держать на уровне не более 0,1ма. Уже сообщал раньше , что на работе было задание по изготовлению датчика. Перерыл кучу материала пока нашел данные по измерению. И частоту советуют профессиональные измеряльщики не 2-3 кгц , а десятки кгц.
Видимо при такой частоте все атомы или большая часть успевают рекомбинировать около электрода до воды. Не бойтесь поднять частоту. Это не мешки таскать.
Название: EC-метр на базе ардуино
Отправлено: vladindre от 16 Октября 2017, 19:29:37
Цитировать
все ваши споры о "пузырьках и электродах" покажутся смешным :D
Кстати на форуме аквариумистов видел схему на одном сдвоенном ОУ(кажись 157УД2). Один ОУ генерит , другой измеряет без всяких лишних наворотов. И ничо - рыбки живы. Материал ранее выкладывал по этому измерителю.
Название: EC-метр на базе ардуино
Отправлено: veresk от 16 Октября 2017, 19:36:56
Кстати, ес пива 1.7, если бы пленка постоянно разрушалась банки бы взорвались :)
Название: EC-метр на базе ардуино
Отправлено: Vad от 16 Октября 2017, 19:42:58
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вот тоже решил сделать EC метр, расширяюсь  :). Вчера на симуляторе собрал такую схемку, мостовую. Ну как бы начало. Двуполярное питание тоже с оу будет.
 (http://forum.ponics.ru/imagehost2/thumbs/22uhu.jpg) (http://forum.ponics.ru/imagehost2/?v=22uhu.jpg)

мост не нужен, он только усложняет жизнь.
с выходе генчика на делитель из  электродов и резистора...

стабилизатор тоже можно упростить до двух встречно-параллельно включенных диодов..
Название: EC-метр на базе ардуино
Отправлено: Vad от 16 Октября 2017, 19:44:33
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Кстати, ес пива 1.7, если бы пленка постоянно разрушалась банки бы взорвались :)
они покрыты лаком изнутри)) и снаружи
Название: EC-метр на базе ардуино
Отправлено: PAA от 16 Октября 2017, 20:07:15
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Кстати, ес пива 1.7, если бы пленка постоянно разрушалась банки бы взорвались :)
А вы попробуйте не баночный алюминий закинуть в пиво на несколько дней.
Название: EC-метр на базе ардуино
Отправлено: cpf от 16 Октября 2017, 20:17:32
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Кстати, ес пива 1.7, если бы пленка постоянно разрушалась банки бы взорвались :)
ph важнее ("в этом деле"  :D)
Название: EC-метр на базе ардуино
Отправлено: Borodach1 от 17 Октября 2017, 00:21:50
Пардон ребята!  Я в отпуске!  Картинок в телефоне не вижу.
Специально для Сивки-бурки:
Я не теоретизирую! Всё о чём я писал, не только теория,  но и практика. Всё это я пробовал лет 30 назад.. Ой вру... уже больше. Года 33 назад.)))
Химия абсолютно простая наука. Всё уже придумано до нас. Челоаек с образованием дворника,  кулинара и даже программиста ничего нового в химиии придумать не может. Может только выдумать очередное шнобелевское изыскание.)))
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 01:43:18
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
И частоту советуют профессиональные измеряльщики не 2-3 кгц , а десятки кгц.
И правильно советуют, 2-3 гКц не достаточно, я же написал что на такой частоте даже процесс электролиза глазками видно и показания плавно убегают, а электроды покрываются белым налетом. Потому частоты должны быть от 20 кГц и выше.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 01:45:17
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вот тоже решил сделать EC метр, расширяюсь  :). Вчера на симуляторе собрал такую схемку, мостовую. Ну как бы начало. Двуполярное питание тоже с оу будет.
 (http://forum.ponics.ru/imagehost2/thumbs/22uhu.jpg) (http://forum.ponics.ru/imagehost2/?v=22uhu.jpg)
Какое преимущество имеет эта схема в сравнении с двумя прямыми проводками в растворе? Хоть одно?
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 01:50:54
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать
Для электродов не пригоден!!!
Алюминий , конечно , сомнителен в качестве электрода. Несмотря на очень прочную оксидную пленку она все-таки пористая даже тонкая плотная. Контакт с алюминием все равно будет.Графитовые щетки совершенно надежный вариант.И по поводу самих измерений .
.
Рассуждая о том или ином материале электродов нужно не забывать о технологичности конструкции в целом. Как эти электроды будут крепиться, как изолировать место стыка от раствора, как сохранить стабильность положения электродов относительно друг друга при эксплуатации и обслуживании.

Какое преимущество будет у такого решения относительно куска проволоки уже имеющей плотную изоляцию и достаточную упругость?
Название: EC-метр на базе ардуино
Отправлено: Vad от 17 Октября 2017, 02:32:33
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вот тоже решил сделать EC метр, расширяюсь  :). Вчера на симуляторе собрал такую схемку, мостовую. Ну как бы начало. Двуполярное питание тоже с оу будет.
 (http://forum.ponics.ru/imagehost2/thumbs/22uhu.jpg) (http://forum.ponics.ru/imagehost2/?v=22uhu.jpg)
Какое преимущество имеет эта схема в сравнении с двумя прямыми проводками в растворе? Хоть одно?
точность, стабильность, повторяемость измерений, широченный диапазон, и тд и тп.. и тк
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 03:57:35
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вот тоже решил сделать EC метр, расширяюсь  :). Вчера на симуляторе собрал такую схемку, мостовую. Ну как бы начало. Двуполярное питание тоже с оу будет.
 (http://forum.ponics.ru/imagehost2/thumbs/22uhu.jpg) (http://forum.ponics.ru/imagehost2/?v=22uhu.jpg)
Какое преимущество имеет эта схема в сравнении с двумя прямыми проводками в растворе? Хоть одно?
точность, стабильность, повторяемость измерений, широченный диапазон, и тд и тп.. и тк
Каждый аналоговый элемент вроде конденсаторов и резисторов скорее уменьшают точность, стабильность и повторяемость относительно двух проводков. Широченный диапазон - как тут участвует, если АЦП все та-же ардуиновская 10 битная?

Например, если растянуть этот диапазон допустим от 0 до 8 мСи/см, то предельная точность будет 0,008 мСи/см на 1 бит, при этом тупой ацп с двумя проводками дает ту же точность и выше но в диапазоне от 0 хоть до одного сименса. Диапазон при этом легко растягивается (точнее смещается в нужную зону точности) за счет изменения площади электродов и их расположения в растворе относительно друг друга.

Оправдание отдельного блока измерения я вижу только в случае, если этот блок будет содержать в себе помимо собственно блока измерения, логику калибровки, более точное АЦП вроде вроде ADS1115 и уметь отдавать значения в цифровом виде по шине i2c например уже в виде mS.

Вся остальная возня чистый оверхед и усложнение ради усложнения, никаких реальных преимуществ не несущее. кроме разве что потешить самолюбие сумевшего собрать и отладить эту вундерфафлю.
Не нужно плодить сущности без нужды, их нужно сокращать.
Название: EC-метр на базе ардуино
Отправлено: Vad от 17 Октября 2017, 04:24:23
Цитировать
Каждый аналоговый элемент вроде конденсаторов и резисторов скорее уменьшают точность
все, дальше не читал. прости, у мне аллергия на глупый апломб.
Но "по дороге" понял, что  какие-то дураки насовали уменьшающих точность деталек, во все мои инструменты...
действительно, какую точность может  иметь  прибор, если в нем  список  конденсаторов заканчивается на  С1012, а список резисторов на  R2072 :D ;D
мало того, эти идиоты не просто насовали везде их...  но и насовали аж в щупы! в измерительные головки!
как дальше жить - даже не представляю :(
ты глаза мне открыл! :o
 ;D ;D ;D ;D ;D ;D

конечно, 10битному  АЦП никак не тягаться  в точности с 3-5х битным (коим ты его сделал, ограничив диапазон с 1024 до  10-100 *Dance* )
и в разрешении  совсем не тягаться..

ты путаешь не только относительную и абсолютную влажность,  но и  разрешение с точностью...  чувак, я в шоке!
Как ты до сих пор жив? :D
Название: EC-метр на базе ардуино
Отправлено: vladindre от 17 Октября 2017, 04:55:53
Цитировать
Какое преимущество будет у такого решения относительно куска проволоки уже имеющей плотную изоляцию и достаточную упругость?
Ну , например точность, стабильность, повторяемость измерений, широченный диапазон, и тд и тп
"Достаточная упругость" тоже под вопросом - чуть подвинул , не так взял и расстояние между достаточно упругими проводами уже не то. Замоноличенная пара щеток имеет стабильное измеряемое расстояние , ну и абсолютная уверенность в нейтральности материала.
Понятно , что пара проводов это халява - куснул провод , зачистил и готово. Все-таки предпочитаю надежность в проделанной работе. Лучше раз повозиться , покорпеть над приблудой , но зато это будет хорошая и надежная вещь.
В данном случае преимущества халявы мизерны по сравнению с упущенным урожаем в связи с сомнительными результатами измерений. Лучше не рисковать.
Изготовить монолитный измерительный блочок это смехотворные трудозатраты.
Соглашусь в той части , что лепить навороченную специальную схему измерений это перебор. Пары входов ардуины , атмеги более чем достаточно.
Цитировать
Вся остальная возня чистый оверхед и усложнение ради усложнения, никаких реальных преимуществ не несущее. кроме разве что потешить самолюбие сумевшего собрать и отладить эту вундерфафлю.
Не нужно плодить сущности без нужды, их нужно сокращать.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 06:10:02
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
"Достаточная упругость" тоже под вопросом - чуть подвинул , не так взял и расстояние между достаточно упругими проводами уже не то.
Достаточно обеспечить изгиб провода таким образом, чтобы контакты никогда не касались дна или стен при любых работах с выниманием и перемещением электрода. На фотке из первой ссылки видно, как изогнут щуп.
Правда наличие в растворе корней не приемлемо для такого похода.
Цитировать
Соглашусь в той части , что лепить навороченную специальную схему измерений это перебор. Пары входов ардуины , атмеги более чем достаточно.
Именно, особенно с учетом того, что эта схема находится между, измерителем и все тем-же АЦП ардуины  *Wall*

Все забыли, что вообще то достаточно точности в 0.5 мСи/см и тупые два проводка в течении 5 месяцев эту точность обеспечивают гарантированно при почти нулевой стоимости и времени на изготовление в сравнении с другими решениями. Принцип минимальной достаточности тут к сожалению далек большинству тут рассуждающих.
Простая экономика процесса 6 емкостей с раствором смета:
1 ардуина 100 рублей
1 ЖК дисплей 1602 с i2c - 100 Рублей
1 метр АВВГ провода 5 рублей
6 18b20 в водонепроницаемом корпусе 60 х 6 = 360 рублей
1 USB блок питания на 5 вольт ~100 руб.
прочая мелочь типа соединительных клемников, проводков, коробки корпуса, стяжек и болтов ~ 300

Таким образом бюджет до 1000 рублей.
Время на сборку не дольше пары часов.
Квалификация - электромонтаж начального уровня без пайки

Дешевле и проще не думаю, что можно придумать, да и в плане надежности и точности соперничать могут только решения на несколько порядков дороже и сложнее.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 06:14:54
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
действительно, какую точность может  иметь  прибор, если в нем  список  конденсаторов заканчивается на  С1012, а список резисторов на  R2072 :D ;D
мало того, эти идиоты не просто насовали везде их...  но и насовали аж в щупы! в измерительные головки!
как дальше жить - даже не представляю :(
Этот спор похож на спор с адудиафилами, доказывающими важность качественных проводов и ламповости усилителей, при этом в качестве источника использующих mp3 с битрейтом 128

Не нужна в этой задаче точность домашнего растениевода от слова совсем. +- пол ЕС-а уже прорыв к звёздам в плане контроля и понимания процесса выращивания.

Никто в зравом уме такое решение не будет предлагать в промышленной теплице (я надеюсь). :)
Название: EC-метр на базе ардуино
Отправлено: Vad от 17 Октября 2017, 14:11:17
этот спор похож на спор чувака который собрал детекторный приемник... с остальным миром..
1v1 ему уже кажется излишне навороченным ;D
а ЧМ  с ФАПЧ - вообще запредельно сложным для того чтоб о нем даже думать ;D

но это от твоего глубокого невежества :D
и не желания учиться..

сам себе  опять противоречишь
Цитировать
Не нужна в этой задаче точность домашнего растениевода от слова совсем. +- пол ЕС-а уже прорыв к звёздам в плане контроля и понимания процесса выращивания.
и тут же рассуждаешь о
Цитировать
предельная точность будет 0,008 мСи/см на 1 бит, при этом тупой ацп с двумя проводками дает ту же точность и выше но в диапазоне от 0 хоть до одного сименса.

ацп не тупой :D
это ты тупо его применяешь. по незнанию..  ведь... любое высокотехнологичное устройство в руках каменного человека по любому превращается  в каменный топор :D
ему что  кусок камня, что ардуина..  он привяжет его к палке и будет размахивать :D
размахивать палкой -  это все, что он(каменный siv) умеет  ;D
Название: EC-метр на базе ардуино
Отправлено: siv237 от 17 Октября 2017, 15:47:57
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
сам себе  опять противоречишь
Не передергивай смысл. Я написал о том, что хватило бы и значительно меньшей точности, а она эта самая точность даже зашкаливает используя примитивные два проводка из куска проволоки.

В общем я повторю, по моему мнению отдельный блок измерения имеет смысл только в случае самостоятельного калиброванного устройства отдающего готовый результат в цифровой форме с возможностью подключения их пачками.
Название: EC-метр на базе ардуино
Отправлено: Vad от 17 Октября 2017, 16:58:44
Чувак, ты запутался в своих словах.
Ты написал то, что написал..  это агония в бреду, натягивание твоих ограниченных возможностей на действительность... :)
тебе хочется во все это верить, и ты веришь..
при этом, твои рассказы, чуть более подкованному  человеку, кажутся смешными :D
 
Дальнейшее обсуждение твоего детекторного приемника и возможности на него слушать МП3 и  принимать  DVB-х считаю бессмысленным.
Учись, это интересно.. там, за пределами твоих знаний, есть масса интересного..
и не обижай конденсаторы и резисторы...
они не виноваты, что ты с ними не знаком :D
Название: EC-метр на базе ардуино
Отправлено: allex_step от 17 Октября 2017, 17:38:42
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
считаю бессмысленным
ну так сиди себе считай... тебя ж никто не заставляет, и даже не просит тут твое мнение по этому вопросу высказывать
Название: EC-метр на базе ардуино
Отправлено: Vad от 17 Октября 2017, 21:19:07
Хорек отдуплился :D
Твоего мнения, относительно моего мнения, никто тоже не спрашивал.. :D
иди огурцы продувай.. задохнутся окончательно ;D
Название: EC-метр на базе ардуино
Отправлено: allex_step от 17 Октября 2017, 21:51:56
я ведь тоже могу на огурец послать >:(


моё мнение относительно твоего мнения тут озвучено не было - цензура не пропустит
Название: EC-метр на базе ардуино
Отправлено: orgail от 18 Октября 2017, 08:57:40
 >:D
Название: EC-метр на базе ардуино
Отправлено: serge mat от 22 Октября 2017, 17:44:38
Вчера и сегодня поставил серию экспериментов на тему измерения ЕС с помощью ардуино.
Пробовал электроды из медной проволоки и карандашных грифелей.
Схема подключения ардуины взята из этого форума позволяет быстро менять полярность электродов:
(https://scontent-arn2-1.xx.fbcdn.net/v/t1.0-9/22688380_2020118458219244_2739869777711216426_n.png?oh=78b50091dd47053a134d77627f87eb5a&oe=5A6A9885)
Пробовал разгонять и замедлять ардуину, в результате частота измерений была от 1 до 20 кГц.
Пробовал единичные измерения и серии различной длительности, до нескольких секунд.

Выводы такие.
Измерения не зависят от материала электрода.
Результаты не зависят от частоты измерений, но при частоте выше 10 кГц уменьшается стабильность результатов, требуется большее число измерений для усреднения.
Для получения стабильного результата достаточно отбросить первые 7 измерений и усреднить последующие. Достаточно 10 измерений для усреднения, таким образом можно сделать всего 17 замеров со сменой полярности.
Название: EC-метр на базе ардуино
Отправлено: Vad от 22 Октября 2017, 17:47:46
Цитировать
Измерения не зависят от материала электрода.
первые два дня *???*
Название: EC-метр на базе ардуино
Отправлено: allex_step от 22 Октября 2017, 18:15:23
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Цитировать
Измерения не зависят от материала электрода.
первые два дня *???*
здравое рассуждение...
serge mat (http://forum.ponics.ru/index.php?action=profile;u=10446), пусть электроды помокнут в растворе с недельку (лучше конечно  в активном применении), а потом снова повторите икзпиримент
Название: EC-метр на базе ардуино
Отправлено: vladindre от 22 Октября 2017, 19:17:34
Цитировать
пусть электроды помокнут в растворе с недельку
Точно так же хотел предложить. Но только не покиснут , а желательно имитировать реальную деятельность.
Нагружать их ежедневно хоть немного - измерять.
Предполагаю , что на меди образуется р-п переход и измерения будут нехило искажаться. В этом смысле даже алюминий выглядит более кошерно , хотя в электролите тоже у него образуется переход. Ну а графит вне конкуренции - полный пассив.
Название: EC-метр на базе ардуино
Отправлено: PAA от 22 Октября 2017, 19:50:07
...." но при частоте выше 10 кГц уменьшается стабильность результатов, требуется большее число измерений для усреднения."...
- скорее всего на частотах выше 10 кГц не справляется АЦП (ИМХО). Нужно проверить замкнув электроды постоянным резистором и плавно увеличивая частоту замеров и т.о. установить частоту среза (загиба характеристики) внутреннего АЦП контроллера.  Исходя из этих данных выбрать частоту переключения электродов. Уважаемый serge mat, вы можете проделать такой эксперимент и поделится результатом?
Название: EC-метр на базе ардуино
Отправлено: serge mat от 22 Октября 2017, 21:28:43
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
...." но при частоте выше 10 кГц уменьшается стабильность результатов, требуется большее число измерений для усреднения."...
- скорее всего на частотах выше 10 кГц не справляется АЦП (ИМХО). Нужно проверить замкнув электроды постоянным резистором и плавно увеличивая частоту замеров и т.о. установить частоту среза (загиба характеристики) внутреннего АЦП контроллера.  Исходя из этих данных выбрать частоту переключения электродов. Уважаемый serge mat, вы можете проделать такой эксперимент и поделится результатом?
Я наблюдаю не перегиб, а разброс точек. При малых частотах после первых 5-9 измерений все следующие точки отличаются от среднего значения не более чем на 3 единицы, обычно на 1-2. При высоких частотах измерений точки прыгают на десятки единиц, доходит даже до сотни. А среднее значение остается прежним.
Я пробовал давать задержку после подачи напряжения на электроды (думал не успевает стабилизироваться), но это ничего не изменило.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 22 Октября 2017, 21:39:12
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.

Оставил медные электроды в растворе. Посмотрю динамику.
Я не планировал в реальной ситуации измерять чаще чем пару раз в день. Думаю, и с этими электродами пару раз за день получится погонять их.
Название: EC-метр на базе ардуино
Отправлено: Vad от 22 Октября 2017, 23:14:58
вы же не уровень раствора измеряете..
типа  "он есть" или "он кончился"
вы замаетесь калибровать это "произведение лени"
вчерашние 2.5 mS  завтра не будет ими :D

кратковременный, одноразовый результат - типа "работает и показывает ок!" никого не интересует...
представьте  линейку из резинки для трусов :D
вот это  то же самое :D
Название: EC-метр на базе ардуино
Отправлено: siv237 от 23 Октября 2017, 01:37:05
Измерять нужно в обе стороны, а не просто переключать частотой. Потому резистор в топку, только прямое включение. Разница в измерениях при положительной и отрицательной фазе есть поляризация и её нужно убирать из расчетов. Без снятия данных АЦП в обеих фазах, поляризацию не исключить. Разница в показаниях плывущая при изменении частоты как раз и вытекает из-за поляризации.
Соберите ПО и схему из моей темы.

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

Моя схема работает уже полгода и результат стабилен (пока корешки в электроды не врастают :)
Название: EC-метр на базе ардуино
Отправлено: PAA от 23 Октября 2017, 07:33:09
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.
Вы немного не поняли. Вы обращаете внимание только на величину отклонения измерения (дисперсию) от среднего значения (математического ожидания). Дисперсия это очень важный параметр, но не менее важным является и частота появления ошибки (спектральная плотность). Т.е. допустим при 1кГц отклонения  возникают в среднем на каждом десятом измерении, на 5кГц на каждом третьем, на 10кГц на каждом пятом и т.д.. Тогда из дисперсии и спектральной плотности  ошибок можно установить доверительный интервал и выбрать оптимальную частоту и алгоритм усреднения.
..."+-3 единицы при любом количестве измерений." - это скорее всего похоже на шумы преобразования в АЦП, их можно исключить применив операцию сдвига на 1-2 разряда, можно попытаться их уменьшить хорошим источником питания. Вы чем питаете Ардуину?
Название: EC-метр на базе ардуино
Отправлено: serge mat от 24 Октября 2017, 19:54:40
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Проверил, заменив электроды резистором. (Хорошо, что скетчи записывал на каждом этапе.) Погрешность измерений перестала зависеть от частоты. от 1 до 30 кГц одинаково +-3 единицы при любом количестве измерений.
Вы немного не поняли. Вы обращаете внимание только на величину отклонения измерения (дисперсию) от среднего значения (математического ожидания). Дисперсия это очень важный параметр, но не менее важным является и частота появления ошибки (спектральная плотность). Т.е. допустим при 1кГц отклонения  возникают в среднем на каждом десятом измерении, на 5кГц на каждом третьем, на 10кГц на каждом пятом и т.д.. Тогда из дисперсии и спектральной плотности  ошибок можно установить доверительный интервал и выбрать оптимальную частоту и алгоритм усреднения.
..."+-3 единицы при любом количестве измерений." - это скорее всего похоже на шумы преобразования в АЦП, их можно исключить применив операцию сдвига на 1-2 разряда, можно попытаться их уменьшить хорошим источником питания. Вы чем питаете Ардуину?
Сейчас ардуина работает от ноутбука, питается по USB.
Как лучше считать частоту появления ошибки? Допустим, я рассчитал среднее отклонение от математического ожидания. Могу теперь я просто сосчитать точки с большим отклонением и поделить на общее число измерений?
Название: EC-метр на базе ардуино
Отправлено: PAA от 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кГц на электродах, но при такой частоте производитель не гарантирует заявленную точность. Кроме того, межэлектродный промежуток в растворе представляет собой параллельно включенную емкость (паразитная) и сопротивление (раствор). Емкость при переключении создает переходные процессы, которые влияют на уровень ошибок. Разработчики рекомендуют первое измерение вообще отбрасывать и не учитывать в обработке, т.е. на каждом электроде производить  в одном такте минимум два измерения, т.е. по сравнению с расчетной, частота должна быть снижена в два раза.  Вот где то так.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 24 Октября 2017, 21:49:51
Привет))
Давно не виделись  :)
Смотрю тема разрослась. Не ожидал.
Создавал-то ради прикола. А оно вона как))
Название: EC-метр на базе ардуино
Отправлено: serge mat от 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 измерений.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 24 Октября 2017, 22:45:35
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Разработчики рекомендуют первое измерение вообще отбрасывать и не учитывать в обработке, т.е. на каждом электроде производить  в одном такте минимум два измерения, т.е. по сравнению с расчетной, частота должна быть снижена в два раза.  Вот где то так.
Не вижу смысла делать по два измерения. Сам факт работы АЦП никак не должен влиять на ситуацию в растворе. Если надо подождать, то лучше использовать команду delayMicroseconds непосредственно перед измерением. Так есть возможность выбрать задержку максимально плавно. Но я не заметил влияния задержки даже на самых высоких частотах.
Я пока не пробовал менять тактовую частоту, видимо это будет следующей темой...  ;)
Название: EC-метр на базе ардуино
Отправлено: Vad от 24 Октября 2017, 23:37:03
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
..... Vad используют настройки регистра ADCSRA так что у них тактовая частота 1мГц, что позволяет получит время преобразования  13 мкс или 77кГц на электродах, но при такой частоте производитель не гарантирует заявленную точность.
....
не-не..
Вад, использует встроенный ИОН,  измеряет  всего 10 раз.. на каждом из  4х ЕС метрах, медленно и методично, не подгоняя АЦП,  использует всю шкалу, все 10 бит, включая 2 младших, которые у него не шумят "потому что" Вад никуда не спешит.
Ардуина у Вада производит замеры ЕС между делом, между тем.. как обслуживаются HTTP запросы, отдаются страницы, сливается статистика на сервер, между прерыванями по таймеру, для отсчета времени работы многочисленных помп, ламп, нагревателей, отслеживания состояния датчиков уровня, света, влажности....

В общем моя ардуина работает за всех :D
она полностью автономна... если это требуется
Название: EC-метр на базе ардуино
Отправлено: Vad от 24 Октября 2017, 23:48:00
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
delayMicroseconds
нужно застрелить того пионера, который написал  дилэй для арду..
даже не застрелить.. а четвертовать! >:D
Название: EC-метр на базе ардуино
Отправлено: serge mat от 25 Октября 2017, 06:56:51
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
delayMicroseconds
нужно застрелить того пионера, который написал  дилэй для арду..
даже не застрелить.. а четвертовать! >:D
Вот не надо!
У меня на кружке пятиклашки, я показал им код без делея... Они не въехали. Нельзя же так сразу! Надо постепенно, сначала делей, а потом можно и отказаться...
Название: EC-метр на базе ардуино
Отправлено: Vad от 25 Октября 2017, 13:24:11
Ну тут же не клуб пятиклассников.. *???*
я понимаю, что уровень развития некоторых товарисчей, присутствующих в обсуждении, даже ниже вашего кружка пятиклашек..
но... тем не менее... зачем детям такое показывать вообще...?
пусть бы они о дилэе узнали  потом, когда всему научились бы... узнали бы... и офигели.. :o


Название: EC-метр на базе ардуино
Отправлено: PAA от 25 Октября 2017, 18:42:01
..."Вад, использует встроенный ИОН,  измеряет  всего 10 раз.. на каждом из  4х ЕС метрах, медленно и методично, не подгоняя АЦП,  использует всю шкалу, все 10 бит, включая 2 младших, которые у него не шумят "потому что" Вад никуда не спешит."....
- Прошу прощения, Вад, я перепутал. Это ТС использует ускорение АЦП до 1МГЦ.
Что касается шума, то младший бит будет шуметь всегда, таковы особенности квантования, вы просто фильтруете шумы применяя обработку (ИМХО).
Название: EC-метр на базе ардуино
Отправлено: PAA от 25 Октября 2017, 19:26:14
Уважаемый serge mat, я увидел в вашем коде, что вы ускоряете команду analogRead() при помощи изменения настроек регистра ADCSRA - "
(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) ; - т.е. меняя значения трёх последних бит ( уменьшаете коэф. деления  - увеличивая тактовую частоту АЦП). Я уже писал, что разработчики не рекомендуют повышать её более 200кГц!!!. Если у вас Ардуино 16 МГЦ, то коэф. деления лучше не устанавливать меньше чем 64, при этом теоретически максимальная  частота переключения электродов должна быть не более чем 16х106/64/13 = 19.23кГц.
Но существует одна хитрость, которая позволяет не только поднять частоту переключения , но и сэкономить ресурс МК.  Дело в том, что АЦП в МК исп-т алгоритм последовательного приближения, а это означает, что время преобразования зависит от уровня аналогового сигнала на входе АЦП. АЦП требует 13 тактов, только при макс. входном сигнале - короче, есть алгоритм настроек АЦП, по сигналу окончания преобразования, который используется как  прерывание. В этом случае, АЦП будет реально работать в несколько раз быстрее без потери точности. Т.е. алгоритм таков: Идет переключение электрода, которое запускает преобразование, окончание преобразования переключает электрод и снова запускает преобразование и т.д. сколько раз - сколько вам необходимо измерений.  По поводу задержки - не нужно тут ни каких задержек, сбрасываете значение первого преобразования - вот это и есть задержка. Ваша задержка не оптимальна, длительность пер. процесса зависит от уровня сигнала и время преобразования тоже зависит, т.о. задержка будет плавающая на время перех. процесса (т.е. адаптивная), а у вас постоянная, переходный процесс давно закончился а ядро всё будет ждать когда закончится ваша задержка. Ну и про шумы - у МК в настройках регистра ADMUX (REFS[1:0])можно задать разные ИОН для АЦП так же и командой analogReference(). По умолчанию ИОН это ваш VCC из USB, а там шумов.... и все они пролазят в ADC value. Поменяйте ИОН на стабильный, похерьте младший разряд, разберитесь с analogRead и будет вам счастье и не нужно вам делать 300 выборок и тем более 5000 как Сив, вам для фильтрации хватит 10-15 выборок (ИМХО). Во всяком случае я себе пишу код именно под такой алгоритм.
Название: EC-метр на базе ардуино
Отправлено: serge mat от 25 Октября 2017, 21:06:18
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Ну и про шумы - у МК в настройках регистра ADMUX (REFS[1:0])можно задать разные ИОН для АЦП так же и командой analogReference(). По умолчанию ИОН это ваш VCC из USB, а там шумов.... и все они пролазят в ADC value. Поменяйте ИОН на стабильный, похерьте младший разряд, разберитесь с analogRead и будет вам счастье и не нужно вам делать 300 выборок и тем более 5000 как Сив, вам для фильтрации хватит 10-15 выборок (ИМХО). Во всяком случае я себе пишу код именно под такой алгоритм.
Давайте сначала об опорном напряжении. Команда analogReference() знает для UNO только три варианта аргумента. Сейчас стоит DEFAUL. Есть еще INTERNAL, но там напряжение ниже, как я понял. И EXTERNAL. Это значит мне надо батарейку вешать специальную? Опять же на 5В надо не одну батарейку... Как это грамотно сделать?
Название: EC-метр на базе ардуино
Отправлено: Vad от 25 Октября 2017, 21:46:28
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
алгоритм последовательного приближения, а это означает, что время преобразования зависит от уровня аналогового сигнала на входе АЦП.
вы опять  что-то путаете
последовательное  приближение -  "я угадаю ваши 10 бит за  10  шагов"
а значит пофиг какое напряжение  на входе..
придется пройти все 10 итераций ... по 1 для каждого бита
Название: EC-метр на базе ардуино
Отправлено: Vad от 25 Октября 2017, 22:00:15
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Ну и про шумы - у МК в настройках регистра ADMUX (REFS[1:0])можно задать разные ИОН для АЦП так же и командой analogReference(). По умолчанию ИОН это ваш VCC из USB, а там шумов.... и все они пролазят в ADC value. Поменяйте ИОН на стабильный, похерьте младший разряд, разберитесь с analogRead и будет вам счастье и не нужно вам делать 300 выборок и тем более 5000 как Сив, вам для фильтрации хватит 10-15 выборок (ИМХО). Во всяком случае я себе пишу код именно под такой алгоритм.
Давайте сначала об опорном напряжении. Команда analogReference() знает для UNO только три варианта аргумента. Сейчас стоит DEFAUL. Есть еще INTERNAL, но там напряжение ниже, как я понял. И EXTERNAL. Это значит мне надо батарейку вешать специальную? Опять же на 5В надо не одну батарейку... Как это грамотно сделать?
забить, использовать дефолт, вы все равно не заметите разницы
Название: EC-метр на базе ардуино
Отправлено: vladindre от 26 Октября 2017, 04:26:46
Цитировать
Это значит мне надо батарейку вешать специальную?
Нафига ?  Опорное по-нормальному заводится от питания схемы. То есть автоматически учитывается его дрейф и со всеми шумами и никакой головной боли. И все нормально работает.  Я всегда так делаю и никаких проблем не было. Еще никто не жаловался из клиентов. :)
Название: EC-метр на базе ардуино
Отправлено: siv237 от 26 Октября 2017, 06:07:20
Не знаю, зачем все эти сложности?

Вот специально сгенерил график раствора на клубничном дереве (пролив "ствола" раз в час) за месяц в высоком разрешении:
Могу дать сорсы данных хоть за весь период, для неверующих...

Верхний график температура воздуха (фиолетовым) и раствора в баке (зеленым)
Средний - усредненные сырые значения АЦП за секунду по электроду ЕС (фиолетовый), уровня (зеленый)

Никаких методов сглаживания графиков не применяется, измерения не откидываются и все включены в усреднение за 1 секунду.

Нижний - значение ЕС калиброванное по двум точкам с параметрами калибровки:
ec2=2.826
x2=145
ec1=1.232
x1=63

 (http://forum.ponics.ru/imagehost2/thumbs/ecn1n.png) (http://forum.ponics.ru/imagehost2/?v=ecn1n.png)

Отлично видно, что точности измерений, двумя проводками, более чем достаточно для бытовых задач.
Основные отклонения ЕС от ожидания вносит теплый или холодный раствор при при проливе его через трубу, так как температурный датчик и электроды несколько в разных местах раствора.

Разница в показаниях между электродом уровня и электродом ЕС указывает на уровень раствора, а точнее глубину погружения в раствор электрода. К сожалению градиент температуры в растворе и его динамическое не равномерное перемешивание насосом тут действует еще более сильно.

Моя схема три алюминиевых проводка без обвязок прямо в ардуину, 2 одновременных раствора с опросом по очереди, проверял 4 одновременно, в том числе в одной емкости (взаимное воздействие не оказывается).
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 26 Октября 2017, 10:43:00
 :D Я не понимаю зачем в домашней гидропонике такая ультраточность в ЕС?
+/- пара десятых после запятой погоды не сделают.
Или просто в теме письками все меряются?))  :D
У кого больше?))
Настолько все проще делается: антенный разъем в качестве датчика, ардуино, самый простой скетч с лайтовым медианным фильтром, и вуаля. Выводи себе в сериал хоть до усеру. Чё велосипед то изобретать.
Название: EC-метр на базе ардуино
Отправлено: siv237 от 26 Октября 2017, 11:13:59
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
:D Я не понимаю зачем в домашней гидропонике такая ультраточность в ЕС?
+/- пара десятых после запятой погоды не сделают.
Или просто в теме письками все меряются?))  :D
У кого больше?))
Настолько все проще делается: антенный разъем в качестве датчика, ардуино, самый простой скетч с лайтовым медианным фильтром, и вуаля. Выводи себе в сериал хоть до усеру. Чё велосипед то изобретать.
Это ты мне про велосипед? ты вообще понимаешь всю иронию своего сообщения? Этот график получен двумя, подключенными напрямую к портам, проводками без всяких медиан прямым опросом с ардуины.
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 26 Октября 2017, 11:16:18
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
:D Я не понимаю зачем в домашней гидропонике такая ультраточность в ЕС?
+/- пара десятых после запятой погоды не сделают.
Или просто в теме письками все меряются?))  :D
У кого больше?))
Настолько все проще делается: антенный разъем в качестве датчика, ардуино, самый простой скетч с лайтовым медианным фильтром, и вуаля. Выводи себе в сериал хоть до усеру. Чё велосипед то изобретать.
Это ты мне про велосипед? ты вообще понимаешь всю иронию своего сообщения? Этот график получен двумя, подключенными напрямую к портам, проводками без всяких медиан прямым опросом с ардуины.
Ну пипец!)))
Название: EC-метр на базе ардуино
Отправлено: Пресвятой_ДжимБим от 26 Октября 2017, 11:17:27
"Да я!!! Да у меня!!!")))
Название: EC-метр на базе ардуино
Отправлено: siv237 от 26 Октября 2017, 11:31:37
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
"Да я!!! Да у меня!!!")))
;D ;D ;D
Название: EC-метр на базе ардуино
Отправлено: Vad от 26 Октября 2017, 12:53:45
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Вот специально сгенерил график
надо его сгенерить во всех темах...
не стоит останавливаться на всего двух))
Название: EC-метр на базе ардуино
Отправлено: PAA от 26 Октября 2017, 21:26:36
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
Только зарегистрированные пользователи могут просматривать ссылки. Зарегистрируйтесь или Выполните вход
алгоритм последовательного приближения, а это означает, что время преобразования зависит от уровня аналогового сигнала на входе АЦП.
вы опять  что-то путаете
последовательное  приближение -  "я угадаю ваши 10 бит за  10  шагов"
а значит пофиг какое напряжение  на входе..
придется пройти все 10 итераций ... по 1 для каждого бита
Да вы правы, именно 10 шагов на 10 бит. Перепутал с последовательным АЦП.
Так или иначе, я всё таки начал писать скетч под вышеописанный алгоритм.
Название: EC-метр на базе ардуино
Отправлено: miniatur от 05 Августа 2019, 22:46:24
Спасибо ТС! Собрал как по схеме, залил скетч, работает! *Dance*