Bir cümlelik özet
Robot çalışmadığında panik yapmadan, güçten koda kadar katman katman ilerleyerek arızanın gerçekte nerede olduğunu bulmayı öğreniyoruz.
Neden önemli?
Bir robot ilk denemede genellikle beklediğin gibi çalışmaz. Motorlar sessiz kalır, tekerlekler ters döner, sensör hep aynı değeri verir veya robot durup dururken kendi etrafında döner. Bu normaldir; mühendisliğin büyük bölümü "çalıştırmak" değil, "neden çalışmadığını anlamak"tır.
Sorun şu: bir robotta aynı anda beş farklı katman iş görür. Güç, kablolar, sensörler, kod ve mekanik. Bir belirti (örneğin robotun hareket etmemesi) bu katmanların herhangi birinden gelebilir. Rastgele denemek yerine sistemli bir yol izlersek, arızayı dakikalar içinde daraltabiliriz.
Bu derste öğrendiğin yöntem yalnız robotlar için değil; bozulan her sistem için geçerlidir. "Önce en basit ve en olası nedeni kontrol et" düşüncesi hayatın her yerinde işe yarar.
Beş katmanlı düşünmek
Bir robotu, üst üste dizilmiş beş katman olarak düşünebilirsin. Bir belirtiyle karşılaştığında, hangi katmanın sorumlu olduğunu bulmak isteriz.
Katmanlar neler?
- Güç: Piller, güç kaynağı, açma/kapama düğmesi. Enerji yoksa hiçbir şey çalışmaz.
- Bağlantı: Kablolar, jumper teller, breadboard, lehim noktaları, ortak toprak (GND).
- Sensör: Mesafe, çizgi, dokunma gibi girdi veren parçalar. Yanlış okuma yanlış karar demektir.
- Kod: Arduino'ya yüklediğin program. Mantık hatası burada gizlenir.
- Mekanik: Şasi, tekerlek, dişli, motor. Elektronik doğru olsa bile mekanik takılabilir.
Önemli bir kural: en alttan başla. Güç ve bağlantı en basit ama en sık nedenlerdir. Kod hatası aramaya başlamadan önce, pilin gerçekten dolu olduğundan emin ol. Deneyimli mühendisler bile zamanın çoğunda sorunun gevşek bir kabloda olduğunu görür.
Belirti bir şey söylemez, katman söyler
Aynı belirti farklı katmanlardan gelebilir. Örnek: "Robot düz gitmiyor, sağa kayıyor."
- Mekanik olabilir: tekerleklerden biri gevşek veya dişli sürtüyor.
- Güç olabilir: piller zayıf, bir motor diğerinden az güç alıyor.
- Kod olabilir: iki motora farklı hız değeri yazılmış.
Bu yüzden "neden" diye tahmin etmek yerine, her katmanı tek tek test ederek olasılıkları eleriz.
Katman katman kontrol yöntemi
Şimdi pratik bir kontrol sırası kuralım. Her adımda tek bir şeyi değiştir ve tekrar dene. Aynı anda iki şeyi değiştirirsen, hangisinin işe yaradığını bilemezsin.
Adım adım kontrol listesi
1. GÜÇ
- Açma düğmesi açık mı?
- Piller dolu mu? (Yeni pille değiştirip dene)
- Güç LED'i yanıyor mu?
2. BAĞLANTI
- Tüm kablolar yerinde mi, gevşek var mı?
- Motor sürücü ve Arduino ORTAK TOPRAK (GND) paylaşıyor mu?
- Doğru pinlere mi bağlı?
3. SENSÖR
- Seri monitörde sensör ne değer okuyor?
- Elini önüne koyunca değer değişiyor mu?
4. KOD
- Program yüklendi mi? (Yükleme onayını gör)
- Doğru pin numaraları yazılı mı?
5. MEKANİK
- Tekerlekler serbest dönüyor mu?
- Dişli veya kablo sürtüyor mu?
Seri monitör: robotun içini görmek
Seri monitör (Serial Monitor), robotun "ne düşündüğünü" ekranda okumanı sağlar. Gözünle göremediğin sensör değerlerini ve kararların gerçekten çalışıp çalışmadığını buradan takip edersin.
Örneğin bir mesafe sensörünün değerini yazdırmak için:
void setup() {
Serial.begin(9600); // Seri iletişimi başlat
}
void loop() {
int mesafe = readDistance(); // Sensörü oku
Serial.print("Mesafe: ");
Serial.println(mesafe); // Değeri ekrana yaz
delay(200);
}
Seri monitörü açtığında sürekli bir sayı akışı görürsün. Elini sensörün önüne koyduğunda sayı değişmiyorsa, sorun kodda değil sensörde veya bağlantıdadır. Bu tek satır, arızanın hangi katmanda olduğunu anında daraltır.
Kararı da yazdır
Yalnız sensör değerini değil, robotun verdiği kararı da yazdırabilirsin. Böylece "sensör doğru okuyor ama motor tepki vermiyor" durumunu görürsün.
if (mesafe < 15) {
Serial.println("Karar: DUR");
stopMotors();
} else {
Serial.println("Karar: ILERLE");
moveForward();
}
Eğer ekranda "Karar: DUR" yazıyor ama tekerlekler dönmeye devam ediyorsa, artık biliyorsun: kod doğru çalışıyor, sorun motor sürücüde veya mekaniktedir. Katmanı bulduk.
Örnek arıza-çözüm tablosu
Aşağıdaki tablo, sık karşılaşılan belirtileri hangi katmandan başlayarak kontrol edeceğini gösterir. Bunu bir başlangıç haritası gibi kullan.
| Belirti | Önce bak | Olası neden | İlk çözüm |
|---|---|---|---|
| Hiçbir şey çalışmıyor | Güç | Düğme kapalı, pil bitik | Düğmeyi aç, pili değiştir |
| Arduino çalışıyor ama motorlar dönmüyor | Bağlantı | Ortak GND yok, motor pili boş | GND'yi birleştir, motor pilini kontrol et |
| Motor tek yöne dönüyor | Bağlantı | Motor kabloları ters | İki motor kablosunu yer değiştir |
| Sensör hep aynı değer veriyor | Sensör/Bağlantı | Kablo gevşek, yanlış pin | Kabloyu ve pin numarasını kontrol et |
| Robot sağa/sola kayıyor | Mekanik | Tekerlek gevşek, dişli sürtüyor | Tekerleği sıkıştır, sürtmeyi gider |
| Kod yüklenmiyor | Kod/Bağlantı | Yanlış port, USB gevşek | Doğru portu seç, USB'yi tak |
| Robot rastgele davranıyor | Güç | Piller zayıf, gerilim düşük | Pilleri yenile |
Dikkat: "Motorlar dönmüyor" belirtisinin en sık nedeni ortak toprak eksikliğidir. Arduino ile motor sürücü ayrı güç kaynaklarından besleniyorsa, GND hatlarının birbirine bağlı olması gerekir. Bu bir sonraki bölümdeki güvenlik notuyla da ilgilidir.
Mini uygulama
Bir arkadaşının veya öğretmenin robotuna küçük, kolayca geri alınabilir bir "arıza" koymasını iste. Örneğin bir motor kablosunu çıkarsın veya kodda bir pin numarasını değiştirsin. Sonra sen bulmaya çalış.
- Robotu çalıştır ve belirtiyi bir cümleyle yaz. Örnek: "Sağ motor dönmüyor."
- Katman haritasına göre en alttan başla: güç, bağlantı, sensör, kod, mekanik.
- Seri monitörü aç ve sensör ile karar satırlarını izle.
- Her adımda tek bir şey değiştir ve tekrar dene.
- Arızayı bulduğunda, hangi katmanda olduğunu ve nasıl bulduğunu bir not olarak yaz.
Bu alıştırmanın amacı arızayı hızlı bulmak değil, sistemli bulmaktır. Rastgele kablo çekiştirmek yerine haritayı takip et.
Sık yapılan hatalar
Aynı anda birden çok şeyi değiştirmek
İki kabloyu birden değiştirir ve robot çalışırsa, hangisinin sorun olduğunu asla öğrenemezsin. Her denemede tek değişken.
En üst katmandan başlamak
Çoğu kişi hemen koda dalar. Oysa sorunun büyük kısmı güç ve gevşek kablolardadır. Önce en basiti kontrol et.
Seri monitörü kullanmamak
Robotun içini göremezsen tahmin yürütürsün. Serial.println ile sensör değerini ve kararı yazdırmak, karanlıkta el feneri yakmak gibidir.
Ortak toprağı unutmak
Arduino ve motor sürücü ayrı pillerden besleniyorsa ve GND hatları birleşmemişse, motorlar çalışmaz veya rastgele davranır. En sık gizli arızalardan biridir.
Belirtiyi net yazmamak
"Robot bozuk" bir belirti değildir. "Robot ileri gidiyor ama engelde durmuyor" test edilebilir bir belirtidir. Net belirti, doğru katmana götürür.
Güvenlik notu
Arıza ararken robot beklenmedik anda hareket edebilir. Bu yüzden dikkatli ol:
- Test alanını temizle. Robotu masadan düşmeyecek, bir şeye çarpmayacak boş bir zeminde dene. Kenarları güvenli tut.
- Parmak, saç ve kabloları uzak tut. Dönen tekerlek ve dişliler saçı ve kabloyu sıkıştırabilir; sıkışan parmak canını yakabilir.
- Düşük hızda test et. Kodu düzeltirken motor hızını en düşük değerde tut; robot kaçarsa yakalamak kolay olur.
- Motor sürücü ve ayrı pil kullan. Motorları asla doğrudan Arduino pininden besleme; motorlar yüksek akım çeker ve kartı bozar. Bir motor sürücü (örneğin L298N) ile ayrı, düşük gerilimli bir pil takımı kullan ve ortak toprağı bağla.
- Asla şebeke elektriği kullanma. Yalnız düşük gerilimli piller. Prizle çalışan hiçbir devreye bağlanma.
- Kabloyu takıp çıkarırken gücü kapat. Bağlantı değiştirirken önce düğmeyi kapat, kısa devreyi önle.
- Motor, lehim ve kesici alet işlerinde bir yetişkinden yardım al.
Ders özeti
- Bir robot arızası beş katmandan gelebilir: güç, bağlantı, sensör, kod, mekanik.
- En alttan başla; güç ve gevşek kablo en sık ve en basit nedenlerdir.
- Her denemede yalnız bir şey değiştir ki neyin işe yaradığını bilesin.
- Seri monitör sensör değerlerini ve kararları gösterir; arızanın katmanını daraltır.
- Motorlar için ayrı pil, motor sürücü, ortak toprak ve boş bir test alanı güvenlik için şarttır.
Kontrol soruları
- Bir robotta arıza aramaya neden en alt katmandan (güç) başlarız?
- Seri monitör hangi katmanların arızasını daraltmaya yardımcı olur ve nasıl?
- "Arduino çalışıyor ama motorlar dönmüyor" belirtisinde ilk kontrol edilecek en olası neden nedir?
- Neden her denemede yalnız tek bir şeyi değiştirmeliyiz?
- Motorları neden doğrudan Arduino pininden beslemeyip ayrı pil ile motor sürücü kullanırız?
Cevaplar
- Çünkü güç ve bağlantı hataları en sık görülen ve kontrolü en kolay nedenlerdir. Pil bitikse veya düğme kapalıysa üst katmanlarda hata aramak zaman kaybıdır.
- Sensör ve kod katmanlarını daraltır.
Serial.printlnile sensör değerini yazdırırsan, değer değişmiyorsa sorun sensör/bağlantıdadır; karar satırı doğru yazılıyor ama motor tepki vermiyorsa sorun motor/mekaniktedir. - Ortak toprağın (GND) bağlı olmaması. Arduino ile motor sürücü ayrı güç kaynağı kullanıyorsa GND hatları birleşmezse motorlar çalışmaz. Motor pilinin boş olması da olasıdır.
- Aynı anda iki şey değiştirip robot çalışırsa hangi değişikliğin sorunu çözdüğünü bilemeyiz. Tek değişken, arızayı kesin olarak işaretlememizi sağlar.
- Motorlar yüksek akım çeker; Arduino pini bu akımı veremez ve zarar görür. Motor sürücü akımı ayrı pilden alır, Arduino yalnız kontrol sinyali gönderir; ortak toprak ile iki taraf aynı referansı paylaşır.
Kaynak ve doğrulama notu
“Arıza Analizi” dersi için doğrulama odağı Beş katmanlı düşünmek ile Belirti bir şey söylemez, katman söyler arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Robot davranışı yalnız kodla açıklanamaz; mekanik yapı, güç sistemi, sensör konumu ve zemin koşulları birlikte değerlendirilmelidir. Test sonuçları aynı parkurda birkaç tekrar yapılarak kaydedilmelidir.
Sonraki ders
Proje: Engel Kaçan Robot