Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

TDS Sensörü ile Su Kalitesi Ölçer: Arduino ve OLED

TDS Sensörü ile Su Kalitesi Ölçer: Arduino ve OLED
Kısa cevap

TDS sensörü, sudaki çözünmüş tuz ve minerallerin toplam miktarını suyun elektrik iletkenliğinden tahmin eder ve sonucu ppm (yaklaşık mg/L) olarak verir. Arduino, Gravity TDS sensörü, DS18B20 sıcaklık sensörü ve OLED ekranla farklı suları karşılaştıran bir ölçer yapılabilir. TDS değeri tek başına suyun içilebilir olduğunu göstermez.

Musluk suyu, şişe suyu ve arıtılmış su arasındaki farkı sayılarla göstermek, fen bilimleri ve kimya derslerine uygun güzel bir öğrenci projesidir. Bu yazıda bir TDS sensörü, sıcaklık sensörü, OLED ekran ve Arduino ile su kalitesi ölçer yapıyoruz. TDS değerinin ne anlama geldiğini ve neyi ölçmediğini de dürüstçe açıklıyoruz. Malzeme listesi, bağlantı, kod, güvenlik notları ve TÜBİTAK 4006 sunum önerileri yazıda yer alıyor.

TDS nedir, sensör neyi ölçer?

TDS (Total Dissolved Solids, toplam çözünmüş katı madde), suda çözünmüş halde bulunan tuz, mineral ve diğer maddelerin toplam miktarını gösteren bir değerdir. Birimi ppm'dir; suda 1 ppm yaklaşık 1 mg/L demektir.

TDS sensörü bu maddeleri tek tek tartmaz. Suya batırılan iki metal uç arasından küçük bir alternatif akım geçirir ve suyun elektrik iletkenliğini ölçer. Suda çözünmüş iyonlar (kalsiyum, magnezyum, sodyum, klorür, bikarbonat gibi) arttıkça iletkenlik de artar. Sensör kartı bu iletkenliği bir dönüşüm katsayısıyla ppm değerine çevirir. Bu yüzden sonuç bir tahmindir.

TDS değeri suyun içilebilir olduğunu gösterir mi?

Hayır, TDS değeri tek başına suyun içilebilir ya da güvenli olduğunu göstermez. Düşük TDS'li bir su bakteri içerebilir, yüksek TDS'li bir su ise yalnızca mineralce zengin olabilir. İçme suyunun güvenliği ancak yetkili laboratuvarların mikrobiyolojik ve kimyasal analizleriyle belirlenir.

TDS ölçümü neyi gösterir?TDS ölçümü neyi göstermez?
Sudaki çözünmüş iyonların toplam miktarını (yaklaşık)Bakteri, virüs ve parazitleri
Arıtma cihazının (ör. ters ozmoz) mineralleri ne kadar tuttuğunuKurşun, arsenik gibi düşük derişimdeki zararlı maddeleri ayrı ayrı
Suya tuz ya da mineral karıştığında oluşan değişimiŞeker, alkol ve iyon oluşturmayan pek çok organik maddeyi
İki su örneği arasındaki farkıHangi maddenin suda olduğunu

Dünya Sağlık Örgütü (WHO), TDS için sağlığa dayalı bir sınır değer koymaz; değer daha çok suyun tadıyla ilişkilendirilir. WHO'ya göre TDS'si yaklaşık 600 mg/L'nin altındaki su genellikle tat açısından iyi kabul edilir, 1000 mg/L'nin üstünde ise tat belirgin biçimde bozulur. Aşağıdaki aralıklar yalnızca genel bir fikir verir:

TDS (ppm)Genel yorum
0 – 50Çok az mineral: damıtık su ya da ters ozmoz cihazı çıkışı
50 – 300Düşük-orta mineralli; birçok şişe suyu ve musluk suyu bu aralıkta olabilir
300 – 600Mineralce zengin; tadı fark edilebilir
600 – 1000Yüksek; tat bozulabilir, kireçlenme artar
1000 üstüBu sensörün ölçüm aralığının dışında

Hangi malzemeler gerekir?

Arduino Uno, Gravity TDS sensör kiti, su geçirmez DS18B20 sıcaklık sensörü, 0,96 inç OLED ekran ve bir 4,7 kΩ direnç yeterlidir. Sıcaklık sensörü gereklidir, çünkü suyun iletkenliği sıcaklıkla yaklaşık %2/°C değişir.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1Ölçer, hesaplar, ekrana yazar
DFRobot Gravity TDS ölçüm sensörü kiti1Suyun iletkenliğini ölçer (0-1000 ppm)
Su geçirmez DS18B20 sıcaklık sensörü1Su sıcaklığını ölçer, düzeltme için
0,96 inç 128x64 I2C OLED ekran (SSD1306)1Sonucu gösterir
4,7 kΩ direnç (direnç seti)1DS18B20 veri hattı için pull-up
Jumper kablo, breadboard, temiz cam bardaklar1 setBağlantı ve su örnekleri

Kit; prob, sinyal dönüştürücü kart ve bağlantı kablosuyla gelir. Kart 3,3-5,5V ile çalışır ve 0-2,3V arasında analog çıkış verir. Üreticinin belirttiği doğruluk, 25 °C'de tam ölçeğin ±%10'udur; yani sonuçlar ±100 ppm'e kadar sapabilir. Bu yüzden ölçer, kesin değer yerine karşılaştırma için idealdir.

Devre nasıl bağlanır?

TDS kartının A (sinyal) ucu A1'e, DS18B20'nin sarı veri kablosu D2'ye, OLED ekranın SDA ucu A4'e, SCL ucu A5'e bağlanır. Tüm modüller Arduino'nun 5V ve GND pinlerinden beslenir.

  1. TDS kartını bağlayın: + → 5V, − → GND, A → A1. Probu kartın üzerindeki sokete takın.
  2. DS18B20'yi bağlayın: kırmızı → 5V, siyah → GND, sarı → D2. Sarı kablo ile 5V arasına 4,7 kΩ direnç koyun.
  3. OLED ekranı bağlayın: VCC → 5V, GND → GND, SDA → A4, SCL → A5.
  4. Kütüphane Yöneticisi'nden "OneWire", "DallasTemperature", "Adafruit SSD1306" ve "Adafruit GFX" kütüphanelerini kurun.
  5. Kodu yükleyin. TDS probunu ve DS18B20'yi aynı bardaktaki suya batırın; Arduino ve kartlar masada, sudan uzakta kalsın.
TDS su kalitesi ölçer bağlantı şeması: Gravity TDS sensör kartının artı ucu 5V'a, eksi ucu GND'ye, A sinyal ucu Arduino Uno A1 pinine bağlı; su geçirmez DS18B20 sıcaklık sensörünün DATA ucu D2'ye bağlı ve 4,7 kΩ dirençle 5V'a çekili; 0,96 inç OLED ekranın SDA ucu A4'e, SCL ucu A5'e bağlı; TDS probu ve DS18B20 probu aynı su bardağında; altta 0-50 ppm damıtık ya da ters ozmoz, 50-300 düşük-orta mineral, 300-600 mineralce zengin, 600-1000 yüksek ve tat bozulabilir aralıklarını gösteren ölçek ve TDS değerinin suyun içilebilir olduğunu göstermediği uyarısı
TDS kartı A1'e, DS18B20 D2'ye (4,7 kΩ pull-up), OLED SDA/SCL A4/A5'e bağlanır; TDS değeri suyun güvenli olduğunu göstermez.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_SSD1306.h>

const byte TDS_PIN = A1, DS_PIN = 2;
const float VREF = 5.0;      // Arduino Uno analog referansi
const float KAL = 1.0;       // kalibrasyon katsayisi
OneWire ow(DS_PIN);
DallasTemperature ds(&ow);
Adafruit_SSD1306 ekran(128, 64, &Wire, -1);
int ornek[30];
byte sira = 0;
unsigned long sonOrnek = 0, sonGoster = 0;

int medyan() {                            // 30 olcumun ortanca degeri
  int k[30];
  memcpy(k, ornek, sizeof(k));
  for (byte i = 1; i < 30; i++) {
    int v = k[i]; int j = i - 1;
    while (j >= 0 && k[j] > v) { k[j + 1] = k[j]; j--; }
    k[j + 1] = v;
  }
  return k[15];
}

void setup() {
  Serial.begin(9600);
  ds.begin();
  ds.setResolution(10);                   // olcum ~190 ms surer
  ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  ekran.setTextColor(SSD1306_WHITE);
}

void loop() {
  if (millis() - sonOrnek >= 40) {        // saniyede 25 ornek
    sonOrnek = millis();
    ornek[sira] = analogRead(TDS_PIN);
    sira = (sira + 1) % 30;
  }
  if (millis() - sonGoster < 1000) return;
  sonGoster = millis();

  ds.requestTemperatures();
  float t = ds.getTempCByIndex(0);
  if (t < -50) t = 25.0;                  // sensor yoksa 25 C kabul et
  float v = medyan() * VREF / 1024.0;
  float vk = v / (1.0 + 0.02 * (t - 25.0));   // 25 C'ye gore duzelt
  float tds = (133.42 * vk * vk * vk - 255.86 * vk * vk + 857.39 * vk) * 0.5 * KAL;

  ekran.clearDisplay();
  ekran.setTextSize(1); ekran.setCursor(0, 0);
  ekran.print(F("TDS (ppm)"));
  ekran.setTextSize(3); ekran.setCursor(0, 16);
  ekran.print(tds, 0);
  ekran.setTextSize(1); ekran.setCursor(0, 54);
  ekran.print(F("Su: ")); ekran.print(t, 1); ekran.print(F(" C"));
  ekran.display();
  Serial.print(t, 1); Serial.print(F(" C, ")); Serial.print(tds, 0); Serial.println(F(" ppm"));
}

Koddaki üçüncü dereceden denklem, üreticinin bu prob için yayımladığı gerilim-iletkenlik eğrisidir; 0,5 çarpanı iletkenliği TDS'ye çeviren katsayıdır. 30 ölçümün ortanca değeri (medyan) alındığı için tek tük hatalı okumalar sonucu bozmaz. DS18B20'nin kullanımı DS18B20 sıcaklık sensörü yazısında, ekran ayrıntıları ise SSD1306 OLED ekran yazısında anlatılıyor.

Ölçer nasıl kalibre edilir?

En kolay yol, ölçeri değeri bilinen bir çözeltiyle ya da güvenilir bir ticari TDS kalemiyle karşılaştırıp KAL katsayısını ayarlamaktır. Örneğin kalem 200 ppm, sizin ölçeriniz 180 ppm gösteriyorsa KAL = 200 / 180 ≈ 1,11 yazarsınız.

Ölçümden önce probu saf suyla çalkalayıp kurulayın. Her ölçümde probu bardağın ortasına, kenarlara değmeyecek biçimde batırın ve değer sabitlenene kadar 10-20 saniye bekleyin.

Hangi güvenlik kurallarına dikkat edilmeli?

Bu proje yalnızca USB'nin 5V gerilimiyle çalışır; sensör ya da devre şebeke elektriğine, su ısıtıcısına veya akvaryum ısıtıcısına bağlanmaz.

  • Suya yalnızca prob ve DS18B20'nin metal ucu girer; Arduino, kartlar ve kablo bağlantıları kuru kalmalıdır.
  • Üretici, probun 55 °C'nin üstündeki suda kullanılmamasını belirtir; sıcak su ölçmeyin.
  • Deneyde tuz eklediğiniz ya da ölçüm yaptığınız suları içmeyin.
  • Kimyasal, deterjan ya da bilinmeyen sıvıları ölçmeyin; deneyleri bir yetişkin gözetiminde yapın.

Projeyi nasıl sunarsınız?

Projeyi, aynı sıcaklıktaki farklı su örneklerini ölçüp karşılaştırma tablosu ve grafikle sunabilirsiniz. Ölçüm sonuçlarınızı kendiniz alın; aşağıdaki fikirler deney planı içindir.

  • Örnekler: Damıtık su, musluk suyu, iki farklı marka şişe suyu, varsa arıtma cihazı çıkışı.
  • Etiket karşılaştırması: Şişe sularının etiketindeki mineral değerlerini toplayıp ölçerin sonucuyla karşılaştırın; farkı tartışın.
  • Tuz deneyi: 200 mL damıtık suya birer tutam tuz ekleyip her seferinde ölçün; tuz miktarı ile ppm arasındaki ilişkiyi grafiğe dökün.
  • Sıcaklık deneyi: Aynı suyu soğukken ve ılıkken ölçün, sıcaklık düzeltmesi açıkken ve kapalıyken sonuçları karşılaştırın.
  • Dürüst sonuç: Raporunuza "TDS, suyun güvenli olduğunu göstermez" cümlesini mutlaka ekleyin; jüri bu bilinci önemser.

Sık sorulan sorular

Damıtık suda neden tam sıfır görmüyorum?

Ölçerin doğruluğu tam ölçeğin ±%10'u, yani yaklaşık ±100 ppm olduğu için düşük değerlerde birkaç ppm ya da onlarca ppm sapma normaldir. Ayrıca damıtık su açık havada karbondioksit çözer ve iletkenliği biraz artar. Probu da önceki örnekten kalan sudan arındırmak için iyice çalkalayın.

Ölçer 1000 ppm'in üstünü gösterebilir mi?

Bu sensör kiti 0-1000 ppm aralığı için tasarlanmıştır; daha yüksek değerlerde sonuç güvenilir değildir. Deniz suyu ya da çok tuzlu çözeltiler binlerce ppm'dir ve bu kitle ölçülmez. Yüksek değerler için endüstriyel TDS ya da iletkenlik vericileri kullanılır.

Değer sürekli dalgalanıyorsa ne yapmalıyım?

Probun bardağın kenarına değmediğinden ve suyun hareketsiz olduğundan emin olun. USB kablosunu dizüstü bilgisayarın şarj adaptörü takılıyken kullanmak gürültüyü artırabilir; adaptörü çıkarıp deneyin. TDS probunu pH probu gibi başka sensörlerle aynı kapta kullanmak da ölçümü etkileyebilir.

Bu ölçerle akvaryum ya da hidroponik suyu ölçülebilir mi?

Evet, 1000 ppm'in altındaki akvaryum ve hidroponik sularındaki değişimi izlemek için kullanılabilir. Bu alanlarda çoğu zaman mutlak değerden çok değişim önemlidir; ölçümleri her gün aynı sıcaklıkta yapın. Hassas besin ayarı için kalibre edilmiş ticari ölçerlerle kontrol edin.

Özet

  • TDS, sudaki çözünmüş iyonların toplamını iletkenlikten tahmin eder; birimi ppm (≈ mg/L) olarak verilir.
  • TDS değeri suyun içilebilir olduğunu göstermez; bakteri ve pek çok zararlı madde bu ölçümde görünmez.
  • TDS kartı A1'e, DS18B20 D2'ye (4,7 kΩ pull-up ile), OLED SDA/SCL A4/A5'e bağlanır.
  • Kit 0-1000 ppm ölçer, doğruluğu ±%10 tam ölçektir; sıcaklık düzeltmesi %2/°C ile yapılır.
  • Proje en iyi, farklı suları karşılaştıran bir deney olarak sunulur.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20267 dk okuma

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesid...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yakl...

Devamını oku →