PIC12F675 ADC kontrollü Shift Register Limit'leme..

Başlatan onurinci, 18 Mayıs 2024, 18:53:40

onurinci

selam Forum.. projem ilerledikçe bir aksaklık keşfettim. sağolsun @alisumer üst Limit için yardımcı oldu. fakat çip yazılım ile Shutdown oluyormuş.aşağı inerken çip crash olup iletişimi kesiyor. bütün senaryoyu tekrar gözden geçirdim,

şimdi bana gerekli olan Pot'un en dip başlangıç kısmı HEX80yada DEC127 potun en son dayanan noktasıda HEXBF yada DEC191 olmanı , yardımlarınıza açığım..

DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
#LIST_12F675
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG

TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00110001 ;: ADCON0= %10000000
OPTION_REG.7= 1 : WPU= %00010110

DEFINE   ADC_BITS    8
DEFINE   ADC_CLOCK   3 
DEFINE ADC_SAMPLEUS 50

RAW VAR Byte        '  ADC için değişken

'Değişkenler tanımlanıyor 

Symbol CLK=GPIO.1 
Symbol DTA=GPIO.2 
Symbol LATCH=GPIO.4


Start:                           ;H80 başlangıç  D128

 ADCIN 0, RAW                     ' Porta-AN0 dan okunan değeri RAW değiskeni içine ata

 RAW= RAW *191/255                 ; bu satır H63 Limitör için konuldu   HBF D191

CHK: 

    If ADCON0.2=1 Then CHK      ' Çevrim bittiginde alt satırdan devam edecek
;;    SHIFTOUT DTA,CLK,1,[%10111111] ' Sending
    SHIFTOUT DTA,CLK,1,[RAW]     

    PulsOut LATCH,1 
    Pause 500 
    
    GoTo Start 
  End

ete

Anladığım kadarı ile pot sıfır noktasında iken hesaplanan değer 127 olsun pot maksimumda iken 191 olsun istiyorsun.
Hemen iki sayının farkını al. 191-127=64. Bu rakam Potun sıfır noktasından maksimum noktasına gelinceye kadar üreteceği ADC değeri olacaktır. Buna her zaman 127 eklenirse senin istediğin olacaktır.

Pot un 0-255 adc değerine karşılık biz 0-64 hesaplamamız gerekecek. Bunun için
64/255=0,2500980392 buluruz. Bu sayıyı 256 ile çarparak bir parametre oluşturacağız.
Çarpım sonucu 64,25098 hesaplanır. Bu sayıyı 643 olarak kullanıp hesap sonucunu 10 a bölmemiz gerekcek.
İşte formül, RAW=127+((RAW*/643)/10)
Bu formül sana 127-191 aralığında potun konumuna göre değer hesaplayacaktır.

Ete

onurinci

hocam baya baya oldu , fakat pot'un en başlangıç kısmı h7F'ten başlıyor ,yani h80 değil..

mehmet

Şahsi düşüncem, pot ortada iken
0dB(32) değeri yollayın.
Tasarımınızı bilmiyorum. Daha uygun
olacağını düşünüyorum.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr

onurinci

Pot'un GND ayağına 200 Ohm direnç koyarsam simulasyonda oluyor gibi. ShutDown biti hep 0'da kalması icap ediyor , bir kere bile 1 olursa , enerjiyi kesip yeniden vermek icap ediyor..geri kalan 0....63 Bit gayet sağlıklı. devrede uzakta Pazartesi deneyeceğim.

ete

Pot'un 7F den başlamasının sebebi öyle hesaplamamızdan kaynaklanıyor.

Doğru hesap bu durumda;
191-127=64 yerine 191-128=63 ve devamında;
63/255=0,247058824 ,   0,247058824*256=63,247 bunu 633 olarak kullanacağız.
Formül:  RAW=128+((RAW*/633)/10)  şeklinde olacaktır.

Ete

alisumer

#6
bir konu başlığında başlatıp sonra başka konu başlığını niye açtınızki onu anlamadım ama
kısa yoldan RAW=(RAW>>2)+128 işe yarar gibi sanki
Hep meraktan

onurinci

@ete hocam tam isabet ,klavyenize sağlık, başka entegrelerimde var bu formül çok işime yarayacak , çok teşekkür ederim..

onurinci

#8
@alisümer  hocam haklısınız , farklı başlık açmak hiç stilim değildir , @parametre arkadaşımız başlıkta Pic adı olsaydı demiş, başlığı değiştirmeyi başaramadım, sonrada edit atıp yorumunu kaldırmış...   sizin önerinizde gayet sağlıklı çalışıyor çok teşekkür ederim..

parametre

#9
 amacım konuyu daha iyi öğrenmeleri bu arada hassasıyetınız ve gerı donusunuz ıçın tesekkur ederım

Powered by EzPortal