MicroC PWM Komutları İle Yaşadığım Problem

Başlatan korkmazlar23, 21 Nisan 2016, 22:26:15

korkmazlar23

Merhaba arkadaşlar benim almış olduğum ödev tek katlı otopark görevi microc de 16f877a üzerinde servo motoru kontrol ederek bunu gerçekleştirmek istiyorum ancak pwm komutlarını anlamadım -pwm yapısını biliyorum ama komutlarının ne işe yaradığını kavramış değilim- amacım servo motoru butonla 90 derece döndürmek 5 saniye bekletip tekrar eski konumuna yani 0 dereceye getirmek sizden ricam pwm konusunu en bastan guzel bır sekılde yazacak ve kodlarının tek tek ne ıse yaradıgını anlatacak olan var mı acaba projem ustundende yapabilirsiniz çok yardımı dokunur şimdiden teşekkürler..

karacan451


  PWM kullanman şart değil.MicroC bilmediğim o pwm konusunda yardımcı olamam.Her neyse şöyle yapabilirsin

Servo motorunun 45 derece döndürmek istediğini düşünelim

1750 us high yapacaksın sonra
18250 us low yapacaksın böylece 45 derece döner. Toplam süre 20000 olacak.

90 derece döndürmek istersen

2000(us) high yapacan sonra
18000(us) low yapacan. Toplam süre 20000 olacak.

Sana verdiğim linkte  ordan "1-2 ms Servo Motorların Pals Sürelerine Göre Açıları" başlıklı tabloya bak.


korkmazlar23

Alıntı yapılan: karacan451 - 21 Nisan 2016, 23:47:08
  PWM kullanman şart değil.MicroC bilmediğim o pwm konusunda yardımcı olamam.Her neyse şöyle yapabilirsin

Servo motorunun 45 derece döndürmek istediğini düşünelim

1750 us high yapacaksın sonra
18250 us low yapacaksın böylece 45 derece döner. Toplam süre 20000 olacak.

90 derece döndürmek istersen

2000(us) high yapacan sonra
18000(us) low yapacan. Toplam süre 20000 olacak.

Sana verdiğim linkte  ordan "1-2 ms Servo Motorların Pals Sürelerine Göre Açıları" başlıklı tabloya bak.
buradaki program microc ile mi yoksa ccs c ile mi onu anlamadım hocam daha ayrıntılı bahsetseydin keşke ve verdiğin link için, yorumun için teşekkürler

karacan451


Servo Motorun data pini  portb.0  bağlı diyelim o pini belli süre +5 vercen sonra 0 volt yapacan. Led yakıp söndürme gibi olacak.

korkmazlar23

dediğin gibi yapmayı denedim hocam ama malesef olmadı böyle bi kod yazdım ancak isiste etkisiz hatalarım nerede acaba ?



void main() {

unsigned int i,a;


//0 derece
if (ra1_bit==1){
for(i=0;i<50;i++)
{
PORTB.F0 = 1;
Delay_us(800);
PORTB.F0 = 0;
Delay_us(19200);
}
}

//90 Derece


if (ra0_bit==1) {
for(a=0;a<50;a++)
{
PORTB.F0 = 1;
Delay_us(1500);
PORTB.F0 = 0;
Delay_us(18500);

}
}
}

karacan451

 Ben microc bilmediğim için hata nerede bilmiyorum.

Geçen sene proje ödevi için servo kontrol devresi yapmıştım. Herhangi butona bastığın servo motor belli açıda dönüyor.Baskı devre ve kodlar sana gönderiyom.

Kodları  Microcode yazdım.Bide proteus 8 sürümü yükle altsürümde çalışmıyor.

karacan451


PIC16F84A kullandım. Pıc hızı 4 MHZ olacak.

korkmazlar23

proteusun 8.0 olduguna emın mısın bende 8.0 var ve calışmıyor ayrıca cok tesekkur ederım sımdıden

karacan451

Fvet . Önce proteus aç sonra dosyayı proteus sürükle öyle açar.

korkmazlar23

dosyayı proteusa surukleyemıyorum olmuyor open projectle acmaya calısıyorum yıne programı kapat hatası alıyorum

karacan451


karacan451

 Haklısın proteus 8 demo sürümü yükledim bende çalışmadı bende devre şemasının fotoları çektim ve hex dosyası bide kodları ekte sana veriyom artık baskı devre kendin çizersin.

korkmazlar23

Hocam eyvallah çok teşekkürler yalnız bir şey daha rica edeceğim senden banada çok yardımcı oldun Allah razı olsun  :) ;D

sanırım sadece hex dosyasını atmışsın üstünde değiştirme yapamıyorum kodlarıda atarsan üzerinde değiştirmede yapabilirim böylelikle öğrenmiş olurum benim için daha iyi olur

karacan451

Kodlarda var. Microcode yükle oradan değişiklik yaparsın.

Powered by EzPortal