ı2c ile servo kontrol

Başlatan mustafa_60, 30 Temmuz 2013, 12:11:05

mustafa_60

merhaba herkeze iyi forumlar;
ben 6 bacaklı örümcek robot projesi üzerinde çalışıyorum,bunun için pic i direkt programlamayı düşündüm ancak olmadı.çünkü her bir servoyu (16 adet) farklı açılarla farklı zamanlarda sürmem gerekiyor bunun için ı2c kullanmayı düşünüyorum.benim sizden istedigim yardım sistemi anlamak için 2 adet servoyu ı2c ile sürebilecegim bi program gerekiyor bunun için deneyimli arkadaşlar yardımcı olabilirse memnun olurum...

muhittin_kaplan

RC servo mu kullanacaksın ?

mustafa_60


Tagli

Bu servolar genelde I2C kullanmazlar. Böyle özel bir motor bulabiliyorsan orasını bilemem tabi. Bir timer kesmesi kullanarak istediğin kadar motoru eş zamanlı olarak sürebilirsin. Çözünürlük çok yüksek olmaz ama yine de kabul edilebilir seviyede olur.
Gökçe Tağlıoğlu

mustafa_60

#4
işte sıkıntı orda timer kesmesi ile süremiyorum çünkü;elimde var 16 adet servo motor örnegin (1,2,3,.servo 15 derecelik)- (4,5,6,7.servolar 60 derede)-(8,9,10,11,12 servolar 75 derece döncek) bunların her birini aynı anda yapabilecegim kesmeyi nasıl tasarlıycam yanlışmı düşünüyoeum acaba...

mesaj birleştirme:: 30 Temmuz 2013, 18:28:31

https://www.google.com.tr/search?q=ssc-32&tbm=isch&tbo=u&source=univ&sa=X&ei=JNv3UdvzEYfQsgazv4DABA&sqi=2&ved=0CDQQsAQ&biw=1366&bih=667#facrc=_&imgrc=h6UHhI74gDKP6M%3A%3BYss7lR7_u5H9MM%3Bhttp%253A%252F%252Fksphome.ru%252Ffiles%252Fssc-32%252Fssc-32_circuit.png%3Bhttp%253A%252F%252Fksphome.ru%252Fssc-32%3B2200%3B1700  ne oldu be :)
buradaki devreyi incelerseniz ne demek istedigimi daha rahat anlarsınız 74hc595mtc ile master konumdaki entegreden slave konumdaki shift regiasterlere bilgi gönderiliyor bu resim benim yurtdışında üretilen şekli ben bunu kendim yazmak istiyorum.

Tagli

Bu motorların arayüzü ortak değil mi? 20 ms periyodlu bir sinyal, 1 (yüksek) olduğu zaman 1 - 2 ms arasında olmalı. Aktif kontrol bölgesi burası yani. 1 ms ise motor bir uca, 2 ms ise motor diğer uca gidiyor. Ve tabi aradaki değerler de var, 1.5 ms ile orta noktaya gitmesi gibi. Kontrol edilmesi gereken 1 ms'lik yer için kesme ile 10 us'lik bölümlere ayırırsın, yani 100 parçaya bölmüş olursun.. 18F serisi bir PIC'i 10 MIPS'te çalıştırırsan bu hıza ulaşmak mümkün. Bu süre içinde tüm motorların 0-100 arası değişen bir sayacını kontrol ederek ilgili pinleri 1 veya 0 yaparsın. Elbette sürekli kesme gelmesi işlemcinin başka iş yapmasını engeller ama atlatman gereken sadece 1 ms'lik bir zaman dilimi var. Bundan sonra 19 ms boyunca o timer kesmesini kapatır ve işine bakarsın. Bu düzeni kurmak için 19 ms'de bir kesme üreten ikinci bir timer kurman gerekecektir.
Gökçe Tağlıoğlu

mustafa_60

Alıntı yapılan: Tagli - 30 Temmuz 2013, 18:32:52
Bu motorların arayüzü ortak değil mi? 20 ms periyodlu bir sinyal, 1 (yüksek) olduğu zaman 1 - 2 ms arasında olmalı. Aktif kontrol bölgesi burası yani. 1 ms ise motor bir uca, 2 ms ise motor diğer uca gidiyor. Ve tabi aradaki değerler de var, 1.5 ms ile orta noktaya gitmesi gibi. Kontrol edilmesi gereken 1 ms'lik yer için kesme ile 10 us'lik bölümlere ayırırsın, yani 100 parçaya bölmüş olursun.. 18F serisi bir PIC'i 10 MIPS'te çalıştırırsan bu hıza ulaşmak mümkün. Bu süre içinde tüm motorların 0-100 arası değişen bir sayacını kontrol ederek ilgili pinleri 1 veya 0 yaparsın. Elbette sürekli kesme gelmesi işlemcinin başka iş yapmasını engeller ama atlatman gereken sadece 1 ms'lik bir zaman dilimi var. Bundan sonra 19 ms boyunca o timer kesmesini kapatır ve işine bakarsın. Bu düzeni kurmak için 19 ms'de bir kesme üreten ikinci bir timer kurman gerekecektir.
mantıklı geliyor ancak baya kafayı yedirtir biraz araştırma yapayım olmadı yine yazarım takıldıgım yerde...

SK

merabalar,
arkadaşım merak ettim de projenin devamını getirdinmi?