Model uydu çalışmasında IHU’nun projede ne amaçlı kullanıldığına daha önceki yazımızda değinmiştim. Bu yazının konusu ise prototip olarak üretimini tamamladığım ve çalışan IHU olacak. DIYSAT-IHU’nun belkemiğini oluşturan mikrodenetleyicimiz bir adet ATmega328P entegresidir. Bunun tercih edilmesinin sebebine gelince, Arduino Uno üzerinde aynı işlemcinin bulunması, mikrodenetleyiciyi programlamak için ayrıca bir ara birime gerek kalmadan mevcut imkânlarla programlanabilmesiydi.
Buna ek olarak IHU devre şemasına ayrıca tümleşik bir de TTL Seri Haberleşme bağlantısı ekledim ki, kart üzerinden sökülmeden programlanabilsin…
Öncelikle bu mikrodenetleyicinin özelliklerini yakından tanıyalım.
ATmega328P, aynı zamanda IHU’nun Mikrodenetleyici Özellikleri
• High Performance, Low Power AVR® 8-Bit Microcontroller
– 131 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 20 MIPS Throughput at 20 MHz
– On-chip 2-cycle Multiplier
– 32K Bytes of In-System Self-Programmable Flash progam memory
– 1K Bytes EEPROM
– 2K Bytes Internal SRAM
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
– Data retention: 20 years at 85°C/100 years at 25°C(1)
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program True Read-While-Write Operation
– Programming Lock for Software Security
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 6-channel 10-bit ADC in (PDIP Package)
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Byte-oriented 2-wire Serial Interface (Philips I2C compatible)
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
– Interrupt and Wake-up on Pin Change
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby, and Extended Standby
– 23 Programmable I/O Lines
– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF
– 1.8 – 5.5V for ATmega48PA/88PA/168PA/328P
-40°C to 85°C
– 0 – 20 MHz @ 1.8 – 5.5V
– Active Mode: 0.2 mA
– Power-down Mode: 0.1 μA
– Power-save Mode: 0.75 μA (Including 32 kHz RTC)
Şimdi, zaten elimizde bir adet Arduino Uno varken IHU için ikincisinin alınmasına gerek yok. Bunun yerine biz sadece mikrodenetliyici edinerek bu işlemi tamamlayacağız ve programlama için bu Arduino Uno ve USB kablosunu kullanacağız. Bu USB kablo ya da standart bir USB şarj kablosu da DIYSAT’a doğrudan takılarak hem güç sağlama hem de güç katı (EPS) üzerinden bataryaların şarjını sağlayacak.
Yeni mikrodenetleyicimizin işlemlerine başlayalım. Yeni mikrodenetleyicimizi kullanmadan önce üzerinde küçük bir çalışma yapmamız gerekiyor.
Yeni Mikrodenetleyicimiz İçin Niçin Ön İşlem Gerekiyor?
Yeni aldığınız bir Arduino Uno hemen kod yazmaya ve yüklemeye hazır haldedir. Ancak DIYSAT için haricen ve yeni bir ATmega328P mikrodenetleyicisi kullanacağımız için küçük bir ön hazırlık yapmamız gerekmektedir. Kısacası yeni aldığınız ATmega328P mikrodenetleyicisini Arduino Uno üzerinde bulunan ATmega328P entegresi ile doğrudan değiştirip kullanmanız mümkün değildir. Bunun sebebi henüz yeni mikrodenetleyici üzerinde bir önyükleyici “Bootloader” bulunmamasıdır. O halde bu işlemi bizim yapmamız gerekiyor.
Bunun için aşağıda resmi görülen devreyi kurmanız gerekiyor. Bu konuda bir breadboard pratikliği işimizi oldukça hızlandıracaktır. Bu konuda Internet’e arama yaptığınızda iki devre şeması göreceksiniz ki; biri aşağıdaki, diğeri ise direnç ve kristal olmayandır. Diğerini boş yere tercih edip zaman kaybetmeden doğrudan bu devreyi kurmanızı öneririm.
Kullanılacak Malzemeler
- 1 Adet ATmega328P mikrodenetleyici
- 1 Adet 16MHz kristal
- 2 Adet 22pF seramik kondansatör
- 1 Adet 10K direnç (Direnç Rengi: Kahverengi-Siyah-Turuncu)
Bu işlem yapılırken Arduino Uno üzerinde kendi ATmega328P mikrodenetleyici, breadboard üzerinde ise yani yeni aldığınız ATmega328P mikrodenetleyici takılı olmalıdır.
Kablo bağlantılarının tamamlanmasından sonra Arduino Uno’nun USB kablosunu takalım. Araçlar / Port menüsünden bağlantı portumuzun aktif olup olmadığını kontrol edelim. Sonra sırayla;
– Arduino IDE penceresinden, “Araçlar / Programlayıcı: “Arduino as ISP” / Arduino as ISP“yi seçelim.
– Arduino IDE penceresinden, “Araçlar / Önyükleyiciyi Yazdır“ı seçelim.
Yeni bir pencere açılacak ve yüklenmiş kodlar karşımıza gelecektir. Kodlara hiç dokunmadan sadece bir kez kodlarımızı Arduino Uno’ya yükleyelim. (ArduinoISP kodlarını içeren dosyayı yazının sonundan indirebilirsiniz.) Bunu için Arduino IDE’de bulunan yükleme butonunu kullanabilir veya kısayoldan “CTRL-U” ile de yapabilirsiniz.
Eğer alt siyah kısımda turuncu renkli herhangi bir hata kodu görünmüyor ve alt bar üzerinde “Yükleme Tamamlandı…” bilgisini görüyorsanız işlem başarıyla tamamlanmış demektir. Artık sırayla USB bağlantısını çıkarıp Arduino Uno ile breadboard üzerindeki bağlantıyı ayırabilirsiniz.
Buraya kadar olan çalışmayı tamamlamakla Arduino Uno’yu bir nevi programlayıcı olarak kullanıp, yeni ATmega328P entegremizi programladık, daha doğrusu programlamaya hazır hale getirmek için Bootloader yükledik. Daha teknik anlatımla; yaklaşık olarak 2KB hafıza kaplayan bu Bootloader uygulaması ile ATmega328P entegremizi alma (RX) ve gönderme (TX) portlarını kullanarak yeni yazılım yüklenmesine hazır hale getirmiş olduk.
Aslında buraya kadar olan işlemleri yapmakla artık oldukça ekonomik kendi Arduino’nuzu üretebilir halde gelmiş sayılırsınız. IHU’da bir anlamda yapay bir Arduino gibi verilen görevleri yerine getirmektedir.
IHU’nun Tanıtımı
DIYSAT IHU’nun genel (prototip) görünümü aşağıdaki şekildedir. Bir model uçuş bilgisayarı olmasına rağmen plaket üzerinde çok fazla bileşen bulunmamaktadır. Bu haliyle el yapımı bir Arduino Uno olarak da tanımlanabilir. Mikrodenetleyicinin üst kısmında bulunan (6-7 nolu) birimler ATmega328P’nin harici kristal ile çalıştırılması için, hemen sağ kısımda görünen iki direnç ve bir kondansatör ise TTL Seri Haberleşme için kullanılacak olan pinler içindir.
Planlanan yapıda mikrodenetleyicinin besleme ve GND uçları ile analog ve dijital pinlerinin tümü gerektiğinde kullanılabilmek için BUS üzerindeki iletim hatları ile pinlere taşınmıştır.
1. Güç açık LED’i,
2. Reset butonu,
3. On/Off mini anahtar,
4. 2×32 pinlik BUS,
5. Programlanmış ATmega328P mikrodenetleyicisi,
6. 16MHz kristal,
7. 22pf seramik kondansatörler.
IHU gücünü EPS kartından BUS (1 ve 63 nolu pin:Vcc) aracılığı ile almakta ve regüle edilmiş 5V ile beslenmektedir. Sağ tarafta görülen LED ve direnç ikilisi prototip tasarımda karta güç taşınıp taşınmadığının görülmesi içindir. Normal PCB’de bulunmayabilir ve sistemin çalışması bundan etkilenmeyecektir.
Hatırlatma
Gerek delikli plaket (pertinaks) ve gerekse PCB üzerinde yerleşim yaparken kristalin ve kondansatörlerin olabildiğince mikrodeneyleticiye yakın yerleştirilmesine önem verilmelidir.
DIYSAT üzerinde çalışma yapmak isteyen arkadaşlarımız için ihtiyaç duyabilecekleri pin paritası (pin map) aşağıda indirilebilir dosya bölümünde yer almaktadır, Bu haritada hangi pinin hangi pine karşılık geldiği (Arduino Uno BUS ve ATmega328P pin karşılıkları dahil) numaraları ile birlikte verilmiştir. Diğer analog ve dijital pinler kullanıcı tarafından kullanılmak üzere boş bırakılmıştır.
Merhaba Ruha Bey. Sitenizi yeni keşfettim. Bir uzay mühendisliği öğrencisi olarak ilgiyle ve zevkle okudum yazılarınızı. Çalışmalarınız için sizi tebrik ediyorum, çok faydalı. Saygılar.
Merhabalar Çağrı Bey. Beğeni ve düşüncelerinizi paylaşma nezaketiniz için teşekkür ederim. Sizlere de eğitim yaşamınızda başarılar dilerim. Çok daha iyileri ve gerçek olanlarını meslek hayatınızda sizin yaşama geçirmeniz dileklerimle.
Ruha Bey Merhaba. Çok güzel ve önemli bir proje yürütüyorsunuz. Çalışmalarınızı büyük bir dikkatle takip ediyorum ve başlattığınız projedeki küp uydudan ben de yapmak istiyorum. O yuzden hevesle modullerin ve yazılımın devamını bekliyorum. Saygılarımla,
Desteğiniz için teşekkür ederim. Projenin kodları dahil hepsi tamamlandı aslında. İş yoğunluğum nedeniyle oturup makaleye dökme zamanı bulamadım 🙁 En kısa zamanda görüşmek üzere. Konuyla ilgili herhangi bir noktada takılır veya merak ederseniz buradan veya iletişim bölümünden doğrudan yazabilirsiniz. Görüşmek üzere.
DIYSAT projenizin konu anlatımında uçuş bilgisayarın yapımında kalmışsınız diğer haberleşme vb. bölümlerin yapılışını paylaşmayacak mısınız? Veya elinizde var görmek isterim. Şimdiden teşekkür ederim.
DIYSAT Haberleşme Modülü (COMM) kısmında ilk giriş yapmıştım. En kısa zamanda resim ve kodlarıyla paylaşmaya çalışacağım. Sadece zaman problemi yaşıyorum. İlginize teşekkürler.