Pic16f877a ile Dc Motor Hız Kontrolü

Başlatan eemuratozan, 07 Mayıs 2012, 23:22:45

eemuratozan

arkadaşlar dc motor hız kontrolü ile ilgili bi kaç sorum olacak
1- 9v luk bir besleme ile çalışan oyuncak araba motorunun hızını genliği 9v olan pwm ile mi denetlerim?
2- Ya da pwm genliği 9v mu olmalı?
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

0-5V arası pwm çıkışıyla arada bşr l293 yada l298 yada mosfet yardımıyla motor sürebilirsin picin çıkışından 9v'luk bir pwm alamazsın zaten . Yani bu pwm sinyali yardımıyla motor sürücünü sürersin ve bu şekilde kontrol yapabilirsin iyi çalışmalar...

eemuratozan

bugun denedim ama olmadı serdar çiöeğin kitabındaki bağlantıyı aynen uyguladım programda basit potansiyometre ile pwm değerini değiştircektim ama motor hiç dönmedi yani l298 e verdim pwm i olmadı peki pwm çıkışını 741 ile yükseltirsem olur mu ?
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

İlla pwm ile süreceksin diye bir durum yok potansiyometreden ayarlayarak bir pot yardımı ile basitce yapabilirsin. Örneğin L298'in in1 ucuna lojik5 volt ver. in2 ucuna lojik0 ver. enableA ucunada potunu bağla. in2 in3 enableb sensora sensorb uclarını topraga bağla out1 ve out2 uclarından motoru sür. VCC vs gnd'yi söylemeye gerek yok herhalde ... İyi çalışmalar.

eemuratozan

aynı şey aslında ama pot yapacağım şey için uygun değil ne yazıkki uzaktan kumanda ile arabının hızını kontrol etmeye çalışıyorum  in1 high in2 low enablea ya pwm enableb toprak ama olmuyor motoru da diodlu h köprüsüne bağlıyorum out1 ve out2 yi de bağlıyorum olmuyor acab pwm frekansıyla ilgili bişi olabilir mi ? mesela uyguladığım şuydu setup_timer_2(T2_DIV_BY_4,255,1);
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

Yazılım , devre şeması ekleyebilirsen yardımcı olabilirim bu şekilde bir yere varamayız. Devre Şeması ve yazılım ekle sorunu hep beraber çözelim...

eemuratozan

#include <pid.h>
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(a)

unsigned int adc_girisi;

void main()
{

   setup_adc_ports(AN0_AN1_AN3);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_4,255,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_a(0xff);
   set_tris_b(0x00);
   set_tris_c(0x00);
   output_b(0x00);
   output_c(0x00);
   
   while(1)
   {
     set_adc_channel(0);
     delay_us(20);
     adc_girisi=read_adc();
     set_pwm1_duty(adc_girisi);
   }
}
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

eemuratozan

I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

eemuratozan

b yi çıkış olarak ayarladım in1 ve in2 için ama daha sonra kullanmadım direk 5v ve 0 a bağladım in1 ve in2 yi
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

Yazılımında include <pid.h> olan yer #include <16f877.h> olması gerekmiyormu . ? Sen yazılımın çalıştığına eminmisin programınla bir led yakmayı denermisin .

eemuratozan

proje olarak açtığım için öyle görünüyor program isiste doğru çalışıyor reelde de aynen bağlantıları yapıyorum olmuyor h köprüsü kullanmasam bi zararı olur mu peki?
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

Anladım genelde project wizard'dan açılınca pin giriş çıkış tanımlamaları falanda oradan yapılıyor sende onları programında manuel olarak yaptığından farkedemedim h köprüsü kullanmak zorunda değilsin . Motor uçları arasına 100nF kondansatör koymanda fayda var.

eemuratozan

o var zaten de işte dönmedi motor öyle bakakaldım üzüldüm :) peki bu pwm in frekansının bi önemi yok demi neticede doluluk oranını değiştiriyorum
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

2 KHz ' lik bir pwm sinyali işini görebilir.  :)

eemuratozan

deniycez artık olmazsa yine paylaşırım :)
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.