1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler »

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

encoder-picc

Projenin Dosyaları isis simülasyon ve pic c dosyaları (.cod .c .LST .hex vb.) encoder-lcd-picc Emeği geçen Kişilere Teşekkürler

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

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);

      }
   }

sakla feedmail facebook twit  

Yazar: gevv

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 1893 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

online elektronik komponent satışı

 
  1. elektrofizik diyor ki:

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

  2. Konyalı diyor ki:

    Usta link problemli bi gözat sana zahmet;)

  3. gevv diyor ki:

    Link sağlam kontrol edildi

  4. yunus emre ee diyor ki:

    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…

  5. elektronick diyor ki:

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

  6. mahmut diyor ki:

    optik sensör olarak ne kullandınız?

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)


  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.
sponsor

sponsor

diptrace

diptrace

sponsor

sponsor

embeddedtrading

embeddedtrading

sponsor

sponsor

seo

Seo Danışmanlığı

feed save face twit  
Translate: TürkçeEnglish

Forum Son İletiler