STM32 İLE PID KONTROL ALTINDA DC MOTOR SÜRMEK

Bu yayın ile oldukça kapsamlı bir konuya el atıyoruz. Küçük bir DC motoru, sabit bir hızda çalıştırmak için bir kapalı çevrim süreç kontrol sistemi oluşturacağız.

Bunu yapabilmek için, mikro denetleyici sistemleri geliştirirken edindiğimiz neredeyse tüm birikimimize ihtiyacımız olacak. Öyle ki :

  • Motoru istediğimiz hızda sürebilmek için bir TIMER ile PWM kontrol sinyali üreteceğiz
  • Motoru sürmek için bir L298 Motor sürücüyü kontrol edeceğiz.
  • Motorun devir hızını bir Hall Effect sensör ile algılayıp bir TIMER’in “Input Capture” fonksiyonundan yararlanarak ölçeceğiz.
  • İstediğimiz çalışma hızını bir potansiyometre ile ayarlamak üzere bir ADC kullanacağız.
  • Geliştirdiğimiz kodun kontrolu ve hata ayıklaması için ARM Cortex M çekirdeğinin SWV/ITM araçlarını kullanacağız.

İşimiz çok yani, hadi başlayalım.

Continue reading “STM32 İLE PID KONTROL ALTINDA DC MOTOR SÜRMEK”

STM32-A4988 İLE STEP MOTOR SÜRÜLMESİ

Adım motor sürmek için ST nin L298N tümleşik devresini kullanıyordum. Ancak, bipolar teknoloji kullanan bu tüm devre, daha modern MOSFET yapıdaki rakiplerine göre verimsiz kalıyor.

Ayrıca, kullanmakta olduğum yarım adım (half-step) sürüm yöntemini de L298 ile hakkını vererek uygulayamıyordum. Bu, başlangıçta işin kodlama tarafına ağırlık verdiğimden öncelik vermediğim bir konuydu.

Bir süre sonra, malzeme kutularımda beklemekte olan A4988 sürücü kitini cepheye sürerek daha gelişmiş motor sürüm tekniklerini kullanmaya karar verdim.

Bu yayının konusu bu; A4988 ile adım motoru sürülmesi – L298 ile karşılaştırmalı olarak.

Continue reading “STM32-A4988 İLE STEP MOTOR SÜRÜLMESİ”

STM32F103 İLE DOKUNMATİK PANEL KULLANIMI

Gömülü de olsalar, sistemlerimizin kullanıcılarından giriş beklediği durumlar çok yaygın. Bunun için tuş takımları, tek tek butonlar, klavyeler, döner düğmeler türlü çeşitli araçlar kullanıyoruz. Dokunmatik paneller de en kullanışlı ve yaygın olanlarından. Cep telefonları ile iş çığırından çıkmış durumda. Dokunmatik ekranı olmayan alet kalmadı adeta.

Bu yayında STM32F103 ile rezistif tipte dokunmatik panel kullanımı anlatacağım. Bu panellerin kapasitif olan tipleri cep telefonlarında, tabletlerde kullanılıyor, daha da yetenekliler, onları belki ileride ele alırım, şu anda ihtiyacım yok.

Continue reading “STM32F103 İLE DOKUNMATİK PANEL KULLANIMI”

STM32-FATFS İLE SD KART UYGULAMALARI – 1

STM32 projelerimde yıllardır SD kart kullanırım. Özellikle CNC uygulamalarımda Gerber kodları makinaya vermek için iyi bir seçenek oluyordu. Ancak kullanmakta olduğum sürücü kodları, zamanında internetten bulduğum örnekler üzerinden geliştirmiştim. Bu kodlar yaptığım eklemeler ve değişiklikler ile yamalı bohçaya dönmüş bir durumda idi.

Son zamanlarda, STM32 cube IDE platformuna geçtiğimden beri bunları güncelleyip temize çekmeyi aklıma koymuştum. STM32 CubeIDE FATFS alt yapısını da entegre etmiş olduğundan bu işe el atmanın zamanı gelmişti ve geçiyordu.

Geçenlerde kolları sıvayıp işe giriştim ve derli toplu bir sonuca ulaştım. Bu yayında bunu nasıl yaptığımı anlatacağım.

Continue reading “STM32-FATFS İLE SD KART UYGULAMALARI – 1”

STM32 – TFT SPI HIZLARI

TFT ekranları kullanmaya ilk başladığımda internetten bulduğum örnek kodları kullanmıştım. Karşıma çıkan tüm örnekler ekrana text yazmak için aynı algoritmayı kullanıyorlardı.

Bu algoritmada bir satırdaki her bir karakter sıra ile alınarak ekrana çiziliyor, sonra yanındaki karaktere geçilerek devam ediliyordu. Bu yöntem ile bir süre çalıştıktan sonra, görüntüleme hızının pek çok uygulamam için yetersiz kaldığını gördüm. Örneğin, bir encoderi okurken ekranı güncellemeye yetişemiyordum. CNC programımda da koordinat değerlerini motor adım süreleri içinde ekrana yazmak mümkün olmuyordu. Ekran güncellemek için diğer işlemleri bekletmek söz konusu değil elbette.

Bu sıkıntılar karşısında ekrana daha hızlı veri göndermenin yollarını araştırarak algoritmamı geliştirdim. Esas olarak iki konuda yaklaşımımı değiştirdim.

Continue reading “STM32 – TFT SPI HIZLARI”

STM32F10x GELİŞTİRME MODÜLLERİM – Bölüm 1 : Minikit_P R4 – paralel girişli TFT

Şimdiye kadar çalışmalarımda Çin’den satın aldığım geliştirme modüllerini kullanıyordum. Bunlar hakkında bir başka yayınımda bilgi vermiştim. (görmek için burayı tıklayınız.)

Bunlar ucuz malzemeler olsa da artık ihtiyaçlarıma daha uygun modüller tasarlayıp kullanmanın vakti geldi. (Yerli ve milli !!! :)) )

Özellikle üzerinde TFT ekranlarımı doğrudan takabileceğim soketleri olan, SPI, I2C ve UART portlara kolayca erişebileceğim konnektörleri olan modüllere çok ihtiyaç duyuyorum.

Yeni geliştireceğim modüllerin eskilerinin yerine doğrudan takılabilmesi de gerekiyor ki, daha önce geliştirmiş olduğum cihazlara bunları takıp kullanabileyim.

Continue reading “STM32F10x GELİŞTİRME MODÜLLERİM – Bölüm 1 : Minikit_P R4 – paralel girişli TFT”

STM32F103 İLE ILI9341 TFT KULLANIMI – 8 bit paralel giriş

STM32F103 ile ILI9341 GRAFİK TFT

STM32 ile başlangıçta kullandığım popüler 2 ve 4 satırlı mavi ya da yeşil LCD lerden sonra renkli grafik ekranları kullanmaya sıra gelmişti.

Ele aldığım ILI9341 arayüzlü ilk grafik TFT ekranı çalıştırmak beni epeyi uğraştırmıştı. İnternet üzerinen bulabildiğim birkaç örnek kod ve ekranın kullanım klavuzundan da yararlanarak epeyi bir çabalamadan sonra becerdim. Bulduğum örnek yazılımlar üzerinde epeyi bir değişiklik yapmam gerekmişti. Ama şimdi elimde farklı tiplerdeki Grafik TFT ler için kullanabildiğim bir yazılım kütüphanem var.

Continue reading “STM32F103 İLE ILI9341 TFT KULLANIMI – 8 bit paralel giriş”

KULLANDIĞIM GELİŞTİRME KİTLERİ

Kullandığım geliştirme modüllerine bazı örnekleri aşağıda veriyorum. Bu yayındakiler e-Bay, Ali Express gibi satıcılardan aldığım hazır, 10-15 doların altında, çoğunluğu da 1-15 dolara satılan şeyler.

En çok kullandıklarım ilk dört modül. (Yayın tarihi itibari ile – 2018). Diğerlerini de zaman zaman kullanıyorum ama ilk 4 tip her işimi görmeye yetiyor.

STM32F103 48 pin Pico modül

Pico Modül STM32F103C8T6 tipi 48 pinli yonga taşıyor. ST Firmasının “Medium Density” olarak sınıflandırdığı bir işlemci.

Bu yonganın 34 adet I/O portu, 64KByte flash belleği ve 20 Kbyte RAM’ı var. Adaptör kartı 40 adet pin ile I/O pinlerine, 4 pinli konnektör ile de SW flash programlama pinlerine erişim sağlıyor.

Maple Leaf Modülü STM32F103RCBT6 tabanlı

STM32F103CBT6 yongası kullanan Maple Leaf’in yukarıdaki Pico dan iki farkı var:

Birincisi Flash Bellek 64 yerine 128Kbyte. İkincisi ise modülün iki yanındaki 20 şer pin Arduino uyumlu olmak üzere düzenlemiş. Benim Arduino ile bir işim olmadığından bu ikinci özelliğin benim açımdan önemi yok. Pinleri Arduino uyumlu olarak numaralandırmışlar. Bazı pinlerin işlevlerine göre etiketlenmiş olması  bir bakıma kolaylık sağlıyor, ama o kadar işte.

Öte yandan pinlerde I/O port bilgilerinin olmaması bu faydanın da büyük kısmını silip götürüyor. Örneğin sadece 15-16-17 vb yazılı pinler hiçbir şey ifade etmiyor. Bunların hangi portlara ait olduğunu doküman karıştırarak çıkarmak gerekiyor. Bu durum pin-port atama işlemleri ile uğraşmayan Arduino kullanıcıları için sorun değil.

Harici kristal yok, bu nedenle maksimum saat frekansı dahili osilatörün 64 MHz i ile sınırlı, 72 MHz e çıkılamıyor.

Programlama pinleri de Pico da olduğu gibi diğer pinlerden ayrılarak dışarı alınmamış, bunlara erişim kenardaki pinler üzerinden sağlanıyor. Bu da kitin bir başka kötü yanı. O pinleri etiketlememişler bile. Uzun lafın kısası, bir daha yanına yanaşmayacağım bir kart bu.

STM32F103R8T6 Mini 64 Modülü

STM32F103R8T6 tabanlı bu Minikit 64, iki porttan alabildiğimden (A ve B) daha fazla GPIO giriş çıkışına ihtiyaç olduğunda kullandığım modül. Yukarıdaki Pico ve Maple modüllerin verdiği 34 I/O yetersiz olduğunda bu Modülün fazladan sağladığı 16 I/O lu C portu ile D portundan gelen 2 pin işimi görüyor. 64 pinin hepsine ulaşılabiliyor. Ben SW (Single Wire Programming) kullanıyorum ama istendiğinde kullanılabilecek JTAG programlama/debugging konnektörü de var.

Mikrodenetleyici 64 pinli, Flash Bellek 64 Kbyte, SRAM ise gene 20 Kbyte.

STM32F103C8T6 Mini V2.5 DCcE1e modülü

Mini STM32 V3.5 adlı bu modül de STM32F103C8T6 48 pinli, 64Kbyte Flash’lı yonga içeriyor. Yukarıdakilerden fazla olarak CH340G USB/UART çevirici devresi var. Biraz da kullanımı kolaylaştıran fazladan pinler var, bunlar besleme gerilimlerine ve toprağa erişim sağlıyorlar. Bir de açma kapama butonu var.

DİĞER STM32 MODÜLLERİ

Bunlar, ehven fiyatlar ile bulduğumda kaçırmamak üzere elimin altında bulunsun diye satın aldığım geliştirme modülleri. Yukarıda verdiğim minyatür modüllerle yapabileceklerimi yaptıktan sonra sıra bunlara gelecek.

LC STUDIO STM32F103RBT6 modülü

STM32F103RBT6 Tabanlı LC STUDIO Modülü 64 pin ve 51 I/O, 128Kbyte Flash, 20KByte SRAM a sahip. Biraz daha rahat ve büyük bir kart üzerine bir Max232 üzerinden çalışan RSR232 portu da koymuşlar. Yer problemi olmadığında ya da sadece geliştirme amacı ile kullanılabilecek kullanışlı bir kit.

 

 

STM32F407VGT6 Discovery modülü

STM32 Discovery geliştirme kiti, ST nin geliştirip pazarlamasını yaptığı bir modül. Dolayısı ile ST nin müşterilerine sağladığı geniş bir kütüphaneden yararlanıyor.  Ben bu aşamada ST nin hazır kütüphanelerini kullanmadığım için pek işim düşmedi, ama günü geldiğinde kullanacağım. Elimdeki bu modül STM32F407 tabanlı, yani ailenin büyük fertlerinden biri. 5 adet 16 I/O lu portu, 1Mbyte Flash Bellek, 194KByte SRAM ile büyük bir kapasitesi var.

STM32F401RET6 NUCLEO

STM32F401RET6 Tabanlı NUCLEO da yukarıdaki Discovery modülü gibi ST firmasının geliştirme kiti.  Buna Arduino uyumlu aksesuarların kullanılabilmesi için iki sıra dişi konnektör de koymuşlar. Örneğin, Arduino uyumlu diye satılan bir TFT ekranı direkt olarak takıp kullanabiliyorsunuz. Yine STM32F4 serisinin ekstra özelliklerine sahip. 512Kbyte Flash, 96KByte SRAM ve 50 adet I/O pini var. Bu kapasiteye de henüz ihtiyacım olmadı ama ilerleyen günlerde olacak.

STM32F205RBT tabanlı XP KITS geliştirme modülü.  STM ailesi ile tanışmam bunun STM32F103 versiyonu ile olmuştu. Ethernet portu, RS232 Portu ve bir sürü kullanıcı butonu, SD kart soketi, LCD ekranı olan yararlı bir eğitim aracı. Özellikle internet uygulamalarında çok yararlı olmuştu. Kit ile birlikte verdikleri örnek yazılım paketlerinden de çok yararlandım. Hala aklıma gelen yeni birşeyi denemek istediğimde elime aldığım güzel bir kit.

STM8 Geliştirme modülü

8 Bitlik mikro denetleyicilerle yapılabilecek işler için kullandığım mikro modüllerim de var. Bunlar STM8 serisinden çok ucuz, ancak I/O sayısı ve yetenekleri çok kısıtlı mikro denetleyiciler. Yazılım geliştirmek için KEIL değil de IAR platformunu kullanmak gerekiyor. Çok nadir elime aldığım modüller bunlar.

 

Bu yayının sonu – Selçuk Özbayraktar 2018