Pwm dc motor hız kontrolü devresi çalışmıyor

dgknnnnn

Üye
Katılım
8 Ocak 2024
Mesajlar
1
Puanları
1
Yaş
25
merhabalar. pwm ile dc motor hız kontrolü için bir devre kurdum. devremde 16f877a kullanıyorum. 4MHz kristal osilatör ile. kodumu ve devre şemasını aşağıya bırakıyorum. benim sorunum şu şekilde sürücü olarak l298n kullanıyorum. sürücüye 12V ve gnd bağlıyorum adaptör ile ve sürücüden bir gnd alıp bunu breadboardın gnd sine bağlıyorum (birkaç araştırmam sonucu önemli bir nokta olduğu söyleniyordu.). konuya gelecek olursam eğer devreyi eksiksiz kurduğuma eminim çünkü son 3 gündür uğraştığım tek şey bu devre. devrede pwm sinyalinin gönderileceği ve sürücünün enable A pinine bağlı jumper'ı ölçtüğümde sabit 2.5V var ve bu voltaj potansiyometreden değeri değiştirmeye çalıştığımda da aynı kalıyor (pot bacaklarını ölçtüm ve pot bozuk değil). aynı zamanda in1 ve in2 bacaklarını da ölçtüğümde herhangi bir gerilim alamıyorum. kısaca enable A sabit voltaj (2.5V) ve in1, in2 bacaklarında 0,01-0,02 volt gerilim var sadece. normalde olması gereken 10V (maks. çalışmada) civarı bir şey.
sorum şu buradaki hata nerede?
birçok kontroller yaptım fakat halen başaramadım. koddan çok emin olduğum için şuan son ihtimalle yapay zeka destekli bir kod yazdırıp onu deneyeceğim.
yardımcı olursanız çok sevinirim.
motoru döndürmeyi başardığımda, hız sensörü ve Lcd ile rpm değerini okutup yazdıracağım ve son aşama olarakta motora yük bindiğinde istenilen hıza geri dönmesini sağlamam gerekiyor.
proteus görüntüsünde pic16f877 fakat ben 16f877a ya göre kodu ve pic bacaklarını düzenledim yani proteus Ekran görüntüsü birebir devrem ile aynı değil.
kullandığım sürücü l298n (kırmızı).
burada yapmam gereken nedir bir yol gösterin lütfen kafayı yemek üzereyim. normalde kesin çok basit bir şeydir fakat bu arlar kafam yerinde değil göremiyorum.
ilk önceliğim motor hız kontrolü sonrasında ise lcd ve sensör ekleme ama öncelik olarak motoru hareket ettirmem lazım gerçekten çok basit bir hata yapıyorumdur kesinlikle ama göremiyorum
kod (micro C)
Kod:
#include <16f877a.h>
#device adc=8
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPUT,NOLVP,NOCPD,NOPROTECT,NODEBUG,NOBROWNOUT,NOWRT
 
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
 
#define use_portb_lcd TRUE
#include <lcd.c>
 
unsigned int deger;
float voltaj;
 
void main()
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_4,255,1);
 
  
   setup_CCP1(CCP_PWM);
   setup_CCP2(CCP_OFF);
  
   setup_adc(adc_clock_div_32);
   setup_adc_ports(ALL_ANALOG);
 
   set_tris_a(0x20);
   set_tris_b(0x00);
   set_tris_c(0x00);
  
  
  
   set_adc_channel(4);
   delay_us(20);
  
   output_c(0x00);
   lcd_init();
   printf(lcd_putc,"\fDC Motor\nHiz Kontrolu");
   delay_ms(1000);
  
   set_pwm1_duty(0);
  
   while(true){
  
   deger=read_adc();
   delay_us(20);
   voltaj=deger/51.0;
 
 
  
   output_high(pin_c3);
   output_low(pin_c4);
  
   set_pwm1_duty(deger);
  
   printf(lcd_putc,"\fVoltaj=%f V",voltaj);
   lcd_gotoxy(1,2);
   printf(lcd_putc,"Deger=%u",deger);
   delay_ms(1000);
 
  
   }
  
  
  
   }
 

Ekli dosyalar

  • Ekran görüntüsü 2024-01-30 180218.png
    497.2 KB · Görüntüleme: 27
  • 2023-12-27_15-08-02.png
    17 KB · Görüntüleme: 19
Kurduğunuz devreyi görebilir miyiz? Yer neresi?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…