Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

DC motor hızlandırma

Başlatan samet_ehm, 06 Mart 2015, 10:43:10

samet_ehm

Arkadaşlar merhaba. Çözemediğim bir konu için yardımınızı isteyeceğim. Aşağıda kodu ve şeması bulunan devre şuan çalışmakta. motorlar ayrı ayrı sağa sola döndürülüyor. Fakat benim için hızı önemli yardımcı olabilirseniz. İsteğim motorun hızını arttırmak. Ve de board üzerine kurduğumda L293 entegresi çıkışına transistör bağlamam gerektiğini söylediler ( entegre çıkışındaki gücü üzerine almak için). Bu konudaki görüşleriniz nelerdir ?
#include <motor2.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)

#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);


set_tris_d(0x0F);
set_tris_b(0x00);
set_tris_c(0x06);
output_b(0x00);
output_d(0x80);

setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);

setup_timer_2(T2_DIV_BY_16,120,1);
set_pwm1_duty(120);
set_pwm2_duty(120);

while(1)
{
   if(input(pin_d0)) // Sağa Döndürme
   {
   delay_ms(20);
   while(input(pin_d0));
   output_high(pin_b0);
   output_low(pin_b1);
   set_pwm1_duty(120);
   
   }
   
   if(input(pin_d1)) // Sola Döndürme
   {
   delay_ms(20);
   while(input(pin_d1));
   output_high(pin_b1);
   output_low(pin_b0);
   set_pwm1_duty(120);
   
   }
   
   if(input(pin_d2))
   {
   delay_ms(20);
   while(input(pin_d2));
   output_high(pin_b6);
   output_low(pin_b7);
   
   set_pwm2_duty(120);
   }
   
   if(input(pin_d3))
   {
   delay_ms(20);
   while(input(pin_d3));
   output_high(pin_b7);
   output_low(pin_b6);
   
   set_pwm2_duty(120);
   }
   }
}



vitruvius

Merhaba, hız ayarı yapmak için pwm değerini değiştirmeniz gerekir. 6V DC motor için gücün bir sorun olacağını düşünmüyorum.

samet_ehm

Vermiş olduğum kod üzerinden gidersek nerelerde ki değerleri kaç yapmam gerek peki ?

fatal16

Dc motoru farklı kaynaktan beslemen daha sağlıklı olur.

Hız kontrolü için enable uçlarını pwm ile kontrol etmen gerekli.
Pwm çıkış arttıkça hızlanır, azaltıldıkça yavaşlar motorlar.

samet_ehm

Enable pinini pwm ile nasil kontrol edebilirim ? Ufak bir ornek verebilir misiniz ?

aliveli

daha hızlı motor kullanacaksın
yada motorlar dayanıklıysa daha fazla gerilim vereceksin yazılımla son hızı vermişsin zaten

samet_ehm

Motor 6v 500rpm 9w ilk reduktorlu DC motor

vitruvius

PWM çıkışını enable pinine vermişsiniz zaten. Ancak PWM'i maksimum kullanıyorsunuz aliveli'nin dediği gibi. set_pwmn_duty() fonksiyonunu daha düşük değerden başlatıp butona basıldığında değerini kademeli olarak 120'ye kadar arttırabilirsiniz. Bu şekilde hızlanmayı görürsünüz. Aynı şekilde diğer butonla da set_pwmn_duty()'nin değerini düşürürseniz bu sefer de yavaşlamayı görürsünüz.

samet_ehm

Bir problemle daha karsilastim. Saga - sola- durma işlemleri 2 sn araliklarla gerçekleştirilecek.(sağa 2sn dur 2sn sola 2sn dur 2sn) Simülasyon da doğru bir şekilde calisti fakat board üzerinde kurdum motorun yon hep tek tarafa donuyor.( sağa 2sn dur 2sn sağa 2 sn olarak) l293 cikislarindaki motor baglantilarini ters çevirince de ayni hatayi ters yonde hareket ederek veriyor.

vitruvius

Kodun son halini koyar mısınız?

samet_ehm

İlk verdiğim kodu denedim tek motor için o hatayı aldım. PWM sürelerini değiştiriyorum hızı ayarlayabilmek için gözle görülür bir değişiklikte algılayamadım. acaba entegrenin çıkışı yetmiyor mu diye düşünmekteyim. L293B entegresi kullanıyorum.