Bir cümlelik özet
Sensörlerden gelen ham veri küçük dalgalanmalar içerir; bu titremeyi azaltmak için birkaç okumanın ortalamasını alır ve eşik değerlerine küçük bir tampon ekleriz.
Neden önemli?
Bir önceki derste rölenin küçük bir sinyalle daha büyük bir devreyi kontrol etmesini öğrendik. Peki o küçük sinyali üreten sensöre ne kadar güvenebiliriz?
Bir ışık sensörünü sabit bir masaya koyup değerini ekrana yazdırırsan sayının hiç durmadan titrediğini görürsün: 512, 514, 511, 515, 513... Işık aslında değişmediği hâlde sayı oynar. Buna gürültü (noise) denir.
Gürültü küçük gibi görünür ama sorun çıkarır. Bir eşiğe çok yakınsa robotun kararı bir açılıp bir kapanabilir. Örneğin “ışık 512’den küçükse LED yansın” dersen, değer 511 ve 513 arasında zıpladığında LED saniyede birçok kez titreşir. Bu ders, o titremeyi nasıl sakinleştireceğimizi anlatıyor.
Ham veri neden titrer?
Sensörün okuduğu değer tek bir sebepten değil, birçok küçük etkinin toplamından oluşur. Değer bu yüzden sabit kalmaz.
Gürültünün kaynakları
Gürültü genellikle şunlardan gelir:
- Elektriksel parazit: Kablolardaki ve devredeki küçük elektriksel dalgalanmalar okumayı birkaç birim oynatır.
- Analog-dijital dönüşüm: Sensörün sürekli değerini sayıya çevirirken en son basamak sürekli yuvarlanır.
- Ortamın kendisi: Havadaki minik titreşimler, el gölgesi, sıcaklık değişimi gibi gerçek ama önemsiz değişimler.
Günlük hayattan örnek: Banyo terazisi
Terazinin üstüne çıktığında ekran bir an 61,2 sonra 61,4 sonra 61,1 gösterip birkaç saniye sonra tek bir sayıda durur. Terazi ilk okumaları toplayıp sakinleşmelerini bekler. Ağırlığın değişmiyor; terazi sadece gürültüyü yok sayıyor.
Günlük hayattan örnek: Termometrenin bekleme sesi
Kulaktan ateş ölçen bir termometre ölçümü hemen göstermez; “bip” sesini birkaç okuma alıp bunları birleştirdikten sonra çıkarır. Tek bir anlık okuma yanıltıcı olabileceği için cihaz kısa bir süre veri toplar.
Basit filtreleme: Ortalama almak
Gürültüyü azaltmanın en kolay yolu tek bir okumaya güvenmemektir. Bunun yerine son birkaç okumayı toplayıp ortalamasını alırız. Yüksek ve düşük dalgalanmalar birbirini götürür, geriye daha düzgün bir sayı kalır.
Fikir
Son 5 okumayı bir listede tutalım. Her yeni okumada en eskisini atıp yenisini ekleriz ve listenin ortalamasını kullanırız. Buna hareketli ortalama (moving average) denir.
Başla
5 kutuluk bir liste oluştur
Sürekli tekrarla:
sensörü oku
en eski okumayı listeden çıkar
yeni okumayı listeye ekle
toplam = listedeki 5 sayının toplamı
ortalama = toplam / 5
ortalama değerini kullan
Tek bir okuma 515’e zıplasa bile, diğer dört okuma 512 civarındaysa ortalama yaklaşık 512–513 çıkar. Böylece ani sıçrama yumuşar.
micro:bit tarzı örnek
Aşağıdaki örnek son 5 ışık okumasının ortalamasını hesaplar. Mantık pseudocode ile aynıdır:
okumalar = [0, 0, 0, 0, 0]
def dongu():
# en eskiyi at, listeyi bir sola kaydır
for i in range(4):
okumalar[i] = okumalar[i + 1]
okumalar[4] = isik_seviyesi_oku() # yeni okuma
ortalama = sum(okumalar) / 5
ekrana_yaz(ortalama)
Kaç okuma ortalanır? Ne kadar çok okuma alırsan sonuç o kadar düzgün olur; ama sensör gerçek değişimlere de daha yavaş tepki verir. 5 okuma, çoğu başlangıç projesi için iyi bir dengedir.
Eşik ve histerezis
Ortalama, titremeyi azaltır ama bir eşiğin tam üstünde oynayan değer yine sorun çıkarabilir. Burada ikinci bir fikre ihtiyacımız var: eşiğe küçük bir tampon eklemek.
Tek eşiğin sorunu
“Değer 512’den küçükse LED yansın” kuralında değer 511 ↔ 513 arasında gidip gelirse LED sürekli titrer. Sınır çok keskin olduğu için karar da kararsız olur.
Çözüm: İki eşikli tampon
Açma ve kapama için farklı iki değer kullanırız. Buna histerezis denir. Örneğin LED’i 500’ün altında yak, ama ancak 540’ın üstüne çıkınca söndür:
Eğer LED kapalıysa ve ortalama < 500 ise
LED'i yak
Eğer LED açıksa ve ortalama > 540 ise
LED'i söndür
500 ile 540 arasındaki bölge bir “rahat alanı”dır. Değer bu aralıkta titrese bile durum değişmez. Karar ancak net bir farkla değişir.
Günlük hayattan örnek: Ev termostatı
Klima 24 dereceye ayarlıysa tam 24’te durmadan açılıp kapanmaz. Genellikle 25 derecede çalışmaya başlar, 23 derecede durur. Bu küçük aralık cihazın saniyede birçok kez tıklamasını önler; tam olarak histerezis fikri budur.
Mini uygulama
Bir ışık sensörü ve bir LED ile küçük bir “gece lambası” kur. Amacın, ışık azalınca LED’in yanması ama titrememesi.
- Sensörü okuyup değeri ekrana yaz. Sabit ışıkta sayının kaç birim oynadığını not et.
- Son 5 okumanın hareketli ortalamasını hesapla. Ekrandaki titremenin azaldığını gözlemle.
- Tek eşikle dene:
ortalama < 500 ise LED yak. Elinle sensörü yavaşça gölgele ve sınırda titreyip titremediğine bak. - Histerezis ekle: 500’de yak, 540’ta söndür. Titremenin kaybolduğunu gör.
- Ortalama alınan okuma sayısını 5’ten 10’a çıkar ve tepkinin nasıl yavaşladığını karşılaştır.
Not defterine yaz: Hangi ayar en kararlı ve en hızlı dengeyi verdi?
Uygulama laboratuvarı: Sensör Verisini Filtrelemek
Sensör Verisini Filtrelemek konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Ham veri neden titrer? ile Günlük hayattan örnek: Banyo terazisi arasındaki ilişkiyi kullanarak ölçüm tablosu, kalibrasyon kararı ve güvenli çıktı davranışı hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: yaklaşan nesne için ışık ve sesle mesafe uyarısı. Dersin ana hedefi “Gürültülü sensör verisini ortalama alma ve eşik/histerezisle yumuşatmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Sensör değeri farklı koşullarda kaydedildi mi?
- Eşik değeri tek ölçüme değil gözleme dayanıyor mu?
- Gürültülü veri filtreleniyor veya ortalanıyor mu?
- Aktüatör güvenli başlangıç durumunda mı?
- Sensör koparsa sistemin nasıl davranacağı tanımlı mı?
“Sensör Verisini Filtrelemek” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın yaklaşan nesne için ışık ve sesle mesafe uyarısı senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Ham veri neden titrer? ve Günlük hayattan örnek: Banyo terazisi ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Tek okumaya güvenmek
Bir anlık değere bakıp karar vermek, gürültünün seni yanıltmasına açık kapı bırakır. Her zaman birkaç okumayı birleştir.
Çok fazla okuma ortalamak
Ortalamayı 50 okumaya çıkarırsan sonuç çok düzgün olur ama sensör gerçek değişime çok geç tepki verir. Işığı kapatsan bile lamba geç yanar. Denge önemlidir.
Listeyi güncellemeyi unutmak
Yeni okumayı eklerken en eskiyi çıkarmazsan liste hep aynı eski değerlerle kalır ve ortalama gerçeği yansıtmaz.
Histerezis aralığını çok dar tutmak
Açma ve kapama eşiklerini birbirine çok yakın (örneğin 511 ve 513) koyarsan tampon işe yaramaz ve titreme geri gelir. Aralık, gürültünün genişliğinden belirgin şekilde büyük olmalı.
Güvenlik notu
- Bu çalışmayı yalnızca düşük gerilimli eğitim kaynaklarıyla yap: pil, USB, micro:bit veya Arduino. Şebeke elektriğine (prize) asla bağlanma.
- Devreyi güç bağlıyken değiştirme; önce gücü kes, bağlantıyı yap, sonra tekrar ver.
- LED’i bağlarken doğru direnci kullan; direnç olmadan LED ve pin zarar görebilir.
- Bir sensörün kararı motor gibi hareketli bir parçayı sürüyorsa, motoru pinlerden değil ayrı bir sürücü ve uygun güç kaynağından besle; parmaklarını ve saçını hareketli parçalardan uzak tut.
- Bir devreyi kurup denemeyi her zaman bir yetişkinle birlikte yap.
Ders özeti
- Ham sensör verisi gürültü içerir; sabit bir ortamda bile küçük dalgalanmalarla titrer.
- Gürültü elektriksel parazitten, analog-dijital dönüşümden ve ortamın kendisinden gelir.
- Hareketli ortalama, son birkaç okumayı birleştirerek titremeyi yumuşatır.
- Daha çok okuma ortalamak sonucu düzeltir ama tepkiyi yavaşlatır; denge gerekir.
- Histerezis, açma ve kapama için iki farklı eşik kullanarak sınırdaki titremeyi engeller.
Kontrol soruları
- Sabit bir ışıkta sensör değeri neden hâlâ oynar?
- Hareketli ortalama titremeyi nasıl azaltır?
- Ortalama alınan okuma sayısını çok artırmanın olumsuz yanı nedir?
- Histerezis nedir ve neden tek bir eşikten daha kararlıdır?
- Bir sensörün kararı bir motoru sürecekse hangi güvenlik kuralına dikkat edilmeli?
Cevaplar
- Elektriksel parazit, analog-dijital dönüşümün son basamağı ve ortamdaki minik değişimler değeri sürekli birkaç birim oynatır.
- Son birkaç okumanın yüksek ve düşük dalgalanmaları ortalamada birbirini götürür; geriye daha düzgün bir sayı kalır.
- Sonuç çok düzgün olur ama sensör gerçek değişimlere geç tepki verir; sistem yavaşlar.
- Histerezis, açma ve kapama için iki farklı eşik kullanmaktır. Aradaki tampon bölge, değer sınırda titrese bile durumun değişmemesini sağlar.
- Motor board pinlerinden değil, ayrı bir sürücü ve uygun güç kaynağından beslenmeli; hareketli parçalardan uzak durulmalı ve çalışma bir yetişkinle yapılmalı.
Kaynak ve doğrulama notu
“Sensör Verisini Filtrelemek” dersi için doğrulama odağı Ham veri neden titrer? ile Günlük hayattan örnek: Banyo terazisi arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Sensör değerleri modele, besleme gerilimine ve ortama göre değişebilir. Bu nedenle derslerdeki eşikler örnek kabul edilmeli; gerçek projede ölçüm tablosu oluşturularak kalibrasyon yapılmalıdır.
Sonraki ders
Kalibrasyon: Bir sensörün ham değerlerini gerçek dünyadaki anlamlı birimlere nasıl eşleriz?