Similar presentations:
Разработка метеостанции на базе ATmega8 для измерения влажности, давления и CO2
1. Министерство образования и науки Российской Федерации ФГБОУ ВПО «Тульский государственный университет» Технический колледж им
С.И.МосинаДИПЛОМНАЯ РАБОТА
на тему:
«Разработка метеостанции на базе ATmega8 для
измерения влажности, давления и CO2»
Автор работы:
студент группы 4-230113
Цебрук Владислав Игоревич
Руководитель:
Насибулин Р.Н
2.
ЗАДАЧИ РАССМАТРИВАЕМЫЕ В ДИПЛОМНОЙ РАБОТЕ:Выбор датчиков первичной информации
Разработка схемы сопряжения электронных блоков с
микроконтроллером ATmega8
Разработка программного обеспечения обработки
сигналов с датчиков первичной информации
3. ДАТЧИК ВЛАЖНОСТИ DHT22
Технические характеристики датчика:Предел измерения температур: −40, 0−125
°С;
Предел измерения влажности: 0,0−100,0 %;
Напряжение питания: 3,3−5,5 В;
Энергопотребление: 0,5−1,1 мА.
4. ДАТЧИК ДАВЛЕНИЯ BMP180
Технические характеристики датчика :Питание датчика: 1,8 … 3,6 В;
Потребляемый ток: 3 … 32 мкА;
Диапазон измерения: 300 …1100
гПа;
Время преобразований: 3 … 51 мс.
5. Датчик углеводородных газов и угарного газа MQ – 9
Технические характеристики датчика:Входное напряжение: 5 В;
Диапазон измерений: 100 - 10000ppm;
Потребляемая мощность (ток): 150 мА;
Цифровой выход: 0,1В и 5 В;
Аналоговый выход: 0.1 - 0,3 В.
6. Датчик CO2 MH-Z19
Технические характеристики датчика:Рабочее напряжение: 3.6 - 5.5 В;
Средний ток: < 18 мA;
Время прогрева: 3 минуты;
Диапазон измерений: 0 - 2000
ppm.
7. Структурная схема метеостанции
8. Принципиальная схема платы Arduino Uno
9. Принципиальная схема метеостанции
10. Программное обеспечение
#include <LCD5110_Basic.h>#include "DHT.h»
#include <Wire.h
#include <BMP180.h> BMP180
bmp;
#define DHTPIN 11
#define DHTTYPE DHT22 DHT
dht(DHTPIN, DHTTYPE);
int sensorPin = 0;
int redled = 8;
int yellowled = 9;
int greenled = 10;
int gas = 0;
myGLCD(3, 4, 5, 6, 7);
extern unsigned char SmallFont[];
void setup() {
pinMode(greenled, OUTPUT);
pinMode(yellowled, OUTPUT);
pinMode(redled, OUTPUT);
digitalWrite(greenled, HIGH);
digitalWrite(yellowled, HIGH);
digitalWrite(redled, HIGH);
delay (20000);
digitalWrite(greenled, LOW);
digitalWrite(yellowled, LOW);
digitalWrite(redled, LOW);
Serial.begin(9600);
Wire.begin();
delay(2000);
dht.begin();
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
bmp.begin();
}
void loop() {
gas = analogRead(sensorPin);
if (gas <= 220)
{
digitalWrite(greenled, HIGH);
digitalWrite(yellowled, LOW);
digitalWrite(redled, LOW);
}
else if (gas > 220, gas <= 600)
{
tone(12, 1000, 500);
digitalWrite(greenled, LOW);
digitalWrite(yellowled, HIGH);
digitalWrite(redled, LOW);
}
else if (gas > 600)
{
tone(12, 900, 500);
digitalWrite(greenled, LOW);
digitalWrite(yellowled, LOW);
digitalWrite(redled, HIGH);
}
Serial.println(gas);
float h = dht.readHumidity();
float t = dht.readTemperature();
bmp.read(3);
myGLCD.clrScr();
myGLCD.print("T=", LEFT, 0);
myGLCD.printNumF(t, 2, 13, 0);
myGLCD.print("C", 45, 0);
myGLCD.print("H=", LEFT, 10);
myGLCD.printNumF(h, 2, 13, 10);
myGLCD.print("%", 45, 10);
myGLCD.print("P=", LEFT, 20);
myGLCD.printNumF(bmp.pres, 1, 13,
20);
myGLCD.print("mm", 45, 20);
myGLCD.print("n=", LEFT, 30);
myGLCD.printNumF(gas, 0, 13, 30);
myGLCD.print("ppm", 45, 30);
delay (1000);
}