arches
Üye
- Katılım
- 11 Şub 2014
- Mesajlar
- 17
- Puanları
- 1
Merhaba arkadaşlar,
Arduino Uno, Dht22, Tek kanal röle ve 128x32 oled ile bir devre hazırladım.
Devrenin amacı ortamda ki nem değeri %80 olduğunda bir adet fanı egzos amaçlı çalıştırmak.
Bir çok deneme sonrasında sistemin düzgün çalıştığını ve rölenin bir çok 220V cihazı çalıştırabildiğini gözlemledim.
Ancak röleye resimlerde görünen 220v ile çalışan fanı bağladığımda röle tetikleme sorunu yaşıyor ve sistemi kitliyor.
Aslında devrenin amacı bu fanı kontrol etmek.
Ne var ki fandan başka herşeyi çalıştırıyor.
Bir fikri olan varsa lütfen bilgi paylaşımında bulunsun, ben çok uğraştım ama sonuç alamadım.
Aşağıda devre fotolarını ve kodları da belirttim.
Şimdiden teşekkür ederim…
#include <DHT.h> //DHT kütüphanesi.
#include <Adafruit_SSD1306.h> //OLED kütüphanesi.
#include <Adafruit_GFX.h> //OLED kütüphanesi.
#include <Wire.h> //OLED kütüphanesi.
#define SCREEN_WIDTH 128 // OLED ekran pikseli
#define SCREEN_HEIGHT 32 // OLED ekran pikseli
#define OLED_RESET 4
#define DHTPIN 8 //Dht sensör pini.
#define DHTTYPE DHT22 //Sensör türünü tanımlama.
#define role 2 // Röle sinyal pini tanımlama.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DHT dht(DHTPIN, DHT22);
void setup()
{
pinMode(role, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(10);
display.clearDisplay ();
dht.begin();
}
void loop()
{
delay(1000);
float nem = dht.readHumidity(); //Nem değerini alır.
float sicaklik = dht.readTemperature(); //Sıcaklık değerini alır.
if (isnan(nem)) //Sensörden veri alınmazsa uyarı vermesi için.
{
display.clearDisplay (); // ekranı sil
display.setTextSize (2);
display.setCursor (5,6); // isi yazı konumu (yatay, dikey)
display.print ("VERI YOK");
display.display ();
}
else
{
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // isi yazı konumu (yatay, dikey)
display.print ("ISI");
display.setCursor (46,10); // ısı verisi konumu (yatay, dikey)
display.print(String(sicaklik)); //display temperature from sensor
display.drawCircle (110,3,2, WHITE);
display.display ();
delay(2000);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // nem yazı konumu (yatay, dikey)
display.print ("NEM");
display.setCursor (40,10); // % isaret konumu (yatay, dikey)
display.print("%");
display.setCursor (55,10); // nem verisi konumu (yatay, dikey)
display.print (String(nem));
display.display ();
delay(2000);
}
if (nem >= 80) //Eğer Nem %80'in üzerindeyse
{
digitalWrite(role, LOW);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (12,10); // yazı konumu (yatay, dikey)
display.print ("FAN ACIK");
display.display ();
delay(2000);
}
else
{
digitalWrite(role, HIGH);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // yazı konumu (yatay, dikey)
display.print ("FAN KAPALI");
display.display ();
delay(1000);
}
}
Arduino Uno, Dht22, Tek kanal röle ve 128x32 oled ile bir devre hazırladım.
Devrenin amacı ortamda ki nem değeri %80 olduğunda bir adet fanı egzos amaçlı çalıştırmak.
Bir çok deneme sonrasında sistemin düzgün çalıştığını ve rölenin bir çok 220V cihazı çalıştırabildiğini gözlemledim.
Ancak röleye resimlerde görünen 220v ile çalışan fanı bağladığımda röle tetikleme sorunu yaşıyor ve sistemi kitliyor.
Aslında devrenin amacı bu fanı kontrol etmek.
Ne var ki fandan başka herşeyi çalıştırıyor.
Bir fikri olan varsa lütfen bilgi paylaşımında bulunsun, ben çok uğraştım ama sonuç alamadım.
Aşağıda devre fotolarını ve kodları da belirttim.
Şimdiden teşekkür ederim…
#include <DHT.h> //DHT kütüphanesi.
#include <Adafruit_SSD1306.h> //OLED kütüphanesi.
#include <Adafruit_GFX.h> //OLED kütüphanesi.
#include <Wire.h> //OLED kütüphanesi.
#define SCREEN_WIDTH 128 // OLED ekran pikseli
#define SCREEN_HEIGHT 32 // OLED ekran pikseli
#define OLED_RESET 4
#define DHTPIN 8 //Dht sensör pini.
#define DHTTYPE DHT22 //Sensör türünü tanımlama.
#define role 2 // Röle sinyal pini tanımlama.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DHT dht(DHTPIN, DHT22);
void setup()
{
pinMode(role, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(10);
display.clearDisplay ();
dht.begin();
}
void loop()
{
delay(1000);
float nem = dht.readHumidity(); //Nem değerini alır.
float sicaklik = dht.readTemperature(); //Sıcaklık değerini alır.
if (isnan(nem)) //Sensörden veri alınmazsa uyarı vermesi için.
{
display.clearDisplay (); // ekranı sil
display.setTextSize (2);
display.setCursor (5,6); // isi yazı konumu (yatay, dikey)
display.print ("VERI YOK");
display.display ();
}
else
{
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // isi yazı konumu (yatay, dikey)
display.print ("ISI");
display.setCursor (46,10); // ısı verisi konumu (yatay, dikey)
display.print(String(sicaklik)); //display temperature from sensor
display.drawCircle (110,3,2, WHITE);
display.display ();
delay(2000);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // nem yazı konumu (yatay, dikey)
display.print ("NEM");
display.setCursor (40,10); // % isaret konumu (yatay, dikey)
display.print("%");
display.setCursor (55,10); // nem verisi konumu (yatay, dikey)
display.print (String(nem));
display.display ();
delay(2000);
}
if (nem >= 80) //Eğer Nem %80'in üzerindeyse
{
digitalWrite(role, LOW);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (12,10); // yazı konumu (yatay, dikey)
display.print ("FAN ACIK");
display.display ();
delay(2000);
}
else
{
digitalWrite(role, HIGH);
display.clearDisplay (); // ekranı sil
display.setTextSize (2); // yazı boyutu
display.setTextColor (WHITE); // yazı rengi
display.setCursor (0,10); // yazı konumu (yatay, dikey)
display.print ("FAN KAPALI");
display.display ();
delay(1000);
}
}
Ekli dosyalar
-
12361F36-4950-4D50-99BB-F48679F54554.jpeg403.5 KB · Görüntüleme: 20
-
AE8D2B08-69EB-4096-9FB1-5A578FD46F83.jpeg326.3 KB · Görüntüleme: 14
-
300F5D38-7B11-42DC-ABC5-833C1763F394.jpeg332.8 KB · Görüntüleme: 9
-
CC7815F3-6B31-4917-BBFE-FA5FDE60D870.jpeg334.2 KB · Görüntüleme: 20
-
0D382351-0A97-4314-A93C-A863403357BE.jpeg374.3 KB · Görüntüleme: 23