BLDC Motor Düşük Hızda Kontrol

Başlatan eem7490, 16 Kasım 2017, 19:59:47

eem7490

Herkese merhaba.

Elimde bir adet 400 rpm lik redüktörlü ve hall sensörlü bir 24V'luk BLDC motor var. Bu motor için bir sürücü yaptım. Sürücüde PIC18f4431, adet IRFZ44N ve 3 adet IR2101 kullandım. PWM frekansı 19kHz.
Trapezoidal sürüşle PID kullanarak çift yönlü Hız ve Konum kontrolü denemeleri yaptım. Gayet güzel çalışıyor. Ayrıca motorun miline konumu ölçmek için 500 palslik quadrature enkoder bağlı. MCU nun QEI donanımı kullanarak konum ve hız ölçümü yapıyorum.

Ancak buradaki sorunum şu. Trapezoidal sürüşle motoru minimum 60-70 rpm de düzgün sürebiliyorum. Daha düşük hızlarda da kontrol etmek istiyorum. internette bir kaç örnek buldum ama tam olarak benim istediğim şeyler değil. Bulduğum örneklerde sinusoidal sürüş yapıyor. Saddle wavefrom denilen bir dalga şeklinin motorun fazlarına 120° faz farkıyla verilmesiyle yapılıyor. Gördüğüm örnekte rotor açısına bakmadan sabit frekansta dalga üretip motoru düşük hızlarda kontrol edebiliyor. Ben de kodu kendi sistemime uyarlayıp denemeler yaptım. PWM duty'sini ve yaptığım algoritmaya uygun olabilecek en düşük frekansı(Buradaki frekanstan kastım dalga formunun frekansı, PWM in değil) fazlara uyguladım motor gayet stabil ve sessiz bir şekilde 3 RPM de dönebiliyor.
Tabi bunu bu yöntemle yapınca açık çevrim kontrol olmuş oluyor. Ben bunu kapalı çevrimde kontrol etmek istiyorum. Yani 10 RPM'de dön dediğimde MCU hesaplayıp gerekli PID hesaplarını yapıp 10 RPM'de dönebilmeli.

Sizce bunu nasıl yapabilirim. Bu konu hakkında önerisi olan var mı?

Burada bahsettiğim örneğin linki var;
http://www.berryjam.eu/2015/04/driving-bldc-gimbals-at-super-slow-speeds-with-arduino/