@amperka/gas-sensor
Библиотека для работы с датчиками газа серии 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
не указан, используется тот, к которому модель сенсора наиболее восприимчива:
- MQ-2 — сжиженный углеводородный газ (LPG), изобутан, (n)бутан, пропан, метан, водород, пары этилового спирта (алкоголя);
- MQ-3 — пары этилового спирта (алкоголя), в меньшей степени к бензину;
- MQ-4 — метан, природный газ;
- MQ-5 — сжиженный углеводородный газ (LPG), природный газ, изобутан, (n)бутан, пропан, метан;
- MQ-6 — сжиженный углеводородный газ (LPG), природный газ, изобутан, (n)бутан;
- MQ-7 — угарный газ;
- MQ-8 — водород;
- MQ-9 — угарный газ, метан, природный газ, сжиженный углеводородный газ(LPG), изобутан, (n)бутан;
- MQ-135 — углекислый газ.