ATmega328P Mikrodenetleyici Rehberi: Devre Tasarımı

Kendi Arduino Uno’nuzu yapmak, sandığınızdan daha kolay..

ATmega328P Mikrodenetleyici Rehberi: Devre Tasarımı

Atmega328P, Atmel (artık Microchip) tarafından üretilen 8-bit AVR mimarisine sahip popüler bir mikrodenetleyicidir. Özellikle düşük güç tüketimi, geniş destek ve kolay programlanabilirliği sayesinde hobi projelerinden endüstriyel uygulamalara kadar geniş bir kullanım alanına sahiptir.


1. Atmega328P Nedir?

Atmega328P, 8-bit AVR RISC mimarisine sahip, düşük güç tüketimli ve yüksek performanslı bir mikrodenetleyicidir. "P" takısı, "pico-power" teknolojisini ifade eder, yani düşük güç tüketimi için optimize edilmiştir.

Atmega328P Paket (Kılıf) Tipleri

Atmega328P, farklı kullanım senaryolarına uygun olarak çeşitli fiziksel paket (IC kılıf) tipleriyle üretilir. Bu paketler, lehimleme yöntemi, PCB tasarımı ve uygulama alanlarına göre değişiklik gösterir. En yaygın kullanılan Atmega328P paketleri şunlardır:

  1. DIP-28 (Dual In-Line Package - 28 Pin)
    • En yaygın kullanılan modeldir, özellikle prototipleme ve breadboard projelerinde tercih edilir.
    • Elle lehimlenebilir ve soketli tasarımlar için uygundur.
    • Arduino Uno gibi kartlarda kullanılan versiyon budur.
    • 2.54 mm pin aralığına sahiptir ve genellikle delikli (through-hole) PCB'lere lehimlenir.
  2. TQFP-32 (Thin Quad Flat Package - 32 Pin)
    • Yüzey montajlı (SMD) bir pakettir, DIP versiyonuna göre daha küçük boyuttadır.
    • Ekstra 4 adet GND/VCC pini içerir, toplamda 32 pindir.
    • Arduino Nano ve Pro Mini gibi küçük boyutlu kartlarda kullanılır.
    • PCB tasarımında daha az yer kaplar ancak elle lehimlemek zor olabilir.
  3. QFN-32 (Quad Flat No-Lead - 32 Pin)
    • En kompakt ve en az yer kaplayan pakettir.
    • Altında lehim pad’leri bulunduğu için reflow fırını veya sıcak hava lehimleme gerektirir.
    • Endüstriyel uygulamalar ve seri üretim için idealdir.
    • TQFP-32 gibi fazladan 4 pin içerir, ancak DIP veya TQFP kadar yaygın değildir.

2. Hangi Kartlarda Kullanılır?

Atmega328P aşağıdaki popüler kartlarda kullanılır:

  • Arduino Uno (DIP/SMD versiyonları)
  • Arduino Nano (SMD versiyonu – Atmega328P-AU)
  • Arduino Pro Mini (3.3V ve 5V versiyonları)
  • Standart DIP veya SMD devreler (kendi PCB tasarımlarında kullanılabilir)

Bu kartlar dışında Atmega328P, gömülü sistem projelerinde, IoT cihazlarında, robotik uygulamalarda ve hobi elektroniğinde yaygın olarak kullanılır.


3. Teknik Özellikleri

ÖzellikDeğer
Mikroişlemci8-bit AVR RISC
Çalışma Gerilimi1.8V - 5.5V (Arduino Uno için 5V)
Saat Hızı16 MHz (Harici kristal) veya dahili 8 MHz osilatör
Flash Bellek32 KB (Arduino Bootloader varsa 28 KB kullanılabilir)
SRAM2 KB
EEPROM1 KB
GPIO Pin Sayısı23 Adet (20 Tanesi Arduino’da Kullanılır)
PWM Pinleri6 Adet
ADC Kanalları6 veya 8 Adet (10-bit çözünürlük)
İletişim ProtokolleriUART, I2C (TWI), SPI
Güç TüketimiDüşük güç modlarında birkaç mikroamper

4. Avantajları

Atmega328P’nin öne çıkan avantajları şunlardır:

  • Düşük Güç Tüketimi: PicoPower teknolojisi sayesinde düşük güç modları destekler.
  • Geniş Destek ve Topluluk: Arduino ekosisteminde çok yaygın olduğundan dökümantasyon ve destek fazladır.
  • Harici Kristal ile Stabil Saat Hızı: 16 MHz ile kararlı çalışır, ancak düşük güç modlarında 8 MHz dahili osilatör de kullanılabilir.
  • Kolay Programlama: Arduino Bootloader sayesinde USB-TTL dönüştürücü ile kolayca programlanabilir.
  • Gömülü Sistemler İçin İdeal: Küçük boyutu ve düşük maliyeti sayesinde özel PCB tasarımlarında tercih edilir.

5. Programlama

Bootloader, mikrodenetleyicinin harici bir programlayıcı olmadan USB veya seri port üzerinden yazılım yükleyebilmesini sağlayan bir küçük programdır. Atmega328P'ye Arduino Bootloader yüklendiğinde:

  • Flash belleğin 0.5 KB ila 2 KB arasındaki bir bölümü bootloader için ayrılır.
  • Bootloader sayesinde Arduino IDE ile doğrudan kod yüklenebilir.
  • Bootloader olmadan programlama yapmak için ISP (In-System Programming) yöntemiyle Atmel AVR programlayıcı veya Arduino’nun ICSP pini kullanılır.

Bootloader Yüklenmiş ve Yüklenmemiş Atmega328P Farkı:

  • Bootloader Yüklü: Doğrudan Arduino IDE ile USB üzerinden programlanabilir.
  • Bootloader Yok: Harici programlayıcı (USBasp, USBtinyISP vb.) ile doğrudan programlanması gerekir.

Atmega328P'nin doğrudan USB bağlantısını ve USB HID (Human Interface Device) protokolünü desteklememesinin temel sebebi, içinde yerleşik bir USB donanım kontrolcüsü bulunmamasıdır. Atmega328P, UART (seri haberleşme), SPI ve I2C gibi standart haberleşme protokollerini destekler, ancak USB cihazı olarak doğrudan tanınabilmesi için gereken donanıma sahip değildir.

Bu nedenle, Atmega328P'yi bir bilgisayara USB üzerinden bağlamak ve programlamak için ek bir USB-UART dönüştürücü veya bir USB destekli mikrodenetleyiciye ihtiyaç duyulur. Arduino Uno ve benzeri kartlarda genellikle şu ek çipler kullanılır:

  1. CH340, CP2102 veya FT232RL gibi USB-UART çeviriciler
    • Atmega328P'nin seri portunu USB'ye çevirerek bilgisayar ile haberleşmesini sağlar.
    • Sadece seri iletişim sağlar, USB HID gibi gelişmiş fonksiyonları desteklemez.
    • Arduino klonlarında genellikle CH340 kullanılır çünkü maliyeti düşüktür.
  2. ATmega16U2 (Arduino Uno R3 üzerinde kullanılan çip)
    • USB desteği bulunan bir Atmega mikrodenetleyicidir.
    • Atmega328P ile UART üzerinden haberleşir ve USB bağlantısını sağlar.
    • Alternatif firmware yüklenerek, klavye veya fare gibi USB HID cihazı olarak kullanılabilir.
  3. Atmega32U4 (Arduino Leonardo, Pro Micro gibi kartlarda kullanılır)
    • Doğrudan USB desteğine sahiptir, ek bir dönüştürücüye gerek kalmaz.
    • USB HID desteği içerdiği için doğrudan klavye, fare, joystick gibi cihazlar olarak tanıtılabilir.
    • Ancak Atmega328P'ye kıyasla daha az yaygındır ve bazı durumlarda daha maliyetlidir.
USB-Seri Dönüştürücü Çip: CH340
Elektronik ve bilişim dünyasında, cihazlar arasındaki iletişimi sağlamak için çeşitli protokoller ve arayüzler kullanılır. USB (Universal Serial Bus), bu protokoller arasında en yaygın olanlardan biridir ve modern bilgisayarların vazgeçilmez bir parçasıdır. Ancak, mikrodenetleyiciler ve diğer gömülü sistemler genellikle UART (Universal Asynchronous Receiver-Transmitter), RS232 veya RS485 gibi seri iletişim protokollerini kullanır.

5. Devre Tasarımı

Arduino Uno referans tasarımını incelerseniz ihtiyacınız olmayan çok sayıda komponent görebilirsiniz. Bu sebeple aşağıda sadece zorunlu komponentler belirtilmiştir. Atmega328P DIP-28 paketi için 28 pini bulunur. Temel bağlantılar için aşağıdaki bacaklar kullanılır:

Pin NoAdıAçıklama
1PC6 (RESET)Harici reset için kullanılır. Pull-up direnç gerektirir.
2-6PD0 - PD4Dijital giriş/çıkış pinleri. PD0 (RX) ve PD1 (TX) UART için kullanılır.
7VCCÇalışma gerilimi girişi (+5V veya +3.3V).
8GNDToprak bağlantısı.
9XTAL1Harici kristal bağlantısı (Saat sinyali için).
10XTAL2Harici kristal bağlantısı (Saat sinyali için).
11-13PD5 - PD7Dijital giriş/çıkış pinleri. PD5, PD6, PD7 PWM destekler.
14AVCCAnalog besleme voltajı (ADC için VCC'ye bağlanmalı).
15AREFADC referans voltajı (Dış referans olarak bağlanabilir).
16GNDİkinci toprak bağlantısı.
17-19PC0 - PC2Analog girişler (ADC0-ADC2) veya dijital giriş/çıkış.
20-21PC3 - PC4Analog girişler (ADC3-ADC4) veya dijital giriş/çıkış.
22PC5Analog giriş (ADC5) veya dijital giriş/çıkış.
23PB6 (XTAL1)Harici kristal veya dijital giriş/çıkış.
24PB7 (XTAL2)Harici kristal veya dijital giriş/çıkış.
25-26PB0 - PB1Dijital giriş/çıkış pinleri.
27-28PB2 - PB3Dijital giriş/çıkış ve SPI (MISO, MOSI) pinleri.

Atmega328P İçin Zorunlu En Minimal Bileşen Listesi


Zorunlu Bileşenler Listesi

BileşenDeğer / ModelAçıklama
MikrodenetleyiciAtmega328P-PU (DIP-28)Mikrodenetleyicinin kendisi
Kristal Osilatör16 MHzDaha kararlı çalışma için harici saat kaynağı
Kondansatör22pF (2 Adet, Seramik)Kristalin her iki ucuna GND’ye bağlanacak
Pull-up Direnç10kΩReset pinini VCC’ye çekmek için
Jumper (Reset için)2 pin header + JumperReset işlemini manuel yapmak için
Güç Kaynağı (Harici)5V Regüle EdilmişVCC ve AVCC için gerekli besleme
Bağlantı KablosuÇeşitliGüç ve programlama bağlantıları için

Basit Atmega328P Devre Şeması

Aşağıda temel bir Atmega328P devre tasarımının nasıl olması gerektiğini özetleyen bir bağlantı listesi bulunmaktadır:

  1. VCC → 5V
  2. GND → Toprak
  3. RESET → 10kΩ direnç ile VCC’ye, ayrıca buton ile GND’ye bağlanır.
  4. XTAL1 ve XTAL2 → 16 MHz kristal + 22pF kapasitörlerle GND’ye çekilir.

Programladığınız çipi Arduino Uno'dan söküp buradaki devrenize kurarsanız istediğiniz şekilde çalışacaktır. İlk deneme için blink kodunu yazıp örneğin D9 pinine uygun bir dirençle led bağlayıp test edebilirsiniz.


Açıklayıcı bir metin

Güç Bağlantıları (VCC, GND, AVCC, AREF)

Atmega328P'nin çalışması için VCC, GND, AVCC ve AREF pinleri doğru şekilde bağlanmalıdır.

  • VCC (7. pin)+5V veya +3.3V’a bağlanır.
  • GND (8. ve 16. pinler)Toprak hattına bağlanır.
  • AVCC (14. pin, ADC için güç beslemesi)+5V’a bağlanmalıdır.
  • AREF (15. pin, Analog Referans Voltajı)ADC kullanılıyorsa harici referans bağlanabilir veya GND’ye 100nF kondansatör ile bağlanmalıdır.
Not: Eğer ADC kullanıyorsanız AVCC’nin de VCC’ye bağlı olduğundan emin olmalısınız.
Düşük Voltajlı Güç Regülatörü: AMS1117
Yanlış bir AMS1117 siparişi sonrasında tüm bilgilerimi tek bir blog altında toplamak istedim. Yanlış siparişim sonucunda gelen SOT-89 kılıfta gelen AMS1117 ve karşınızda bildiğim/tecrübe ettiğim/öğrendiğim bilgiler. AMS1117, elektronik devrelerde sıkça kullanılan düşük düşümlü (Low Dropout - LDO) bir voltaj regülatörüdür. Bu bileşen, giriş voltajını sabit bir çıkış voltajına

Saat (Clock) Devresi

Atmega328P, dahili 8 MHz osilatöre sahiptir ancak harici 16 MHz kristal kullanarak daha kararlı bir saat kaynağı sağlayabiliriz.

Harici Kristal Kullanımı

  • XTAL1 (9. pin) ve XTAL2 (10. pin)16 MHz kristale bağlanır.
  • 22pF kondansatörler → Kristalin her iki bacağına bağlanarak GND’ye çekilir.
  • Kristal osilatör ve kapasitörlerin yakın yerleştirilmesi gereklidir, aksi takdirde gürültü sorunları oluşabilir.

🔹 Alternatif olarak: Eğer harici kristal kullanılmayacaksa, dahili 8 MHz osilatör ile de çalıştırılabilir, ancak zamanlama doğruluğu harici kristale göre daha düşüktür.


Reset Devresi

Reset pinini düzgün çalıştırmak için 10kΩ pull-up direnç kullanılması gerekir.

  • PC6 (1. pin) → 10kΩ direnç ile VCC’ye bağlanır.
  • Ek olarak, bir push-button (buton) ekleyerek GND’ye çekebilirsin.
  • 100nF kapasitör de eklenebilir (istenmeyen reset durumlarını önlemek için).

Programlama Arayüzü (ICSP - In-System Programming)

Atmega328P’yi programlamak için ICSP (In-System Programming) pinleri kullanılabilir.

  • MOSI (Pin 17, PB3)
  • MISO (Pin 18, PB4)
  • SCK (Pin 19, PB5)
  • RESET (Pin 1)
  • VCC (Pin 7)
  • GND (Pin 8)
Not: Eğer bootloader yüklü değilse, programlama için USBasp, USBtinyISP gibi bir programlayıcıya ihtiyacınız olacak.

USB-UART Haberleşmesi

Eğer devreni Arduino IDE ile programlamak istiyorsan, USB-TTL çevirici (CH340, CP2102, FT232RL) kullanmalısınız.

  • RX (Pin 2) → TX (USB-TTL çeviricinin TX'ine)
  • TX (Pin 3) → RX (USB-TTL çeviricinin RX'ine)
  • GND (Pin 8) → USB-TTL çeviricinin GND’sine bağlanır.
  • VCC (Pin 7) → +5V veya +3.3V (USB-TTL çeviricinin çıkışına göre)

Eğer otomatik reset özelliğini kullanmak istiyorsanız, DTR pinini 100nF kondansatör üzerinden RESET pinine bağlamalısın.


LM35 Temp Monitor with ATmega328 & OLED
LM35 sensor with ATmega328 and OLED for stable, real-time temperature monitoring, suitable for education and environmental applications. By Doğukan Sahil.

Örnek bir çalışma

Daha ileri bir çalışma olarak aşağıdaki bağlantıyı kullanarak SMD çalışmaların nasıl yapıldığını inceleyebilirsiniz. Özellikle microdenetleyici etrafında dekupaj kapasitörlerini incelemenizi öneririm.

DIY ECG Monitor with AD8232 and ATMEL328
Explore heart health with our DIY ECG kit featuring AD8232 & ATMEL328. Simple, effective, and perfect for enthusiasts and educators alike! By Doğukan Sahil.

SMD örmek bir çalışma

Bu blog yazısında Atmega328P, AVR mikrodenetleyici ailesinin en popüler üyelerinden biri olarak ele alındı ve Arduino Uno, Nano, Pro Mini gibi yaygın kullanılan geliştirme kartlarında nasıl kullanıldığı detaylıca incelendi. Düşük güç tüketimi, kolay programlanabilirlik ve geniş topluluk desteği sayesinde hem hobi projeleri hem de endüstriyel uygulamalar için ideal bir seçenek olan Atmega328P’nin DIP-28, TQFP-32 ve QFN-32 gibi farklı paket türleri, teknik özellikleri, ISP ve USB-TTL ile programlama yöntemleri, güç bağlantıları, reset devresi, harici kristal osilatör kullanımı, PWM ve ADC fonksiyonları gibi konular kapsamlı bir şekilde ele alındı. Ayrıca, CH340, CP2102, FT232RL gibi USB-Seri dönüştürücüler, AMS1117 voltaj regülatörü, ICSP programlama arayüzü, bootloader yükleme süreçleri ve Atmega328P devre tasarımı gibi konulara değinilerek, kendi elektronik projelerinizi geliştirebilmeniz için rehber niteliğinde bir içerik sunuldu. Gömülü sistemler, IoT projeleri, robotik uygulamalar ve sensör tabanlı çalışmalar gibi birçok alanda yaygın olarak kullanılan Atmega328P, esnek yapısı, düşük maliyeti ve geniş destek ekosistemi ile mikrodenetleyici tabanlı projeler için vazgeçilmez bir çözüm olmaya devam ediyor. Siz de kendi Atmega328P devrenizi oluşturarak Arduino Uno benzeri bir sistem tasarlayabilir ve projelerinizi hayata geçirebilirsiniz.

LoRa Module with Atmega328P-Based PCB Design
Compact PCB with Atmega328P & LoRa RA-02 for wireless communication. Includes USB-UART, 3.3V regulator, and WS2812 LED. By Doğukan Sahil.

Kaynaklar

Arduino Uno Şematik Diyagramı: Arduino. Arduino Uno Schematic. Arduino, www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf. Accessed 9 Feb. 2025.

ATmega328P Veri Sayfası: Microchip Technology Inc. ATmega328P Datasheet. Microchip, https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Accessed 9 Feb. 2025.