Программный код замеров EC - пример функции — различия между версиями

Материал из ЭНЭ
Перейти к: навигация, поиск
(Новая страница: «<syntaxhighlight lang="C++"> ////////////////////////////////////////////// // 2023.05.31 woronin, umkiedu@gmail.com // Тарирование ЕС да…»)
 
 
(не показано 7 промежуточных версии этого же участника)
Строка 1: Строка 1:
<syntaxhighlight lang="C++">
+
<syntaxhighlight lang="C">
 
//////////////////////////////////////////////
 
//////////////////////////////////////////////
 
//    2023.05.31 woronin,  umkiedu@gmail.com
 
//    2023.05.31 woronin,  umkiedu@gmail.com
//    Тарирование ЕС датчика. Датчик температууры аналоговый
+
//    Тарирование ЕС датчика. Датчик температуры аналоговый
 
//    Robot UMKI controller  K6_3
 
//    Robot UMKI controller  K6_3
 
//    Датчик ЕС1  и ЕС2 - в виде вилки, сравниваем два щупа
 
//    Датчик ЕС1  и ЕС2 - в виде вилки, сравниваем два щупа
 
//////////////////////////////////////////////
 
//////////////////////////////////////////////
  
 +
const int  analogRAW1 = A0; // Аналоговый порт измерения EC
 
// Измеритель ЕС
 
// Измеритель ЕС
 
//  Схема подключения
 
//  Схема подключения
Строка 13: Строка 14:
 
int DP1 = 8; // Цифровой порт соединенный с аналоговым портом и электродом измерения
 
int DP1 = 8; // Цифровой порт соединенный с аналоговым портом и электродом измерения
 
int DP2 = 9; // Цифровой порт соединенный с электродом противофазы
 
int DP2 = 9; // Цифровой порт соединенный с электродом противофазы
int DP3 = A2; //  порт соединенный с аналоговым портом и электродом измерения
+
long num_measure = 50000; // Количество измерений для усреднения
int DP4 = A3; //  порт соединенный с электродом противофазы
+
long nummea = 50000; // Количество измерений для усреднения
+
  
  
 
//Функция замера электропроводности в RAW
 
//Функция замера электропроводности в RAW
float cond_sol(int d1, int d2, int a0, long measur) {
+
float cond_sol(int d1, int d2, int a0, long measure) {
 
   pinMode(d1, OUTPUT);
 
   pinMode(d1, OUTPUT);
 
   pinMode(d2, OUTPUT);
 
   pinMode(d2, OUTPUT);
Строка 26: Строка 25:
 
   unsigned long an = 0;
 
   unsigned long an = 0;
  
   while (var < measur) {
+
   while (var < measure) {
  
 
     digitalWrite(d2, HIGH);
 
     digitalWrite(d2, HIGH);
Строка 44: Строка 43:
 
}
 
}
  
 +
void setup() {
 +
  // сюда надо вставить код инициализации нужных устройств
  
 +
}
 +
 +
void loop() {
 +
 +
  // сюда надо вставить код примерно такой
 +
  float ec_raw1 = cond_sol(DP1, DP2, analogRAW1, num_measure);
 +
  Serial.println(ec_raw1, 3);
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
 +
[[Файл:Схема ЕС измерений переменным током.png|link=http://wiki.laser.ru/images/1/14/Схема_ЕС_измерений_переменным_током.png|500px|thumb|left|Схема ЕС измерений переменным током]]
 +
 +
[[Измерение EC раствора гидропонной установки|В начало]]
 
[[Категория:Примеры программирования Arduino]]
 
[[Категория:Примеры программирования Arduino]]
 
[[Категория:Home Assistant]]
 
[[Категория:Home Assistant]]

Текущая версия на 16:30, 28 июня 2023

//////////////////////////////////////////////
//     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);
}


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

В начало