Программный код замеров EC - пример функции — различия между версиями
Материал из ЭНЭ
Woronin (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="C++"> ////////////////////////////////////////////// // 2023.05.31 woronin, umkiedu@gmail.com // Тарирование ЕС да…») |
Woronin (обсуждение | вклад) |
||
(не показано 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; // Цифровой порт соединенный с электродом противофазы | ||
− | + | long num_measure = 50000; // Количество измерений для усреднения | |
− | + | ||
− | long | + | |
//Функция замера электропроводности в RAW | //Функция замера электропроводности в RAW | ||
− | float cond_sol(int d1, int d2, int a0, long | + | 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 < | + | 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); }