Seri Port Kontrollü Servo

Başlatan yfa, 09 Eylül 2011, 16:59:35

yfa

Arkadaşlar PBP ile seri port üzerinden servo motor kontrol etmek istiyorum. 2 işlem yapacak; Örneğin başlangıcı 0 derece sayarsak; KALK komutu ile 90 derece kalkmasını, YAT komutu ile tekrar 0 dereceye dönmesini sağlamam gerekiyor. Seri Port bağlantısı olmasının sebebi bunun kuracağım deney sisteminde LABVIEW ile kontrol edilecek olması.

Bu iş için oldukça araştırma yaptım ama pic işlerine yabancı olduğum için pek bir sonuç aldım sayılmaz. Bu konuda elinde isis devresi ve PBP yazılımı olan arkadaşlar varsa paylaşırlarsa çok sevinirim. Yoksa yol gösterirseniz de çok iyi olur.

Teşekkürler.

esensoy

Örnek yol 1:
İçinde uart ve kaç servo kontrol etmek istiyorsan o kadar adet pwm barındıran işlemcini seç, (Anahtar kelimeler: Uart, pwm)
max232 kullanımını, örnek devreleri vs araştır, (anahtar kelimeler: RS232, com port)
işlemcinin uart ının nasıl kullanıldığını ve uart kesmesinin nasıl çalıştığını araştır, (anahtar kelime:Uart, interrupt)
Pwm duty cycle araştır,
Hobi servo araştır,
Visual Basic ile ve ya pcden terminal programı ile veri göndermeyi araştır, (Terminal programı için : "terminal v1.9b by bray" diye arattır)
Sonra bu bilgileri potanda erit, istediğin pozisyonda durdurursun moturu,

Örnek yol 2:
Serdar ÇİÇEK'in pic programlama kitabını edin, yanlış hatırlamıyorsam istediğin tüm durumlar orada anlatılıyor, oku öğren birleştir, yine istediğin pozisyonda durdurursun motoru,
En tehlikeli an "zafer" anıdır.

gambit1244

emreşensoy gerçekten güzel cevap vermişsin hazır şema vs kod vermektense doğru bilgiyi nasıl bulcağını anlatmışsın;(anahtar kelimeleri vererek) kişi bu şekilde daha kalıcı öğreniyor bence siteleri kendi dolaşarak, araştırarak


bende serdar çiçeğin kitabından öğrendim ilk bilgilerimi cok güzel kitap örnek isis şemaları ve kodları anlatımlarıyla tamamen işini görebilcek bi kaynak çokta kolay yazarsın azcık c biliyorsan.

bilmiyorsanda o kitaptan kolayca öğrenebilirsin

saygılar..
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

yfa

Arkadaşlar  bilgilendirdiğiniz için teşekkür ederim. Ama şöyle bir sıkıntı var pic ile çok ilgili değilim ve işim icabıda ileri derece pic bilgisi gerektirmiyor. Yanlış anlamayın yani tamamen LABVIEW ile çalışıyorum ve 1 pic devresine ihtiyaç duydum şuana kadar oda burada yazdığım. Zaman olsa dediğiniz gibi öğrenmek gerek yada bu iş ile uğraşan birisi olsam. Yinede araştırıp bişeyler öğrenmek güzel. Şuana kadar isis ile bir devre yaptım (henüz yazılımı yok). Bana tasarladığım devrenin doğru mu yanlış mı olduğunu söylerseniz bende ona göre devam etmeyi düşünüyorum (bu işlerde  ilk program mı yazılır yoksa devremi çizilir? )

Devre için link bmp dosyası http://www.halleyhali.com.tr/devre-1.bmp linkinde (umarım böyle link vermek yasak değildir)

Lütfen inceleyip beni bilgilendirirmisiniz.
Saygılar.

yfa

Bana 1 servo ve 2 hareket lazım. 90 derece ve 180 derece hareket. Sıkıntım bunun seri port üzerinden komutla çalışması.
Bu arada devre doğrumu hocam incelediyseniz bilgi verirmisiniz.
Teşekkürler.

yfa

#5
Pic basic pro kullanıyorum. Hangi porta bağlamam gerekiyor servo yu ve seri port girişlerini? başka hata varmı şemada bilgilendirirmisiniz.

Alıntı yapılan: FxDev - 10 Eylül 2011, 22:16:37
Seri port ucunun B portunda ne işi var anlamadım. CCS C mi kullanmayı düşünüyorsun?

Mesajınız üzerine Max232 nin T1/IN pinini RC6/TX/CK ya, R1OUT pinini RC7/RX/DT ye bağladım. Bu haliyle bir sorun varmı devrede?


Arkadaşlar Buraya biraz yardım lütfen. Pazartesine kadar bunu halledersem çok rahat edecem.
Ben ete hocamın PC to PIC dersinden ve PBP nun kendi servo düzeneğinden bir program editledim. pic setinin son görüntüsünüde aşağıda ki linke ekliyorum. Lütfen programı ve pic setini inceleyip beni yönlendirirmisiniz.
Teşekkür ederim.

http://c1109.hizliresim.com/11/9/11/2397.bmp

include "modedefs.bas"
PORTA=0:TRISA=%00000000
PORTB=0:TRISB=%00000010 'PORTB.1 is input all others are output.
DEFINE HSER_RCSTA 90h 
DEFINE HSER_TXSTA 20h 
DEFINE HSER_BAUD 9600 
DEFINE HSER_EVEN 1 
DEFINE HSER_ODD 1 
pos       VAR BYTE 90' Cnt is a word variable
inputData var Byte 51' variable to receive data into
TEMP      var BYTE 52
SYMBOL GIE  =INTCON.7   'genel interruptları açıyor
SYMBOL PEIE =INTCON.6   'peripheralinterruptları açıyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit
symbol servo=PORTB.5
RCIE=1
PEIE=1
GIE=1
INTCON=%11000000
ON INTERRUPT GOTO INT
START:
      IF pos=89 then
          gosub left
          pause 100
          pos=0
      endif   

      if pos=90 then
       gosub center
        pause 100
        pos=0
      endif
      goto start
     
DISABLE
INT:
    GIE=0
    hSerIn , [WAIT ("POS"),INPUTDATA] 
    pos=inputdata
    TEMP=RCREG
    GIE=1
    Resume
enable
' Move servo left
left:   If pos < 1000 Then
                pos = pos + 1
        Endif
        Return


' Move servo right
right:  If pos != 0 Then
                pos = pos - 1
        Endif
        Return


' Center servo
center: pos = 500
        Return

        End



Edit OG;
@yfa, chat odası gibi arka arkaya değil editleyerek yaz lütfen.
Ayrıca verdiğin linkin devre resmi ile ne alakası var?

yfa

Bu sorun çözüldü sağolsun Ete Hocam el attı. Çözüm için arkadaşlar
http://etepic.com/index.php?topic=84.0
Linkini kullanabilirler.