SENSÖRSÜZ FIRÇASIZ DC MOTOR SÜRÜCÜ TASARIMI-ESC

 Merhaba ben Beytullah MURAT, Bu blog yazımda yaz dönemi stajım boyunca Elfatek Elektronik’te yapmış olduğum sensörsüz fırçasız DC motorlar için tasarladığım motor sürücü projemden bahsedeceğim.  Projemi yazılım ve donanım tasarımı olmak üzere iki başlıkta inceleyeceğiz.

Motor Sürücü Nedir?

Sürücü, endüstride elektrik motorlarının aktif olarak kontrol edilmelerine olanak sağlayan elektronik cihazlardır. Aktif olarak kontrol derken, elektrik motorları üzerinde istenildiği an hız kontrolü, yön kontrolü, tork ve akım kontrolleri yapılmasından bahsetmekteyiz

DONANIM TASARIMI

 Proje donanım tasarımı yapılırken https://electronoobs.com sitesinde bulunan “Open Source ESC” projesi referans alınmıştır. Referans alınan proje üzerinde LTspice gibi devre analiz programı kullanılarak donanım tasarımının devre analizi yapılmış ve doğruluğu gözlemlenmiştir. Donanım tasarımında temel olarak iki alan bulunmakta bunlardan biri kapı sürücü ve mosfetlerden oluşan faz tarafı iken diğeri Gerilim bölücü ve sanal nötr noktası oluştulmasında kullanılan dirençlele oluşturulan BEMF algılama tarafıdır. 

Şekil.1.: Şematik Çizim – FAZ A

 Faz tarafında şekil 1 de de görüldüğü gibi A fazımızın kapı sürücüsü ve mosfet bağlantıları yer almaktadır. Devre üzerinde IR2101 kapı sürücüsü, IRLR7843 mosfetleri bulunmaktadır. Yine devre üzerinde C1 kapasitörü kapı sürücü beslemesinin filtre kapasitörü, D1 Boostrap diyotu, C4 Boostraap kapasitörü,R1 ve R2 gate direnci ile R7 ve R8 gate deşarj dirençleri bulunmaktadır.

 

Şekil.2.: Şematik Çizim – BEMF 

 Devre üzerinde motor fazlarını doğru bir şekilde tetiklenmesi için motor rotor konumunun bilinmesi gerekmekte. Bu projede Sensörsüz BLDC motor kullanıldığı için motor rotor konumunun bulunabilmesi maksadıyla motordan gelen BEMF sinyalini 12 Volt seviyesinden R19,R20,R21 ve R16,R17,R18 dirençleri ile gerilim bölücü metodu kullanılmış ve mikrodenetleyici için uygun gerilim seviyesi olan 3.3 Volt seviyesine düşürülmesi sağlanmaktadır. 3.3 Volt seviyesindeki bu sinyal ise mikrodenetleyicide bulunan comparator birimlerine girilmektedir. R13,R14,R15 dirençleri ise devre üzerinde sanal nötr noktası olarak kullanılmaktadır. C7,C8 ve C9 kapasitörleri ise algılanan BEMF sinyallerinde olan yüksek gürültüyü engellemek amacıyla opsiyonel olarak konulmaktadır. Sanal nötr noktası ise denetleyicide kullanılan comparator ün negatif girişine girilmektedir.

    Şekil.3.: PCB Çizim 

 PCB tasarımında faz yollarından geçecek akım miktarına göre yol kalınlığı hesaplanıp çizilmektedir. PCB tasarımı çift katlı bir tasarıma sahip olup Güç ve sinyal yolları mümkün olduğunca birbirinden ayrılmalıdır.

Şekil.4.: PCB Ön Yüz

Şekil.5.: PCB Arka Yüz

 

YAZILIM TASARIMI

 Proje süreci içerisinde denetleyici olarak STM32 ailesinden STM32F303RE  denetleyicisi kullanılmıştır. Denetleyici üzerinde bulunan Comparator ve Timer birimlerinin yeterli oluşu tercih sebebi olmuştur. Programlama esnasında STM32CubeIDE programı kullanılarak programlama sürecinde kolaylık sağlanmıştır.

Şekil.6.: Mikrodenetleyici Konfigürasyon

 Şekil 6 da da görüldüğü gibi denetleyicinin konfigürasyon ayarları yapılmıştır. TIM1 ve TIM2 PWM çıkışı için kullanılmakta olup TIM3 BEMF sinyallerinin okunulduğu harici kesme oluşturulmasında kullanılmaktadır.

Şekil.7.: Değişkenler

 Program içerisinde mosfetleri tetiklemek için verilecek duty değerini tutmak amacıyla Duty değişkeni, motor faz sırasını tumak için step değişkeni ve motor fazları olan A,B,C fazlarından okunacak BEMF değerinin comparator çıkışını tutabilmek için state1,state2,state3 değişkenleri tanımlanmıştır.

Şekil.8.: BEMF Algılama

 yukarıda gösterilen kod bloğunda oluşturulan timer kesmesi içerisinde comparator çıkışları okunup state değişkenlerine değer ataması yapılmaktadır. Bu işlemin harici bir timer kesmesinin içerisinde yapılma sebebi BEMF sinyallerinde var olan parazitlerin mümkün olduğunca az algılanmasını sağlamaktır.

Şekil.9.: STEP Durumu

 step_value() fonksiyonunda state değişkenlerine göre motor step durumu belirlenmekte ve While dögüsü içerisinde çağırılmaktadır.

Şekil.10.: Mosfetlerin Aktif edilmesi

 Şekil 10 da görüldüğü üzere hangi mosfetlerin açılması gerekiyorsa step değerine göre açılma yapılmaktadır.

Şekil.11.: FAZ Açılması

 Yukarıda da görüldüğü üzere belirlenen step değerine göre hangi mosfetlerin açılması gerektiği belirlenmektedir. bu fonksiyon step_value() fonksiyonunun altında While dögüsü içerisinde çağrılmaktadır.

Şekil.12.: While Döngüsü

 While döngüsü içerisinde step_value() ve motor_move() fonksiyonlarının çağrılmasının yanı sıra düşük duty değerlerinde motorda hareket gözlenmemesi sebebiyle bellirli duty aralığında sistem pwm çıkışı bellirli frekanslara ayarlanarak motorda hareket sağlanmıştır.

 Yukarıda ki videoda motorun düşük devirde dönme örneğini görmektesiniz.

Bu video da ise daha önce üzerinde çalışma yapılmış devre üzerinde motor çalışmasını görmektesiniz.(bknz. yapılan çalışma)

 

BEYTULLAH MURAT
SELÇUK ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ 4. SINIF ÖĞRENCİSİ
Linkedin:@mrtbeytullah
Github:@mrtbeytullah