Pic16F1825 & SLA 7062 Unipolar Step Motor Sürücü
Ağustos 26, 2013 4 Yorum
Microchip Pic16f1825 ile Sla 7062 Unipolar step motor sürücü kontrolü.
Bu yazı Sla7062 step motor sürücüsüyle yaptığım çalışmada aldığım notların toparlamaya çalıştığım halinden ibarettir.
Step motor kontrolünde basit çözümlerden biri olarak değerlendirilmesi gerektiğini düşündüğüm bir entegre…
Kontrolü oldukça basit.Ancak kontrol aşamasına gelene kadar biraz sıkıntı yaşayabilirsiniz.
Yakın zamanda örnek şema ve program ekleyeceğim.
Ticari bir projede kullandığım için mevcut şema ve kodları paylaşamıyorum.
Kısa bir yazı hazırladım;
Aşağıda 0-250 Khz frekans aralığında çıkış veren program mevcut.
main.c
//0-250 Khz aralığında belirlenen pinden çıkış veren program. //Puls frekansını rx üzerinden alıyor.Rx interrupt kapatılıp programda istediğiniz şekilde de belirleyebilirsiniz. //Ayrıca adcye de bağladım.Test ettim.Çalışıyor. //Gireceğiniz frekans değeri her zaman hertz cinsinden olmalıdır. 250khz üzeri için test etmedim.Deneyip sonuçları bildirirseniz biz de öğreniriz. #include <main.h> #include <stdlib.h> long long freq,freq1; //32bit değişken tanımları. char freqnumber[10]; #int_RDA void Rx_isr(void) { gets(freqnumber); freq = atoi32(freqnumber); disable_interrupts(int_timer4); gets(freq); clear_interrupt(int_timer4); enable_interrupts(int_timer4); } #int_TIMER4 void TIMER4_isr(void) { if(freq1 >= (freq / 2)){ Puls_L; if(freq1 >= freq) freq1 = 0; } else{ Puls_H; } freq1++; } void main() { setup_adc_ports(sAN0); //Adc modülü 0. kanal adc olacak şekilde kuruluyor. setup_adc(ADC_CLOCK_INTERNAL); // Adc clock kaynağı seçiliyor. set_adc_channel(0); //İlk etapta adc ile test ettim.Adc kanal seçiliyor. delay_us(30); // Analog kanalın sağlıklı çalışması için gereken bekleme.30 us. setup_timer_4(T4_DIV_BY_4,7,1); //Timer 4 4us ye kuruluyor. 0-250Khz aralığı için.! setup_comparator(NC_NC_NC_NC); // This device COMP currently not supported by the PICWizard enable_interrupts(INT_TIMER4); //Timer4 interrupt açılıyor enable_interrupts(int_rda); // Rx interrupt açılıyor.Adc den sonra bir de seri porttan girdiğim değerde çıkış vermesini istdim. enable_interrupts(GLOBAL); while(TRUE) { /* Görüldüğü gibi ana program bloğu boş. Burada istediğiniz gibi at koşturabilirsiniz 🙂 Unutulmaması gereken bir nokta! Timer 4 interrupt 4us.Yani zaman önemli olan bir uygulamada bunu göz önünde bulundurun.! */ } }
main.h
#include <16F1825.h> #device adc=10 #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES WDT_SW //No Watch Dog Timer, enabled in Software #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #use delay(int=32000000) #use rs232(baud=9600, xmit=PIN_C4,rcv=PIN_C5) #define PulsPin PIN_C0 #define Puls_H output_high(PulsPin); #define Puls_L output_low(PulsPin);
Ayrıca test videosu;
Sayın okur arkadaşlar. Bazı arkadaşlarımız sağolsun istediklerini bulamadıklarında hemen saldırıya geçip hakaret edebiliyorlar. Açıp data sheet inceleme zahmetinde bulunmuyorlar. Bakın ben bu projeye TİCARİ BİR PROJE olarak başladım ve ticari projelerde ŞEMA VS GİBİ PAYLAŞIMLARDA BULUNMUYORUM. Eğer data sheet icenleyip anlamadığınız noktalar olursa sorunuzu belirtin, bildiğim kadarıyla yardımcı olmaya çalışayım.
Google üzerinden arama yapıldığında birçok şemaya ulaşılabiliyor.
Tabii arkadaşlarımızın bir çoğu bu tip şeyleri yapmayı pek sevmezler.
Hazır olsun kullanayım isterler. Pek sevmesem de google linkini ve referans almaya çalışytığım bir şemayı ekliyorum.;
hocam örnek şema ve programı ne zaman paylaşıcaksın 🙂 teşekkürler
Program örneği zaten verilmiş durumda.Şema örneği de eklememi istiyorsanız arşivden bakar eklerim.
evet hocam şema örneği de verirseniz çok sevinirim.
hocam örnek şema yokmu ekliycem demiştiniz.