Как сделать индикатор уровня воды с помощью arduino

Базовый пример определения уровня воды

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

// Выводы, подключенные к датчику #define sensorPower 7 #define sensorPin A0 // Переменная для хранения значения уровня воды int val = 0; void setup() { // Настраиваем D7 на выход pinMode(sensorPower, OUTPUT); // Устанавливаем низкий уровень, чтобы на датчик не подавалось питание digitalWrite(sensorPower, LOW); Serial.begin(9600); } void loop() { // получить показания из функции ниже и напечатать его int level = readSensor(); Serial.print(«Water level: «); Serial.println(level); delay(1000); } // Данная функция используется для получения показаний int readSensor() { digitalWrite(sensorPower, HIGH); // Включить датчик delay(10); // Ждать 10 миллисекунд int val = analogRead(sensorPin); // Прочитать аналоговое значение от датчика digitalWrite(sensorPower, LOW); // Выключить датчик return val; // Вернуть текущее показание }

Как только скетч будет загружен, откройте окно монитора последовательного порта, чтобы увидеть вывод Arduino. Вы должны увидеть значение 0, когда датчик ничего не касается. Чтобы увидеть, как определяется вода, вы можете взять стакан воды и медленно погрузить в него датчик.

Рисунок 5 – Вывод показаний датчика уровня воды

Датчик не рассчитан на полное погружение, поэтому соблюдайте осторожность при эксперименте, чтобы с водой соприкасались только открытые дорожки на печатной плате

Объяснение

Скетч начинается с объявления выводов Arduino, к которым подключены выводы датчика + (VCC) и S (сигнал).

#define sensorPower 7 #define sensorPin A0

Далее мы определяем переменную val, в которой хранится текущее значение уровня воды.

int val = 0;

Теперь в функции setup() мы сначала настраиваем вывод для питания датчика как выход, а затем устанавливаем на нем низкий логический уровень, чтобы изначально питание на датчик не подавалось. А также настраиваем последовательную связь с компьютером.

pinMode(sensorPower, OUTPUT); digitalWrite(sensorPower, LOW); Serial.begin(9600);

В функции loop() мы периодически вызываем функцию readSensor() с интервалом в одну секунду и выводим возвращаемое значение.

int level = readSensor(); Serial.print(«Water level: «); Serial.println(level); delay(1000);

Функция readSensor() используется для получения текущего уровня воды. Она включает датчик, ждет 10 миллисекунд, считывает аналоговое значение с датчика, выключает датчик и затем возвращает аналоговое значение.

int readSensor() { digitalWrite(sensorPower, HIGH); // Включить датчик delay(10); // Ждать 10 миллисекунд int val = analogRead(sensorPin); // Прочитать аналоговое значение от датчика digitalWrite(sensorPower, LOW); // Выключить датчик return val; // Вернуть текущее показание }

Схема проекта

Схема подключения датчика MQ-135 к плате Arduino представлена на следующем рисунке.

Как видите, схема достаточно проста, в ней необходимо подключить к плате Arduino датчик MQ-135 и OLED дисплей. Датчик газа MQ-135 и OLED дисплей оба запитываются от контактов +5V и GND платы Arduino. Аналоговый выход датчика MQ-135 подключен к контакту A0 платы Arduino Nano. OLED дисплей подключен к плате Arduino Nano по интерфейсу SPI, схема их соединений показана в следующей таблице.

OLED дисплей Плата Arduino
GND Ground
VCC 5V
D0 10
D1 9
RES 13
DC 11
CS 12

После сборки схемы на макетной плате у нас получилась конструкция следующего вида:

Датчик мутности (Turbidity Sensor)

Внешний вид типового датчика мутности показан на следующем рисунке.

Как вы можете видеть из рисунка, модуль датчика мутности содержит 3 основные части: водонепроницаемый корпус, схема управления и соединительные провода. Измерительный датчик состоит из передатчика и приемника.

Из представленного рисунка видно, что в данном модуле используется инфракрасный диод в качестве источника света и инфракрасный приемник в качестве детектора света. Секция управления состоит из операционного усилителя и компонентов, которые усиливают обнаруженный сигнал света.

Датчик может быть подключен к модулю с помощью разъема JST XH типа. Он содержит три контакта: VCC (напряжение питания 5 В), ground (общий провод, земля), и output (выход). На выходной контакт модуля подается сигнал, пропорциональный интенсивности принятого светового сигнала.

Технические характеристики датчика мутности:

  • рабочее напряжение: 5VDC (5 В постоянного тока);
  • ток: 30mA (MAX);
  • диапазон рабочих температур: от -30 ° C до 80 ° C.
  • совместим с Arduino, Raspberry Pi, AVR, PIC и т.д.

Электрическая схема

Управлять этими кранами будет ESP8266-01. Это очень удобное и дешевое решение, но требующее подключения стабилизатора на 3.3 вольта. Управление мы будем осуществлять по протоколу MQTT с мобильного телефона на android. Подробно о том как подготовить ESP к прошивке скетчем из Arduino IDE и настройке брокер-сервера cloudmqtt.com для обмена данными между устройствами я описывал в статье «ESP + MQTT как основа умного дома» и по тому повторяться не буду.

Управлять нашими электрическими кранами будет микроконтроллер ESP8266. Порт RxD будет управлять открытием/закрытием крана. Порт GPIO0 будет измерять сопротивление между ним и землей — датчик воды. Краны подключены не напрямую, а через транзистор КТ316. Ток для этих кранов не большой и этого маломощного транзистора хватает. Принципиальная схема устройства:

Датчик воды представляет собой кусок текстолита с двумя контактами. Он двухсторонним скотчем приклеен в укромном низком месте где может появиться вода.

Что такое лидар

Лида́р (транслитерация LIDAR англ. Light Detection and Ranging «обнаружение и определение дальности с помощью света») — технология измерения расстояний путем излучения света (лазер) и замера времени возвращения этого отражённого света на ресивер (Википедия).

Сканирующие лидары в системах машинного зрения формируют двумерную или трёхмерную картину окружающего пространства. Лидары особенно ценны в развивающихся сегодня стремительными темпами технологиях построения беспилотных автомобилей благодаря таким своим возможностям как построение карты высот местности, определение расстояний до объектов с высокой точностью, определение скорости движущегося объекта.

Лидар (LIDAR) состоит из передатчика светового потока (обычно это лазер) и приемника отраженного от препятствия света. Зная скорость распространения света и время распространения луча света до препятствия и обратно, можно определить расстояние до препятствия.

Одним из способов измерения времени пролета (time of flight, ToF) светового луча является использование импульсного лазера и непосредственное измерение затраченного времени. Но в данном случае электроника, измеряющее это время, должна уметь работать с пикосекундными интервалами времени, что делает эти устройства весьма дорогими.

Однако есть и другой, более дешевый и простой способ измерения времени пролета светового луча, который основан на измерении фазового сдвига отраженного света. Для подобных измерений используется коллимированный инфракрасный лазер.

Для поверхностей, шероховатость (неравномерность) которых больше длины волны падающего света, возникает рассеянное (диффузное) отражение светового потока. В этом случае компоненты инфракрасного света возвращаются обратно практически параллельно излученному световому потоку. После этого датчик измеряет фазовый сдвиг между излученным и принятыми сигналами. При этом справедливо выражение:

c = f ∙ τ

где c – это скорость света, f – модулирующая частота, τ – длина волны.

А расстояние D’, пройденное излученным светом, определяется выражением:

D’ = B + 2A = B + (θ * τ) / 2π

Где A – это измеряемое расстояние, B – расстояние от устройства измерения фазы. В этом случае необходимое расстояние D между излучателем света и препятствием рассчитывается по формуле:

D = τ * θ / 4π

Где θ – измеренный электроникой фазовый сдвиг между переданным и принятым лучами света.

Можно показать, что расстояние обратно пропорционально квадрату амплитуды принятого сигнала. То есть амплитуда принятого сигнала непосредственно влияет на точность датчика.

Как работает аналоговый гравитационный датчик pH

Аналоговый датчик pH предназначен для измерения значения pH и показывает кислотность или щелочность (щелочные свойства) вещества. Датчик содержит в своем составе встроенный чип регулятора напряжения, который поддерживает широкий диапазон питающих напряжений — 3.3-5.5V DC (постоянного тока), что позволяет его подключать к контактам 5V и 3.3V любых плат Arduino. Выходной сигнал фильтруется аппаратным фильтром.

Технические характеристики модуля преобразования:

  • питающее напряжение: 3.3~5.5V;
  • BNC-соединитель (стандартный байонетный соединитель);
  • высокая точность: ±0.1@25°C;
  • диапазон измерений pH: 0~14.

Технические характеристики pH электрода датчика:

  • диапазон рабочих температур: 5~60°C;
  • точка нуля (нейтральная точка): 7±0.5;
  • простая калибровка;
  • внутреннее сопротивление: <250MΩ.

Внешний вид pH электрода датчика показан на следующем рисунке.

Внешний вид платы преобразования сигнала pH (pH Signal Conversion Board) показан на следующем рисунке.

Назначение контактов (распиновка) платы датчика pH:V+: вход напряжения 5V постоянного тока (DC);G: контакт земли (Ground pin, общий контакт);Po: аналоговый выход pH;Do: выход напряжения 3.3V постоянного тока (DC);To: выход температуры.

Внешний вид конструкции электрода показан на следующем рисунке.

Электрод pH выглядит обычно как трубка, сделанная из стекла, с наконечником в виде стеклянной мембраны. Эта мембрана наполняется буферным раствором с известным pH (обычно pH = 7). Электрод спроектирован таким образом, что на стеклянной мембране всегда поддерживается постоянная концентрация ионов H+. Когда электрод погружается в тестируемое вещество, ионы водорода этого вещества начинают обмен с другими позитивно заряженными ионами стеклянной мембраны, в результате чего создается электрохимический потенциал на концах мембраны, который подается на модуль электронного усиления — он измеряет разность потенциалов между двумя электродами и преобразует ее в значения pH. Преобразование разности потенциалов в значение pH осуществляется на основе уравнения Нернста.

Уравнение Нернста

Уравнение Нернста — уравнение, связывающее окислительно-восстановительный потенциал системы с активностями веществ, входящих в электрохимическое уравнение, и стандартными электродными потенциалами окислительно-восстановительных пар (википедия).

Также уравнение Нернста может быть использовано для расчета общей электродвижущей силы (ЭДС) электрохимической ячейки. В нашем случае мы его используем для расчета значения pH тестируемого вещества. На основе данного уравнения разность потенциалов на концах стеклянного электрода может быть рассчитана следующим образом:

E = E0 — 2.3 (RT/nF) ln Q

гдеQ= коэффициент реакцииE = выход в mV на концах электродаE0 = напряжение «нуля» для электродаR = идеальная газовая постоянная= 8.314 J/mol-KT = температура в ºK (Кельвинах)F = константа Фарадея = 95,484.56 C/molN = ионный заряд

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Основная цель нашего проекта – отображать на экране ЖК дисплея значения мутности в диапазоне от 0 до 100, где 0 соответствует абсолютно чистой жидкости, а 100 – очень сильно мутной жидкости.

Первым делом в программе подключим библиотеку для управления ЖК дисплеем по протоколу I2C.

Arduino

#include <LiquidCrystal_I2C.h>

1 #include <LiquidCrystal_I2C.h>

Затем дадим осмысленное название контакту, к которому подключен выход датчика мутности.

Arduino

int sensorPin = A0;

1 intsensorPin=A0;

В функции setup зададим режим работы на вывод данных для 3-х используемых цифровых контактов.

Arduino

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

1
2
3

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

В функции loop мы будем считывать значение с выхода контакта A0 с помощью функции AnalogRead.

Arduino

int sensorValue =analogRead(sensorPin);

1 intsensorValue=analogRead(sensorPin);

Но прежде чем делать вывод о том, насколько тестируемая жидкость мутная, необходимо разобраться с принципом работы (поведением) нашего датчика мутности. Для этого нам необходимо считать минимальное и максимальное значения с его выхода.

Для получения этих значений мы сначала погрузили датчик в абсолютно чистую воду, без всяких взвесей. В этом случае мы получили значение 640 с выхода датчика. Потом мы поместили абсолютно черное вещество между передатчиком и приемником и получили минимальное значение – 0. Таким образом, мы получили 640 в качестве максимального значения и 0 в качестве минимального. Теперь нам необходимо конвертировать эти значения в диапазон 0-100 – для этого мы будем использовать функцию map.

Arduino

int turbidity = map(sensorValue, 0,640, 100, 0);

1 intturbidity=map(sensorValue,,640,100,);

Затем мы будем отображать это значение на экране ЖК дисплея.

Arduino

lcd.setCursor(0, 0);
lcd.print(«turbidity:»);
lcd.print(» «);
lcd.setCursor(10, 0);
lcd.print(turbidity);

1
2
3
4
5

lcd.setCursor(,);

lcd.print(«turbidity:»);

lcd.print(»   «);

lcd.setCursor(10,);

lcd.print(turbidity);

После этого мы с помощью оператора if запишем несколько условий в программе. Следующий фрагмент кода будет зажигать зеленый цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись «its clear» – то есть жидкость чистая (прозрачная).

Arduino

if (turbidity < 20)
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
lcd.setCursor(0, 1);
lcd.print(» its CLEAR «);
}

1
2
3
4
5
6
7
8

if(turbidity<20)

{

digitalWrite(2,HIGH);

digitalWrite(3,LOW);

digitalWrite(4,LOW);

lcd.setCursor(,1);

lcd.print(» its CLEAR «);

}

Если значение мутности будет лежать в диапазоне 20-50, то будет загораться синий цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись «its cloudy»  – «мутновато немного».

Arduino

if ((turbidity > 20) && (turbidity < 50))
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
lcd.setCursor(0, 1);
lcd.print(» its CLOUDY «);
}

1
2
3
4
5
6
7
8

if((turbidity>20)&&(turbidity<50))

{

digitalWrite(2,LOW);

digitalWrite(3,HIGH);

digitalWrite(4,LOW);

lcd.setCursor(,1);

lcd.print(» its CLOUDY «);

}

Если значение мутности будет больше 50, то будет загораться красный цвет в светодиоде, а на экран ЖК дисплея будет выводиться надпись «it’s dirty»  – «жидкость совсем мутная».

Arduino

if ((turbidity > 50)
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
lcd.setCursor(0, 1);
lcd.print(» its DIRTY «);
}

1
2
3
4
5
6
7
8

if((turbidity>50)

{

digitalWrite(2,LOW);

digitalWrite(3,HIGH);

digitalWrite(4,LOW);

lcd.setCursor(,1);

lcd.print(» its DIRTY «);

}

После того как аппаратная часть проекта будет готова, загружайте программу в плату Arduino. После этого вы сможете измерять мутность жидкостей. Значения мутности будут отображаться на экране ЖК дисплея как показано на следующем рисунке. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Но следует отметить, что наш измеритель мутности жидкости отображает лишь процент мутности и не может выполнять роль промышленного прибора, но, тем не менее, он может быть использован для сравнения качества двух жидкостей (по параметру мутности).

Скетч для Ардуино

Скопируйте прилагаемый ниже скетч в Arduino IDE и найдите строку «int d = 18;» и измените «18» на глубину вашего резервуара в сантиметрах.


// Обратите внимание, что нумерация контактов arduino
// отличается от выводов микроконтроллера

int d = 18; // Введите глубину вашего резервуара в сантиметрах

int trig = 11; // Прикрепите триггер ультразвукового датчика к пину 11
int echo = 10; // Прикрепите эхо ультразвукового датчика к контакту 10
int pin1 = 2; // Высший уровень
int pin2 = 3;
int pin3 = 4;
int pin4 = 5;
int pin5 = 6;
int pin6 = 7; // Самый низкий уровень

void setup() {
pinMode (pin1, OUTPUT); // Установка контактов для управления вводом / выводом
pinMode (pin2, OUTPUT);
pinMode (pin3, OUTPUT);
pinMode (pin4, OUTPUT);
pinMode (pin5, OUTPUT);
pinMode (pin6, OUTPUT);
}

void loop()
{ digitalWrite(pin1, LOW); // Сброс светодиодов
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
digitalWrite(pin5, LOW);

// Установите переменные для продолжительности пинга,
// и расстояние в дюймах и сантиметрах:

long duration, in, cm; // ‘in’ — дюймы и ‘cm’ — сантиметры

// PING запускается HIGH-импульсом в 2 или более микросекундах.
// Дайте короткий LOW импульс заранее, чтобы обеспечить чистый HIGH-импульс:

pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(5);
digitalWrite(trig, LOW);

// Этот же вывод используется для считывания сигнала от PING:
// HIGH-импульс, продолжительность которого — это время (в микросекундах)
// от отправки пинга до приема его эха от объекта

pinMode(echo, INPUT);
duration = pulseIn(echo, HIGH);

// Преобразовать время в расстояние

in = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);

delay(100);
if (in

// Это дает расстояние, пройденное пингом, исходящим и возвратным,
// поэтому мы делимся на 2, чтобы получить расстояние от препятствия.

return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
// Скорость звука составляет 340 м/с или 29 микросекунд на сантиметр.
// Пинг выходит и обратно, поэтому, чтобы найти расстояние от объекта,
// мы берем половину пройденного расстояния.

return microseconds / 29 / 2;
}

Загрузите код для индикатора уровня воды Arduino непосредственно на плату Arduino или в микроконтроллер ATMega328P.

Проект определения уровня воды

Для нашего следующего примера мы собираемся создать портативный датчик уровня воды, который будет зажигать светодиоды в зависимости от уровня воды.

Схема соединений

Мы будем использовать схему из предыдущего примера. Но на этот раз нам нужно просто добавить несколько светодиодов.

Подключите три светодиода к цифровым выводам 2, 3 и 4 через токоограничивающие резисторы 220 Ом.

Соберите схему, как показано ниже:

Рисунок 7 – Индикация уровня воды с помощью светодиодов

Код Arduino

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

В этом скетче объявлены две переменные, а именно lowerThreshold и upperThreshold. Эти переменные представляют наши пороговые уровни.

Всё, что ниже нижнего порога, включает красный светодиод. Всё, что выше верхнего порога, включает зеленый светодиод. Всё, что находится между ними, включает желтый светодиод.

/* Измените эти значения, основываясь на своих значениях калибровки */ int lowerThreshold = 420; int upperThreshold = 520; // Выводы, подключенные к датчику #define sensorPower 7 #define sensorPin A0 // Переменная для хранения значения уровня воды int val = 0; // Объявляем выводы, к которым подключены светодиоды int redLED = 2; int yellowLED = 3; int greenLED = 4; void setup() { Serial.begin(9600); pinMode(sensorPower, OUTPUT); digitalWrite(sensorPower, LOW); // Настроить выводы светодиодов на выход pinMode(redLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(greenLED, OUTPUT); // Изначально выключить все светодиоды digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } void loop() { int level = readSensor(); if (level == 0) { Serial.println(«Water Level: Empty»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } else if (level > 0 && level <= lowerThreshold) { Serial.println(«Water Level: Low»); digitalWrite(redLED, HIGH); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); } else if (level > lowerThreshold && level <= upperThreshold) { Serial.println(«Water Level: Medium»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, LOW); } else if (level > upperThreshold) { Serial.println(«Water Level: High»); digitalWrite(redLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, HIGH); } delay(1000); } // Данная функция используется для получения показаний int readSensor() { digitalWrite(sensorPower, HIGH); delay(10); val = analogRead(sensorPin); digitalWrite(sensorPower, LOW); return val; }

Оригинал статьи:

How Water Level Sensor Works and Interface it with Arduino

Когда может пригодиться?

Представим ситуацию, когда у вас на дачном участке есть душ, основу которого составляет бак с водой, который наполняется либо через насос либо дождевой водой.

Часто узнать количество воды в резервуаре может быть утомительной задачей. Обычно вы поднимаетесь по лестнице и проверяете уровень вручную или вы услышите что вода переполняется сверху.

В наши дни появилось много разных электронных индикаторов уровня воды, но они часто имеют высокую цену и обычно сложны в установке. Большинство доступных систем используют электроды или поплавковые переключатели, которые могут быть головной болью в долгосрочной перспективе.

Мы решим эту задачу с совершенно другим подходом к знанию уровня воды — с использованием ультразвукового модуля и Ардуино. Преимущество этого метода заключается в том, что он бесконтактный, поэтому такие проблемы, как коррозия электродов, не будут влиять на эту систему. Кроме того, этот индикатор уровня воды Arduino намного проще устанавливать, чем обычные системы.

Скачивание и установка необходимого программного обеспечения

Программную среду Arduino IDE можно скачать по этой ссылке, хотя если вы читаете этот материал наверняка она у вас уже есть. Arduino IDE требует драйвера для взаимодействия с платой Arduino. Обычно этот драйвер устанавливается автоматически как только вы подключаете плату Arduino к вашему компьютеру. Но если у вас возникла проблема с этим шагом, то найти ее решение вы можете в полном руководстве по плате Arduino Uno на нашем сайте.

Программную среду Processing IDE можно скачать по этой ссылке. Processing представляет собой отличную программную среду с открытым исходным кодом, хорошо подходящую для многих DIY (сделай сам) проектов. Она имеет несколько режимов работы. В режиме “Java Mode” мы можем создать в ней оконное приложение для операционной системы Windows (.EXE files), в режиме “Android mode” – мобильное приложение для Android (.APK files), в режиме “Python mode” можно писать программы на языке Python. В данной статье мы не будем подробно описывать работу с данной программной средой (для этой цели в сети есть специализированные сайты), но будет приведен текст программы в ней для нашего проекта, который вы можете использовать если не хотите изучать данную программную среду.

Проект определения уровня воды

Для нашего следующего примера мы собираемся создать портативный датчик уровня воды, который будет зажигать светодиоды в зависимости от уровня воды.

Схема соединений

Мы будем использовать схему из предыдущего примера. Но на этот раз нам нужно просто добавить несколько светодиодов.

Подключите три светодиода к цифровым выводам 2, 3 и 4 через токоограничивающие резисторы 220 Ом.

Соберите схему, как показано ниже:

Рисунок 7 – Индикация уровня воды с помощью светодиодов

Код Arduino

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

В этом скетче объявлены две переменные, а именно и . Эти переменные представляют наши пороговые уровни.

Всё, что ниже нижнего порога, включает красный светодиод. Всё, что выше верхнего порога, включает зеленый светодиод. Всё, что находится между ними, включает желтый светодиод.

Подготовка датчика MQ-135 к измерению углекислого газа

Датчик газа MQ-135 способен обнаруживать широкий диапазон различных газов в окружающем воздухе: NH3, NOx, алкоголь, бензол, дым и углекислый газ (CO2). Датчик MQ-135 можно купить как в виде модуля, так и в виде отдельного датчика. В нашем проекте мы будем использовать его в виде модуля для измерения концентрации CO2 в единицах PPM (parts per million – частей на миллион). Схема модуля датчика MQ-135 показана на следующем рисунке:

В этой схеме весьма важную роль играет нагрузочный резистор RL – его сопротивление может изменяться в зависимости от концентрации газа. В соответствии с даташитом на датчик MQ-135 сопротивление нагрузочного резистора может изменяться от 10 кОм до 47 кОм. Даташит рекомендует чтобы вы калибровали датчик для 100ppm NH3 или для 50ppm концентрации алкоголя в воздухе и использовали значение нагрузочного резистора RL примерно 20 кОм. Но если вы внимательно посмотрите на плату модуля MQ-135, то вы увидите что значение резистора RL на ней составляет 1 кОм (102).

Поэтому, чтобы корректно измерять концентрацию CO2, вам необходимо заменить этот резистор 1 кОм на резистор сопротивлением 22 кОм.

Как сделать аналоговый датчик своими руками

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • самодельный датчик воды;
  • 1 светодиод и резистор на 220 Ом;
  • провода «папа-папа» и «папа-мама».

Собираем датчик протечки воды своими руками

Для начала необходимо отрезать три клеммника от колодки (смотри фото). Клеммники применяются для соединения проводов, они изготавливаются из негорючего материала, который легко разрезается. Внутрь клеммников встроены металлические контакты с винтовыми зажимами. Контактами мы соединим гвозди с проводами и резистором, а корпус клеммника будет служить каркасом для нашего датчика.

Фото. Схема датчика воды своими руками и подключение к Ардуино

Далее необходимо ослабить контакты, выкрутив винты. Согласно схеме на фото вставьте в крайние контакты гвозди и зачищенные концы проводов. Левый и средний контакт следует соединить резистором с номиналом 220 Ом. В правый контакт также вставляется зачищенный конец провода. Осталось лишь подготовить контакты на всех проводах, для подключения датчика воды к плате Ардуино.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector