L293D ile motorda hız kaybı yaşıyorum

Başlatan Denizccan, 02 Mart 2013, 20:44:55

Denizccan

Kendi uzaktan kumandalı arabamı yapıyorum. Herşeyini bitirdim ama kullandığım motorları direk pil ile çalıştırdığımda istediğim hızı alıyorum fakat devre üzerine L293D ile bağladığimda motorların hızları 3-4 kat düşüyor . Bu neden kaynaklanabilir yada nasıl engelleyebilirim?

dijital74

Yaptığınız devrenin şemasını, eğer mikrodenetleyici kullandıysanız kaynak kodlarını koyarsanız size daha iyi yardım edilir diye düşünüyorum.

serhat1990

Piller yeteri kadar akım verirken l293d yeteri kadar akım vermiyor olabilir. Akımı kuvvetlendirebilirsiniz yada l298 kullanarak daha fazla akım sağlayabilirsiniz .

LukeSkywalker


Denizccan

hayır bi ısınama  kaynaklanmıyor. ben yarın kurduğum devrenın fotograflarını çekeyim o şekilde koyayım siteye kodlarla birlikte o zman daha kolay yardımda bulunabilirsiniz.

Denizccan

Tek sorun motorların direk pille bağlandığında hızlı L293D ile bağlandığında daha yavaş dönmesi



Kablolar karışmasın diye ikinci motoru bağlamadım



ALICI KOD

#include <16f877a.h>
#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,rcv=pin_c7,bits=8)

char e;

void main()
{
set_tris_b(0x00);
output_b(0x00);
while(1)
{
if(getch()=='X')
{
e=getch();
if(e=='A') // sadece ileri gitme
{
output_high(pin_B0);
output_low(pin_B1);
output_low(pin_B4);
output_low(pin_B5);
}
if(e=='B') // sadece geri gitme
{
output_low(pin_B0);
output_high(pin_B1);
output_low(pin_B4);
output_low(pin_B5);
}
if(e=='C') //sadece sağ dönüş
{
output_low(pin_B0);
output_low(pin_B1);
output_high(pin_B4);
output_low(pin_B5);
}
if(e=='D') // sadece sol dönüs
{
output_low(pin_B0);
output_low(pin_B1);
output_low(pin_B4);
output_high(pin_B5);
}
if(e=='E') // ileri ve sağ birlikte
{
output_high(pin_B0);
output_low(pin_B1);
output_high(pin_B4);
output_low(pin_B5);
}
if(e=='F') // ileri ve sol birlikte
{
output_high(pin_B0);
output_low(pin_B1);
output_low(pin_B4);
output_high(pin_B5);
}
if(e=='G') // geri ve sağ birlikte
{
output_low(pin_B0);
output_high(pin_B1);
output_high(pin_B4);
output_low(pin_B5);
}
if(e=='H') // geri ve sol birlikte
{
output_low(pin_B0);
output_high(pin_B1);
output_low(pin_B4);
output_high(pin_B5);
}
if(e=='L') // hiçbir tuşa basmazken
{
output_low(pin_B0);
output_low(pin_B1);
output_low(pin_B4);
output_low(pin_B5);
}

}
}
}


VERİCİ KODU
#include <16f877a.h>
#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput
#use delay(clock=4M)
#use rs232(baud=600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8)
void main()
{

while(1)
{
set_tris_a(0x01);
output_a(0x00);
set_tris_b(0x00);
output_b(0x00);
if(input(pin_a0)==1 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==0) // sadece ileri gitme
{
putc(0b01010101);
putc('X');
putc('A');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==1 && input(pin_a2)==0 && input(pin_a3)==0) // sadece geri gitme
{
putc(0b01010101);
putc('X');
putc('B');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==0 && input(pin_a2)==1 && input(pin_a3)==0) //sadece sağ dönüş
{
putc(0b01010101);
putc('X');
putc('C');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==1) // sadece sol dönüs
{
putc(0b01010101);
putc('X');
putc('D');
delay_ms(50);
}
if(input(pin_a0)==1 && input(pin_a1)==0 && input(pin_a2)==1 && input(pin_a3)==0) // ileri ve sağ birlikte
{
putc(0b01010101);
putc('X');
putc('E');
delay_ms(50);
}
if(input(pin_a0)==1 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==1) // ileri ve sol birlikte
{
putc(0b01010101);
putc('X');
putc('F');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==1 && input(pin_a2)==1 && input(pin_a3)==0) // geri ve sağ birlikte
{
putc(0b01010101);
putc('X');
putc('G');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==1 && input(pin_a2)==0 && input(pin_a3)==1) // geri ve sol birlikte
{
putc(0b01010101);
putc('X');
putc('H');
delay_ms(50);
}
if(input(pin_a0)==0 && input(pin_a1)==0 && input(pin_a2)==0 && input(pin_a3)==0) // hiçbir tuşa basmazken
{
putc(0b01010101);
putc('X');
putc('L');
delay_ms(50);
}





}
}

turkbey06

Benim ilk gördüğüm, L293 lerin EN2 ile aktif olan ve senin devrende boşta duran sürücü uçlarını paralel bağla, yani akımı arttır çıkışlarınıda aynı şekilde motora paralel bağla

LukeSkywalker

Pil ile motorlara kaç volt veriyorsunuz?  L293D'nin Vs ucuna  kaç volt veriyorsunuz?
Eğer pili motorlara doğrudan bağlayıp, L293'ün Vs ucuna pil gerilimi değilde 7805'in çıkış gerilimini uyguluyorsanız yavaş dönmesi normaldir.

datasheet

arkadaşlar bu if(e=='B')komutunun ne işe yaradığını açıklarmısınız ? bir arayüz programından B harfi giriş mi yapılıyor ve ortada bir arayüz programımı var acaba ? 

Denizccan

pil ile motora l293d nin vs ucuna 9 volt veriyorum. ayrıyetten pic e baska pilden lm7805 ıle 5 volt verıyorum. ve orda gordunuz ıkıncı l293d yede başka pilden gene l293d nin vs ucundan 9 volt verıyorum. yanı 3 adet pil takılı biri pic beslemesi için öbürü ileri geri motorunun l293d sine sonuncusuda sağ sol motorun l293d sine. bilerek iki adet l293d kullandım kı ılerı ve sağa bırlıkte basılgıdında motorların dönüş sayıları deişmesin.


@datasheet kardeş bende programlamada yeniyim ama elımden geldıgınce acıklamaya çalışayım. verici x öncü kodunu gönderiyor onun ardundan a b c artık bız ne tanımlamıssak onuda gonderıyor. alıcı if(e=='B') komutu ıle gelen verı eger b harfı ıse ıf altındakı deyımlerı yapıyor. benım anladıgıma gore bu b harfının bı hex harşılıgı var o karsılıgı gonderıyor verici.

mehmet

#10
Kodları biraz inceleseydiniz putc ve getc komutlarının
rs-232 ye baglandığını görecektiniz. Verici mcu butonları
yine verici mcu TX pininden çıkış alınıp -ki araya rf verici/alıcı,
ir verici/alıcı, rs-485 vs. bağlanarak- alıcı mcu RX pini ile veri alınmış
olacaktır. Isis çiziminde bu bağlantı direkt bağlanmıştır. Alıcıdan
geri dönüş olmadığından sadece bir hat kullanılmış.
e değişkeni vericiden gelen buton bilgisini saklıyor, if(e == 'B')... ile de
ilgili buton sorgulaması yapılıyor...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

LukeSkywalker


z

#12
L293 lerin IN1 ve IN2 bacaklarını işlemciden ayırıp buraya elinizle lojik 1-0 vererek motorları döndürdüğünüzde motorlarda devir düşüklüğü görüyormusunuz?

Eğer devir hala düşük ise L293 kullandığınız motorların akımını karşılayamacak kadar güçsüz demektir. L293 ün iki kanalını paralel bağlayarak belki sorunu çözersiniz.

Bir de Enb uçlarını boşta bırakmayın. 5v'a bağlayın.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Denizccan

pillerin şaseleri ortak deil. onları ortak bağlamıştım ama sonuç deişmemişti.

multimetre ile ölçüm yaptım L293D nin pinlerine 9 voltluk pillerdeki volt direk olarak geliyo sıkıntı yok yani akımda problem yaşiyorum .

z nin dediği gibi yaptım bacakları paralel  hale getirip lojik 1 ve lojik 0 ları elle verdim yine aynı sonucu aldım herhalde l293D ile istediğim akımı çekemiyorum ben. peki bu l293D yerine hangi entegreyi kullanırsam daha iyi akım çekebilirim yada entegre kullanmadan basit bi şekilde kendi motor sürücümü(daha fazla akım çektiren) yapma imkanım varmı ?

LukeSkywalker

L293D her kanaldan 600 ma akım verir. Sizin pilinizin o kadar akım vereceğini sanmam. Başka bir problem var bence.