PIC16f877 motor hız göstergesi lcd encoder PIC C

| Mayıs 25, 2023 Tarihinde güncellendi
PIC16f877 motor hız göstergesi lcd encoder PIC C

PIC16F877 Mikrokontrolör İle motor hızını lcd de gösteren encoder devresi Program ve devre hakkında açıklamalar Projenin akış şeması iki bölümden meydana gelmektedir. Bunlar; ana programın akış şeması ve kesme rutini akış şemasıdır. Ana programda PORTA ve PORTB yönleri tanımlanır. Daha sonra program sonsuz bir döngüye girer ve enkoderden puls gelmesi beklenir. Enkoderden her puls geldiğinde “sayım” değişkeni bir arttırılır.

Kesme rutinine her 66 ms de bir gidilir. Programın başlangıcın da yine LCD hazırlanır. Daha sonra her 66 ms de bir motorun hızı hesaplanır ve akrana yazdırılır. Yine programımızda ADC kullanıldığı için motorun hızı PWM ile ayarlanır. Akış şemasında da zaten PWM belirtilmiştir.

Programın Akış Şeması

encoder-akis-diagramlari

Devre Şeması
motor-hizini-lcd-de-gosteren-encoder-devresi

Test görüntüleri
lcd-konum-hiz encoder-test picc-encoder-devresi

Emeği geçen Kişilere Teşekkürler

PIC C Programı

   #include <16f877.h>
   #fuses XT,NOWDT,NOPROTECT
   #use delay(clock=4000000)
   #include 
   #include
   #BIT T0IF = 0x0B.2
   
   int sayac,artan;
   long hiz,konum;
   int16 value;
   
   #INT_rtcc
   clock_isr()
   {
      if(T0IF)
      {
         artan=0;
         sayac=sayac+1;

         if(sayac==15)
         {
            hiz=get_timer1();
            hiz=hiz*1.4;

            lcd_gotoxy(0,1);
            printf(lcd_putc,"  HIZ   :%4LU d/d  ",hiz);

            sayac=0;
            artan=get_timer1()%15;
            set_timer1(0);
         }
      }
   }
   
   void main()
   {
      konum=0;
      artan=0;
      hiz=0;
      sayac=0;
      
      enable_interrupts(GLOBAL);
      enable_interrupts(INT_RTCC);
      set_timer0(0);
      setup_timer_0(RTCC_DIV_256);
      set_timer1(0);
      setup_timer_1(T1_EXTERNAL);
      ext_int_edge( 1,H_TO_L );
            
      lcd_init();

      setup_timer_2(T2_DIV_BY_4, 1023, 1);
      setup_ccp1(CCP_PWM);
      setup_port_a(ALL_ANALOG);
      setup_adc(adc_clock_internal);
      set_adc_channel(0);

      for(;;)
      {
         value=read_adc();
         value=value*4;
         set_pwm1_duty(value);
        
         konum=(artan+get_timer1())%15;
         konum=24*konum;
         lcd_gotoxy(0,0);
         printf(lcd_putc,"  KONUM : %3LU der  ",konum);
      
      }
   }

Projenin Dosyaları proteus simülasyon ve pic c kodları;

pic16f877-motor-hiz-gostergesi-lcd-encoder-pic-c

Şifre-Pass: 320volt.com

Yayım tarihi: 2009/02/21 Etiketler: , , , ,



11 Yorum “PIC16f877 motor hız göstergesi lcd encoder PIC C

  1. elektrofizikelektrofizik

    devredeki U3 optpkoplörüne direnç bağlanmamış. buda eklenirse iyi olur.

    CEVAPLA
  2. yunus emre eeyunus emre ee

    Selam beyler…
    ben elektronik öğrencisiyim 11.sınıf.. dönem ödevi için bu deneyi kullanmayı düşünüyorum birazda kendim geliştireceğim…şu anda bu deneyde bi hata varmı? pic’in portlarını başka işler için de kullanacağım…yani kuran varsa lütfen yardım edebilirmi?şimdiden teşekkür ederim…

    CEVAPLA
  3. elektronickelektronick

    Çok teşekkür ederim proje tam mana da gerçekten çok işime yaradı, tekrar teşekkür ederim.

    CEVAPLA
  4. ersin beceriklicanersin beceriklican

    Merhaba, üst satırda yazan değer (d/d) devir/dakika mı?

    CEVAPLA
  5. Emre ÖzcanEmre Özcan

    kod dogrumu acaba sıkıntı yaşıyorum lcd mesaj gelmiyor

    CEVAPLA
  6. Yardım!!!Yardım!!!

    Hocam projenin detaylı yapısı ve malzeme listesi yok mu acaba ?

    CEVAPLA
  7. kkkkkk

    BU PROJEYİ YAPAN VARSA YARDIMCI OLABİLİR Mİ KODLAR ÇALIŞIYOR AMA DEVİR HEP SIFIR VE MALZEME LİSTESİ VEREBİLECEK VAR MI ACİL YARDIM

    CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir