====== @amperka/gas-sensor======
Библиотека для работы с [[amp>collection/gas?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|датчиками газа]] серии MQ. Поддерживаются модели с MQ-2 до MQ-9.
Получение значений в абсолютных единицах с этих датчиков требует нетривиальной арифметики. Библиотека скрывает внутри себя все эти сложности.
var gasSensor = require('@amperka/gas-sensor').connect({
dataPin: A0, // разъём SVG
heatPin: P10, // разъём GHE
model: 'MQ3'
});
gasSensor.preheat(function() {
var basePpm = gasSensor.calibrate();
print('PPM base in current environment: ', basePpm);
setInterval(function() {
var val = gasSensor.read('LPG');
print('LPG PPM =', val);
}, 1000);
});
===== Функции модуля =====
func:: connect(opts)
Возвращает новый объект ''[[#GasSensor|GasSensor]]''. В качестве ''opts'' ожидается объект со свойствами:
* ''model'' — строка с моделью датчика: ''"MQ2"'', ''"MQ3"'', ''"MQ4"'', ''"MQ5"'', ''"MQ6"'', ''"MQ7"'', ''"MQ8"'', ''"MQ9"'', ''"MQ135"'';
* ''dataPin'' — пин аналогового входа, к которому подключён контакт ''S'';
* ''heatPin'' — пин для управления нагревателем;
* ''r0'' — калибровочное сопротивление датчика при 1000 PPM измеряемого газа.
Параметр ''r0'' может быть установлен с помощью метода ''[[#calibrate|calibrate]]'' при калибровке сенсора в чистом воздухе.
class:: GasSensor
Объект реализует взаимодействие с модулями MQ. Для создания нового экземпляра, используйте ''[[#connect|connect]]''.
meth:: heat([val])
Принудительно управляет нагревателем сенсора с помощью [[конспект-arduino:шим|ШИМ]], скважность которого указывается в параметре ''val'' от 0 до 1, либо булевым значением.
Если ''val'' не передан, включает нагреватель на полную.
// ...
gasSensor.heat(false); // <- отключаем
gasSensor.heat(true); // <- включаем на полную
gasSensor.heat(0.3); // <- включаем на 30%
meth:: preheat(callback)
Запускает предварительный прогрев сенсоров на полную мощность, на 30 секунд. После этого вызывает функцию ''callback''.
// ...
gasSensor.preheat(function() {
print('Gas sensor is ready to be read');
});
Нагреватель остаётся включенным после завершения прогрева.
Для датчиков MQ-7, MQ-9 и других датчиков, считывание показаний с которых происходит после цикла нагрева/охлаждения, вместо этого метода используйте ''[[#cycleHeat|cycleHeat]]'';
meth:: cycleHeat(callback)
Запускает циклические изменения нагрева, которое требуется моделями вроде MQ-7 и MQ-9. В конце каждого цикла вызывает функцию ''callback''.
Для остановки цикла необходимо вместо функции обратного вызова передать ''false'' или вызвать ''heat'' с параметром ''0''
// ...
var gasValue = 0;
gasSensor.cycleHeat(function() {
gasValue = gasSensor.read();
print('Gas value has been updated');
});
meth:: calibrate()
Устанавливает и возвращает калибровочный коэффициент ''r0'', который необходим, как базис для дальнейшего расчёта PPM при вызове ''[[#read|read]]''.
Вызывать метод следует единожды, после прогрева датчика (см. ''[[#preheat|preheat]]''). Предполагается, что на момент вызова калибровки, сенсор находится в чистом воздухе, при нормальной температуре и влажности.
Вы можете записать полученное значение и далее передавать его в функцию ''[[#connect|connect]]'' при создании объекта. В этом случае больше калибровать этот конкретный физический экземпляр датчика при регулярном использовании не нужно.
// ...
gasSensor.preheat(function() {
var r0 = gasSensor.calibrate();
print('r0 =', r0); // Выведет число вроде 6.328
print('ppm =', gasSensor.read());
});
// Теперь в новой программе можно задавать коэффициент сразу
gasSensor = require('@amperka/gas-sensor').connect({
dataPin: A0,
heatPin: P10,
model: 'MQ3',
r0: 6.328
});
gasSensor.preheat(function() {
print('ppm =', gasSensor.read());
});
meth:: read([gas])
Считывает показания сенсора и возвращает данные в PPM (parts per million, миллионных долях).
Параметр ''gas'' определяет считываемый газ. Ожидается одна из строк:
* ''"LPG"'' — сжиженный углеводородный газ;
* ''"CH4"'' — метан;
* ''"C3H8"'' — пропан;
* ''"C4H10"'' — бутан;
* ''"CO"'' — угарный газ;
* ''"CO2"'' — углекислый газ;
* ''"H2"'' — водород;
* ''"C2H5OH"'' — этиловый спирт.
Показания возвращаются в предположении, что кроме указанного газа в среде отсутствуют другие, влияющие на сенсор, газы; показания снимаются при нормальной температуре и влажности воздуха; датчик прогрет и откалиброван.
Если параметр ''gas'' не указан, используется тот, к которому модель сенсора наиболее восприимчива:
* [[amp>product/troyka-mq2-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-2]] — сжиженный углеводородный газ (LPG), изобутан, (n)бутан, пропан, метан, водород, пары этилового спирта (алкоголя);
* [[amp>product/troyka-mq3-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-3]] — пары этилового спирта (алкоголя), в меньшей степени к бензину;
* [[amp>product/troyka-mq4-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-4]] — метан, природный газ;
* [[amp>product/troyka-mq5-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-5]] — сжиженный углеводородный газ (LPG), природный газ, изобутан, (n)бутан, пропан, метан;
* [[amp>product/troyka-mq6-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-6]] — сжиженный углеводородный газ (LPG), природный газ, изобутан, (n)бутан;
* [[amp>product/troyka-mq7-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-7]] — угарный газ;
* [[amp>product/troyka-mq8-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-8]] — водород;
* [[amp>product/troyka-mq9-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-9]] — угарный газ, метан, природный газ, сжиженный углеводородный газ(LPG), изобутан, (n)бутан;
* [[amp>product/troyka-mq135-gas-sensor?utm_source=man&utm_campaign=mqgas&utm_medium=wiki|MQ-135]] — углекислый газ.