Страница 1 из 1

Разбор и процентное соотношение с аналогового датчика влажности

Добавлено: Ср мар 06, 2019 3:11 pm
dioxin
Есть аналоговый емкостный датчик датчик влажности почвы:
СпойлерПоказать
SENS-SOIL-CAP-1024x768_0.jpg
SENS-SOIL-CAP-1024x768_0.jpg (69.32 КБ) 5711 просмотров
Получая с него данные, заметил что идут они с понижением - тоесть чем выше влажность, тем меньше значение.
Опустил датчик в стакан с водой, получил значение - 441, просушил - 824.
Нужно привести эти значения к процентному соотношению. На с++ есть простое решение, команда MAP, а вот на php такого не нашел. Очень помогла ссылка тов. Alexandr в телеграм-канале.
Вот что получилось:

Код: Выделить всё

$hum=gg('vlajnost.pochva1'); // Забираем не обработанные данные с датчика
$sat = round(map($hum,834,441,20,100)); // Вызываем функцию с параметрами и округляем
sg ('vlajnost.pochva1_obr',$sat); // Записываем влажность в процентах

function map($x, $in_min, $in_max, $out_min, $out_max) {
    return ($x - $in_min) * ($out_max - $out_min) / ($in_max - $in_min) + $out_min;
}
Циферки означают:
834 - Данные с сухого датчика
441 - Данные датчика в стакане с водой
20 - Начало отсчета в процентах при сухом датчике( дома по замерам 20% влажности)
100 - Конец отсчета в процентах при 100% влажности ( в стакане с водой)

Re: Разбор и процентное соотношение с аналогового датчика влажности

Добавлено: Пт янв 31, 2020 12:33 pm
aleks-zonov
dioxin писал(а):
Ср мар 06, 2019 3:11 pm
Есть аналоговый емкостный датчик датчик влажности почвы:
СпойлерПоказать
SENS-SOIL-CAP-1024x768_0.jpg
Получая с него данные, заметил что идут они с понижением - тоесть чем выше влажность, тем меньше значение.
Опустил датчик в стакан с водой, получил значение - 441, просушил - 824.
Нужно привести эти значения к процентному соотношению. На с++ есть простое решение, команда MAP, а вот на php такого не нашел. Очень помогла ссылка тов. Alexandr в телеграм-канале.
Вот что получилось:

Код: Выделить всё

$hum=gg('vlajnost.pochva1'); // Забираем не обработанные данные с датчика
$sat = round(map($hum,834,441,20,100)); // Вызываем функцию с параметрами и округляем
sg ('vlajnost.pochva1_obr',$sat); // Записываем влажность в процентах

function map($x, $in_min, $in_max, $out_min, $out_max) {
    return ($x - $in_min) * ($out_max - $out_min) / ($in_max - $in_min) + $out_min;
}
Циферки означают:
834 - Данные с сухого датчика
441 - Данные датчика в стакане с водой
20 - Начало отсчета в процентах при сухом датчике( дома по замерам 20% влажности)
100 - Конец отсчета в процентах при 100% влажности ( в стакане с водой)
Добрый день использовал ваш код для перевода АЦП с датчика давления воды в бар, не подскажите как можно получить не целые значения а хотя бы до десятых, сам в коде пока не силен могу только немного разобраться в примерах.

Re: Разбор и процентное соотношение с аналогового датчика влажности

Добавлено: Пт янв 31, 2020 12:49 pm
SmoKE_xDDD
$sat = round(map($hum,834,441,20,100), 2);

https://www.php.net/manual/ru/function.round.php

Re: Разбор и процентное соотношение с аналогового датчика влажности

Добавлено: Пт янв 31, 2020 1:54 pm
aleks-zonov
SmoKE_xDDD писал(а):
Пт янв 31, 2020 12:49 pm
$sat = round(map($hum,834,441,20,100), 2);

https://www.php.net/manual/ru/function.round.php
Спасибо всё проще чем я думал, займусь изучением.