PicoBricks Dosyası Bölüm 2: PCB Anatomisi

Önceki bölümde PicoBricks’in ne olduğuna bakmış, modüllerinden bahsetmiş ve farklı setlerinin içeriklerine değinmiştik. Ardından videolu olarak kutu açılışını yapmış ve ilk izlenimlerimden bahsetmiştik.

Bu bölümde PicoBricks’e biraz daha yakından bakacağız.

PCB Anatomisi

PicoBricks her biri kırılarak ayrılabilir toplamda 12 PCB modülünden oluşuyor. Bu modüllerden en önemlisi elbette Raspberry Pi Pico W’yu barındıran ana modül.

Ana modül üzerinde Pi Pico W için montaj soketi dikkatimizi çekiyor. 2×20 pinlik iki soketin içte kalan kısımları Pi Pico W için kullanılırken dışta kalanları ise jumper kablolar ile harici bağlantılar yapabilmek için kullanılıyor.

Üstte kartın görece eski bir versiyonunu görüyorsunuz. Bana gönderilen set içerisinde 6 ek kablo çıkışı olan ve anladığım kadarıyla yeni versiyon olan bulunuyor. Bu ek kablo çıkışları nedeniyle yukarıdaki fotoğrafta görünen pin isimlerine yer kalmamış.

Pi Pico W soketinin ortasında kondansatör ve bobinlerden oluşan bir devre görüyoruz. Bu devre PicoBricks’in batarya bağlantısının uzantısı ve bataryadan gelen gerilimi Pi Pico W’nun ihtiyacı olan 5 Volt’a yüksetiyor. Devre yaygın olarak kullanılan step-up converter olan MT3608 üzerine kurulu. Bu çip 2 ampere kadar güç tedarik edebiliyor.

Bu step-up dönüştürücü devresini ilk gördüğümde çıkışının Pi Pico W’nun lojik seviyesi olan 3,3 Volt olduğunu düşünmüştüm, ancak ölçünce 5 Volt’a ayarlanmış olduğunu gördüm. PicoBricks modüllerinin bir kısmının ihtiyacı olan 3,3 Volt ise Pi Pico W üzerinde yer alan dahili regülatör üzerinden sağlanıyor.

İlginç ve gereksiz bir bilgi: PicoBricks üzerinde Pi Pico W takılı değilken karta batarya girişi veya başka bir yöntemle güç verdiğimizde ana modülün sağ üst kısmında yer alan kırmızı renkli güç LED’i yanmıyor. Bu LED devre üzerinde Pi Pico W’dan çıkan 3,3 Volt beslemeye bağlanmış.

Ayrılabilir Modüllerin Lojik Yapıları

PicoBricks üzerindeki ayrılabilir modüllerin her birinin aynı gerilim seviyesinde çalıştığını düşünüyordum, ancak PCB’nin altında da belirtildiği üzere bazıları 5 Volt, bazıları 3,3 Volt gerilim ile çalışıyor.

Detay vermek gerekirse Buton/LED, LDR, Potansiyometre ve DHT11 modülleri 3,3 Volt ile beslenirken, diğer modüller ise 5 Volt ile besleniyor. Fotoğrafta VBUS olarak gösterilen pinler 5 Volt’a, 3.3V veya LDR’de her nedense 3V3 olarak gösterilen pinler de 3,3 Volt’a bağlı.

Kart üzerindeki butonun kendi PULL-DOWN direnci ile bağlı olduğunu ve basıldığında lojik 1 (HIGH) verdiğini de ekleyelim. Buzzer ise BC817 serisi bir transistör ile 5 Volt üzerinden sürülüyor, böylece yeterince yüksek ses çıkarması sağlanmış.

Robotistan, PicoBricks’te benim de Panda ve PandaShield‘de tercih ettiğim ve eğitim uygulamaları için daha iyi olduğunu düşündüğüm beyaz renkli PCB tercihinde bulunmuş. Yukarıdaki fotoğrafın detaylarına bakarsanız beyaz renkli PCB’lerde benim de yaşadığım sorunu yaşıyor: Temizleme zorluğu! Sizi anlıyorum Robotistan…

Raspberry Pi Pico’dan Analog Değer Okurken

PicoBricks ile doğrudan ilgisi olmasa da kodlama bölümüne geçmeden önce değinmek gereken önemli bir nokta var. O da Raspberry Pi Pico’nun ADC (Analog-Digital Converter) kabiliyeti. Bu bölümde yazdıklarım ayrı bir makale konusu olabilecek olsa da, Pi Pico üzerine yapılmış en iyi uygulamalardan biri olan PicoBricks’te bahsetmek daha uygun.

Yaygın kullanılan Arduino modelleri olan Uno, Nano ve Mega 10-bit ADC’ye sahipler, yani okuduğumuz değerler 0-1023 arasında değişiyor. ADC’ler her ne kadar parazit almaya müsait olsa da Atmel’in ADC’lerinden oldukça stabil okumalar yapabilmeye alışığız.

Raspberry Pi Pico (ve Pi Pico W) üzerinde yer alan RP2040 mikrokontrolcüsünün sahip olduğu ADC ise 12-bit çözünürlüğe sahip. Yani 0-4095 arasında değerler okuyabiliyoruz. Bu da Arduino’ların 10-bit’ine göre çok daha hassas ölçümler yapabileceğimizi düşündürüyor.

Gerçek dünyada sonuçlar pek de öyle değil. Ucuz mikrokontrolcülerin (ATmega, PIC, STM32, RP2040, ESP32 vs) sahip oldukları ADC’ler de doğal olarak çok yetenekli olmuyorlar ve bu yeteneksizlik, çözünürlük arttıkça katlanarak artıyor. Bu yüzden RP2040’ın sahip olduğu ADC’den çok fazla bir şey beklemiyordum.

Ancak çok daha büyük sorunları olduğunu fark ettim. Pi Pico (ve Pi Pico W) üzerinde yer alan ve oldukça verimli olarak tanıtılan gerilim regülatörü temelde USB veya harici güç kaynağından gelen gerilimi RP2040’ın çalışma gerilimi olan 3,3 Volt’a dönüştürüyor.

Buck-boost SMPS tipindeki bu regülatör, yapısı gereği kararlı ve lineer bir besleme üretemiyor. Dolayısıyla mikrokontrolcü üzerindeki ADC de yüksek frekanstaki ve geniş aralıktaki dalgalanmalardan etkileniyor.

Yukarıda regülatör çıkışının osilaskoptaki görüntüsünü görüyorsunuz. Ölçümlerde besleme geriliminin 3,38-3,4 Volt arasında gidip geldiğini ve bunun oldukça yüksek frekansta olduğunu görüyoruz. Voltaj değişimi ortalama 165 miliVolt olarak hesaplanıyor.

PicoBricks’i batarya ile beslerken kullanılan ve batarya gerilimini 5 Volt’a yükselten step-up converter devresinin de benzer sorunlara sahip olduğunun da altını çizelim.

Bu salınımlar ADC’nin kararlığı ile birlikte diferansiyel lineerliğini de etkiliyor. Özetle, Pi Pico’nun ADC’sine çok güvenmemek gerekiyor. PicoBricks gibi bir eğitim kitinde bu çok da önemsenecek bir şey değil elbette.

Sıradaki bölümde PicoBricks’i kodlama yöntemlerinden teker teker bahsedeceğim. Takipte kalın!

PicoBricks Dosyası Bölüm 3: Kodlama Yöntemleri >>