brushless dc motor yardım !

Başlatan bulut_01, 08 Haziran 2012, 01:00:27

bulut_01

iyi geceler arkadaslar konuyu fazla uzatmadan özetlıcem bende 100 watt civarında 3 fazlı brushless dc motor var ıcınde de 3 tane konum sensorü var proteusda yapdıgım devre calısıyor ama dengesız dönüyor nedenini bulamadım devrenın puls tablosunu cıkardım nerde yanlıs yapdıgımı bulamadım hız ayarı yapmak ıcın delay surelerını değiştiriyorum motor dengesız dönüyor yardım edersenız sevınırım sımdıden tessekur ederım.

bu resımdekı sınyaller


tablo


şema


kodlar
#include <16F628A.h>
#fuses INTRC_IO,NOPROTECT,NOWDT,NOBROWNOUT,NOMCLR
#use delay(clock=4000000)
int1 x=0 ;
int1 y=0 ;
int1 z=0 ;

void main( )
{  
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
  set_tris_a(0x00) ;
  set_tris_b(0x00) ;
   
   output_a(0x00) ;
   output_b(0x00) ;
   delay_ms(10) ;
   
while(TRUE)
{
 
 x=input(pin_b2);
 y=input(pin_b3);
 z=input(pin_b4);
 
 output_bit(pin_a2,x) ;
 output_bit(pin_b0,z) ;
 
 output_bit(pin_a0,x) ;
 output_bit(pin_b0,x) ;
 
 delay_ms(300) ;
 
 output_bit(pin_a0,x) ;
 output_bit(pin_b1,y) ;

 output_bit(pin_a1,y) ;
 output_bit(pin_b1,y) ;
 

  delay_ms(300) ;
 
 output_bit(pin_a1,y) ;
 output_bit(pin_a3,z) ;

 output_bit(pin_a2,z) ;
 output_bit(pin_a3,z) ;
 
 delay_ms(300) ;
  
 }
}
YENİLMEZ..

Erol YILMAZ


Bobinlere enerjiyi rotorun pozisyonuna göre vermen gerekmiyor mu ?

pisayisi

Konum bilgisi  x y z olduğuna göre fetlerin enerjilenme sırası için doğru lojik tabloyu elde edip 6 farklı pozisyon bilgisi için çıkışları üretmen lazım. DElay ler, hız kontrolu için çok yanlış motorda sıkıntılı hareket durumunu bu delayler de oluşturabilir. üst koldaki fetlerde pwm üreterek hız kontrolu yapman lazım, konum aralarına delay ekleyerek kontrol olmaz...
Murat

SERRO EFE

Öncelikle yapılmış örnekleri application not ları incelemeni tavsiye ederim. Sürme mantığın çok yanlış..
Yapabiliyorsan hallefectleri bi interrupt aracılığı ile oku. Hallefect lerden gelen bilgilere göre hangi dalga şeklini çıkman gerektiğini iyi tespit et. Hallefect lerden aldığın bilgilerin karşılığını bi tablodan çağır çıkışa ver. Delay yada benzer gecikmeler koymamalısın. Devir olayınıda üst yada alt-üst mosfetleri(transistör) pwm ile sürüp duty değeri ile oynayarak değiştirebilirsin.


bulut_01

kısacası parametre arkadasımızın verdiği notları ınceledım guzel yanlız hall effect sensorlerden aldıgım bılgıye göre motoru fazı kaydırma aynı anda pwm ıle hızını kontrol etmek bunu yazmak benı asar bıraz yardımınızı beklıyorum kod konusunda bu olayı 16f628 yapabilir mı tam olarak onuda bılmıyorum yada 18F serisine mı gecmem lazım bu uygulama ıcın kodu ccs yazmaya calısıyorum ama daha tam yazamıyorum ccs de yardımcı olursanız sevınırım.
YENİLMEZ..

SERRO EFE

#6
628 yapabilir portb change kesmesi ile hallefectleri okursun 1 kanal pwmi var bu pwmi and kapılarından geçirip high mosları sürersin...

Bazı şeyleri programsal değilde donanımsal yapmayı öğrenmeniz lazım. Kullandığınız mcu nun donanımına yeteri kadar hakim olabilirseniz işiniz dahada kolaylaşır.

bulut_01

sürücü olarak bipolar transistör düsünmustum mosfet olabılır uln2003 transistör driver olark kullnacagım kesme ile hall efect aldıgım yapılır yanlız kesme olmadan pulsin komutu yada if li sekilde yazarsak bazı gecıkmelerden dolayı yanlıs okuma yaparız dusuncesı ıle anlattınız sanırım.pwm cıkıs yok F628A nın kendımız pwm olusturmak zorundayız hız ayarı ıcın bu sekılde ccs ornek kod olsa gelıstırmesını yaparım heralde.
YENİLMEZ..

SERRO EFE

16f628 portb.3 pini pwm olarak ayarlanabilir. kesme kullanmanız hallefect verilerini okumada kolaylık sağlar. programınıza bağlı olarak main fonksiyonunda herhangi bir işlem yapmadan bile motorunuz döner.

pisayisi

Yeni nesil brushless dc motor kontrol mcu larda en az 6 pwm çıkışı bulunurken hiç bir pwm çıkışa sahip olmayan bir pic ile fırçasız motor kontrolu yapmak bence boşa zaman kaybetmekten başka birşey değil. Projenize uygun bir pic ile çalışmanızı öneririm.
Murat

iyildirim

@pisayısına katılıyorum..  18F,30F serilerinde bu işe çok uygun mcu lar var..

Öte yandan model ESC lerine baktığımda 16F serisi işlemcilerin kullanıldığınıda gördüm.  Yine de en az 1 hardware PWM kanalı ve 3 dış kesme veya daha iyisi IC pini  olan bir PIC kullanmak daha sağlıklı olur.. IC modülü daha iyi çünki hem düşen hem yükselen kenarda yeniden konfigüre etmeden kesme oluşturabilir. Ayrıca sensör okuma işini mutlaka kesme ile yapmak gerekir. Anahtarlama zamanlarında gecikme olursa aynı avans ayarı bozuk patlar motor gibi çalışır. Yüksek devire çıkamaz, durup titremeye başlar.

Tek kanal PWM kullanılırsa AND kapıları kullanarak PWM ile anahtarlama sinyalleri mix edilip sürücü katına çıkış verilebilir. .
Çıkış için transistör yerine mos kullanmak daha sağlıklı olur. Bu durumda da mos lar için bir sürücü kullanmanız gerekir. En yukarıda verilen şemadaki gibi üstler P kanal kullanılırsa TC4428 gibi bir kanalı invert çıkışlı bir sürücü kullanılabilir. Yazılım kısmında kafa karışıklığı da daha az olur.

Programda yapmanız gereken PWM 'i start edip IC pinlerinde değişiklik olmasını beklemek.. Hall sensörlerin durumu ile hangi çıkış pinlerinin aktif olması gerektiğini ilişkilendiriseniz , hall sensör konumlarına göre hangi PWM çıkışlarının aktif olması gerektiğine kolayca karar verilebilir.

Bunun için hall sensörlerin konumuna göre 3 bitlik bir sayı üretin.   
Bir diziye olası 6 farklı durum için şemanıza göre hall sensörlerin konumuna göre hangi PWM pinlerinin aktif olacağını en başta verdiğiniz zamanlama şemasına göre girin..
PWM'i start edin. Hall sensör konumu değişince sensör konumlarından ürettiğiniz 3bitlik sayıyı dizinin indisi olarak kullanıp çıkış pinlerinin konumu değiştirin.. Hız ayarı için de sadece PWM duty'si ile oynayın..
12V da 100W yani 8-10A akım çekileceğinden beslemenin, özellikle PIC beslemesinin sağlam olması gerek..

bulut_01

o zaman benım farklı pıc kullanmam gerekecek 6 tane hardware kanalı olan pıc 18f serısınden bilidiğiniz var mı PIC 18 F 4620 kulansam bu devre ıcın uygunmudur and kapısı farklı entegreler kulanmak ıstemıyorum PIC 18 F 4620 hardware 4 tane mı 6 tanemı pwm cıkısı var bıyerde okudum 6 tane pwm cıkısı oldugu yazıyordu kataloguna bakdım ccp1 cıkısları heralde pwm ıcınde kullanılıyor 3 tane pın gördum pic öneriniz nedir ? bu uygulama ıcın sonra yazılım kısmından devam edeceğim.
YENİLMEZ..

bulut_01

yada 16f628 yazılımsal olarak 6 kanal pwm olustursam hall efect sensorlerden aldıgım bılgıye göre pwm acısını kaydırsam duty ılede hız ayarı yapsam olur mu ? yazılımsal pwm konusunda ne diyorsunuz ?
YENİLMEZ..

bulut_01

yardımlarınızı bekliyorum  :o
YENİLMEZ..

teknikelektronikci

hocam özel motor kontrolü icin pic ler mevcut onlara bakin derim veya
18f serisinde 3 hpwm cikisi olan pic lerde mevcut

yada atmel arm gibi islemcilere bakin derim
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!