Программный код замеров EC - пример функции

Материал из УМКИwiki
Версия от 12:47, 10 августа 2023; Woronin (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="C"> ////////////////////////////////////////////// // 2023.05.31 woronin, umkiedu@gmail.com // Тарирование ЕС датчика. Датчик температуры аналоговый // Robot UMKI controller K6_3 // Датчик ЕС1 и ЕС2 - в виде вилки, сравниваем два щупа ////////////////////////////////////////////// const int analogRAW1 = A0; // Аналоговый...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
//////////////////////////////////////////////
//     2023.05.31 woronin,  umkiedu@gmail.com
//     Тарирование ЕС датчика. Датчик температуры аналоговый
//     Robot UMKI controller  K6_3
//     Датчик ЕС1  и ЕС2 - в виде вилки, сравниваем два щупа
//////////////////////////////////////////////

const int  analogRAW1 = A0; // Аналоговый порт измерения EC
// Измеритель ЕС
//  Схема подключения
//  DP1----A0-----> Инвертированные значения от 1023
//  DP2-----------> Прямые значения от 0
int DP1 = 8; // Цифровой порт соединенный с аналоговым портом и электродом измерения
int DP2 = 9; // Цифровой порт соединенный с электродом противофазы
long num_measure = 50000; // Количество измерений для усреднения


//Функция замера электропроводности в RAW
float cond_sol(int d1, int d2, int a0, long measure) {
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  long var = 1;
  unsigned long ap = 0;
  unsigned long an = 0;

  while (var < measure) {

    digitalWrite(d2, HIGH);
    ap = 0 + analogRead(a0) + ap;
    digitalWrite(d2, LOW);

    digitalWrite(d1, HIGH);
    an = 1023 - analogRead(a0) + an;
    digitalWrite(d1, LOW);
    var++;
  }
  pinMode(d1, INPUT);
  pinMode(d2, INPUT);
  // Усреднение АЦП при положительной ap и отрицательной an фазе
  return (((float)ap + (float)an) / var / 2);

}

void setup() {
  // сюда надо вставить код инициализации нужных устройств

}

void loop() {

  // сюда надо вставить код примерно такой
  float ec_raw1 = cond_sol(DP1, DP2, analogRAW1, num_measure);
  Serial.println(ec_raw1, 3);
}


Схема ЕС измерений переменным током

В начало