PROTEUSTA ÇALIŞAN DEVREYİ GERÇEKTE ÇALIŞTIRAMIYORUM

maamed

Üye
Katılım
31 Ağu 2009
Mesajlar
39
Puanları
1
Yaş
36
İyi Çalışmalar Sayın Meslektaşlarım;

öncelikle yapmak istediğim devreden bahsedeyim. Dc motorun tersten döndürülmesiyle voltaj girişlerinden elde edilen gerilimi pic16f877'de adc bacaklarının birinden okutarak gerilim geldiği sürece örneğin bir ledin yanmamasını gerilim yok iken ise yanmasını istiyorum. bunun için sizlerle paylaşmış olduğum devreyi tasarladım ve programı yazdım. yalnız devreyi proteusta çalıştırırken gerçek hayatta çalıştıramadım. sorunun nereden kaynaklandığını bir türlü çözemedim. yardımlarınız için şimdiden teşekkür ederim.

Saygılarımla...
 

Ekli dosyalar

  • devre.rar
    17 KB · Görüntüleme: 29
Devreyi de gerçek hayatta kurduğunuz şekilde vermezsiniz " Motor ters dönünce voltaj girişinde hangi değerler arasında gerilim oluşuyor? Motor beslemesiyle pic beslemesinin gnd'leri ortak mı?" gibi soruları sorar dururuz.
 
Öncelikle cevabın için teşekkür ederim sayın arkadaşım. Devreye motoru entegre etmedim. aynen aşağıdaki resimdeki gibi devreyi breadboard üzerine kurdum ve çalıştıramadım. defalarca bağlantıları kontrol ettim, yeni breadboard aldım ona da güvenmeyip baskı devresini çıkartıp kurdum. Bir türlü çalıştıramadım.
DC motoru Tekstil işletmelerinde kullanılan dok adı verilen kumaşların verilen kimyasalı emmesi için döndürüldüğü bir sisteme entegre ettim ve maksimum 34 d/dk dönen bu sistemde 0 ile 2 volt arasında bir değer aldım.
Dediğim gibi bu devrenin voltaj yokken uyarı vermesini voltaj varken ise tepki vermemesini istiyorum. RA0 girişine hiçbir voltaj girişi yok kurduğum devrenin beslemeyi verdikten sonra uyarı vermesi lazım. Lakin çıkış almak istediğim pic'in RB0 bacağından milivolt seviyesinde çıkış alıyorum.
İlginiz ve alakanız için tekrardan teşekkür ederim. Yardımlarınızı bekliyorum. Saygılarımla...

#include <16f877a.h>
#device adc=10
#fuses XT,NOLVP,NOBROWNOUT,NOWDT,NOPROTECT,NODEBUG,NOPUT,NOWRT,NOCPD
#use delay(clock=4000000)
#use fast_io(a)
#use fast_io(b)

unsigned long int dijital;
float volt;

void main()
{
set_tris_a(0x01); //0000 0001
set_tris_b(0x00);

setup_adc(adc_clock_div_32);
setup_adc_ports(all_analog);

while(1)
{
set_adc_channel(0);
delay_us(50);

dijital=read_adc();
volt=0.0048828*dijital;

if(volt == 0)
output_high(PIN_B0);
else
output_low(PIN_B0);

}
}
 

Ekli dosyalar

  • devre.jpg
    devre.jpg
    19.2 KB · Görüntüleme: 31
Son düzenleme:
Nerede yanlış yapıyorum arkadaşlar sizce yorumlarınızı bekliyorum...
 
10 bitlik ADC için volt == 0 şartı ince ayar gibi gözüküyor. Şunları deneyin; ilgili bacağı 1k ya da 4.7 k ile gnd'ye çekip gerilimin 0 olduğundan emin olun. Ya da örneğin volt<0.5 gibi bir şart koyarak programın çalışıp çalışmadığını test edin.
 
Abidon arkadaşın dediğine katılıyorum. devrenin volt değeri hiçbir zaman sıfıra eşit olmayacaktır. Pic çok küçük bir değer bile okusa senin volt değerin sıfırdan büyük olur. Bu yüzden devre çıkış vermeye devam edecek. Ayrıca neden analog? devrene bir siviç yardımıyla tur saydırsan ve buna göre çıkış verdirsen daha kolay olur diye düşünüyorum.
 
Öncelikle verdiğiniz cevaplar için çok teşekkür ederim. Yoğunluktan dolayı sorduğum sorunun arkasında duramadım kusura bakmayın.
İş bu şekilde halletme konusunda inatlaştığımın farkındayım. Dediğiniz üzere programda karşılaştırma kısmında değişiklikler yaparak devrenin çıkış vermesini sağladım lakin bu sefer de dc motor çıkışını pic in adc portuna verdiğim zaman voltajda değişme olmasına rağmen çıkış veren portu pasif hale getiremiyorum.
makine üzerine bir aparat ile monte ettiğim dc motor, sistem varolan dönme işlemini gerçekleştirirken max 1-1,5 volt arasında voltaj veriyor. voltaj değerlerinin bu kadar düşük olması sistemin verimli çalışmasını etkiliyor. Burda pic in harmoniklerden uzak kalıp stabil çalışması için nasıl bir kalibrasyon yapabilirim. Ya da aldığım voltaj değerlerini opamlar sayesinde yükseltip mi pic e işlem yaptırmalıyım?

Saygılarımla...
Tasarlanan cihazı uygulamak istediğim sistemin videosunu aşağıdaki linkten indirebilirsiniz. Yapılabilecek bir sürü şey var lakin dediğim gibi sistemi gerçekleyemediğim için biraz inat ediyorum.
 
Son düzenleme:
Picin harmoniklerden etkilenmesi ile ADC bacağına değişken gerilim gelmesi farklı şeyler. Bilhassa sanayi ortamında harmonikler için tedbirler alınmalı. Anladığım kadarıyla motor çıkışındaki 0-2 V'u direk ADC'ye giriyorsunuz? İlk mesajımda anlatmaya çalıştığım buydu; simülasyon ile gerçek devre arasındaki farklar burda ortaya çıkıyor. O zaman 0-2 V' u opamp ile 0-5 V' a dönüştürün, opamp çıkışına da bir alçak geçiren filtre bağlayarak gerilimi dalgasız halde ADC'ye girin. Hassas kalibrasyon için opamp geribeslemesine direnç yerine pot koyabilirsiniz. Bu şekilde 0-5 V aralığındaki gerilim değişimini algılayabilirsiniz sanıyorum.
 
Evet direk adc girişine giriyorum. yükseltmek istediğim voltaj değerleri 0 ile 2 volt arasında herhangi bir değer olabileceğinden burada max alınan voltaj olan 2 voltu 5 volta yükseltmem işimi görecek midir? Teşekkürler
 
ADC'ye max. 5V gelecek şekilde ayarlarsanız işinizi görür sanıyorum.
 

Yeni mesajlar

Forum istatistikleri

Konular
127,964
Mesajlar
913,940
Kullanıcılar
449,609
Son üye
cherrywine

Yeni konular

Geri
Üst