====== @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]] — углекислый газ.