İlk yayında anlattığım (STM32 Tabanlı Masaüstü CNC – 1) masa üstü CNC yi güncelliyorum. Mekanik yapıda bir değişiklik yok. Ana değişiklik elektronik donanımdaki motor sürücüler. Buna ilaveten yazılımda, motor sürüm algoritmasında epeyi değişiklik var. Bunlardan bazılarını daha CNC ye uygulamadan önce aşağıdaki yayınlarda anlatmıştım.
- UART iletişiminde veri doğrulama – checksum tekniği
- UART iletişimde Ring Buffer tekniği kullanımı
- A4988 tabanlı adım motor sürücü
- SPI haberleşmede DMA modu
- TFT Grafik insan makina arayüzü LwGui
- FATFS ile SD kart uygulamaları 1 ve 2
- PID Tekniği ile kapalı çevrim kontrolunda DC motor sürmek
Aslında diğer yayınlarımın neredeyse hepsinde CNC de kullandığım yazılım tekniklerinden bir şeyler var. Daha önce de belirttiğim gibi, bu CNC, öğrendiğim şeyleri hayata geçirdiğim bir test platformu haline geldi.
YENİLİKLER – YENİ MODEL
Yeni modeldeki temel değişiklikler şunlar :
- L298 Bipolar sürücüler yerine A4988 MOSFET sürücüler
- Sabit 5V DC motor sürümü yerine 20+ V DC PWM akım kontrollu sürüm
- Kullanıcı girişleri ve Gcode/Excellon kod aktarımı için yoklama yöntemi yerine kesinti tabanlı ring buffer kullanımı
- PC ile UART haberleşmesinde checksum doğrulaması kullanımı
- Tuş panelinden kullanıcı girişleri için basılan tuşun ASCII kodunu gönderen bir HMI paneli
- TFT sürümünde DMA kullanımı
- SD kart kullanımı için temizlenmiş FATFS kodu
- Spindle motorda manuel sabit DC hız kontrolu yerine kapalı çevrim PID/PWM sürüm tekniği.
- İvmelenme algoritması
- Yeni PCB ile kompakt yapı
KONFİGÜRASYON BİLGİLERİ ve DONANIM DEĞİŞİKLİKLERİ
YAZILIM : Mikrodenetleyici yazılımı : STM32F205RC_CNC_R20 (Ekim 2020) PC-Data streamer: Python Streamer R3(checksum fonksiyonu ile) DONANIM : CNC BaseBoard : Smart CNC Minikit R2a Dec2018 - değişiklikler ile Mikrodenetleyici modülü: STM32F205RC Minikit-S R4 - değişiklikler ile
PLAKETLERDEKİ DEĞİŞİKLİKLER
CNC kontrol birimi bir CNC ana kartı ile bunun üzerine takılan bir mikrodenetleyici kartından oluşuyordu. CNC ana kartı aynı zamanda motor sürücü L298 tüm devreleri ve çevrelerindeki devre elemanlarını, konnektörleri de içeriyordu. Minikit adını verdiğim mikrodenetleyici kartı da bir STM32F103RBT6 mikrpdenetleyici ile bunu destekleyen devre elemanlarını içeriyordu.
Yeni modelde de aynı baskılı devreleri kullanıyorum. Ancak artık CNC ana kartı üzerinde L298 motor sürücüler yok, o bölüm boş kalacak. Bunların yerine Arduino uyumlu olan paralar konnektörlere takılan bir A4988 adaptör kartı geliyor. Dolayısı ile Minikitin ana karta bağlanış şeklinin değişmesi, bazı devre bağlantılarının değişmesi gerekiyor.
CNC TABAN KARTINDAKİ DEĞİŞİKLİKLER
CNC Ana kartında A4988 sürücülere “x_dir”, “y_dir” ve “z_dir” yön sinyallerini C09, C10 ve C11 çıkışlarından verdiğim için bu çıkışları Arduino uyumlu konnektörde karşı düşen pinlere bağlamak üzere 3 adet bağlantı yapmamız gerekiyor. Bu pinlere önceki modelde paralel girişli TFT ekranları sürmek için PB13, 14 ve 15 çıkışları bağlı idi. Bu pinler aynı zamanda SPI2 porta ait, bunları artık SD kart sürmek için kullanacağım.
Özetle : PB13,14,15 pinlerini SD kart için kullanmak üzere ayırıp, bu pinlere daha önce L298 sürmekte kullandığım, şimdi açığa çıkan PC09,10 ve 11 çıkışlarını bağlıyoruz.
Bir de A4988 adaptör kartına 3.3 Volt Vcc beslemesi vermek üzere ilave bağlantımız var.
Öenli bir değişiklik de minikiti konnektörlerinin monte edildiği yüzde oluyor. Minikitin takıldığı konnektörler artık ana kartın üstünde değil, alt tarafında yer alıyor.
Ayrıntılar aşağıdaki fotolarda görülüyor.
MİNİKİT MODÜLÜNDEKİ PCB DEĞİŞİKLİKLERİ
Minikit modülünde daha önce SPI arayüzlü TFT ekranların yine SPI arayüzlü olan dokunmatik panel bağlantılarına erişim yoktu. Dokunmatik panel istediğimde paralel girişli TFT ekranlar kullanmak zorundaydım. Şimdi, SPI arayüzlü TFT lerin dokunmatik tipte olanlarını kullanmak niyetinde olduğum için buna yönelik bağlantıları eklemek gerekiyor. SD kart, TFT ve Dokunmatik panel seçim (SD_CS, TP_CS ve TFT_CS) pinlerini de sırasıyla C13, C14 ve C15 çıkışlarına bağlamak üzere değiştirilen/ek bağlantılar var. TFT_CS eskiden B8 üzerindeydi.
Bu bağlantılarla TFT ve dokunmatik panel SPI1 portunu paylaşıyor, SD kart ise SPI2 üzerinde. (Bu amaçla ana kart üzerindeki değişiklik ile SPI2 yi boşa aldığımızdan yukarıdaki paragrafta söz etmiştim.)
Yeni bağlantı düzeninde Minikit/anakart bağlantı konnektörleri de alt taraftan üst tarafa geçiyorlar. SPI TFT konnektörleri de alt tarafa geçiyor.
YENİ CNC KONTROL BİRİMİ
Yeni modelin kompakt bir yapıda olmasını hedefledim. Konstrüksiyon konusunda olabildiğince beceriksizim, bu hale deneme yanılma teknikleri ile gelebildim. Sonuç pek de fena olmadı bence.
Konnektörler üstten alta geçince TFT pinlerinin dizilişi tersine döndüğü için bir çevirici karta ihtiyaç doğdu. Şimdilik biraz uzun, ama atölyeye gittiğimde o fazlalık kesilecek.
YAZILIM
İVMELENME
Bu yeni modelde motorları harekete geçirirken doğrudan tam hıza geçmiyorum. 20 ms lik adımlarla başlayıp, her adımda biraz daha hızlanarak 15-20 adımda hedef hıza çıkıyorum.
YENİ PCB İLE KOMPAKT YAPI
2021 e girerken buraya kadar anlatmış olduğum 4 katlı yapıdan sıkılmış olduğumu farkettim ve herseye temize çekerek tek bir PCB üzerinde toplamaya karar verdim. Sonuç aşağıdaki gibi.
Dokunmatik 4″ TFT ekran, baskılı devrenin üst tarafına takılı. Mikrodenetleyici ve diğer devre elemanları TFT nin altında kalıyor.
A4988 motor sürücüler plaketin alt tarafında.
Böylece, A4988 leri taşıyan modül ve bir taşıyıcı ana karta gerek kalmamış oluyor. Tüm CNC denetleyici birimi bu tek karttan ibaret. Bu tasarımda atladığım birkaç şeyi de A4988 reset girişlerine dışarıdan lehimlediğim 3 direnç ve mikro denetleyicinin VDDA girişine 3.3V veren bir tel köprü ile tamamladım. Meğerse A4988 in RESET girişini ve STM32F103 ün VDDA girişini boşta bırakırsak olmuyormuş.
Bir şey daha farkettim, TFT ve dokunmatik paneli (TP) aynı SPI çıkışından sürüyordum, bir master, iki slave yapısında. Bu TFT ve üzerindeki TP denetleyicinin aynı MISO çıkışını paylaşamadıklarını gördüm. TFT kendi MISO çıkışını hiç bir zaman yüksek empedans konumunda bırakmıyor, CS girişi “1” iken, yani TFT seçili değilken de MISO yu “0” seviyesinde tutuyor. Bu nedenle PCB üzerinde TFT ve TP nin MISO larını birleştiren hattı keserek ayırdım. MISO yu sadece dokunmatik panel kullanacak. Belki başka TFT lerde durum böyle değildir, bakmak lazım.
Merhabalar, NEÜ Mekatronik Müh. öğrencisiyim, STM32F1 serisiyle bir süredir uğraşıyorum ve yapmış olduğunuz CNC’ye benzer bir proje üzerinde çalışıyorum. Daha önceki ve yeni versiyonu arasında güzel değişiklikler var. Bu konuda STM32 ile yapılmış çok fazla proje yok. Donanımı konusunda çeşitli örnekler mevcut fakat yazılım konusunda bunu söylemek güç. Yapmış olduğunuz çalışma hakkında istişare etmeyi çok isterim.
İyi çalışmalar.
İlginiz için teşekkürler Furkan Bey.
Elbette, genç arkadaşlarla ortak ilgi alanlarında paylaşımda bulunmaktan mutlu olurum.
Ama ödevlerinizi bana yaptırmamanız şartıyla :).
Özellikle ilgilendiğiniz bir fonksiyon var mı? Zira, bu CNC de kullandığım tüm gömülü yazılım modüllerini blog sitemin çeşitli yayınlarında paylaşmış durumdayım.
Selamlarımla,