Servo Motor Sürmede Problem

Başlatan ernuynk, 02 Kasım 2015, 15:45:22

ernuynk

Merhaba arkadaşlar, elimde iki adet servo motor mevcut. Biri TowerPro SG90 (Analog) diğeri ise TowerPro MG995 (Digital)
Servo motorların pozisyonlarını belirleyebilmek için kullandığım kod aşağıdaki gibidir;

Sorun tam olarak şöyle, bu kodları SG90 mini servo üzerinde çalıştırdığımda tam olarak 0-90-180 derecelerini gözlemliyorum yani adım adım çalışıyor. Fakat MG995 ile bu kodları çalıştırdığımda motor saçmalıyor. Sadece 0 için yaptığımda hızlı, 90 için yaptığımda ise daha yavaş dönüyor. Yani bu derece değerleri MG995 de hız kontrolü gibi davranıyor. Sorun nerede tam olarak? Analog/Digital kontrolü farklı mı oluyor?

Teşekkürler


# include < Servo.h >

int servoPin = 9;
Servo Servo1;

void setup()
{
Servo1.attach(servoPin);
}

void loop()
{
Servo1.write(0);
delay(1000);
Servo1.write(90);
delay(1000);
Servo1.write(180);
delay(1000);
}

polleme

Elinizdeki MG995, modifiye edilerek 360 derece döner hale getirilmiş bir servo motor olmasın? Bu tip motorlarda dediğiniz hareket olabiliyor.

ernuynk

Alıntı yapılan: polleme - 02 Kasım 2015, 17:16:40
Elinizdeki MG995, modifiye edilerek 360 derece döner hale getirilmiş bir servo motor olmasın? Bu tip motorlarda dediğiniz hareket olabiliyor.


projem için 6 adet toptan aldım. 3 tanesi aynı şekilde çalışıyor diğerlerini deneme fırsatım olmadı. Böyle bir şeyi neden yapsınlar ki? :/
eğer öyleyse vay benim halime :)

ernuynk

şüphelenip bir tane mg995'in içini açtım. resimler aşağıdadır. bana pek oynanmış gibi gelmedi. sorun ne anlamadım :/

http://i.hizliresim.com/G5Wqd2.jpg
http://i.hizliresim.com/yRJyBL.jpg
http://i.hizliresim.com/rRpB8V.jpg
http://i.hizliresim.com/7PdEXP.jpg

iyildirim

Maalesef pot da yok, son dişlide  tırnakta yok.
@polleme 'nin dediği gibi sonsuz dönüyor servolar.
Sağa veya sola 90 dereceden uzaklaşmanıza göre daha hızlı dönerler.
   

ernuynk

Alıntı yapılan: iyildirim - 03 Kasım 2015, 16:02:01
Maalesef pot da yok, son dişlide  tırnakta yok.
@polleme 'nin dediği gibi sonsuz dönüyor servolar.
Sağa veya sola 90 dereceden uzaklaşmanıza göre daha hızlı dönerler.

pot olmaması benimde dikkatimi çekti fakat aşağıda linki verilen konuda gerek adımlarda gerekse video'da aynı motorun içi açılıyor fakat pot göremedim ben. Başka bir işlem yaparak 360 derece dönme özelliği sağlanıyor sanırım.

http://www.instructables.com/id/How-to-hack-a-servo-for-continuous-rotation-Towe/step0/How-to-hack-a-servo-for-continuous-rotation-Towe/

polleme

POT değil de iki direnç eklenerek yapılıyor.

ernuynk

benim tam olarak anlamadığım şu, 360 derece dönen motorlar kademeli olarak nasıl çalışılıyor? Yani mini servo 0-90-180 derece çalışırken bu mg995 360derece tam tur atıyor. bu motoru örneğin 90-150 derecelerde kademeli olarak nasıl çalıştırabilir?

teşekkürler

iyildirim

Alıntı yapılan: ernuynk - 03 Kasım 2015, 21:40:05
benim tam olarak anlamadığım şu, 360 derece dönen motorlar kademeli olarak nasıl çalışılıyor? Yani mini servo 0-90-180 derece çalışırken bu mg995 360derece tam tur atıyor. bu motoru örneğin 90-150 derecelerde kademeli olarak nasıl çalıştırabilir?

teşekkürler
Bu tip servolar pot yerine 2 eş dirençle yapılmış bir gerilim bölücüden geri besleme alıyor. 1500us lik puls gönderirseniz dönmez. 750us veya 2250us lik puls  gönderirseniz tam hız o yöne döner. 
Bu tip motorlarla pozisyon kontrol etmek zor. Olsada açık çevrim olur. Atıyorum 100ms süreyle  750us lik puls uygulayıp, sonra 1500us puls uygularsınız gibi.

Yapabiliyorsanız servoları değiştirin.
Değiştiremezseniz,  dirençleri söküp yerine sapı son dişlinin yuvasına uyacak bir pot takılabilir. Ama son dişlide tırnak olmadığı için potu kırabilirde.
Belki 2 tur bir pot olabilir.  Yada son dişliye ufak bir vida vs.

ernuynk

Alıntı yapılan: iyildirim - 04 Kasım 2015, 01:40:26
Bu tip servolar pot yerine 2 eş dirençle yapılmış bir gerilim bölücüden geri besleme alıyor. 1500us lik puls gönderirseniz dönmez. 750us veya 2250us lik puls  gönderirseniz tam hız o yöne döner. 
Bu tip motorlarla pozisyon kontrol etmek zor. Olsada açık çevrim olur. Atıyorum 100ms süreyle  750us lik puls uygulayıp, sonra 1500us puls uygularsınız gibi.

Yapabiliyorsanız servoları değiştirin.
Değiştiremezseniz,  dirençleri söküp yerine sapı son dişlinin yuvasına uyacak bir pot takılabilir. Ama son dişlide tırnak olmadığı için potu kırabilirde.
Belki 2 tur bir pot olabilir.  Yada son dişliye ufak bir vida vs.


cevap için teşekkür ederim. motorları iade edip paramı geri alacağım. sonrasında ise başka bir servo bakacağım.
sanırım bu kez PowerHD'nin metal dişli dijital servolarından alacağım. Araştırmalarıma göre dijital servolar daha çabuk tepki verip, istenilen konumda daha stabil durabiliyorlarmış. Sonuçta bende bu motorları robot kol için kullanacağım. Herhangi bir pozisyonda titreme ya da oynama yapmasını istemem :)

quadream

merhaba
ernuynk towerpro mg995 çalıştırabildin mi? forumda bu servo ile çalışan var mı? son olarak hem ccs c hemde xc8 de yazığım kodları 16f628a ya atıp breadboardda devreyi kurduğumda motor tahminen 160 derecelik bir açıya gidip geri 0 dereceye geliyor ve durmadan tekrar 160 dereceye gidip geri geliyor. durmaksızın çalışıyor. konumunu korumuyor. nedenini bilen var mı? yazdığım kod xc8 için;

>#include "config.h" /*içinde 628a için gerekli konfigürasyonlar var. her modül ve ayar kapalı, harici kristal frekans 4mhz*/

>void main() {
>   TRISB = 0x00;
>   PORTB = 0x00;

>while (1) {
>              PORTBbits.RB0 = 1;
>              for (int i = 0; i < 98; i++);
>              PORTBbits.RB0 = 0;
>              for (int j = 0; j < 1045; i++);
>              }
>}

servonun yönlerini bulmaya çalışırken denediğim bu kodu ccs c ile gerekli düzenlemeleri yaptıktan sonra aynı mantık ile kullandım. motor aynı tepkiyi verdi.
maksimum i değerini 58 yapınca ve j yi 1085 yapınca servonun taradığı açı azalıyor tahminen 80 derece oluyor. ama yine konumunu korumuyor.

quadream


mehmet

Bir sınır anahtarı veya hall effekt ile, ilk açılışta reset
ilave edebilirsiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

quadream

teşekkürler mehmet bey belirttiğiniz çözümü araştıracağım. peki normal şartlarda yukarıda yazdığım kod ile üretilen pals in, pic e enerji verildiği müddetçe herhangi bir servoyu ilgili açı konumuna getirdikten sonra, o konumda sabit kalmasını gerektirmez mi?