
PIC16F877 ile ileri geri step motor sürücü devresi ccs
25.03.2021 tarihinde güncellenen 17.05.2009 tarihinde yayımlanan PIC16F877 ile ileri geri step motor sürücü devresi ccs ile 2759 yazısı var. Yazar gevv
harmankaya.org sitesinde paylaşılan bir proje “step motor sürücü devre şeması ccs c kodu hex” kontrol pic-16f877 ile sağlanmış ileri geri step-motor kontrolü yapılabiliyor 2×16 lcd ekran üzerinde adım bilgilerini görebiliyorsunuz 12volt sürücü bölümünde bc548 transistörler kullanılmış
ayrıca “Elektronik-PIC” kategorisinde faydalı bilgiler uygulamalar bulunmakta incelemenizi öneririm
Proje detayları kod ve proteus isis dosyaları : Step-Motor-Sürücü
alternatif Dosya indirme LINK listesi (TXT formatında) link-7007.zip şifre-pass: 320volt.com
Yazılım içeriği
/******************************* PIC16F877 ile Step Motor Uygulaması Erhan HARMANKAYA erhan@harmankaya.org 17 Haziran 2008 *******************************/ #include <16f877.h> // Ben 16f877 kullandım siz kendinize göre düzeltebilirsiniz //Not: 16f628 de ADC modülü mevcut DEĞİL! #device ADC=10 // 10 bitlik ADC kullanılacağız // ayarlar #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD #use delay (clock=4000000) //Kullandığımız Osilatörün Clock frekansı #define use_portb_lcd TRUE // LCD B portunda #include//lcd yi kullanacağız #define buton_ileri pin_c4 #define buton_geri pin_c5 signed int8 ADIM=0; int16 Vref,Vcikis; float filtre; unsigned int8 sayac; char durum; #int_timer1 // Timer1 kesmesi void timer1_kesme () { set_timer1(63036); switch(durum) { case 1 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: -->>", ADIM,Vcikis); break; case 2 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: <<--", ADIM,Vcikis); break; case 3 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: ----", ADIM,Vcikis); break; case 4 : printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: #HATA#", ADIM,Vcikis); break; } delay_ms(10); if(Vcikis<10){ //10ms dweğerinden küçük beklemelerde ikaz ver.! (: lcd_gotoxy(14,2); lcd_putc("-!-"); delay_ms(5); }else{ delay_ms(6); } } void main ( ) { lcd_init(); delay_ms(10); printf(lcd_putc,"\fCCP-Timer-ADC\n Ayarlaniyor..."); delay_ms(1500); setup_psp(PSP_DISABLED); // PSP birimi devre dışı setup_spi(SPI_SS_DISABLED); // SPI birimi devre dışı //setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); set_timer1(63036); setup_adc_ports( ALL_ANALOG); setup_adc(adc_clock_internal); set_adc_channel(2); setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı printf(lcd_putc,"\fPortD Ayarlaniyor..."); delay_ms(1500); output_d(0x00); printf(lcd_putc,"\fTimer1 Kesmesi\nAyarlaniyor..."); delay_ms(1500); enable_interrupts(INT_timer1); // int_timer1 kesmesini aktif yapar enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver printf(lcd_putc,"\fHazir..."); delay_ms(5); while(1) //herzaman burada kal { set_adc_channel(2); Vref = read_adc(); //potansiyometreden alınan gerilim delay_us(50); Vcikis=Vref/16; if (input(buton_ileri)) // İLERİ Butonuna basıldı ise { delay_ms(Vcikis); ADIM = ADIM+1; if( ADIM == 9) { ADIM=1; durum=1; } } if (input(buton_geri)) // GERİ Butonuna basıldı ise { delay_ms(Vcikis); ADIM = ADIM-1; if( ADIM < 1) { ADIM=8; //! printf(lcd_putc,"\fADIM=%d\nKonum: -->>", ADIM); //! delay_ms(10); durum=2; } } if (input(buton_geri)&input(buton_ileri)) // İki butona da basılıyor ise; { durum=3; } //Bu koşul iki butona da basıldığında HATA durumunun oluşacağını bilgirir. if (!input(buton_geri)&!input(buton_ileri)) // İki butona da basılmıyor ise; { durum=4; } delay_ms(Vcikis); switch(ADIM) { case 1 : output_d(0b00000001); break; case 2 : output_d(0b00000011); break; case 3 : output_d(0b00000010); break; case 4 : output_d(0b00000110); break; case 5 : output_d(0b00000100); break; case 6 : output_d(0b00001100); break; case 7 : output_d(0b00001000); break; case 8 : output_d(0b00001001); break; } } }
arkadaslar su mavi ekranın baglatı şemasını birturlu bulamadım var ise bir link bırakırmısınız
sagılar
http://www.ceviz.net/ceviz_main/uploads/uye9909/100407devresemasi.gif Şuraya bak bir istersen. Bu arada LCD nin datasheetini de incele istersen. Misal benim kullandığım LCD nin arkasında VCC VSS DB0 DB1…. şeklinde pin isimleri yazıyordu
devrede ben lcdmi çalıştıramadım datasheetleri bakarak bağladım ama ekranda yazı yok
peki bunu manyetik sensöre bağlayabilir miyiz ?