18f2520 analog veri okuma hatası

Başlatan kerem, 26 Kasım 2022, 18:23:08

ete

Bana kalırsa devre digital çalışıyor. senin devrende aslında digital çalışır ve bana göre bu işin doğru şekli belirli bir süre içinde gelen pulsları saymaktır. Yada iki puls aralığı zaman dilimi içinde puls gelip gelmediğine bakmak doğru yol olabilir.
Dönüş yoksa puls da olmayacaktır. Yanlızca sinyal seviyesine bakarsan motor öyle bir yerde dururki tamda çıkışın HIGH (veya LOW neyi takip ettiğine bağlı) verir ve dönüyor kabul edebilirsin.
Puls sayımı sıkıntı çıkarmaz. Senin için önemli ilan puls varmı yokmu diye bakmak.
Bunun gerekirse motor dönerken puls aralıklarına bakarak iki puls aralığından biraz fazla bir zaman dilimi içinde puls geliyormu bakmak. Her puls geldiğinde zamanı ölçen timer resetlenerek yeniden sayar hale getirilir ve pulsin durduğu noktada timer zaman aşımına uğrayıp kesme bayrağını set eder ve sende motorun durduğunu anlarsın.

Ete

kerem

ben şimdi deneme yapıyorum. motorum boştayken bile 2v civarı çıkış veriyor. buda dijital girişi high yapıyor bundan dolayı hep high çalışıyor yani digital olması mantıksız geldi bana . çünkü giriş voltajı enerji varken 2v altına düşmüyor..

kerem

puls sayımı mantıklı geldi ki bunuda analog girişle yapmak gerekiyor..

kerem

peki hocam bu puls ölçümünü tam olarak nasıl yapmak gerekir.
ayrıca fan sahibi önceki sayfada attığım resim gibi bir devre vermiş üretici. resimde ile paralel gitmek dogru olur mu

kerem

arci hocam eksi polaritede sinyali pice nasıl okutacağız.

aRci

pullup direç ile pc817 çıkışını pic e bağlayın sonrada mesala 1k direncin 1 ucunu bu hatta diğer ucunuda vcc ye balsanız yetecektir

Serk@n

Alıntı yapılan: kerem - 26 Kasım 2022, 22:52:50peki hocam bu puls ölçümünü tam olarak nasıl yapmak gerekir.
ayrıca fan sahibi önceki sayfada attığım resim gibi bir devre vermiş üretici. resimde ile paralel gitmek dogru olur mu

Bir timer ile belirli periyotlarda girişi kontrol ederek palsleri sayabilirsiniz.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

Alıntı yapılan: kerem - 26 Kasım 2022, 19:09:52


Resimde de şöyle bir problem var: 1K direncin optoya bağlanmayan ucu sinyal girişi olacak. Resimde sanki gnd gibi görünüyor.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

kerem

Alıntı yapılan: kerem - 26 Kasım 2022, 19:28:25


serkan hocam gerçe devre burda. 1k dirençten sonrası devrede olması gerekiyor. yani üretici bu fotoyu koymuş..

kerem

bende devamında 1k dirençten başlayarak çizdiğim resimdeki gibi pic in analog ucunu bağladım. okumaya çalıştım ama bir türlü okuyamadım.

kerem

şimdi ben bu giriş sinyalini bir countur a bagladım. mesela 100 saydığı zaman çıkışı aktif etsin dedim ama yinede çıkışı aktif etmedi nasıl bir mantık yürütmem gerekiyor

aRci

programı paylaşırsanız dah kolay çözüm bulabilirsiniz.

kerem

 ZV1064
;------------------------------------------------------------------------------

   BTFSS S9,1
   BRA ZV1064_COUNT

   CLRF ZV1064   ; 0 -> f
   CLRF ZV1064_1   ; 0 -> f
   BRA ZV1064_SETOUT


ZV1064_COUNT

; check positive edge

   MOVLB 0   ; bank 0
   BTFSC _FD1,7
   BRA ZV1064_SETFD
   BTFSS PORTB,2
   BRA ZV1064_SETFD
   BSF _FD1,7

   BTFSC S9,2
   BRA ZV1064_BACKWARD

   INCFSZ ZV1064,F   ; f + 1 -> f
   BRA ZV1064_SETOUT

   INCF ZV1064_1,F   ; f + 1 -> f
   BRA ZV1064_SETOUT


ZV1064_BACKWARD

   MOVLB 0   ; bank 0
   DECF ZV1064,F   ; f - 1 -> f
   INCFSZ ZV1064,W   ; f + 1 -> w
   BRA ZV1064_SETOUT

   DECF ZV1064_1,F   ; f - 1 -> f

ZV1064_SETOUT


ZV1064_SETFD

; check negative

   MOVLB 0   ; bank 0
   BTFSC PORTB,2
   BRA ZV1064_EXIT
   BCF _FD1,7

ZV1064_EXIT



;------------------------------------------------------------------------------
; IF1085
;------------------------------------------------------------------------------

   MOVLW 0
   MOVLB 0   ; bank 0
   SUBWF ZV1064_1,W   ; f - W -> W

   BTFSS STATUS,ZERO
   BRA IF1085_CHECK

   MOVLW 20
   SUBWF ZV1064,W   ; f - W -> W

IF1085_CHECK

; check greater
   MOVLB 0   ; bank 0
   BTFSS STATUS,CARRY
   BRA IF1085_FALSE

   BTFSC STATUS,ZERO
   BRA IF1085_FALSE


IF1085_TRUE

   MOVLB 0   ; bank 0
   BSF S9,3
   BRA IF1085_EXIT


IF1085_FALSE

   MOVLB 0   ; bank 0
   BCF S9,3

IF1085_EXIT

Serk@n

Alıntı yapılan: kerem - 27 Kasım 2022, 13:02:35serkan hocam gerçe devre burda. 1k dirençten sonrası devrede olması gerekiyor. yani üretici bu fotoyu koymuş..

Tamam. Sinyal sensörden geliyor. Optonun ledini sürüyor. Optonun transistör kısmı mcu ile kontrol edilecek. Bu durumda şema doğru.

Burada öncelikle sensörün nasıl çalıştığını iyice anlamak gerekiyor. Fanı yavaş yavaş elle döndürerek 2 nolu pine, yani sensör çıkışına DC voltmetre ile bakarak analog mu, dijital mi, bir turda şemada görülen iki pals nasıl geliyor vs. iyice anlayarak buna göre bir yazılım yapılması lazım.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

kerem

hocam baktım sinyal saydırdım girişten . sinyal geldikten 10ms sonra çıkış veriyor mesela dedim sinyal adedi 500 olunca sistemi kapat sistemi kapattı. pals saydırabiliyorum. ama pals gelip gelmediğini nasıl anlarım.

Powered by EzPortal