uzaktan servo kontrolü

Başlatan yusuffyk, 17 Aralık 2012, 01:47:22

yusuffyk

benim yapmak istediğim servoyu rf ile kontrol etmek. c koduyla yaptım bu olayı. analog bilgiyi aktarıp lcd de voltaj olarak gösterebiliyorum bilgi gidiyor mu gitmiyor mu diye test etmek için ama servoyu hareket ettiremiyorum. lcd de voltaj bilgisini gösteriyorum ama onun altındaki servoyu hareket ettirecek kodlarım servoya hareket ettirmiyor. sebebi ne olabilir??



            adcbilgi=getc();        //pottan gelen bilgiyi adcbilgi degiskenine aldım.
            }
            voltaj=0.019607843*adcbilgi;  // burada pottan gelen voltajın değerini 5volt üzerinde hesaplatıyorum. voltaj degeri 5/255=0.019607843 yapar bu adım voltajıdır. gelen bilgi bu degerle carpılarak voltaj bulunur.
            lcd_gotoxy(1,2);printf(lcd_putc,"VOLTAJ=%fV",voltaj);delay_ms(200); //lcd 2.satır 1.sütundan itibaren voltaj degerini yaz.
            //bundan sonrada servoyu hareket ettirmek için gerekli formülü ve kodlarımı yazıyorum.
            cikis=((adcbilgi*1.86)+600);
            bekle=(20000-cikis);
            output_high(pin_a2);
            delay_us(cikis);
            output_low(pin_a2);
            delay_us(bekle); 

bu hareket ettirecek kodlarda sıkıntı yok belirteyim onu öncelikle. 877a yı direk servo ve potla denediğimde bu formüllerle istediğim hareketi sağlıyorum. analog veriyide adcbilgi olarak alıyorum ama bunu servoda kullanamıyorum. bir önerisi olan veya c koduyla bu işlemi yapabileceğim alternatif bir şey var mı?
         
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

yusuffyk

http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

eistain_54

Normal şartlarda yani rf kullanmadan pot kullanarak bu formül ile servoyu hareket ettirdiğini belirtmişsin.Lcdde analog değerleri gördüğünü belirtmişsin.Rf kullanarak analog değeri doğru aktardığını da belirtmişsin.Buna karşın rf kullandığında servoyu bu formül ile hareket ettiremediğini belirtmişsin.Acaba servo hiç mi tepki vermiyoru?Yoksa istediğiniz hareketi mi yapmıyor?
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

yusuffyk

hocam işte bende neden olduğunu çözemiyorum ama evet hepsi aynen öyle. servonun hareketi şöyle. parça parça sola dönüyor servo. mesela ben en sağa alıyorum. o küçük açılarla sola dönüyor. dönüyor duruyor dönüyor duruyor sona geldiğinde de sola dönmeye çalışıyor. simülasyondada deniyorum ordada servo hareket etmiyor.

float voltaj=0;   
unsigned int adcbilgi=0; 
int bekle, cikis ;

tanımlamalarımda şöyleydi. tek ihtimal bunlarda bir sıkıntı olabileceği aklıma geliyor ama emin değilim ?
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

eistain_54

Bahsi geçen servo rc servo ise benim aklıma gelen analog veri değerini aktarırken sorun yaşıyor olabilirsin.Yani aldığın ham adc değeri senin gerçek değerin olmayabilir.Çünkü bu kodlar ile rf kullanmadan çalıştırmışsın..Gerçi lcdde görüntülediğim rf analog verileri doğru demişsin ama...Aklıma başka bişey gelmedi açıkcası
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

yusuffyk

benimde şimdi şey gelmişti aklıma bu sayı değişkenlerinin tipinden kaynaklanabilir mi diye ?
lcd de yazdırdığım değer float, adc olarak aldığım değer uns. int, servoda kullanmak için gereken değerler ise int olarak almışım. onlarıda float olarak alsam sorun ççzülür mü? bundan kaynaklanıyor olabilir mi ?
şuan deneyemiyorum bilgisayarım yok. fikir oluşsun diye soruyorum.
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk

eistain_54

#6
Float noktalı sayı.Float değilde süre değişkenini uns int yapmayı deneyebilirsin.Uns işaretsiz tam sayı.Bi kaç kez benzeri problemi yaşamıştım.Çözebilir.Ancak aynı kodlarla motoru istediğin şekilde çalıştırdığını belirtmişsin.Servonun bahsettiğin şekilde dönmesinin sebebi servo için uygun time değerlinde sinyal gitmemesinden kaynaklanıyo.Her servoda 20ms değildir.Kendi servon için uygun değerleri bulmalısın.Ama işte her alternatif çözümü engelleyen "Bu kodlarla rf olmadan çalıştırdım" ifadesi oluyo.Belki rf parazitleri pinden çıkan sinyalini bozuyordur.Düşük bi ihtimal.Belkide olmayacak bişey.Ama işte insanı tutan tarafı sadece rf gelince işlerin bozulması :)

mesaj birleştirme:: 19 Aralık 2012, 22:15:53

Şimdi dikkat ettim de senin değişkenlerin int türünde ise nasıl oluyoda 8bit bi değişkene 600 değerini atayabiliyorsunuz?O değişkenleri uns. int16 yapın
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

yusuffyk

servoya uygun parametreler belli işte. pot ile doğrudan çalışıyor ama ben ne zaman devreyi ayırıp rf ile kontrol etmeye çalışıyorum sıkıntı başlıyor.
burada en uygun tip uns int16 diyorsunuz, peki bunu deneyeceğim, başka bi fikriniz var mı acaba ? denerken hepsini birden deneyeyim ?
http://yusuffyk.com  ||  http://www.youtube.com/yusuffyk