Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

pic 'li vumetre

Başlatan POWER, 24 Temmuz 2010, 14:38:20

POWER

arkadaşlar,
pic kullanarak(877 olabilir)vumetre için proğram yazacağım.fakat daha önce hiç denemediğim bir konu.örnek bir kod varmı acaba?
TB6BKG

POWER

öncelikle cevap için teşekkürler.vumetre piranfi çıkışına bağlanacağı için max voltaj 2v olacak.bundan dolayı,ben 2v opampla 5v yükseltmem gerekiyor doğrumu?10 led kullanacağım içinde 5/10=0,5v yapıyor.her 0,5v luk artışta bir ledi yakacak şekilde proğramı yazarsam olacak gibi görünüyor.doğru yoldamıyım acaba?
TB6BKG

stlg

bencede lm3914 yeterlı olur birde a/d biriminin cevirme hızı ve diger işlemler vumetrenizi yavaslatabilir
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

POWER

başka işlemlerde yapılacak(anfinin ses seviyesini ayarlamak gibi) o yüzden picli yapmaya çalışıyorum.tatmin edici bir sonuç alamazmıyım pic ile?
TB6BKG

stlg

Yazdıgın programda gecikme kullanmamaya calıs ,bu devreyi yapmadan once proteusta denemeni tavsiye ederim
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

POWER

arkadaşlar bir şeyler yapmaya çalıştım ama tam anlamıyla tatmin edici değil sanırım.esasında ete hocanın adc ders notlarındaki proğrama eklemeler yaptım
tüm dosyalar linkte.bakabilirmisiniz?Birde piranfi çıkışı max. 2v. bunu opampla 5v yükseltip işlem yapmak hassasiyeti arttırmazmı?
TRISA=%00000001
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

'-------------------------------------------------------------------------------
@ DEVICE pic16F877
@ DEVICE pic16F877, WDT_on
@ DEVICE pic16F877, PWRT_ON
@ DEVICE pic16F877, PROTECT_OFF
@ DEVICE pic16F877, XT_OSC
'-------------------------------------------------------------------------------
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
define LCD RWREG    PORTB   'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    2       'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	1		'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor

DEFINE	ADC_BITS	10	    'A/D çevirim sonucu kaç bit olacak
DEFINE	ADC_CLOCK	3	    'Clock kaynağı (3=rc)
DEFINE	ADC_SAMPLEUS	100	'Örnekleme zamanı mikro saniye cinsinden.
'-------------------------------------------------------------------------------
ADCON1=%10001110 '7. bit 1 yapıldı 10 bit sonuç almak için.
'-------------------------------------------------------------------------------
HAM    var  word  'ADC den okunan ham digital değer.                                                                        
VOLT   var  word '16 bit değişken tipi seçtik kullanacağımız değer 10 bit olacak.
Mvolt  var  byte
'-------------------------------------------------------------------------------
Low PORTB.2		' LCD R/W line low (W), şemada direkt GND ye bağlanabilir.
LCDOut $FE,1	' LCD de CLS yapar
pause 200       ' LCD nin açılması için gerekli süredir.
'------------------------------------------------------------------------------- 

BASLA:
          
ADCIN 0,HAM  '0 nolu kanaldan Analog değeri oku ve RAW değişkenine aktar.
      
      
      IF VOLT=0 AND MVOLT=0  THEN     '0
         PORTD=0
         PORTC=0
ENDIF
      
      IF VOLT=0 AND MVOLT=2  THEN    '0,2
         PORTD=1
         PORTC=0
ENDIF 
      
      IF VOLT=0 AND MVOLT=4 THEN     '0,4
         PORTD=3
         PORTC=0
ENDIF
      
      IF VOLT=0 AND MVOLT=6 THEN     '0,6
         PORTD=7
         PORTC=0
ENDIF
      
      IF VOLT=0 AND MVOLT=8 THEN     '0,8
         PORTD=15
         PORTC=0
ENDIF      
      
      IF VOLT=1 AND MVOLT=0 THEN     '1
         PORTD=31
         PORTC=0
ENDIF
      
      IF VOLT=1 AND MVOLT=2 THEN     '1,2
         PORTD=63
         PORTC=0
ENDIF      
      
      IF VOLT=1 AND MVOLT=4 THEN     '1,4
         PORTD=127
         PORTC=0
ENDIF
      
      IF VOLT=1 AND MVOLT=6 THEN     '1,6
         PORTD=255
         PORTC=0
ENDIF      
      
      IF VOLT=1 AND MVOLT=8 THEN     '1,8
         PORTD=255
         PORTC=1
ENDIF
      
      IF VOLT=2 AND MVOLT=0 THEN     '2
         PORTD=255
         PORTC=3
ENDIF          
     
BAK: 
      IF ADCON0.2=1 THEN BAK 'Çevirme işlemi tamamlanınca Adcon0.2=0 olacak.
      
      lcdout $FE,1," HAM =",# HAM
      Ham=ham+1 'Hesap kolaylığı açısından Ham değerini bir artırdık
      
'Okunan değer 0-5 volt için 0-1024 olacağından okunacak değer başına volt değeri
' 5/1024 =0,0048828 olacaktır. Sayı çok küçük olduğundan bu değeri 1000 ile 
'çarpmalıyız. Ohalde (Okuma/V)= 4,8828 bu değeri 256 ile çarpar isek 
'4,8875 x 256 = 1250 değerini buluruz. Bu değeri kullanarak 32 bit işlem yapabiliriz.
'1250 değeri (5/1024)*256 değerine karşılık gelmektedir. 
'sonuçta ADC HAM değerini bu sayı ile çarpıp 256'ya bölersek sonucu elde etmiş oluruz.
'ancak sonuç 32 bitlik sınırda olduğundan bu işi 32 bit çarpma ile yapıyoruz ve orta
'baytı aldığımızda ise zaten sayının 256'ya bölünmüş halini aldığımızdan başka bir
'işlem yapmadan sonucu elde etmiş oluruz.

'      Volt=(ham */ 1250)/100 'Ham ile 1250 yi 32 bit olarak çarp ve 100'böl
'      Mvolt=volt//10
'-------------------------------------------------------------------------------
      Volt=(ham */ 1300)/100 
      Mvolt=volt//10


'Burada yeni bir komut veya işlem şekli görüyorsunuz. MOD alma yani (//) kalan bulma
'Bir sayını başka bir sayıya bölünmesinden sonra kalan miktarı bulma işlemine MOD
'alma denir. Örnek W=A//1000 , A'yı 1000'e böl kalanı W değişkenine koy anlamındadır.
'bizde yukarıda Milivolt değerini bulmak için volt (10 ile çarpılmış halini) 10'a 
'bölüp kalanı Mvolt değişkenine yerleştiriyoruz.

      Volt=Volt/10

      LCDOUT $FE,$C0," VOLT=",#VOLT,",",# Mvolt
      PAUSE 500
     
      
      GOTO BASLA


http://rapidshare.com/files/409000668/VUMETRE.rar
TB6BKG

stlg

5v ta yukseltmene gerek yok ,eger harici referans girisini kullanırsan hassasiyetin artar
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

Arcatera