pcbway

16f84a çizgi izleyen robotu yaptım. programında küçük bir hata. Yardım edermisin

Başlatan neomanyak, 31 Mart 2012, 22:50:03

neomanyak

Merhaba. ben 16f84a pic ile çizgi izleyen robot projesi aldım üniversitemden. bi güzel yaptım projeyi. çalışıyor fakat programdan dolayı diye düşünüyorum büyük sorrun var. çok hızlı hareket ettiğinden sanırım çizgiyi algılamayadan başını alıp gidiyor robot duvara kösüyor :) PWM araştımdım 16f84a ile ama yapamadım. devrede kullandığım şema aşağıdaki. ve önceden kullandığım kodlarıda yazıyorum. yardımcı olursanız çok sevinirim 1 hafta sürem kaldı
Kodlar için picbasic dışında programdada yazılabilir dili. :) teşekkür ederim şimdiden
http://imageshack.us/photo/my-images/846/adszhxs.png/


INPUT PORTB.0
INPUT PORTB.1
INPUT PORTB.2
OUTPUT PORTB.3
OUTPUT PORTB.4
OUTPUT PORTB.5
OUTPUT PORTB.6
SYMBOL SOLCNY =PORTB.0
SYMBOL ORTACNY =PORTB.1
SYMBOL SAGCNY =PORTB.2
SYMBOL SOLILERI=PORTB.3
SYMBOL SOLGERI =PORTB.4
SYMBOL SAGILERI=PORTB.5
SYMBOL SAGGERI =PORTB.6
BASLANGIC:
GOTO DUZGIT
ANA:
IF SOLCNY=1 THEN SOLA_DON
IF SAGCNY=1 THEN SAGA_DON
IF ORTACNY=1 THEN DUZGIT
GOTO ANA
SOLA_DON:
HIGH SAGILERI
LOW SAGGERI
LOW SOLILERI
LOW SOLGERI
GOTO ANA
SAGA_DON:
HIGH SOLILERI
LOW SOLGERI
LOW SAGILERI
LOW SAGGERI
GOTO ANA
DUZGIT:
HIGH SOLILERI
HIGH SAGILERI
LOW SOLGERI
LOW SAGGERI
GOTO ANA
END

yazici67

CNY70 gibi elemanlar analog elemanlar olduğu için rengin doyumuna, ortamdaki ışık miktarına bağlı olarak 3.x volt gibi değerler verebilirler.Bunun için ADC ile CNY70 girişini kontrol etmelisin.Yoksa PIC in CNY_ORTA yı 1 kabul etmesi için girişin 4.70 voltun üstünde olmalıdır.Veya Basit bir şekilde Analog-TTL dönüştürücü kullanabilirsin.En basitinden bir opampı +5 volt ile besle.Noninverting girişe CNY70 çıkışını uygula.İnverting girişine de referans voltajı ( pot ile ayarlarsan en uygun değere ) ( veya pot ile girişi 1.25 volta ayrla ) verirsin.Çıkışıda PIC e yollarsın.

neomanyak

Öncellikle teşekkür ederim.her cny için ayrı opamp devresi olacaksa LM324 işimi görür sanırım ?

Ama şöylede bişey var. robotu elimle kaldırıp sensörleri havadayken byaz üstünde siyah yolu gösterdiğimde doğru çalışıyor. yani; ortacny gösterdiğimde 2 motor , sağ cny gösterdiğimde sol motor , sol cny gösterdiğimde sağ motor çalışıyor. fakat yere koyunca herşey değişiyor. sadece hızlı çalışmasından kaynaklı olduğunu düşünüyorum. fakat bi türlü yavaşalatamadım. motora direnç koyduğumda hiç çalışmıyor , PWM işini açıkcası beceremedim 16f84a da.

yazici67

Yavaşlatmak istiyorsan yazılımla oynamalısın.Ama dediğim opamp devresini yaparsan bu tip bir sorunun kalmaz.Ayrıca havadayken ışık yansıması olmuyor olabilir.Yerdeyken beyazın üstünden yansıyan ışınlar siyah algılamayı da engelliyor olabilir.Bir de sensörleri yere olabildiğince yakın yerleştir.
Not: Opamp çeşidi önemli değil zaten karşılaştırma yapsa yeter.LM324 dörtlü olduğundan uygundur.Referansı bir pot ile ayarlarsan sonradan düzeltme problemin olmaz.

neomanyak

tamam devresini şimdi çiziyorum akşama inşallah iyi bi geridönüş yaparım :D

neomanyak


yazici67




yazici67



yazici67

Biraz araştırısan da sonuç bulabilirsin mesela Analog to TTL converter; Analog to digital converter olarak aratırsan bir sonuç bulabilirsin...