Semruk - 3: Aviyonik ve Kurtarma Sistemi

Merhabalar, Yıldız Roket Takımı olarak bu yazımızda sizlere Semruk – 3 Roketimizin başarılı bir şekilde kurtarılmasını sağlayan kurtarma sistemini ve aviyonik sistemini anlatacağız. Umarız bu yazımız sizin için faydalı olur.

O zaman başlayalım, diyelim ki model roketçilik ile uğraşıyorsunuz ve roketinizi tasarlayıp ürettiniz. Muhtemelen roketinize saatlerce zaman ve yüzlerce lira harcamış olacaksınız. Tabii ki emeğinizin metrelerce yukarı çıktıktan sonra yere düşüp parçalanmasını istemezsiniz. Emeğinizi korumanız için roketi sağlam bir şekilde yere indirmeniz, yani kurtarmanız gerekir. Peki bu kurtarmayı gerçekleştirmek için ne gerekli? Cevap, bir kurtarma sistemi ve bir aviyonik sistem.

Kurtarma Sistemi

Kurtarma, başarıyla kalkış yapmış bir roketin geri dönüşümünü sağlayan can alıcı noktadır. Bunun için de roketin paraşütler ile yere güvenli bir iniş yapması planlanır. Kurtarma sistemi paraşütün roket dışına çıkmasını sağlayan sistemdir. Genellikle bu sistemlerde yaylar, CO2 tüpleri, barut, servo motorlar vb. kullanılır. En yaygın olan tiplerinden biri CO2 tüplü sistemi, bizim de Semruk-3 Roketinde kullandığımız sistemdir.

 

Sistemimizde barut ile CO2 tüpü aynı anda kullanılmıştır. Ayrılmada ana işlevi CO2 gazı sağlarken barut CO2 tüpünün delinmesi için gerekli olan enerjiyi sağlar ve delici ucu fırlatır.

Aşağıda gördüğünüz sistemde mavi bölüme barut doldurulur ve altında bulunan kanaldan fitil geçirilir. Fitilin aviyonik sistemden gelen sinyal ile yanması sonucu barut patlar ve üst kısmında bulunan delici uç CO2 tüpünün ağız kısmını parçalar. Yay delici ucun ağız kısmında sıkışması ihtimaline karşılık delici ucu geri itecek kuvveti oluşturacaktır. Hızla etrafa yayılan CO2 gazı yeşil bölümdeki deliklerden dışarı çıkar ve ayrılmanın gerçekleşeceği bölümde gaz sıkışması yapar. Bu gaz sıkışmasının yarattığı basınç burun konisi veya roket gövdelerinin ayrılmasını sağlar.

Aviyonik Sistem

 
 

 

Kurtarma sistemimiz hazır, gerektiği zaman paraşütleri açacak ve roketi sağ salim yere indirecek bir mekanizmamız var. Ancak bu mekanizmanın ne zaman tetikleneceğini nasıl belirleyeceğiz? İşte burada projemiz için aviyonik sistem tasarlamamız gerekiyor. Bir aviyonik sistemin planlandığı ölçüde kurtarma sistemini tetikleyebilmesi için gerekli temel elemanlar şu şekildedir:

Uçuş Bilgisayarı:

  • Mikrokontrolcü
  • Sensörler
  • Haberleşme modülü ve GPS
  • SD Kart Modülü
  • Güç Kaynağı

Kurtarma Devresi:

  • Anahtarlama Elemanı
  • Tek Yönlü Akım Elemanı
  • PULLDOWN Direnci
  • Güç Kaynağı

Şimdi bu elemanları kullanarak Semruk – 3 Roketimizde kullandığımız aviyonik sistemi detaylı bir şekilde açıklayalım. İlk önce uçuş bilgisayarı tasarımımıza bir göz atalım.

 

1) Uçuş Bilgisayarı

 Semruk – 3 Roketinin uçuş bilgisayarında kullandığımız elemanlar şu şekildedir:

  1. Mikrokontrolcü: Arduino Mega Pro
  2. Sensör: BMP180
  3. Haberleşme Modülü: HopeRF RFM98W LoRa
  4. GPS: GY-NEO6MV2
  5. Mikro SD Kart Modülü
  6. Güç Kaynağı: Duracell Endüstriyel 9V Alkalin Pil

 

Uçuş bilgisayarının basit şematiği şu şekildedir:

Uçuş bilgisayarının nasıl çalıştığını ve algoritmasını basitçe anlatalım.       

 

Şema sayesinde uçuş bilgisayarının tasarımını, algoritma açıklaması sayesinde de karar mekanizmasının nasıl çalıştığını az çok anladıysak bir sonraki adıma, yani seçilen elemanların neden seçildiğinin açıklanmasına geçebiliriz. İlk önce uçuş bilgisayarının beyni Arduino Mega Pro ile başlayalım.

 

1.1) Arduino Mega Pro:

Bir uçuş bilgisayarının en önemli elemanı mikrokontrolcüsüdür, yani beynidir. Uçuş bilgisayarının mikrokontrolcüsü yazdığınız koda göre, sensörlerden veri okur ve bu verilere göre paraşütlerin ne zaman açılacağına karar verip kurtarma sistemini aktif eder.

Biz Semruk – 3 roketimiz için kontrolcü olarak Arduino Mega Pro geliştirme kartını seçtik. Yani Arduino Mega Pro geliştirme kartının içerisindeki Atmega2560 bizim uçuş bilgisayarımızın mikrokontrolcüsüydü yani beyniydi.

Neden Arduino Mega Pro?

  • Kullanımı diğer Arduino geliştirme kartlarında olduğu gibi oldukça basit.
  • Boyut açısından uygun.
  • 8KB SRAM ile hafızası uçuş bilgisayarı tasarımımız için yeterli. (Arduino Nano, tasarımımız için hafıza açısından yetersiz kalıyordu.)

Bizim Ardunio Mega Pro’da karar kılmamızı sağlayan nedenlerden en önemlisi yukarıdaki 3. maddeydi. Çalışmalarımızı Arduino Nano üzerinde devam ettirirken Arduino Nano’nun hafıza açısından yetersiz olduğunu keşfettik ve alternatif olarak Arduino Mega Pro’yu tercih ettik. Eğer siz de bizim uçuş bilgisayarımızın içerisindeki modüller ile bir tasarım yapacaksanız kesinlikle Arduino Mega Pro’yu öneriyoruz.

Arduino Mega Pro Nasıl Kullanılır?

Arduino Mega Pro’nun kullanımında diğer Arduino’lara göre birkaç bağlantı farkı dışında fark yok desek doğru olur. Şu ana kadar herhangi bir Arduino geliştirme kartı ile bir şeyler denediyseniz Arduino Mega Pro ile de sorunsuz bir şekilde çalışabilirsiniz. Ancak Arduino ile hiç çalışmadıysanız, bu linkten Arduino geliştirme kartınıza yüklemek istediğiniz kodları geliştirip yükleyebileceğiniz IDE’yi indirmek ile başlayabilirsiniz. Yazımızın ilerleyen kısımlarında, kullanılacak olan modüllerin bizler tarafından yazılan örneklerini bulabilir ve indirip Arduino IDE’yi kullanarak kendi Arduino geliştirme kartınıza yükleyebilirsiniz.

1.2) BMP180

Bir uçuş bilgisayarı tasarlarken uçuş bilgisayarının beyninden sonra en önemli şey uçuş bilgisayarının duyu organları yani sensörleridir. Uçuş bilgisayarımızın beyni olan Arduino Mega Pro kullandığımız BMP180 barometre sensöründen gelen irtifa verilerine göre karar verip kurtarma olaylarını gerçekleştirmek için tetik vermektedir.

Neden BMP180?

  • Basınç aralığı ile deniz seviyesine göre -500m ile +9000m arası ölçüm yapabiliyor, yani irtifa aralığımıza uygun.
  • Düşük güç tüketimi mevcut, Arduino’ya uygun olan 3.3V ile beslenebilmekte.
  • Gürültüsü ve hassasiyeti model roketçilik için uygun.
  • I2C protokolü ile kullanımı basit.
  • Boyutu küçük.
  • Model roketçilikte sıklıkla kullanılan ve kanıtlanmış bir sensör.

 Bu nedenlere baktıktan sonra BMP180’in deniz seviyesine göre 9km’ye kadar azami irtifaya sahip roketlerde güvenilir bir şekilde kullanılabileceğini görmüş oluyoruz. Teknofest 2020 Roket Yarışmasında uçurduğumuz Semruk – 3 roketimizin BMP180 verilerine bakalım.

 Grafikten, BMP180’in ölçümlerinin hem azami irtifa tespiti hem de ana paraşüt tespiti için uygun olduğu görülmektedir.

BMP180 Nasıl Kullanılır?

Diyelim ki BMP180 modülünü aldınız ve elinizdeki bir Arduino ile denemek istiyorsunuz. İlk bakmanız gereken şey BMP180 ile kullandığınız Arduino’nun bağlantılarının nasıl yapılacağı olacaktır. Burada bağlantıları yanlış yapmanız sensörünüze veya kullandığınız geliştirme kartına zarar verebilir. O yüzden bağlantıları dikkatli yapmanızı öneririz.

BMP180

Arduino Nano/Uno

Vcc

3.3V

GND

GND

SCL

A5

SDA

A4

BMP180

Arduino Mega/Mega Pro

Vcc

3.3V

GND

GND

SCL

21

SDA

20

Yukarıdaki tablolara bakarak elimizdeki geliştirme kartına göre bağlantıları yaptık. Arduino’muzun içine bir kod yükleyip sensörümüzü test etmek istiyoruz. Ancak ilk önce sensörümüzü düzgün bir şekilde çalıştırabilmek için BMP180 kütüphanesini indirmemiz gerekmekte. Bu linkten Arduino geliştirme kartları için BMP180 kütüphanesini indirebilirsiniz. Daha sonra indirdiğiniz dosyayı Belgelerim\Arduino\libraries klasörüne atın. Artık kodunuzu Arduino’nuza yükleyip, BMP180 modülünü test etmeye hazırsınız.

Örnek kodumuzu buradan indirebilirsiniz. Kodu indirip Arduino IDE ile açtıktan sonra “Araçlar” sekmesinden doğru geliştirme kartını ve USB portunu seçtiğinizden emin olduktan sonra kodu yükleyip seri ekranı açın.

Eğer aldığınız çıktı yukarıdaki gibiyse devrenizde bir problem yok demektir. Ölçülen anlık irtifayı ve maksimum irtifayı grafik üzerinde daha detaylı görmek için CTRL + SHIFT + L kombinasyonu ile seri çiziciyi açabilirsiniz. Seri çizicinin de çıktısı şu şekilde ise devrenizde bir sorun yok demektir.

Mavi çizgi ölçülen maksimum irtifayı gösterirken yeşil çizgi ölçülen anlık irtifaları göstermektedir.

 

 

1.3) GPS Modülü: GY-NEO6MV2

Sırada devremize bir GPS modülü eklemek var. Şu ana kadar eklediğimiz iki eleman ile kurtarma olaylarının tespitini yapabiliriz ancak roketi kurtarmak için gerekli olan konum verisini elde edemeyiz. Yere sağlam bir şekilde inen roketimiz kaybolabilir ve kurtarmayı manasız kılabilir. Bu yüzden bir GPS modülü kullanmamız gerekli. Biz Semruk – 3 Roketimiz için GY-NEO6MV2 GPS modülünü seçtik. Peki neden?

Neden GY-NEO6MV2?

  • Fiyatı uygun, temini kolay.
  • 50 alıcı kanalı ile uydu iletişimi güçlü.
  • Sıcak başlatma (hot start) modu için 1 saniyeden kısa sürede bağlanma süresi.
  • UART haberleşmesi ile kullanımı kolay.
  • Boyutu küçük.

Bu maddeler arasından 3. madde çok dikkat edilmesi gereken bir ayrıntı içermektedir. Hot start denilen, Türkçesi sıcak başlatma olan modun gerçekleşmesi için modülün üzerinde bulunan pilin bitmemiş olması gerekmektedir. Eğer bu pil bitmiş ise GPS modülünün uydulara bağlanıp, konum verisini sağlaması 20 dakikaya kadar çıkmaktadır. Okurlarımıza hot start ve cold start durumlarını araştırmalarını tavsiye ederiz.

Yukarıda bahsedilen pil, kırmızı olarak işaretlenmiştir.

GY-NEO6MV2 Nasıl Kullanılır?

GY-NEO6MV2 modülü 4 tane pin içermektedir ve bağlantıları oldukça basittir. Ancak bağlantıların dikkatlice yapılmasının gerektiğini ve yapılmaması durumunda geliştirme kartına ve modüle zarar gelebileceğini hatırlatalım.

GY-NEO6MV2

Arduino Uno/Nano

Vcc

3.3V

RX

3

TX

4

GND

GND

GY-NEO6MV2

Arduino Mega/Mega Pro

Vcc

3.3V

RX

18

TX

19

GND

GND

 

Bağlantıları yaptık, şimdi modülün kullanılabilmesi için kütüphanesini indirmemiz gerekiyor. Bu kütüphaneye buradan ulaşabilirsiniz. Yine BMP180’de olduğu gibi indirilen klasörün Belgelerim\Arduino\libraries klasörüne atılması gerekmektedir.

Kütüphaneyi kurduktan sonra Arduino Uno ve Nano için buradan, Arduino Mega ve Arduino Mega Pro için de buradan örnek kodu indirerek yükleyelim. Kodu yüklerken yine “Araçlar” sekmesinden doğru geliştirme kartının ve USB portunun seçildiğinden emin olunması gerekmektedir. Kodu yükledikten sonra seri porttan aşağıdaki gibi bir çıktı alınıyorsa devrede bir sorun yoktur demektir:

Özellikle modül ilk başlatıldığı zaman uydulara bağlanıp düzgün bir konum vermesi uzun sürebilir. Ancak önceden de bahsedildiği gibi modülün üzerindeki pilde bir sorun yoksa ve modül en son çalıştırıldığı konuma yakın ise hot start yaparak 1-5 saniye arasında bağlanacaktır.

Modül uydulara başarılı bir şekilde bağlandığı zaman üzerindeki kırmızı veya mavi LED yanmaya başlayacaktır. Eğer LED yanmaya başladıktan bir süre sonra konum verisi hala gelmiyor ise RX-TX pinleri ters bağlanmış olabilir.

Eğer devreye giden güç kesilip tekrar verildiğinde modül hızlı bir şekilde uydulara bağlanıp, üzerindeki LED’i yakıyor ve konum verisini doğru gösteriyor ise devrede bir sorun yok demektir. Eğer bağlanması her durumda uzun sürüyor ise modülün üzerindeki pil değiştirilerek sorun çözülebilir.

Not: Modülün son çalışmasından sonra konumunun değişmesi de sıcak başlangıç yapmasını engelleyebilir. Ancak yeni konumda da modül bir kere uydulara bağlanır ise tekrar başlatıldığında sıcak başlangıç yapabilir duruma gelecektir.

 

1.4) Haberleşme Modülü: HopeRF RFM98W

Bir roket uçuş bilgisayarının tek görevi kurtarma sistemini tetiklemek değildir. Paraşüt açmak kadar önemli bir görevi de iniş sonrası roketin konumunu yer istasyonuna bildirmektir. Konum verisinin GPS modülü ile elde edildiğini öğrendik, şimdi sıra konum ve irtifa gibi verileri yer istasyonuna göndermekte. Uçuş bilgisayarının yer bilgisayarı ile iletişimini sağlayan elemana haberleşme modülü denir.

Haberleşme modülü, sensörlerden gelip mikrokontrolcüde işlenerek elde edilmiş veriyi elektromanyetik dalgalar yayarak iletir. Bu sinyalleri yer bilgisayarında bulunan, verici ile aynı frekansa ayarlanmış alıcı haberleşme modülü alır. 

Burada dikkat edilmesi gereken bir nokta ise faydalı yük bilgisayarı ile ana uçuş bilgisayarından yayılan sinyallerin karışmasını önlemektir. Bunu engellemek için iki bilgisayarda bulunan haberleşme modüllerinin yaydıkları sinyallerin frekansları farklı olmalıdır. (Örn: Ana Uçuş Bilgisayarı: 433.1111 MHz, Faydalı Yük Bilgisayarı: 433.2222 MHz)

Neden RFM98W?

  • Hem alıcı hem de verici olarak kullanılabilir.
  • 433-470 MHz arası frekans bandında haberleşme yapabilmektedir.
  • Max. 300 Kbps veri iletimi yapabilmektedir.
  • Teorik olarak 2 km haberleşme menziline sahiptir. (Açık alanda gerçek haberleşme menzili bu teorik sınırı geçmektedir. Hem testlerimizde hem de atış gününde bunu kanıtlamış bulunmaktayız. Uçuşumuzun azami irtifası olan 2808m yükseklikte haberleşme başarıyla sürdürülmüştür.)
  • SPI haberleşme protokolü ile basit kullanım.
  • Arduino 3.3V güç çıkışı ile beslenebilir.

Modülün detayları için modülün datasheet’ini bu sayfadan indirebilirsiniz.

RFM98W Nasıl Kullanılır?

RFM98W haberleşme modülünü kullanmamız için çalıştığımız frekansa uygun bir anten ve tabii ki Arduino ile bağlantı gereklidir. Modül direkt devre kartına lehimlenip kullanılabileceği gibi shield üstüne lehimlenip de kullanılabilir. Semruk-3 Uçuş Bilgisayarı’nda haberleşme modülü shield üstüne lehimli hâldedir.

Yukarıda üstüne haberleşme modülü ve SMA konektörü lehimlenmiş shield fotoğrafı verilmiştir. Anten takıldıktan sonra Arduino ile bağlantıya hazırdır.

DİKKAT: Lehimleme işleminin sağlam yapıldığından emin olunmalıdır. Aksi takdirde diğer modüllerde de olacağı gibi yanlış lehimleme işlemi modülün hasar görmesine sebep olacaktır. Özellikle SMA konektörünün temassızlık yapması durumunda modül tarafından elektromanyetik sinyal yaymak için çekilmiş güç antene aktarılamayıp modül üstünde kalacağından modülün yanmasına sebep olacaktır.

RFM98W

Arduino Uno/Nano

Vcc

3V3

GND

GND

MISO

12

MOSI

11

SCK

13

NSS

*

RST

*

DIO0

*

DIO1

*

RFM98W

Arduino MEGA Pro

Vcc

3V3

GND

GND

MISO

50

MOSI

51

SCK

52

NSS

*

RST

*

DIO0

*

DIO1

*

*Bu tablolardaki NSS, RST, DIO0, DIO1 pinleri kütüphaneden değiştirilebilir.

Yukarıdaki tabloya uygun bir şekilde ve dikkatlice bağlantılar yapıldıktan sonra modülün çalışmaya başlaması için uyumlu Arduino kütüphanesinin indirilmesi gereklidir. Bu kütüphaneye buradan erişebilirsiniz. Kütüphane dosyasını indirip Belgelerim\Arduino\libraries klasörüne attıktan sonra örnek kodumuzu indirip deneyebilirsiniz.

Örnek kodumuzu denemek için iki tane haberleşme devresi oluşturmanız gerekecektir. Bu iki devre tamamen aynı olabilir. Örnek kod alıcı ve verici olmak üzere iki farklı dosya halindedir. Alıcı devrenin örnek kodu için bu linki, verici devrenin örnek kodu içinse bu linki kullanabilirsiniz.

 

1.5) Mikro SD Kart Modülü:

Uçuş bilgisayarımız şu ana kadar BMP180 sayesinde kurtarma olaylarını tespit edebiliyor, GY-NEO6MV2 modülü sayesinde konumunu tespit ediyor ve HopeRF RFM98W LoRa modülü sayesinde de hem irtifa hem de konum bilgilerini yer bilgisayarına gönderebiliyor durumda. Ancak bir eksiğimiz var: bir kara kutu!

Neden Mikro SD Kart Modülü?

Diyelim ki uçuşunuzu şu ana kadar ele aldığımız modüller ile gerçekleştirdiniz. Roketiniz kurtarma tespitlerini yaptı ve roketi sağ salim yere indirdi. Ancak diyelim ki bir problem var, haberleşme bozulmuş durumda. Bu durumda uçuş bilgisayarının verileri yer bilgisayarına gelmeyeceği için kaybolmuş olacak, uçuş sonrası hata tespit ve analiz çalışmaları yapamayacaksınız. Peki bu sorunu nasıl çözeriz? Tabii ki roketimizin içerisine bir kara kutu yani mikro SD kart modülü ekleyerek!

Haberleşme yer bilgisayarı ile roket arasında düzgün bir şekilde kurulsa bile uçuş bilgisayarının gönderdiği her haberleşme paketinin yer bilgisayarına ulaşacağı kesin değildir. Bu durumda uçuş bilgisayarının her yaptığı ölçüm ve her aldığı kararı incelemek için biz bir tane mikro SD kart modülü kullandık. Hatta BMP180 başlığı altına koyduğumuz irtifa grafiği bu mikro SD kart modülü sayesinde çıkardık.

Mikro SD Kart Modülü Nasıl Kullanılır?

Şu ana kadar kullandığımız modüllerin hepsinin bağlantıları Arduino üzerinde belli başlı yerlere gitmekteydi. Ancak burada bir değişiklik olmak zorunda. Mikro SD kart modülü SPI haberleşme protokolünü kullanmaktadır, başka hangi modül SPI haberleşme modülünü kullanıyordu? Tabii ki de HopeRF RFM98W LoRa modülü. İki modülün aynı devrede SPI haberleşmesi kullanması için MOSI-MISO ve SCK bağlantılarının Arduino üzerinde aynı pine giderken CS bağlantılarının farklı pinlere gitmesi gerekir.

Bu durumun nedeni SPI haberleşmesinde kontrolcünün hangi modül ile haberleştiğini CS bağlantısı üzerinden belirlemesidir. Eğer bir modülün CS pini düşük lojik duruma getirilir ise kontrolcü (bizim durumumuz için Atmega2560) o modül ile haberleşir. CS’nin manası Chip Select’dir. Okurlarımıza bu konu hakkında daha detaylı bilgi edinmeleri için SPI haberleşme protokolünü araştırmalarını tavsiye ederiz.

Mikro SD kart modülünü elimizdeki Arduino geliştirme kartına nasıl bağlayacağımıza bakalım. Yine bağlantıların dikkatle yapılmasının önemli olduğunu, yapılmaması durumlarda modüllere veya geliştirme kartına zarar gelebileceğini hatırlatalım.

Mikro SD Kart Modülü

Arduino Uno/Nano

Vcc

5V

GND

GND

MISO

12

MOSI

11

SCK

13

CS

8

Mikro SD Kart Modülü

Arduino Mega/Mega Pro

Vcc

5V

GND

GND

MISO

50

MOSI

51

SCK

52

CS

49

 

Bu bağlantıları yaptıktan sonra yine diğer modüllerde olduğu gibi mikro SD kart modülünün kütüphanesini buradan indirebilirsiniz. İndirdikten sonra dosyayı Belgelerim\Arduino\libraries klasörüne atmayı unutmayınız. Kütüphaneyi doğru yere attıktan sonra Arduino Uno/Nano için buradan, Arduino Mega/Mega Pro için de buradan örnek kodlarımızı indirip deneyebilirsiniz. Kodu Arduino’ya yüklemeden önce “Araçlar” sekmesinden doğru USB portunu ve geliştirme kartını seçtiğinizden emin olmayı unutmayınız. Kodu yükledikten ve sistemi belirli bir süre çalıştırdıktan sonra modülünüzün içindeki SD karttaki dosyanın içerisine düzgün bir yazma işlemi yaptıysa devrenizde bir sorun yok demektir.

Modüllerinizi çalıştırdıktan sonra tüm devreyi denemek istiyorsanız veya sadece bir göz atmak istiyorsanız buradan uçuş bilgisayarımızın koduna ulaşabilirsiniz. Uçuş bilgisayarı kodu hakkında kafanıza takılan herhangi bir soru olursa aviyonik birimi üyelerimize soru sorabilirsiniz. Üyelerimizin iletişim bilgilerine ulaşmak için buraya tıklayabilirsiniz.

 

1.6) Güç Kaynağı: Duracell Endüstriyel 9V Alkalin Pil

Her elektronik sistemin bir güç kaynağına ihtiyaç duyduğu gibi uçuş bilgisayarımızın da bir güç kaynağına ihtiyacı vardır. Roketimizde uçuş bilgisayarında, faydalı yük bilgisayarında ve paraşüt açmada kullanılan fitilleri yakmak için de Duracell marka 9V Endüstriyel Alkalin Pil kullanılmıştır.

Neden Duracell Endüstriyel 9V Alkalin Pil?

Rokette kullanılabilecek aviyonik güç kaynaklarına baktığımızda bazı kısıtlamalar ile karşı karşıya kalıyoruz. Teknofest Roket yarışması Lityum Polimer pillerden daha tehlikeli pillerin kullanımını yasaklamıştır. Bu da bizi 3 tip güç kaynağı ile baş başa bırakmaktadır: Alkalin pil, Li-Po pil, Li-İyon pil.

 

 

 

Pil Çeşidi

Endüstriyel Alkalin

Lityum-İyon

Lityum-Polimer

Şarj Edilebilir?

Hayır

Evet

Evet

Patlama Riski

Düşük

Yüksek

Yüksek

Ağırlığına Göre Enerji Depolama Sırası

3

1

2

 

 

Karşılaştırmalar sonucu kullanım kolaylığı, ucuz ve erişilebilir olması, patlama riskinin düşük olması ve yapılan testlerimiz sonucunda yeterli olması sebebi ile Endüstriyel Alkalin pil seçilmiştir. Burada pilin yeterli olmasından kasıt uçuş bilgisayarının uzun süre çalışması ve fitilleri ateşlemek için kurtarma devresine yeteri kadar güç sağlayabilme kabiliyetidir.

NOT: Yapılan testler sonucunda 2 tane alkalin pilin paralel bağlanıp güç kaynağı olarak kullanıldığında haberleşmenin daha az hata ile yapıldığı ve GPS modülünün daha hızlı bağlandığı gözlemlenmiştir.

 

PCB ve Lehim İşleri

Semruk- 3 Roketi Aviyonik Sistemleri’nde bulunan bütün PCB’ler Eagle üzerinden tasarlanıp atölyemizde bakır plaket eritme yöntemi ile üretilmiştir. Eagle üzerinden tasarlanan PCB, A4 boyutunda kâğıda bastırılıp daha sonra kağıttaki tasarım sıcak baskı yöntemi ile bakır plakaya geçirilmiştir. Daha sonra plaka üzerindeki ihtiyaç bulunmayan bakır, 3xtuz ruhu ve 1xperhidrol karışımı kullanılarak eritilmiştir.

DİKKAT: Bakır levha eritme işlemi esnasında ortama zehirli gazlar yayılır. Koruyucu maske kullanımına ve bu işin iyi havalandırılan bir ortamda yapılmasına dikkat edilmelidir.

PCB’ler üzerine THT eleman yerleştirmeye uygun delikler açılmıştır. Daha sonra açılan bu deliklere dişi headerlar yerleştirilip lehimlenmiştir. Dişi header kullanımı sistemlerimizin modüler bir hâl almasını sağlamıştır. Bu sayede herhangi bir modül bozulduğunda o modül çıkartılıp değiştirilebilmiştir.

DİKKAT: Yarışma günü dişi headerların PCB’ye değdiği kısımlar sıcak silikon ile güçlendirilmelidir. Aksi takdirde paraşüt açmak için gerçekleşen patlama, headerların plastik kısımlarını fırlamasına sebep olmaktadır.

 

2) Kurtarma Devresi

Semruk-3 Roketi Kurtarma Devresi kurtarma sisteminde bulunan fitilleri ateşlemeye yarayan aviyonik sistem bileşenidir. Uçuş bilgisayarından gelen sinyal sonucunda pildeki gücü fitillere aktarıp fitillerin ateşlenmesini sağlar. Bu devrenin bileşenleri aşağıdaki gibidir:

  • Anahtarlama Elemanı: IRFZ44 MOSFET
  • Tek Yönlü Akım Elemanı: 1N5819 Schottky Diyot
  • PULLDOWN Direnci: 4.7 kohm Direnç
  • Güç Kaynağı: 9V Duracell Endüstriyel Alkalin Pil

Kurtarma devremizi temsil eden şematik aşağıdaki gibidir:

Bu şemada D1 ve D4 patlatma sinyallerinin tek yönlü olmasını sağlayan diyotları, D2 ve D3 pilin ters takılması durumunda ters akım geçmesini engelleyen diyotları, R1 ve R2 PULLDOWN dirençlerini temsil etmektedir.

 

2.1) Anahtarlama Elemanı

Herhangi bir Arduino Mega, Uno veya Nano pini çıkış gerilimi 5V ile sınırlıdır. Bu gerilim kurtarma sistemimizde bulunan paraşüt başına düşen 2 fitili ateşlemek için yeterli değildir. Daha yüksek gerilim ancak harici bir güç kaynağından sağlanabilir. Harici güç kaynağından güç akışını kontrol eden eleman ise anahtarlama elemanıdır. Roketimizde anahtarlama elemanı olarak röle değil MOSFET kullanılmıştır.

Neden MOSFET?

Rölelerde bulunan bobin mikrokontrolcüden sinyal alınca manyetik alan oluşturur. Manyetik alandan etkilenen mekanik parça ittirilip yük devresinin tamamlanması sağlanır. Roketin maruz kaldığı yüksek ivme koşullarında bu parçanın olumsuz etkilenme ihtimali yüksektir. Dolayısıyla rokette anahtarlama elemanı olarak alternatif aramak gerekir.

Roketimizde anahtarlama elemanı olarak mekanik röleye alternatif olan içinde mekanik parça bulunmayan MOSFET kullanılmıştır. Yarıiletken teknolojisinin ürünü olan bu parça röle ile aynı işi daha küçük boyutlarda yapabilmektedir. 

Roketimizde bulunan MOSFET’in fotoğrafı.

Nasıl Kullanılır?

Kısaca anlatılacak olursa MOSFET 3 bacaktan oluşur: Gate, Drain ve Source. Gate pinine gerekli gerilim uygulandığında Drain ve Source arasındaki köprü tamamlanır ve elektrik akışı sağlanır. MOSFET’ler hakkında detaylı bilgiye bu sayfadan ulaşabilirsiniz.

Roketimizde bulunan MOSFET’in ismi IRFZ44’tür. Bu transistör max 55V yük gerilimine ve 49A yük akımına dayanabilmektedir. Bu gerilim ve akım değerleri bizim fitili ateşlemek için kullanacağımız 9V endüstriyel pile kolaylıkla dayanabilir. Drain-Source arası köprünün %100 tamamlanması için Gate pinine 4V gerilim uygulanması gerekmektedir, yani Arduino dijital çıkışları ile kullanılabilir. Bu parça hakkında detaylı bilgiye bu sayfadan ulaşabilirsiniz.

Aşağıda pil ve MOSFET’in nasıl bağlanması gerektiğini gösteren şema verilmiştir:

Bu şemada MOSFET kullanarak pilin 2 tane fitili ateşlemesini kontrol eden devre verilmiştir. Bu devrenin Arduino ile kullanılması için klemensin 1 numaralı bacağı herhangi bir dijital pine, 2 numaralı bacağı ise Arduino GND pinine bağlanmalıdır. 

DİKKAT: Roket montajı esnasında, MOSFET takıldıktan sonra parça üzerinde bulunan herhangi bir metal yüzeye temas edilmemelidir. Aksi takdirde MOSFET statik elektrikten etkilenip fitilin yanmasına ve barutun patlamasına sebep olabilir. Dolayısıyla MOSFET devreye takılmadan önce yukarıdaki fotoğrafta da görünen büyük metal yüzey elektrik bandı ile kapatılmalıdır. MOSFET yerine takıldıktan sonra ise bacaklarına sıcak silikon sıkılıp hem montajının sağlamlaştırılması hem de bacaklar arası elektriksel yalıtım sağlanmalıdır.

 

2.2) Tek Yönlü Akım Elemanı (Diyot):

Kurtarma devremize gelen patlatma sinyalinin tek yönlü olmasını sağlamak ve pilin ters takılması durumunda MOSFET’e sinyal gitmediği halde fitilin yanması durumunu engellemek için tek yönlü akım sağlayan eleman olan diyot kullanılmıştır. (Anlattığımız 2. diyot sayesinde montaj esnasında hata ile pilin ters takılması durumunda olası kazaların önüne geçilmiştir.)

Diyot Çeşitleri Nelerdir?

  • Schottky Diyot: Normal bir diyottan tek farkı ileri yönlü eşik gerilimi çok daha düşüktür.
  • Zener Diyot: Devreye ters bağlanırlar. Belirli bir voltajın üzerinde ise ters yönlü akım geçirirler. Voltaj sabitlemede kullanılırlar. Düz bağlandığında normal bir diyot gibi davranır.
  • LED: Işık saçan diyot türüdür.

Biz devremiz için bu seçeneklerden Schottky Diyot seçeneğini seçtik.

Neden Schottky Diyot?

Güç tasarrufu açısından schottky diyot kullanmak önemlidir. Diğer diyotlardan farklı olarak düşük eşik gerilimi değerlerine sahiptir (0.3V-0.6V). Diğer bir deyişle bu diyot diğerlerine göre Arduino’dan gelen sinyalin daha az harcanarak iletilmesini sağlar.

Bizim kullandığımız diyotun ismi 1N5819’dur. Schottky tipi bir diyot olan 1N5819 0.6V eşik gerilimine ve 40V ters gerilime sahiptir. Diyotların devremizde nasıl bağlanması gerektiği bu şemada gösterilmiştir.

 

2.3) PULLDOWN Direnci

Kurtarma devremizde giriş pinlerinde sinyal gelmediği sürece umulan lojik değer sıfırdır. Uçuş bilgisayarından patlatma sinyali gelmediği sürece giriş pinlerini umulan değerde tutmaya yarayan elemana PULLDOWN direnci denir. PULLDOWN bir direnç tipi değildir yani standart dirençlerle aynı işleve sahiptir. Kurtarma devremizde 4.7kohm dirence sahip PULLDOWN direnci kullanılmıştır.

 

2.4) Güç Kaynağı

Kurtarma devremize sinyal geldiğinde fitilleri ateşe verebilmek için Duracell Endüstriyel 9V Pil kullanılmıştır. 2 tane seri bağlanmış fitili ateşe vermek için yeterli güç bu pilden sağlanabilmektedir.

 

3) Algoritma

Artık uçuş bilgisayarımızda kullandığımız elemanları bildiğinize göre uçuş bilgisayarımızın algoritmasından bahsedebiliriz. Uçuş bilgisayarımızda kullandığımız koda buradan ulaşabilirsiniz. Algoritmamızın akış diyagramı aşağıdaki gibidir. Algoritmaya ilk göz attığınızda iki terim gözünüze çarpabilir. Bunlardan biri EEPROM diğeri ise Kalman Filtresi. Bunların ne olduklarından ve neden kullanıldıklarından bahsedeceğiz.

 

3.1) Neden EEPROM?

İlk önce EEPROM’un ne olduğundan sonra BMP180’nin nasıl çalıştığından bahsedelim. Bu ikisini anladıktan sonra da neden EEPROM kullandığımızı inceleyelim.

EEPROM’un açılımı Electrically Erasable Programmable Read-only Memory yani Elektriksel Olarak Silinebilen Programlanabilir Sadece Okunabilir Hafıza’dır. Kısaca ne işe yaradığından bahsedelim. EEPROM, çoğu mikroişlemcinin içinde bulunan, Arduino’ların içinde bulunan Atmel işlemcilerinin içinde de bulunan bir hafıza türüdür. EEPROM’a yazılan bir veri, mikroişlemciye giden güç kesilse dahi hafızada kalır ve silinmez. Mikroişlemci açılıp kapansa da veri saklanır. EEPROM’u kişisel bilgisayarlarımızda kullandığımız HDD’lere veya SSD’lere benzetebiliriz. Özellikle elektroniğe ilgili okurlarımıza EEPROM’u ve mikroişlemcilerdeki hafıza tiplerini araştırmalarını tavsiye ederiz.

EEPROM’un basitçe ne olduğunu öğrendik. Ancak bu neden EEPROM kullandığımızı öğrenmek için yeterli değil. Bunun için bir de çok basit bir şekilde BMP180’in nasıl çalıştığına bakmamız lazım.

BMP180, bir barometrik irtifa sensörüdür. Yani isminden de anlaşılacağı üzere irtifa verisine bir barometre sayesinde ulaşır. İlk önce basınç ölçümü yapar sonra bu basınç ölçümüne göre irtifa hesabı yapar.

Bildiğiniz üzere irtifa göreceli bir ölçüdür. Nereyi taban yani 0 m aldığınıza göre irtifanız değişecektir. Bu yüzden BMP180’in sağlıklı irtifa verileri vermesi için bir taban kabul edeceği bir ölçüme ihtiyacı vardır. Biz taban olarak atış alanını aldık ve ölçümlerimizde roketin atış alanına göre irtifasını ölçüyorduk.

Uçuş bilgisayarı tasarımımızı bu bilgiler dahilinde hazırlarken ekip arkadaşlarımızın yaptığı bir araştırma tasarımımızda değişiklik yapmamıza neden oldu. Ekip arkadaşlarımız yaptığı araştırmalar sonucunda yüksek ivmeler altında devrenin gücünde anlık kopmalar yaşanabileceği, bu kopmaların da uçuş sırasında bilgisayarın kendini tekrar başlatmasına neden olabileceği ihtimali saptandı. Peki bu ne demekti?

Diyelim ki uçuş bilgisayarımız rampada başlatılır başlatılmaz ilk önce bir basınç ölçümü yaptı ve yaptığı ilk ölçümü taban olarak aldı. Ve bir süre sonra uçuşa yani yüksek ivmeler altına girmeye başladı. Ve diyelim bu ivmeler sonucunda rampaya göre 2450m irtifada uçuş bilgisayarına giden güç anlık da olsa kesildi. Bu durumda uçuş bilgisayarı tekrar başlayacağından tüm kodu baştan okumaya başlayacak ve taban basıncını tekrar ölçecektir. Tekrar ölçüm yaptığında rampaya göre 2450m’yi taban olarak yani 0m olarak kabul edecek ve yükselmeye devam edecektir. Azami irtifaya ulaştıktan sonra düşüşü tespit edecek ve sorunsuz bir şekilde sürüklenme paraşütünü açacaktır. Ancak sürüklenme paraşütünü açtığı 2800m’yi, taban irtifayı 2450m aldığından dolayı 350m olarak ölçecek ve sürüklenme paraşütün açtıktan hemen sonra 500m’nin altında olduğunu düşünüp ana paraşütü de açacaktır. Bu durumda roket yüksek ihtimalle kaybedilecek ve bir başarısızlık ortaya çıkacaktır. Peki bu riski nasıl yok edebiliriz?

Eğer taban basıncını rampada ölçersek, bunu bir yere kaydedersek ve herhangi bir tekrar başlama durumunda da taban basıncını bu kayıtlı yerden ölçersek sorun çözülür değil mi? Devreye giden güç kesilse dahi verileri saklayan bir hafıza birimine ihtiyacımız var, yani bir EEPROM’a ihtiyacımız var. Şanslıyız ki Arduino’ların içinde bulunan Atmel mikroişlemcilerinde EEPROM bulunmakta. Eğer uçuş bilgisayarından her açılışta EEPROM’u kontrol etmesini istesek; EEPROM’da bir taban basıncı yoksa ölçüm yapıp EEPROM’a yazmasını, EEPROM’da bir taban basıncı varsa da o basıncı taban olarak almasını istesek sorunumuz elbette çözülür. Bu yüzden akış diyagramımızda ilk önce uçuş bilgisayarımıza “EEPROM’da kayıtlı zemin basıncı var mı?” diye soruyoruz.

3.2) Neden Kalman Filtresi?

Diyelim ki uçuş bilgisayarı tasarımınızı tamamen hazırladınız. Roketinize taktınız ve uçuşa başladınız. Roketin uçuş sırasında uğrayacağı; titreşim, ivme, hava türbülansları gibi nedenlerden dolayı uçuş bilgisayarınızda bulunan sensörler anlık da olsa gerçekten uzak ölçümler yapabilirler. Özellikle barometrik irtifa modülleri burnout anında (motorun yakıtının bittiği an) oluşan hava akımından dolayı ani yanlış ölçümler yapmaya meyillidirler. Eğer uçuş bilgisayarınız burnout anında yanlış bir irtifa ölçümü yaparsa bu sürüklenme paraşütünüzün açılmasına neden olabilir ve roketinizin kaybına neden olabilir. Peki bu riski nasıl yok ederiz?

Sensörlerin ani ve yüksek hatalı ölçüm yapmalarından dolayı çıkan sorunlar hiç de yeni değildir. Sensörler doğaları gereği belirli dış etkenlerden dolayı gürültüye sahip olurlar. Bu gürültü sensörlerin ölçümlerinin tutarsız olmasına neden olurken az önce bahsettiğimiz tarzda sorunlara da yol açabilirler. Bu sorunların çözülmesi için mühendisler tarafından filtreleme yöntemleri kullanılmaktadır. Sensörlerden gelen verileri bir algoritmik filtreden geçirerek daha güvenilir hale getiren bu filtreler günümüzde çok fazla yerde kullanılmaktadır. Biz ise algoritmamızda kullanmak üzere Kalman Filtresini seçtik.

Sayfayı Paylaş