Fırat DEVECİ

Kralın Dönüşü: Microchip dsPIC33AK Serisi

  • 1 ay önce, Fırat DEVECİ tarafından yazılmıştır.
  • 4 Yorum
  • Genel

2000’lerin başında, mikrodenetleyici dediğimizde aklımıza öncelikle Microchip ve onun bu konudaki ailesi PIC gelirdi. Benim gibi bir çok kişiye işlemci programlamayı öğreten, sevdiren ve bununla birlikte mesleğimizde ilerlememizi sağlayan Microchip, sayısal işlemciler için çıkardığı dsPIC serisi ile de özellikle güç elektronikçilerin gözbebeğiydi. dsPIC33F serisi ve sonrasında çıkan dsPIC33EP serileri 2010’ların başı itibariyle, kolay kullanımı, PWM çeşitliliği ile oldukça beğeni toplayan işlemciler oldu. Fakat sonrasında ARM çılgınlığı, Texas’ın ucuz işlemciler çıkartması, dsPIC33CK’nın eski serideki eksikleri kapatamayışı güç elektroniğinde ibrenin yavaş yavaş başka işlemcilere kaymasına neden oldu.

Bir Güç Elektroniği Tasarımcısı Ne İster?
Mikrodenetleyici üreten bir çok firma ve binlerce seri olmasına rağmen güç elektroniği yazılımı ve dolayısı yazılımcısının isterleri normal gömülü yazılımı ile çalışan tasarımcılardan farklıdır. Güç elektroniği denetleyici nano saniye mertebesinde real time çalışan uygulamalar için kullanıldığından çevre birimlerinin de ona özel olması gerekmektedir. Dolayısı ile bir güç elektroniği tasarımcısı bir işlemciden şunları bekler:

1) Yüksek PWM Çözünürlüğü ve Frekansı: Son dönemin yükselen güç elektroniği trendlerini yakalayabilmek için işlemcinin yüksek PWM çözünürlüğüne sahip olması önemlidir. Buradaki uygulama özelinde ise eğer motor sürücü yapılacaksa nano saniye [ns], güç kaynağı yapılacaksa da ps [ps]bazında çözünürlük bizler için çok önemlidir. Ayrıca çok fazla tipte PWM çıkışı alabilmek de kolay kontrol yapabilmek için elzemdir.

2) Yüksek İşlemci Hızı, FPU, TMU vb.: Güç elektroniği demek yüksek sayısal işlem anlamı taşıyacağından işlemci frekanslarının yüksek olması artı bir değer olarak karşımıza çıkar. Bunun yanında işlemcinin barındıracağı FPU birimi ise, virgüllü işlemlerde bizlere kolaylık sağlayacağından günümüz güç elektroniği işlemcilerinde olmazsa olmaz birimlerden sayılır. TMU yani “trigonometric math unit” ise özellikle cosinus, sinus gibi değerlerin hesaplanmasında yardımcı olacaktır.

3) Fazla ADC Kanalı, Yüksek Çevrim Hızı, Çözünürlük: Analog dünyanın dijitale çevrildiği ve oradan tekrar analog dünyaya aktarıldığı bir uygulama için hızlı ve çözünürlüğü yüksek ADC’lerin önemi çok büyüktür. Hızlı çevrim yapabilen bir ADC birimi, bizleri ayrıca kontrol çevrimleri konusunda da rahatlatacaktır.

4) Haberleşme Kanalları ve DMA Uyumluluğu: Günümüzde haberleşmesiz ürünler artık neredeyse yok denecek kadar az olduğundan bir işlemcinin DMA ile uyumlu UART, SPI ya da CAN gibi altyapılarının olması oldukça önemlidir. Özellikle güç elektroniği için standart haline gelmiş CAN haberleşmenin olması, seçilecek işlemciyi bir adım öne geçirmektedir.

Bunların yanında yüksek sıcaklık aralıklarında çalışabilmesi ve EMI dayanımı gibi özellikler de biz tasarımcılar tarafından beklenen olağan özellikler haline gelmiştir.

Microchip dsPIC33AK Serisi
Daha önce burada anlattığım nedenlerden dolayı bir güç elektronik tasarımcısı için iyi bir işlemci, iyi bir tasarımın çıkması için önemli etmenlerdendir. Microchip sunduğu datasheet, yazılım altyapısı ve kullanım kolaylığı ile her zaman takdirimi kazanmış bir şirket olsa da yukarıda saydığımız maddelerde geri kalmaya başladığında rakiplerine yönelmek durumunda olduk. Tüm bu isteklerimizi geç de olsa duyan Microchip 2024’ün son aylarında yeni işlemci ailesi dsPIC33AK’yı duyurdu. Ben de çok geçmeden hemen bu işlemciden edinip, aşağıdaki deneme kartını çizip, üzerinde çalışmalara başladım.Kartta kullandığım işlemcinin tam kodu dsPIC33AK128MC106. 64 pin kılıfta gelen bu işlemcinin motor kontrol uygulamalarına özel tasarlandığını belirtmem gerekiyor. Microchip ile yaptığım temaslarda ileride bu işlemci ailesinin güç kaynakları için olan versiyonunun da geleceği bilgisini kendilerinden aldım. İşlemciyi ele aldığımızda en önemli özelliklerini aşağıda sıralayabiliriz.

dsPIC33AK128MC106 Özellikleri
– 40 ile 150C arasında 200MHz işlemci hızı
– 32 Bit işlemci yapısı, yenilenmiş core yapısı
– Floating-Point Unit yani FPU barındırması
– 6 Kanal DMA
– 0-85C arası %1 kaymalı içsel RC osilatör barındırması
– 2 adet 1.6GHz PLL birimi barındırması
– 4 çift, 8 çıkış yüksek hızda PWM bloğu
– 2.5ns PWM Çözünürlüğü
– 12-bit 40MSPS 22 Kanal ADC
– 3 adet UART, 4 adet SPI, 2 adet I2C
– AEC-Q100

Yukarıdaki özelliklere bakıldığında 12-bit 40MSPS ADC’nin oldukça göz doldurduğu söylenebilir. İşlemcinin bana göre tek eksiği ise CAN bağlantısının bulunmaması. İleride mutlaka ekleneceğini düşünerek böyle bir işlemciye CAN FD desteğinin oldukça uygun olacağını düşünüyorum.

İşlemciyi her ne kadar çalışır hale getirsek de program derlemek için öncelikle bazı hazırlıklara ihtiyaç duyuluyor. Bunlardan ilki, uzun süredir Microchip dsPIC serisine desteğini XC16 derleyicisi ile verse de bu seriden itibaren desteğini XC DSC ile sağlıyor. Dolayısı ile XC16 ile bu işlemciyi programlamak mümkün değil. Ayrıca Microchip artık Pickit3 ve daha eski modellere destek vermeyi kestiğinden, bu işlemciyi programlayabilmek için minimum Microchip SNAP ya da Pickit4’e sahip olmanız gerekiyor. Bunlara sahip olduktan sonra ise dsPIC33AK serisine program yazmak, datasheet ve github örnekleri ile gerçekten çok kolay.

Microchip dsPIC33AK Serisi Performans Testi
dsPIC33AK testi öncesi, bir güç elektronikçisinin ilk yapacağı durum PWM-ADC senkronizasyonunu sağlayarak işlemlere başladım. Bu işlemler öncesi dsPIC33AK’yı 200MHz hızına çıkarırken bu fiyat bandında şu ana kadar gördüğüm en ayrıntılı PLL bloğunu kullanma imkanı edindim. Aşağıda görülebilecek blokta iki PLL bloğu çok yüksek hızlara ayrı ayrı çıkabilirken, sonrasında gelen bloklarla da ikinci bir PLL işlemi yapılarak, ADC’den PWM’e UART’tan genel birimlere ayrı ayrı frekansta clock sinyali göndermek mümkün oluyor. İşlemci bünyesinde otomotiv için gerekli bir çok safety özelliğini barındırdığı için bir çok birim bu şekilde detaylı.İşlemcinin çevre birimlerini kurduktan sonra daha önce burada anlattığım PLL algoritması üzerinden performans testi gerçekleştirdim. Bir önceki nesil dsPIC serileriyle çok zorlandığım bu algoritmanın, bu işlemcide sorunsuzca çalıştığını görmek benim için ilk güzel adımlardan oldu.

Testte öncelikle 1 faz PLL algoritmamı koşup aşağıdaki etkiyi aldım. Frekans 41Hz’den 65Hz’e frekans kitlenmesi sağlanmıştır.

Daha sonraki testte ise 3 faz PLL algoritmamı koşup aşağıdaki etkiyi aldım. Frekans burada da 41Hz’den 65Hz’e değiştirilerek kitlenme sağlanmaya çalışıldı.

Yaptığım testler sonrasında dsPIC33AK’nın, içerisinde bir çok float sayı barındıdan tek faz PLL algoritmasını 1.60us’de 3 faz PLL algoritmasını ise 2.45us civarında koşabildiğini gördüm. Bu süreler ise bu fiyat bandındaki bir ürün için oldukça tatminkar sayılır. Aşağıda aynı algoritmaların farklı işlemcilerdeki koşuş sürelerini görebilirsiniz.

𝐒𝐢𝐧𝐠𝐥𝐞 𝐏𝐡𝐚𝐬𝐞 𝐒𝐎𝐆𝐈-𝐏𝐋𝐋
PIC32MK (120MHz) : 4.00us
STM32F334 (72MHz) : 4.00us
STM32G431 (170MHz) : 2.00us
TMS320F280049 (100MHz) : 2.40us
TMS320F280039 (120MHz) : 2.00us
TMS320F280049 (100MHz) : 1.80us (RAM)
TMS320F280039 (120MHz) : 1.50us (RAM)
dsPIC33AK128MC106 (200MHz) : 1.60us

𝐓𝐡𝐫𝐞𝐞 𝐏𝐡𝐚𝐬𝐞 𝐃𝐒𝐎𝐆𝐈-𝐅𝐋𝐋 𝐏𝐋𝐋
PIC32MK (120MHz) : 8.10us
STM32F334 (72MHz) : 8.05us
STM32G431 (170MHz) : 3.70us
TMS320F280049 (100MHz) : 4.80us
TMS320F280039 (120MHz) : 4.00us
TMS320F280049 (100MHz) : 3.00us (RAM)
TMS320F280039 (120MHz) : 2.50us (RAM)
dsPIC33AK128MC106 (200MHz) : 2.45us

𝐃𝐚𝐭𝐚𝐬𝐡𝐞𝐞𝐭 𝐕𝐚𝐥𝐮𝐞𝐬
PIC32MK : 198DMIPS (120MHz)
STM32F334 : 210DMIPS (72MHz)
STM32G431 : 213DMIPS (170MHz)
TMS320F280049 : 200MIPS (100MHz)
TMS320F280039 : 240MIPS (120MHz)
dsPIC33AK128MC106 : 200MIPS (200MHz)

Yukarıdaki sonuçlarla birlikte Microchip’in sonunda, biz güç elektroniği tasarımcılarına dsPIC33AK ile iyi bir seçenek sunduğunu rahatlıkla söyleyebiliriz. Bunun yanında şahsi olarak, kod yazımı, datasheet, derleyici rahatlığı ve github örnekleri açısından, dsPIC33AK serisinin tüm diğerlerinden daha kolay olduğunu söyleyebilirim.

Sonuç Olarak…
Microchip dsPIC33AK serisi, güç elektroniği tasarımcılarının uzun süredir ihtiyaç duyduğu özellikleri bir araya getirerek rekabeti yeniden şekillendirebilecek potansiyele sahip ve yüksek işlemci hızı, gelişmiş PWM çözünürlüğü, çoklu ADC kanalları ve kolay programlama altyapısıyla, bu yeni seri hem performans hem de kullanıcı dostu olması açısından dikkat çekiyor. Yapılan test sonuçları, Microchip’in dsPIC33AK serisinin önümüzdeki dönemde güç elektroniği alanındaki rekabetin en güçlü oyuncularından biri olacağını ortaya koyuyor.

Sorularınız için yorum bölümünden bana ulaşabilirsiniz.
Herkese iyi çalışmalar dilerim.

Dip Not: İşlemci konusunda destekleri için Avnet Silica Türkiye ofisine teşekkür ederim.

  1. Metin dedi ki:

    Değerlendirme için teşekkürler,

    TI TMS’lerde ek bir CLA core’u olduğu ve paralel işlem yapılabildiğini de düşünmek lazım. Çok TI düşkünü biri değilimdir ama sahadaki performansı da bildiğim kadarıyla kıyasla iyi. Geliştirme ortamı olarak Modern C++ desteği, Cube MX gibi kullanıcı arayüzleri ve HAL kütüphanelerinin nispeten daha az hatalı olması gibi sebeplerle STM32G4’ün bariz önde olduğunu söyleyebilirim. DSPIC’lerin de çok başarılı olduğunu duydum.

    • Fırat DEVECİ dedi ki:

      Texas’ı uzunca zamandır aktif kullanıyorum. Texas’ın CCS C IDE ve derleyicileri maalesef çok hantal. Programlayıcıları da keza öyle, böyle bir işlemciye hiç yakışmıyor maalesef. Bunu kendilerine de çok kez söyledik. CLA evet var fakat çok kolay bir kullanımı yok maalesef. DMA ile UART bağlantısının olmaması ise oldukça şaşırtıcı. Kütüphane yapısı gördüğüm kadarıyla en stabil işlemci burada.
      ST tarafında ise sürekli bir kütüphane değişikliği var. Biz güç elektronikçilerine Std_Lib gayet yeterliyken, hantal HAL kütüphanesini bizlere sundular. LL kütüphanesi ise bazı çevre birimlerini maalesef desteklemiyor.
      Microchip de ise kütüphane ihtiyacı yok, registerler yazılamayacak uzunlukta ve karmaşıklıkta değil.

      Her üç işlemciyi de, hatta daha da fazlasını, aktif kullanan biri olarak yorumum bu olur.

  2. İbrahim KOLBAŞ dedi ki:

    Merhaba;

    Emeğinize sağlık.

    F280049 için, “Lokomotif Yardımcı Konvertör” üzerinde çalışan koddan örneklemek isterim:
    DDSRF : 141 cycles veya 1.41µs@100MHz (CLA kodu, CPU kullanmıyor)
    SOGI : 112 cycles veya 1.12µs@100MHz (CLA kodu, CPU kullanmıyor)

    F280039 (“Endüksiyon Isıtma”) 120MHz olduğu için, süreler kısalır.

    CPU tarafında koşturulursa, SinCos çok daha kısa süreceğinden ( 3 cyles vs 42 cycles), ikisi de 1µs altında olur.

    İyi çalışmalar.
    İbrahim KOLBAŞ, KOLTEST LTD

    • Fırat DEVECİ dedi ki:

      İbrahim Bey bilgiler için teşekkürler.

      1 ya da 3 faz için mi kodlar belirtirseniz ayrıca TI’ın kendi kütüphanesini mi kullanıyorsunuz yazarsanız daha açıklayıcı olur.

Bir Yorum Yazın

error: Kopyalama Yasaktır, Eğer Bilgi İçeriğini Almak İstiyorsanız İletişim Bölümünden Yazara Ulaşın!