Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Pic analog input alıp vermek

Başlatan BALDIRCAN, 20 Temmuz 2006, 11:00:12

BALDIRCAN

Selamlar herkese. Foruma yeni kayıt oldum ve bu benim ilk mesajım.
Daha önce digital input ve outputlarla çalışmıştım ama ilk kez analog input ve outputlar kullancam.
Kullandığım pic pic16f876. Picbasic Pro ile analog bir input alıp yine başka bir porttan bu inputu aynen vermek istiyorum (Test amaçlı). Bunu gerçekleştirebilecek bir program örneği yazabilirseniz çok sevinirim.
Şimdiden teşekkürler

e3

Baldırcan arkadaşım öncelikle forumumuza hoşgeldin. ;) Açtığın konu PicBasicPro ile ilgili olduğundan açmış olduğun konuyu taşıdım.Sağlıcakla kal.İyi günler. :)
.eem.

Logan

BALDIRCAN, öncelikle aramıza hoşgeldin.Anladığım kadarıyla bir pinden gelen analog bilgiyi, başka bir pinden aynen iletmek istiyorsun.Bu projeyi, sadece pic kullanarak yapman imkansız.Çünkü 16f876'da ve diğer 16 serisi piclerde, DAC(Dijital-Analog Converter) yok.Sadece, ADC var.Onunda çalışma prensibi, analog inputtan girdiğin voltajı, verdiğin referans voltajı ve çevrim bitini baz alarak dijitale çevirmektir.Örnek olarak,PIC, 8 bit çevrimde MCU 5/256=0.019 V çözünürlükte çalışır.Yani analog inputa 0.19 V verirsen, ADRESH registerinin içeriği D'10' olur. Örnek programa gelince;
Define	LCD_DREG	PORTB     ;LCD data portu, B portu
Define	LCD_DBIT	0         ;LCD data biti 0. bit 
Define	LCD_RSREG	PORTB     ;LCD RS registeri B portu
Define	LCD_RSBIT	4         ;LCD RS biti 4. bit PORTB.0
Define	LCD_EREG	PORTB     ;LCD E registeri B portu
Define	LCD_EBIT	5         ;LCD E biti 5. bit PORTB.5

Define	ADC_BITS	10	'ADC çevrimi 10 bit
Define	ADC_CLOCK	3
Define	ADC_SAMPLEUS	50

isi_reg	var	word		' Okunanan ısı bilgisinin saklanacağı register
	TRISA = %11111111	' PORTA giriş
	ADCON1 = %10000010	' PORTA'nın bütün girişleri analog, sağa yaslamalı

	Pause 500		' LCD'nin hazırlanması için 0.5 saniye bekle
loop:	ADCIN 0, isi_reg		' 0. kanaldan oku, Yani porta.0
	Lcdout $fe, 1		' LCD'yi temizle
	Lcdout "Deger: ", DEC isi_reg	' Ekranda desimal olarak analog bilgiyi göster
	Pause 100		' 0.1 saniye bekle
	Goto loop		' Devam et
	End


16 serisi piclerde max. 10 bit çevrim vardır.Umarım soruna yanıt olmuştur. Kolay gelsin.
İmza.

tnen

Baldırcan bende aramıza hos geldin demek istiyorum.Analog girişi 10bit cözünürlükle rahatlıkla okuyabilirsin. Bununla ilgili örnekleri gerek board da gerek internette gerekse kullanacağın derleyicilerde bulabilirsin.Analog çıkış içinde bir DAC ile yapabileceğin gibi elde ettiğin degeri PWM olarak porta atar ve bu çıkışa bir direnç bir kondansatoru uygun bağlayarak analog çıkışıda halledebilirsin. Tabiki burda analog çıkışın 8 bit olarak değişir. Eğer analog çıkışını 8 bit çözünürlüğün üzerine çıkarmak istersen analog girişten okudugun degeri 2 ayrı pwm şeklinde sartlı olarak bastırıp R-C devresine verip bunlarıda opamp la toplarsan çözünürlüğün 8 bitinde üzerine çıkabilir.