PIC 16f628A ve HI-TECH C ile Servo Motor Kontrolü

Ara tatilinde yaptığım ve Proteus ISIS ile simule ettiğim kodum. Butonlara basarak R/C servo motoru 60 derecelik sağa ve sola döndürüyor. R/C servo motorlar amatör Radio Controlled sistemlerde kullanıldığı için R/C adını almışlardır. Radyo kontrollü hobi uçağı yapabilirsiniz bununla :) Asıl motor olmayacaktır elbette kanatların altındaki kanatçıkları oynatarak uçağın yönünü değiştirebilirsiniz. Bu motorlar genellikle belirli bir periyotta (10 ile 20 milisaniye) bir dikdörtgen (pwm asıl adı) sinyalle kontrol edilirler. Bu periyotluk dilimde eğer 1 ms’lik 1 verir ve gerisini sıfır yaparsanız motor eksi yöne 60 dereceye, 1.5 ms 1 ve gerisi sıfır olursa sıfır dereceye ve 2 ms’lik bir sinyal yollarsanız da +60 dereceye oturur. Aslında normal dc motorun biraz kontrol devreli ve dişlili halidir (redüktör). Aşağıda Proteus ISIS simulasyonunun görünüşünü koydum. Analog analiz kısmının çalışması için servo motoru devreden ayırmamız gerekmektedir. Sanırım Proteus’un bir bug’ı.

Hi-Tech C kodları ise aşağıdaki gibidir:

#include

#include
#include 

__CONFIG(WDTDIS&PWRTEN&LVPDIS&INTIO);

void main(void){
    int hiz=0;
    char i = 100;
    PR2 = 255;
    //char k = 0x3D;
    //CMCON = 0x07;
    TRISA = 0x03;
    TRISB = 0x00;
    CCPR1L = 0x3F;
    PORTA = 0x00;
    PORTB = 0x00;
    CCP1X = 1;
    CCP1Y = 0;

    T2CKPS1 = 1; //Prescale özelligi
    T2CKPS0 = 1;
    TOUTPS3 = 0;
    TOUTPS2 = 0;
    TOUTPS1 = 0;
    TOUTPS0 = 0;

    CCP1M0 = 1; //CCP1 PWM MODUNDA
    CCP1M1 = 1;
    CCP1M2 = 1;
    CCP1M3 = 1;

    TMR2ON = 1; //TMR2 ENABLE
    for(;;){
        if(RA0){
            while(RA0);
            RB0 = 1;
            CCPR1L = 0x0E;
             CCP1X = 1;
             CCP1Y = 0;

             T2CKPS1 = 1; //Prescale özelligi
             T2CKPS0 = 1;
             TOUTPS3 = 0;
             TOUTPS2 = 0;
             TOUTPS1 = 0;
             TOUTPS0 = 0;

             CCP1M0 = 1; //CCP1 PWM MODUNDA
             CCP1M1 = 1;
             CCP1M2 = 1;
             CCP1M3 = 1;
             TMR2ON = 1; //TMR2 ENABLE
             __delay_ms(100);
             RB0=0;

    TMR2ON = 1; //TMR2 ENABLE

        }
        if(RA1){
            while(RA1);
            RB1 = 1;
            CCPR1L = 0x9E;
             CCP1X = 1;
             CCP1Y = 0;

             T2CKPS1 = 1; //Prescale
             T2CKPS0 = 1;
             TOUTPS3 = 0;
             TOUTPS2 = 0;
             TOUTPS1 = 0;
             TOUTPS0 = 0;

             CCP1M0 = 1; //CCP1 PWM
             CCP1M1 = 1;
             CCP1M2 = 1;
             CCP1M3 = 1;
             TMR2ON = 1; //TMR2 ENABLE
             __delay_ms(100);
             RB1=0;
        }

    }
}

Burada timer2 nin pwm modülünü kullanarak periyotu ve bu peryodun ne kadarının 1 olması gerektiğini belirledik.
CCPR1L her değer değişimde timer2′nin ve pwm modülünün ayarlarını tekrardan girmemiz gerektiğini 16F628A’nın
datasheetinden bulmak zorunda kalmıştım. 16F877′ler için böyle bir sıkıntı yaşanmamaktadır.

MPLAB proje dosyasını, kaynak kodlarını ve Proteus ISIS simulasyonunu wp’deki bir sorundan dolayı koyamadım. En kısa zamanda ekleyeceğim.

Python Kitabı

How to Think Like a Computer Scientist serisinin python için yazılmış olan kitabının çevirisi yine bir bilgisayar bilimcisi olan Tahir Emre Kalaycı tarafından çevirilmiştir. Tazeciktir, dumanı üstündedir. Yazarın diğer bilgisayar bilimcisi arkadaşlarıyla hazırladıkları blogda yayınlamışlardır. Oldukça önemli olan bu kaynağın çevirisine çok sevindim. Keşke her sabah böyle mutluluk veren haberler alsam :)

http://kodveus.blogspot.com/2010/02/bilgisayar-bilimcisi-gibi-dusunmek.html

http://yzgrafik.ege.edu.tr/~tekrei/dersler/bbgd_p/

Linux Driver Geliştirme ve Kernel Hack Dökümanları

lego

lego

Son günlerde sınavlarım ve kurslarım dolayısıyla pek vakit bulamasam da donanım driveri geliştirme üzerine işe yarayabilecek olan dökümanları yazmak istedim. Finallerimden sonra geri bu dökümanlara geri dönüp bazı örnek projeler geliştirmeye çalışacağım. USB cihazların sürücüleri oldukça güzel bir alan ve bununla ilgili Greg Kroah-Hartman’ın Writing a Simple USB Driver makalesi oldukça açıcı olmuş. USB’ ye bağlanabilen bir RGB ledinin kontrolü için driver örneğini çok güzel anlatmış. Dökümanların ve kod örnekleri için http://www.kernel.org/pub/linux/kernel/people/mochel/doc/ sitesine bakabilirsiniz bunun dışında bütün kernel.org daki kernel geliştiricilerinin listesine şurdan ulaşabilirsiniz :

http://www.kernel.org/pub/linux/kernel/people/

IBM Developerda daha önceden yayınlanmış yazı dizisi de giriş aşamasında oldukça faydalı olacaktır:

  1. Hacking the Linux 2.6 kernel, Part 1: Getting ready
  2. Hacking the Linux 2.6 kernel, Part 2: Making your first hack

Elimde hiç usb cihaz yok diye üzülüyordum. Hani gidip bir rgb led seti alsam hem parama hem zamanıma yazık olurdu ki zaten yapılmış bir projeyi yapmak eğlenceli gelmiyor pek. Evde aranırken usrobotics marka skype telefonunu buldum. Skype üzerinde kontrol yapabiliyordunuz hem de 1.1 mb’lık bir kurulum dosyasıyla. Linux desteklemiyor olması oldukça kötüydü. Ancak tuş takımının olması ve mikrofon hoparlör setiyle beraber bir de ışığının olması önümüzdeki günlerde projelerimde kullanabileceğim demek :)

Bütün bunların dışında daha inceleme fırsatı bulamadığım Linux Driver Development Kit’ini en kısa zamanda ubuntumda deneyeceğim :) Onunda bağlantısını verelim:

http://kernel.org/pub/linux/kernel/people/gregkh/ddk/

Bu yazı kendim için de kaynaklar kısmı olucak ve yeni dökümanlar buldukça buraya ekleyeceğim.

Kontrollü Yarım Dalga Doğrultucu ile DC Motor Kontrolü

Tristörle yapılmış kontrollü yarım dalga doğrultucu ile DC motor kontrolü devresi yaptım. Devrenin büyük bir kısmı zaten tetikleme devresinden oluşmakta ve daha önce yine sitemde bu tristör (SCR) tetikleme devresini yayınlamıştım. Şimdi ise yarı yükte ve eylemsizlik momentine sahip bir DC motorun kontrol devresini yaptım. Motorun korunması için bir sigorta koydum. Tetikleme zamanı değiştirilerek üretilen DC gerilim değiştirildi ve böylece motor kontrol edilebilir hale geldi. Tahrik dersinin ödevini yapmaya çalışırken çıktı valla :) Önümüzdeki hafta finaller yaklaşıyor buna rağmen içimi hoş bir heyecan kapladı :)

Yarıyıl tatilinde yapacağımız rüzgar türbini projesinde yüksek güçlerde (2.5-3 kW) kontrolsüz doğrultucu kullanacağız. O projeyle ilgili ödenek almamızın dışında da güzel gelişmeler oldu. Başka bir yazının konusu ancak :)

Kontrollü Yarım Dalga Doğrultucu ile DC Motor Kontrol Devresi

Kontrollü Yarım Dalga Doğrultucu ile DC Motor Kontrol Devresi

Devreinin ISIS Proteus simulasyonu ekleyeyim de tam olsun :)

Kontrollü Yarım Dalga Doğrultucu ile DC Motor Kontrol Devresi ISIS Proteus Simulasyonu

Herkese iyi akşamlar.

Güç Elektroniği Hakkında Yazdığım Diğer Yazıları Okumak İçin Tıklayınız:

  1. Kontrollü Yarım Dalga Doğrultucu ile DC motor Kontrolü
  2. Güç Elektroniği Endüstriyel Uygulamaları
  3. Güç Elektroniği Elemanları: Tristör (Thyristor)
  4. Güç Elektroniği Elemanları: Diyor (Diode)
  5. Güç Elektroniğine Giriş
  6. Temel Tristör (SCR) Tetikleme Devresi

Facebook Kayıt Olmak

Facebook kayıt olmak:

Facebook’a kayıt olmak üç adımdan oluşmaktadır. Bunlardan ilki gerekli bilgilerimizi girerek üyelik işlemine başlamak ikincisi onaylama maili ile bu hesabın ve mail adresinin gerçek olduğunu onaylamak ve üçüncüsü facebook sitesine girmek.


1- Facebooka üye olmak için http://www.facebook.com/ sitesine girilir. Ardından adı soyadı, mail adresi, şifre gibi gerekli boşluklar girilir. Kaydol butonuna (sign up) tıklanır. Mail adresi gerçek bir adres olmalıdır ki doğrulama mailini alabilelim.

2- Boşluklara yazdığımız mail adresine girilir. Oraya facebook bir mail atmıştır. Mailde onaylıyorsanız şu linke tıklayın yazmaktadır. O linke tıklanır. Artık facebook hesabımız onaylanmıştır.

3- http://www.facebook.com/ adresine girilir tekrardan bu sefer mail adresimizi ve ilk başta yazdığımız şifreyi girip giriş yapa (login) tıklanır.

HALA ÜYE OLAMADIYSANIZ YORUM YAZINIZ YARDIMCI OLURUM!

Read more »