Библиотека для работы с датчиками газа серии 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); });
Возвращает новый объект GasSensor
. В качестве opts
ожидается объект со свойствами:
model
— строка с моделью датчика: "MQ2"
, "MQ3"
, "MQ4"
, "MQ5"
, "MQ6"
, "MQ7"
, "MQ8"
, "MQ9"
, "MQ135"
;dataPin
— пин аналогового входа, к которому подключён контакт S
;heatPin
— пин для управления нагревателем;r0
— калибровочное сопротивление датчика при 1000 PPM измеряемого газа.
Параметр r0
может быть установлен с помощью метода calibrate
при калибровке сенсора в чистом воздухе.
Объект реализует взаимодействие с модулями MQ. Для создания нового экземпляра, используйте connect
.
Принудительно управляет нагревателем сенсора с помощью ШИМ, скважность которого указывается в параметре val
от 0 до 1, либо булевым значением.
Если val
не передан, включает нагреватель на полную.
// ... gasSensor.heat(false); // <- отключаем gasSensor.heat(true); // <- включаем на полную gasSensor.heat(0.3); // <- включаем на 30%
Запускает предварительный прогрев сенсоров на полную мощность, на 30 секунд. После этого вызывает функцию callback
.
// ... gasSensor.preheat(function() { print('Gas sensor is ready to be read'); });
Нагреватель остаётся включенным после завершения прогрева.
Для датчиков MQ-7, MQ-9 и других датчиков, считывание показаний с которых происходит после цикла нагрева/охлаждения, вместо этого метода используйте cycleHeat
;
Запускает циклические изменения нагрева, которое требуется моделями вроде MQ-7 и MQ-9. В конце каждого цикла вызывает функцию callback
.
Для остановки цикла необходимо вместо функции обратного вызова передать false
или вызвать heat
с параметром 0
// ... var gasValue = 0; gasSensor.cycleHeat(function() { gasValue = gasSensor.read(); print('Gas value has been updated'); });
Устанавливает и возвращает калибровочный коэффициент r0
, который необходим, как базис для дальнейшего расчёта PPM при вызове read
.
Вызывать метод следует единожды, после прогрева датчика (см. preheat
). Предполагается, что на момент вызова калибровки, сенсор находится в чистом воздухе, при нормальной температуре и влажности.
Вы можете записать полученное значение и далее передавать его в функцию 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()); });
Считывает показания сенсора и возвращает данные в PPM (parts per million, миллионных долях).
Параметр gas
определяет считываемый газ. Ожидается одна из строк:
"LPG"
— сжиженный углеводородный газ;"CH4"
— метан; "C3H8"
— пропан;"C4H10"
— бутан; "CO"
— угарный газ; "CO2"
— углекислый газ; "H2"
— водород; "C2H5OH"
— этиловый спирт. Показания возвращаются в предположении, что кроме указанного газа в среде отсутствуют другие, влияющие на сенсор, газы; показания снимаются при нормальной температуре и влажности воздуха; датчик прогрет и откалиброван.
Если параметр gas
не указан, используется тот, к которому модель сенсора наиболее восприимчива: