Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Servo Motoru Kontrol Edemiyorum

Başlatan semih, 28 Mayıs 2013, 23:08:47

semih

Yazdığım kodları ve kurduğum devrenin isis şemasını aşağıda verdim. Simülasyon yaparken düzgün çalışıyor. Fakat devreyi gerçekte kurduğum zmaan iş farklılaşıyor. Devreye enerjiyi verdiğimde servo yaklaşık 15 derece hareket ediyor. Enerjiyi kestiğimde de eski haline geri dönüyor.

Kodlar

#include <16f877.h>
#fuses XT,NOWRT,NOPROTECT,NOWDT,NOLVP,NOCPD,NODEBUG,NOPUT,NOBROWNOUT
#use delay(clock=4M)

void main()
{  
   while(1)
   {
      if(input(pin_e0)) { output_low(pin_b1); delay_us(1000); output_high(pin_b1); }
      if(input(pin_e1)) { output_high(pin_b1); delay_us(1464); output_low(pin_b1); } 
      if(input(pin_e2)) { output_high(pin_b1); delay_us(2000); output_low(pin_b1); } 
   } 
}


Devre Şeması


yldzelektronik

Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

semih

Alıntı yapılan: yldzelektronik - 28 Mayıs 2013, 23:26:37
Süreleri değiştir

Süreleri değiştirmedim. Fakat ikinci butonu kaldırdım. Aynı devreyi kurdum ve enerjiyi ilk verdiğimde ufak bir açıyla tekrar dönmeye başladı ama butonlarla kontrol edebiliyorum şuan. Kendi kendine dönmesi neden olur acaba?

f15eagle

while(1) den önce output_b(0x00) yaparak ilk sıfırlamayı deneyebilirsiniz belki başlangıçtaki hareketi engeller

tekosis

#4
#include <16f877.h>
#fuses XT,NOWRT,NOPROTECT,NOWDT,NOLVP,NOCPD,NODEBUG,NOPUT,NOBROWNOUT
#use delay(clock=4M)

void main()
{  
   while(1)
   {
      if(input(pin_e0)) { output_high(pin_b1); delay_us(1000); output_low(pin_b1); }// olmayacak mı?
      if(input(pin_e1)) { output_high(pin_b1); delay_us(1464); output_low(pin_b1); } 
      if(input(pin_e2)) { output_high(pin_b1); delay_us(2000); output_low(pin_b1); } 
   } 
}
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

semih

Alıntı yapılan: f15eagle - 31 Mayıs 2013, 22:30:17
while(1) den önce output_b(0x00) yaparak ilk sıfırlamayı deneyebilirsiniz belki başlangıçtaki hareketi engeller

Denedim ama yine hareket ediyor. Kendi kendine dönüyo.