Ynt: step motor kontrolü...

Başlatan engineer42, 28 Aralık 2012, 22:06:32

engineer42

herkese iyi çalışmalar...
okulda motor dersinde step motor sürme ile ilgili bi proje verildi. proje de sona yaklaştığımı hissediyorum ancak bir iki problem var :) öncelikle kodları ve baskı devreyi paylaşmadan önce devreyi anlatayım. chopping ile l297 ve l298 entegresi kullandım regulator olarak 7805 entegresi kullanıyorum 12 voltuda direk güç kaynağından alıyorum. kullandığım step motor FL42STH47-1008A. mcu olarak 16f877a kullanıyorum.motorun özelliklerinde de phase current=1 a gösteriyor bu yüzden l298 entegresinin bunu kaldırması gerekiyor ama entegre çok fazla ısınıyor ve motor uçlarına attığım 2li diyotlar da acayip fazla ısınıyorlar. programı ve devreyi aşağıya bırakıyorum :) acil yardım ve önerilerinizi bekliyorum
   #include<16f877.h>
   #use delay(clock=20000000)
   #include<lcd.c>
   #define use_portb_lcd TRUE
   
   #FUSES HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NODEBUG,NOCPD,NOWRT,NOPUT
   
   #use fast_io(a)
   #use fast_io(b)
   #use fast_io(c)
   #use fast_io(d)
   
   #define yon_secim pin_c3//l297 entegresine giden yön bilgisi
   #define adim_secim pin_c1//l297 entegresine giden adım bilgisi(yarım-tam)
   #define enable pin_c0//l297 entegresini enable ucu
   #define yon_degisim pin_d0// yön kontrol butonu
   #define s_1 pin_d1// birinci seviye hız
   #define s_2 pin_d2//ikinci seviye hız
   #define s_3 pin_d3//üçüncü seviye hız
   #define s_4 pin_d4// dördüncü seviye hız
   
   int pr_2;//
         void main()
            {  
               setup_psp(PSP_DISABLED);
               setup_timer_1(T1_DISABLED);
               setup_timer_2(T2_DIV_BY_16,250,1);
               setup_CCP1(CCP_PWM);
               setup_CCP2(CCP_OFF);
               setup_adc_ports(NO_ANALOGS);
               setup_adc(ADC_OFF);
               
               set_tris_a(0xff);// a portu giriş
               set_tris_b(0x00);//b portu çıkış
               set_tris_c(0x00);//c portu çıkış
               set_tris_d(0xff);//d portu giriş
               
               output_a(0xff);
               output_b(0x00);
               output_c(0x00);
               output_d(0xff);
               
              
               
               output_high(enable);//enable ucu 1
               output_high(adim_secim);//tam adım
               output_high(yon_secim);// cw yönüne
               
               lcd_init();
               printf(lcd_putc,"\f    STEP MOTOR    \n    CONTROLLER");   
               delay_ms(2000);
               set_pwm1_duty(250);
               printf(lcd_putc,"\fSET VALUE=745rpm");
               delay_ms(500);
               while(1)
                  {
                       if(input(yon_degisim))//yön değişim butonu basılı ise
                           {
                              set_pwm1_duty(0);
                              delay_ms(500);
                              output_toggle(yon_secim);//yönü değiştir
                                 
                                 if(input(s_1))//1 hız basılı ise
                                    {
                                       set_pwm1_duty(0);
                                       delay_ms(250);
                                    
                                       pr_2=200;
                                       set_pwm1_duty(pr_2);
                                       
                                       printf(lcd_putc,"\f SPEED=30RPM ");
                                       delay_ms(500);
                                    }
                                 if(input(s_2))//2 hız basılı ise
                                    {
                                       set_pwm1_duty(0);
                                       delay_ms(200);
                                       
                                       pr_2=150;
                                       set_pwm1_duty(pr_2);
                                       
                                       printf(lcd_putc,"\f SPEED=40RPM ");
                                       delay_ms(500);
                                    }
                                 if(input(s_3))//3 hız basılı ise
                                    {
                                       set_pwm1_duty(0);
                                       delay_ms(200);
                                       
                                       pr_2=100;
                                       set_pwm1_duty(pr_2);
                                       
                                       printf(lcd_putc,"\f SPEED=50RPM ");
                                       delay_ms(500);
                                    }
                                 if(input(s_4))//4 hız basılı ise
                                    {
                                       set_pwm1_duty(0);
                                       delay_ms(250);
                                       
                                       pr_2=50;
                                       set_pwm1_duty(pr_2);
                                       
                                       printf(lcd_putc,"\f SPEED=100RPM ");
                                       delay_ms(500);
                                    }
                                 
                                  
                                    
                           }
                  }
            }
               
[/url][/img][/url][/img]

mesaj birleştirme:: 28 Aralık 2012, 22:08:19

(mcu kartı)
(kontrol kartı)

fryrmnd

O diyotlar ne tip. Birde l298 e çok uzak duruyor tahminimce yakın olmaları gerekir. Nette l298 ile bolca uygulama mevcut.

vedo35

Pcb resimindne ziyade acik semasini koysa idin. Ama o isinma sebebi Vref den de kaynaklanir. Vref i kac volt verdin?
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

engineer42

diyotlar 1n4007.. diyotlar acayip ısınıyorlardı şimdi enerjiyi verince birşey olmuyot motorda da değişme yok... vref de 2.51 filan ölçüyorum normal değeri de böylebirşey galiba... bilmiyorum aslında sorun l298de de olabilir sağlam olduğunu nasıl anlarım?

fryrmnd

Hocam diyot olarak byv serisi diyotlardan kullanın. byv28 3 amper mesela. Bir de dediğim gibi l298 e yakın olmalı.

engineer42

sağolun hocam yarın gidip bulmaya çalışayım.. peki 1n5820 olur mu nette uygulamalarda bunu da kullanmışlar bunu okulun labında bulabilirşm belki :) bi de l298in sağlamlığını nasıl kontrol edebilirm?

fryrmnd

test için buraya https://www.picproje.org/index.php?topic=33188.0 bakabilirsin. Diyottaki kriter sanırım hızlı diyotlar olması. 1N5820 de olur diye düşünüyorum.

engineer42

diyotları değiştirdim bir iki tane lehim hatasını filan farkettim.. şimdi de enerjiyi veriyorum motor titriyor inliyor bazen bi adım atıyor ucundan böyle döndüreyim diyorum kendini kilitlemiş gibi sanki motor bu arada 0,43 nm... kabloların sıraları mı yanlış diyorum ama motorun datasheetinde :) sırasını vermiş a=siyah a1=yeşil c=turunucu c1=sarı b=kırmızı b1=mavi d=kahverengi d1=beyaz diyor... ben de siyah turuncu kırmızı kahverengiyi sırayla bağlıyorum diğerlerinide - ye bağlıyorum... motor yine kendini kilitliyor bir iki deneme yaptım ama bu arada motor da biraz ısındı.... ne yapabilirim şu anda?

fryrmnd

Motor kablobağlantılarını tekrardan kontrol edebilirsin. Sanırım 8 kablolu motor.  http://wimb.net/index.php?s=motion&page=52 Net bir şey söyleyemicem.

engineer42

hala aynı nerdeyse hepsini denedim... peki motorun ilk hızı çok fazla olabilir mi?

vedo35

Diyotlar hizli diyot olacak arkadas demis byv olmali. Emk suzmek icin. Zaten datasheet indede yaziyor. Normal diyot olmaz. Olursa oyle isinir  :)
Biliyormusun dedi, ben ne yaptiysam kader icabi yaptim dedi. Ben gene sustum.... Kimbilir sende belki kaderin memurusun vazifeni yapiyorsun dedi.

engineer42

diyotları değiştirdim hızlı diyot kullanıyorum şimdi ama motor da hareket yok... diyotlarda ısınmıyor artık.. motor milini elimle de çeviremiyorum yani tutuyor enerji var kablo sırasını değiştiriyorum inliyor titriyor her türlü denedim bi türlü olmadı...

z

#12
Sorun nedir bilmiyorum ama motor sürücü bu tip çizilmiş baskı devre ile yapılmaz.

Elektriksel anlamda sürücü şemasını bire bir pcb ye dökmüş olabilirsin fakat çok daha fazlası gerekli.

Motor beslemesinde elektrolitik kapasitör varsa da ben göremedim.

http://www.st.com/internet/analog/product/63147.jsp

Belki sorunun mevcut pcb de de çözülür ama yerinde olsam yukarıda verdiğim linkdeki pdf dokumanın son sayfalarında yeralan pcd çizimini aynen yapardım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

engineer42

#13
bi tane 470uf bitane de 100n f kapasitör var bu devre zaten hocanın önünde üç beş dk çalıştırabileyim diye.. yoksa uzun kullanım için zaten çok eksiği olduğunun farkındayım... motor kablolarını bağladığım yere 4 led bağladım ledlerin 2 si ( 1 ve 3 ) sürekli yanıyor diğerleri ise enerji gitmiyor bunun yazdığım programlamı bi alakası vardır? bağlantıları kontrol ettim orada bi sorun yok

mesaj birleştirme:: 30 Aralık 2012, 00:58:58

verdiğiniz link l298 in şemasıdeğil mi hocam? oradakinin aynısını yaptım bende beslemeyi ayrı bir karttan alıyorum orada da klemenslerin yanlarına kapasitörler koydum 100nf değerinde... biraz uzak kaldılar gerçi ama

z

Sağ üstteki pdf ikonunu tıkladığında L298 in pdf dokumanı açılacak. Bu pdf in sonlarında pcb çizimine ait silik bir şey var.
Malzeme yerleşimi güzel yapılmış. Çok şeye dikkat edilmiş. Buna benzer bir çizimi sıfırdan yapabilirsin demek istedim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com