Главная страница

Датчик температуры и влажности. мет указ КР. Проектирование универсального датчика для измерения температуры, влажности и уровня воды


Скачать 2.78 Mb.
НазваниеПроектирование универсального датчика для измерения температуры, влажности и уровня воды
АнкорДатчик температуры и влажности
Дата31.03.2023
Размер2.78 Mb.
Формат файлаdocx
Имя файламет указ КР.docx
ТипДокументы
#1028061

Задания для курсовой работы по дисциплине

«Основы электроники и схемотехники»
Тема: Проектирование универсального датчика для измерения температуры, влажности и уровня воды
Заданные параметры




Материалы







1

Arduino Mega Wifi

12

V

2

LED Дисплей 1602A с платой I2C

5

V

3

Датчик температуры и влажности DHT22

3,3 – 5

V

4

Датчик уровня воды

3,3 – 5

V

5

Батарейка CRONA

9

V

6

Провода Папа-Мама

-

-


ВВЕДЕНИЕ


  1. Датчик температуры и влажности

Использование датчиков в системах умного дома


Конструктор Arduino предлагает возможность каждому создать свою собственную систему умного дома для конкретных задач. Универсальная плата с микроконтроллером Arduino UNO позволяет подключать и взаимодействовать с различными модулями. Пример этого показан в статье. Модуль влажности и температуры, способный измерять концентрацию пара в воздухе, теперь подключен к дисплею и отображает соответствующую информацию. Вы можете использовать другие сценарии работы:

  1. Отправьте информацию на удаленный сервер и прочтите ее через приложение со своего смартфона.

  2. Включите реле в цепи, которое включит вентилятор в вытяжке, если концентрация пара в ванной достигнет 85%. И выключите, когда замеры покажут норму.

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

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

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

  1. Датчик уровня воды



Контроль уровня воды в баке


Существует большое количество типов баков, отличающихся областью применения, и при этом пригодных для хранения воды.

  • В частных домах они применяются для хранения питьевой воды и воды для общих нужд;

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

  • В промышленности баки применяются для:

    • отопительных систем (котлы),

    • транспортировки воды (автоцистерны),

    • хранения,

    • фильтрации,

    • водоподготовки,

    • водоснабжения различных технологических процессов.

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

Датчик нужно выбирать исходя из задачи и типа бака. Так, для одного и того же бака вы можете купить датчик уровня воды магнитного, поплавкового, кондуктивного, емкостного, оптического, вибрационного, ультразвукового или гидростатического принципа действия. Но для каждого процесса выбирается свой тип датчика. Подробнее o выборе датчика уровня воды для баков читайте в нашей статье: «Датчик уровня воды в баке».


Контроль уровня воды в бассейне


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

Для этого устанавливают систему «сообщающихся сосудов», где основным является бассейн, а показательным – ёмкость, соединённая с ним трубками. В эту ёмкость датчик уровня воды может быть установлен только определённого типа.

В данном случае подойдут уровнемеры, измеряющие уровень воды с помощью зонда (потенциометрические, ёмкостные, магнитострикционные и т.п.).

Что касается измерения и контроля уровня воды датчиками в бассейнах и ёмкостях открытого типа узнайте, перейдя по ссылке: «Датчики уровня воды для бассейнов, баков и других открытых резервуаров».


Измерение уровня воды в скважине и колодце


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


Контроль уровня воды в скважине


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

Но из-за малого пространства для установки и работы сигнализаторов следует выбрать либо погружные гидростатические датчики уровня, либо кондуктивные сигнализаторы. Подробнее об измерении уровня читайте в статье: «Датчики динамического уровня воды в скважине».


Контроль уровня воды в колодце


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

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


Контроль уровня сточных вод


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


Контроль уровня воды в отопительном котле


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

Таким образом, после установки системы контроля за уровнем воды вы не останетесь без тепла и водоснабжения в самый неподходящий момент.

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


Контроль уровня воды в промышленных резервуарах

Теперь рассмотрим применение датчиков уровня воды в промышленных резервуарах. Сделаем это на примере водоочистной станции.

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

Прежде чем купить датчики уровня воды в резервуаре, нужно определиться с целями его применения. Выбор датчиков уровня воды в резервуаре обуславливается исходя из производственной необходимости и параметров технологических процессов.
ОСНОВНАЯ ЧАСТЬ

1.0 Датчик температуры и влажности DHT22
DHT-22 (также называемый AM2302) представляет собой датчик влажности и температуры с цифровым выходом, для измерения используется емкостной датчик влажности и термистор, все показания передаются по цифровой информационной шине.

1.1 Технические параметры 


►  Модель: DHT22
►  Напряжение питания: 3.3 В … 5 В
►  Выходной сигнал: цифровой
►  Чувствительный элемент: полимерный конденсатор
►  Диапазон измерения влажности: 0 … 100%, погрешность ±2%
►  Диапазон измерения температуры:  -40°С … +80°С, погрешность  ±0.5°С
►  Задержка: 2с
►  Габариты: 15.1 мм x 25.1 мм x 7.7 мм

1.2 Общие сведения

Датчики DHT22 состоит из чувствительного емкостного датчика и NTC-термистора, а также 8-ми битном чипе, который преобразует аналоговый сигнал с датчиков, в цифровой на выходе. При производстве, компоненты входящие в модуль DHT22 имеют разные параметры и чтобы показания были реальными, производитель калибрует каждый датчик DHT22 в калибровочной камере, а поправочный коэффициент сохраняется в памяти и вызывается при считывании данных. Преимущество данных датчиков, это небольшие размеры, низкая энергопотребление, высокая дальность передачи до 20м, из недостатков можно отнести, задержка в передачи показаний в 2 секунды.

Все элементы расположены в пластиковом корпусе, спереди расположены отверстия, а сзади залит компаундом. Для крепления предусмотрено отверстие, диаметром 3 мм, габариты датчика DHT22 можно посмотреть на рисунке ниже.

1.3 DHT22

  • Диапазон измерения влажности: 0-100%

  • Погрешность изменения: +/- 2%

  • Сходимость: +/- 1%

  • Отклонение в измерениях с течением времени: +/- 0,5% в год

Распиновка для подключения датчика температуры и влажности DHT22:


DHT22 лицевая сторона слева направо

VCC

SDA

NC

GND

Вывод VCC подает питание на датчик. Хотя напряжение питания допускается в диапазоне от 3,3 до 5,5 В, рекомендуется питание 5 В. В случае питания 5 В датчик можно держать на расстоянии до 20 метров от источника питания. Однако при питании от источника питания 3,3 В длина кабеля не должна превышать 1 метр. В противном случае падение напряжения в сети приведет к ошибкам измерения.

Вывод данных используется для связи между датчиком и микроконтроллером.

NC не подключен

GND должен быть подключен к земле Arduino.

1.4 Температура

Ни для кого не секрет, что существуют определенные пределы комфортной температуры в помещении. Например, когда в помещении температура повышается до 25ºС и более, я чувствую себя не очень комфортно (слишком жарко), а если температура опускается ниже 18ºС, то мне становится холодно. Так вот в нашей автоматизированной системе при температуре 25ºС открывается окно для того, чтобы проветрить (охладить помещение). Вот так выглядит фрагмент программного кода, который отвечает за то, что будет происходить при повышении температуры до 25ºС:

Фрагмент 1

if (t > 25)

{myservo.write} (45);

В первой строчке фрагмента указано условие, где температура принимает значение больше 25ºС. Далее команда myservo.write (45); включает сервопривод, который в свою очередь открывает окно для проветривания. При температуре меньше 23ºС окно закрывается:

Фрагмент 2

if (t< 23)

{myservo.write (0);

delay(1000);

myservo.detach} ();

Команда myservo.write(0);запускает сервопривод, который устанавливает окно в нулевое положение, т.е. закрывает. Команда delay (1000); устанавливает задержку в 1 с. (1000 мс.) в течение которой происходит закрывание окна. Команда myservo.detach(); выключает сервопривод для экономии энергии.

Но бывает так, что при жаркой погоде температура в помещении уже достигла 25ºС и продолжает расти. И даже открытое окно уже не может должным образом охлаждать температуру в помещении. Так вот для такого случая предусмотрен вентилятор. Он включается, когда температура превысит 30ºС. Но для того, чтобы вентилятор включался только в том случае, когда выполняется условие, заданное в программе, пришлось соорудить самодельный переключатель, который состоит из n-p-nтранзистора, резистора на 10 кОм. Когда на базу транзистора через резистор поступает сигнал (1), то вентилятор включается.

Фрагмент 3

if (t > 30)

{digitalWrite(VEN, HIGH)};

if (t < 26)

{digitalWrite(VEN, LOW)};

В коде произошло объявление о подключении вентилятора к 5 пину Arduino:

int VEN = 5;

pinMode(VEN, OUTPUT);

Строчка digitalWrite (VEN, HIGH); обозначает, что когда на резистор приходит значение HIGH, т.е. 1, вентилятор включается. Соответственно при значении LOW, т.е. 0, вентилятор выключается.

Таким образом, при температуре в помещении выше 30ºС включается вентилятор, работа которого вместе с открытым для проветривания окном будет способствовать понижению температуры в помещении. Когда же температура наконец-то начнёт падать и достигнет значения меньше 26ºС, то вентилятор выключится.

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

Итак, допустим, произошла остановка котла. Температура в доме начала стремительно падать и снизилась до значения меньше 15ºС.

В этот момент с Arduino на модуль реле приходит команда на включение. Модуль в свою очередь включает кнопку быстрого набора на сотовом телефоне, и происходит звонок со звуковым сообщением на телефон владельца дома, сообщающий, что дома выключилось отопление:

Фрагмент 4

const int REL = 8;

pinMode(REL, OUTPUT);

if (t < 15.0)

{digitalWrite(REL, HIGH)};

Строчка digitalWrite(REL, HIGH); включает реле и включает звонок с телефона. Также информирование происходит и при температуре выше 45ºС, потому что это может говорить о том, что в доме случился пожар:

Фрагмент 5

if (t > 45)

{digitalWrite(REL, HIGH)};


1.5 Влажность

Помимо допустимых температурных параметров можно говорить об оптимальных значениях влажности воздуха в жилом помещении. Норма влажности воздуха в помещении находится в пределах от 30% до 60%, а 45% - самое оптимальное значение уровня влажности. Итак, при влажности воздуха больше 60% окно открывается:

Фрагмент 6

if (h>= 60)

{myservo.attach(SERVO);

myservo.write(45)};

При влажности меньше 50% окно закрывается:

Фрагмент 7

if (h < 50)

{myservo.write(0);

delay(50);

myservo.detach()};

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

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

Фрагмент 8

const int DVI = 10;

pinMode(DVI, INPUT);

val = digitalRead(DVI);

if (val == HIGH && h > 60)

{digitalWrite(LED, LOW);

myservo.write(0);

delay(1000);

myservo.detach();

lcd.setCursor(14, 1);

lcd.print("WC");

Serial.println("Motion!")};

else

{digitalWrite(LED, HIGH);

myservo.attach(SERVO);

myservo.write(45);

lcd.setCursor(14, 1);

lcd.print("WO");

Serial.println("No motion!")};



    1. Датчик уровня воды


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

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

  • + – питание датчика;

  • - – земля;

  • S - аналоговое значение.

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


2.1 Технические характеристики модуля


  • Напряжение питания: 3.3-5 В;

  • Ток потребления 20 мА;

  • Выход: аналоговый;

  • Зона обнаружения: 16×30 мм;

  • Размеры: 62×20×8 мм;

  • Рабочая температура: 10 – 30 °С.




контакта

Название контакта

Назначение контакта

1

5V

Напряжение питания

2

Trig

Входной контакт датчика. На него необходимо подать импульс длительностью 10 мкс чтобы запустить датчик в работу (чтобы он начал излучение ультразвуковой волны).

3

Echo

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

4

Gnd

Общий провод (земля)

3.0 Код программы:


#include

#include

#include

LiquidCrystal_I2C LCD(0x27, 16, 2);

DHT dht(13, DHT22);

int water;

void setup() {

  LCD.init();

  LCD.backlight();

  dht.begin();

  pinMode(13, OUTPUT);

  pinMode(A8, INPUT);

  Serial.begin(9600);

}

void loop() {

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  water = analogRead(A8);

  if (water > 100) { digitalWrite(12, HIGH); }

  if (water < 100) { digitalWrite(12, LOW); }

  Serial.println(water);

  LCD.setCursor(0, 1);

  LCD.print("Humidity  |");

  LCD.print(h);

  LCD.setCursor(0, 0);

  LCD.print("Temperatur|");

  LCD.print(t);

}



ЗАКЛЮЧЕНИЕ

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

ПРИЛОЖЕНИЕ

Прочие датчики

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

Фрагмент 9

if (!digitalRead(FLAME))

{digitalWrite(BUZ, LOW);

digitalWrite(REL, LOW)};

else

{digitalWrite(BUZ, HIGH)};

Также в нашем прототипе присутствует датчик газа, который реагирует помимо паров газа на пары этилового спирта. Когда датчик улавливает пары этилового спирта или газа, он отправляет звуковой сигнал на телефон владельца:

Фрагмент 10

if (digitalRead(GAS) == HIGH)

{digitalWrite(REL, HIGH)};

Код программы:

#include

#include

#include

#include "DHT.h"

#define DHTPIN 2

#define DHTTYPE DHT11

#include "Servo.h"

const int SERVO = 9;

const int DVI = 10;

const int REL = 8;

const int FLAME = 3;

const int BUZ = 7;

int LED = 12;

int val = 0;

int angle = 1;

int VEN = 5;

const int GAS = 11;

DHT dht(DHTPIN, DHTTYPE);

Adafruit_BMP085 bmp;

LiquidCrystal_I2C lcd(0x27, 16, 2);

byte degree[8] =

{

B00110,

B01001,

B01001,

B00110,

B00000,

B00000,

B00000,

B00000,

};

Servo myservo;

void setup()

{

myservo.attach(SERVO);

Serial.begin(9600);

dht.begin();

lcd.begin();

lcd.backlight();

pinMode(VEN, OUTPUT);

pinMode(DVI, INPUT);

pinMode(LED, OUTPUT);

pinMode(REL, OUTPUT);

pinMode(FLAME, INPUT);

pinMode(BUZ, OUTPUT);

myservo.write(0);

if (!bmp.begin()) {

Serial.println("Could not find a valid BMP085 sensor, check wiring!");

while (1) {}

}

}

void loop()

{

val = digitalRead(DVI); // считывание состояния датчика

lcd.createChar(0, degree);

float h = dht.readHumidity();

float t = bmp.readTemperature();

int p = (bmp.readPressure()/133.3);

lcd.setCursor(0, 1);

lcd.print("Temp: ");

lcd.setCursor(5, 1);

lcd.print(t);

lcd.setCursor(10, 1);

lcd.write((byte) 0);

lcd.setCursor(11, 1);

lcd.print("C");

lcd.setCursor(11, 0);

lcd.print("H:");

lcd.setCursor(13, 0);

lcd.print(h);

lcd.setCursor(15, 0);

lcd.print("%");

lcd.setCursor(0, 0);

lcd.print("At.P: ");

lcd.setCursor(5, 0);

lcd.print(p);

lcd.setCursor(8, 0);

lcd.print("mm");

//Условия по открытию окна//

if (h < 44)

{

myservo.write(0);

delay(50);

myservo.detach();

}

if (h == 23.0)

{

myservo.attach(SERVO);

}

if (h >= 23.1 && h < 55 && val == LOW)

{

myservo.detach();

}

if (h >= 45)

{

myservo.attach(SERVO);

myservo.write(45);

}

//Температура//

if (t < 15.0){

digitalWrite(REL, HIGH);

}

if (t > 45){

digitalWrite(REL, HIGH);

}

if (t > 25){

myservo.write(45);

}

if (t < 23){

myservo.write(0);

delay(1000);

myservo.detach();

}

if (t > 30){

digitalWrite(VEN, HIGH);

}

if (t < 26){

digitalWrite(VEN, LOW);

}

//Считывание с датчика движения//

if (val == HIGH){

digitalWrite(LED, LOW);

myservo.write(0);

delay(1000);

myservo.detach();

//delay(300000);

lcd.setCursor(14, 1);

lcd.print("WC");

Serial.println("Motion!");

}

else {

digitalWrite(LED, HIGH);

myservo.attach(SERVO);

myservo.write(45);

lcd.setCursor(14, 1);

lcd.print("WO");

Serial.println("No motion!");

}

if (t > 30){

myservo.attach(SERVO);

myservo.write(angle);

myservo.write(45);

}

//ДатчикГАЗА//

if (digitalRead(GAS) == HIGH){

digitalWrite(REL, HIGH);

}

//ДатчикОгня//

if (!digitalRead(FLAME)){

digitalWrite(BUZ, LOW);

//digitalWrite(REL, LOW);

}

else{

digitalWrite(BUZ, HIGH);

}

}


Графическая часть

  1. ПРИЛОЖЕНИЕ А. структурную схему:

  2. ПРИЛОЖЕНИЕ В. схематический план:











СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Блум Дж. Изучаем Arduino: инструменты и методы технического волшебства. Пер. с англ. – СПб.: БХВ-Петербург, 2015 г. – 336 с.: ил.

2. Кравченко А.В. “10 практических устройств на AVR -микроконтроллерах”. Книга 3. – “МК-Пресс”, СПб.: “КОРОНА - ВЕК”, 2011. – 416 с.

3. Гололобов В.Н. «Умный дом» своими руками / В.Н. Гололобов. – М.:НТ Пресс, 2007. – 416 с.: ил.- (В помощь радиолюбителю)

4. Петин В.А. Проекты с использованием контроллера Arduino. – СПб.: БХВ-Петербург, 2014. – 400 с.: ил. – (Электроника)

5. Соммер У. Программирование микроконтроллерных плат Arduino/Freeduino. – СПб.: БХВ-Петербург, 2012. – 256 с.: ил. – (Электроника)

  1. Обзор датчика температуры и влажности DHT22 – RobotChip

  2. Метеостанция на Arduino от А до Я. Часть 4 / Хабр (habr.com)

  3. Ардуино DHT11 и DHT22: обзор, схема, подключение датчиков (arduinoplus.ru)

  4. Датчик уровня воды: описание, подключение, схема, характеристики | ВИКИ (3d-diy.ru)

  5. Измерение уровня воды с помощью Arduino и датчика JSN SR-04T: схема и программа (microkontroller.ru)




Ф.05.3-34 Издание 6


написать администратору сайта