Arkadaşlar,
tasarım yapan arkadaşlar bilirki tek bir işlemci ile bir çok donanım özelliği olan cihaz tasarlamak oldukça meşakatli bir iştir. Yine böyle bir nedenden olsa gerek 1 adet sadece input/output özelliği olan pic portuna, 10 adet buton nasıl yerleştirilir ? Şema ve buton okuma metodu fikri olan arkadaş var mıdır?
butonlar dışarıda değişik dirençlerle gerilim bölerler.
O pinde ADC okuması ile hangi butona basıldığını anlayabilir.
(http://letsmakerobots.com/files/userpics/u12412/ScreenShot030.png)
@Allegro hocam,
portun adc özelliği yok. Yada tüm adc özelliklerinin tümü kullanılıyor gibi düşünün.ADC kullanmadan. portunuz sadece input yada output olarak kullanılan bir port. port pinin bir özelliği yok.
ADC özelliği olmayan pinde, RC ile süre ölçümü yapılarak butonlar okunabilir. butonlar Ryi değiştirir
https://www.picproje.org/index.php?topic=10074.0 (https://www.picproje.org/index.php?topic=10074.0)
@t2 hocam,
linkte şemaya ulaşamadım eklemeniz mümkün mü ? Şema üzerinden konuşsak nasıl olur ?
(http://www.devreyapimi.com/wp-content/uploads/2011/12/pot.gif)
http://www.devreyapimi.com/2011/12/20/picbasic-pro-pot-komutu/ (http://www.devreyapimi.com/2011/12/20/picbasic-pro-pot-komutu/)
Bu yöntem biraz fazla uğraştırıcı geldi hocam. 1-0 düzeyinde register'a kayderek o butonun basılı olup olmadığını anlayacak başka bir çözüm olmalı diye düşünüyorum. Ama ne ? Fikirleriniz..
Elinde 0, 1 ler var birde zaman tutabilme yeteneğin var. Başka nasıl yapabilirsin? Analog yok, tek pin ve sen başka yöntem istiyorsun. Sen araştır bulursan bizi de bilgilendir lütfen.
Butonların hepsi aynı pine bağlanır.
10 SANİYE içindeki basma süresi dikkate alınır
1. buton basılmak isteniyorsa 1 kere basılır tekrar basılmaz.
2. buton basılmak isteniyorsa 2 kere basılır.
3. buton 3 kere basılır..
4. buton ..
..
PIC bakar, 10 saniyede kaç defa basılmış? buna göre, hangi buton basılmış . karar verebilir.
Aslında öyle olacaksa 10 tane değil tek buton yeterli olur.
Bir ara tek pinle 7 kadar buton okumak zorunda kalmıştım.
İşlemciyi sıkmayacak bir int rutini eşiliğinde çalışıyordu.
555 vs bir çiple RC osc kuruyorsun. osialayon frekansını 10 adet butonla seçtiğin direnç belirliyor.
Yapman gereken frekans okumak. Sanayi ortamında mükemmel çalışıyordu ve işlemciden metrelerce uzaktaki butonları okuyordu.
@z hocam,
şema verme imkanın var mı ? Bir deneyelim bakalım, nasıl sonuç alcaz ? Interruptta okuma işi mantıklı geldi.
Bildiğin 555 devresi.
(http://www.555-timer-circuits.com/images/555-Osc-1.gif)
Bu mantıklı geldiyse,hariçten 555 takılıp frekans okunacaksa, RC bağlayıp onun süresini okumak daha kolay olur. Frekans yerine süre okunacak.
Uygulamamda yanlış hatırlamıyorsam gene frekansı ADC ile okumuştum.
İlk önce Allegronun açıkladığı mantıkla yaptım fakat uzak mesafedeki dirençlerden gelen sinyal (gerilim) çok gürültülü idi ve çuvalladı. Sorun çözülebilirdi ama üzerine eğilmedim. 555 ile yaptım.
555 i butonların olduğu yere koydum 5v osc sinyalini taşıdım.
Mesafe kısa olursa 555'e de gerek yok. Tek pinle OG'nin verdiği şema ilede yapılır yada ADC ile doğrudan da okunur.
O zaman
@Allegro hocamın belirttiği şemadaki gibi kısa mesafede interrupttan süre yada frekans okunarak çözülür diyorsunuz. Yanlış anlamadım değil mi?
Tek pinle 10-buton nasıl okunur bilmiyorum ama çinli 4 pinle 65-buton okuyor. Üstelik sadece buton ve diyotlarla, ADC kullanmadan.
Proteus simülasyonu var deneyebilirsiniz.
Şema resmi:
(http://i.hizliresim.com/94Bv3r.png)
Simülasyon, kaynak kod vs.
http://s3.dosya.tc/server3/i5fm12/4-65key.zip.html (http://s3.dosya.tc/server3/i5fm12/4-65key.zip.html)
HC597 spi 8 data okunabilir 3 pin ile.