12F675 ve 16F628 kullanarak yaptığım RF termometre

Başlatan saaalooo, 23 Şubat 2012, 01:44:55

saaalooo

  Sevgili ustalarım. Sayenizde bende bu pic olayını öğrenmeye başladım galiba. Paylaşmak istediğim devre iş yerimde bana çok gerekli olan dış ortam sıcaklığını yerimden kalkmadan ve sağa sola sensör kablosu monte etmeden okumamı sağlayan ve pic basic'teki birçok özelliği bir arada barındıran bence yeni öğrenmeye başlayan arkadaşlara da yardımcı olacak yararlı bir devredir.
  Şunu da itiraf etmem gerekiyor. henüz sıfırdan program yazdığım yok. fakat bana gerekli olan kısımları çeşitli ustalarımın programlarından ödünç  ;D alıyorum. Sonuçta bir şeyler başarabiliyorum. yaptığım cihaz çalışıyor. saygılar...


http://www.upload.gen.tr/d.php/www/sfcms2u1/675CALISANDS1820VERICI.pbp.html

http://www.upload.gen.tr/d.php/www/sfcms2u1/ds1820CALISAN628ALICI.pbp.html

http://www.upload.gen.tr/d.php/www/sfcms2u1/675.DSN.html

Maxim

Zararlı Web Sitesi Bloke Edildi

Buraya erişmeye çalıştınız:

http://www.upload.gen.tr/d.php/www/sfcms2u1/675CALISANDS1820VERICI.pbp.html


Bu, bilinen zararlı bir web sitesidir. Bu siteyi ziyaret ETMEMENİZ önerilir. Bu, ayrıntılı rapor bu sitedeki güvenlik risklerini açıklar.

Güvenliğiniz için bu web sitesi bloke edildi. Ziyaret edin Symantec Web sitesini ziyaret edin.



saaalooo


drmp


saaalooo

Ayriyeten verici kısmında besleme için kullanılan pil'in gerilimini de alıcı kısmında görebiliyoruz.
besleme gerilimini 9V'luk pil ile sağladığım için isiste çizmediğim gerilim bölücü kullandım.

[img]http://s13.postimg.cc/bgo20ryar/RF_Termometre.jpg[img]

saaalooo



Afedersiniz önceki mesajda resim göndermeyi becerememişim.


saaalooo


LCD ilk satır arızalı olduğundan pil seviyesini alt satıra da yazdırdım.

ento

Yeni başlamana rağmen güzel proje yapmışsın. RF-Sıcaklık ve 2 adet ayrı PIC kullanarak başarılı bir çalışma. Tebrikler. Kolay gelsin

aea_46

Kardes emegine sağlık. bu devreden ben de yapmak istiyorum. Yardımcı olabilirmisin?
KSU Elektronik Bölüm Öğrencisi A.K.A TA8AKU

aea_46

hex dosyası yok. hex dosyalarını atabilirmisiniz  ?
KSU Elektronik Bölüm Öğrencisi A.K.A TA8AKU

aea_46

Hocam elinize sağlık isis 7.10 kullanmama ragmen devreyi açamadım hata veriyor diger devreleri açıyorum. Yardımcı olabilirmisiniz.
KSU Elektronik Bölüm Öğrencisi A.K.A TA8AKU

Evren KILIÇ

Alıntı yapılan: saaalooo - 23 Şubat 2012, 17:40:59
Çok afedersiniz İp'yi değiştirdiğimden benim bilgisayarımda upload ettiğim site hakkında uyarı vermiyor.
Yeni linkler:


http://turbobit.net/oelktmovx9vn/675CALISANDS1820VERICI.pbp.html


http://turbobit.net/sdcb57cdbkzk/ds1820CALISAN628ALICI.pbp.html




http://turbobit.net/duyqswbgb0hg/675.DSN.html

Saygılar...

sanırım dosyalar silinmiş ayrıca 3 ayrı dosya yapacağınıza tek dosyayı sıkıştırıp yüklerseniz daha iyi olur bir defa da indirilebilir.
[email]evren1623@hotmail.com[/email]

muammeryildirim

Pic ve programlama konusuna yeni başladım.Bu  devreyi çalıştırmak için uğraşıyorum. Fakat dosyalar silinmiş. Yardımcı olurmusunuz.

bederik

Arkadaşlar dosyalar zamanla silindiği için kodları doğrudan yazıyorum. MCS'ye kopyalayıp compile ederseniz çalışacaktır.

Verici :
@ DEVICE pic12F675 'işlemci 12F675
@ DEVICE pic12F675, WDT_ON              'Watch Dog timer açık
@ DEVICE pic12F675, PWRT_ON  'Power on timer açık
@ DEVICE pic12F675, PROTECT_OFF  'Kod Koruma kapalı
@ DEVICE pic12F675, MCLR_OFF      'MCLR pini kullanılMIYOR.
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
DEFINE OSCCAL_1K 1  'bu  komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
DEFINE OSC 4
DEFINE SER2_BITS 9
DEFINE ADC_BITS 10    ' ADCIN resolution  (Bits)
DEFINE ADC_CLOCK 1    ' ADC clock source  (Fosc/8)
DEFINE ADC_SAMPLEUS 100 ' ADC sampling time (uSec)
include "modedefs.bas"
OPTION_REG.7=0
CMCON = 7
ANSEL = %00010011
ADCON0=%10000000
GPIO=0
TRISIO=%00000011
WPU=0
TRISIO.4=0
SENSOR VAR GPIO.5 'Sensör PORTB.7'ye bağlı
MESGUL VAR BYTE 'Çeşitli değişken tanımlamaları
BILGI VAR WORD
A VAR BYTE
B VAR BYTE
C VAR WORD
d var byte
E VAR BYTE
pause 2000

BASLA: 'Dongüye gir.
ADCIN 0,C
d=C.LOWBYTE
E=C.HIGHBYTE
OWOUT SENSOR,1,[$CC,$44] 'Sensöre sıcaklığı okumasını söyle.
BEKLE: 'Sensör hazır olana kadar bekle.
OWIN SENSOR,4,[MESGUL]
IF MESGUL=0 THEN
GOTO BEKLE
ENDIF
OWOUT SENSOR,1,[$CC,$BE] 'Sensöre okuduğu değeri göndermesini söyle.
OWIN SENSOR,2,[BILGI.LOWBYTE,BILGI.HIGHBYTE] 'Gelen 16 bitlik bilgiyi al.
A=BILGI.LOWBYTE
B=BILGI.HIGHBYTE
SEROUT2 GPIO.4,396,["AA",A]
SEROUT2 GPIO.4,396,["AA",A]
SEROUT2 GPIO.4,396,["AA",A]
SEROUT2 GPIO.4,396,["BB",B]
SEROUT2 GPIO.4,396,["BB",B]
SEROUT2 GPIO.4,396,["BB",B]
SEROUT2 GPIO.4,396,["CC",D]
SEROUT2 GPIO.4,396,["CC",D]
SEROUT2 GPIO.4,396,["CC",D]
SEROUT2 GPIO.4,396,["DD",E]
SEROUT2 GPIO.4,396,["DD",E]
SEROUT2 GPIO.4,396,["DD",E]
GOTO BASLA
END

Alıcı :
@ DEVICE pic16F628A 'işlemci 16F628
@ DEVICE pic16F628A, WDT_on 'Watch Dog timer kapalı
@ DEVICE pic16F628A, PWRT_OFF 'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
define OSC 4
DEFINE SER2_BITS 9
include "modedefs.bas"	'SERİN VE SEROUT KOMUTLARININ ÇALIŞMASI İÇİN GEREKLİ KÜTÜPHANE DOSYASI
DEFINE LCD_DREG PORTa
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
define LCD RWREG    PORTB   'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    1    
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 4000
DEFINE LCD_DATAUS	 250
PAUSE 1000
LCDOUT $FE,$40,6,9,9,6,0,0,0,0 'Derece gösterimi için özel karakteri LCD'ye yüklüyoruz.
BILGI VAR WORD
ISARET VAR BYTE
C VAR WORD
d var word
VOLT VAR WORD
MVOLT VAR word
ONDA1 VAR WORD
ONDA2 VAR WORD
ARA VAR WORD
DEGER VAR BYTE
TRISB=%11011000	'PORTB TAMAMI GIRIS
TRISA=%11111111
CMCON=7			'KOMPARATÖR PİNLERİ DİJİTAL GİRİŞ VEYA ÇIKIŞ
LCDOUT $FE,$1,"BEDRI OZLER " 'LCD ekranın alt satırını temizle
PAUSE 1000
LCDOUT $FE,$1,"             " 'LCD ekranın alt satırını temizle
PORTB.4=1
BASLA:
ISARET="+"
serin2 PORTB.7,396,[WAIT ("AA"),BILGI.LOWBYTE]
serin2 PORTB.7,396,[WAIT ("BB"),BILGI.HIGHBYTE]
serin2 PORTB.7,396,[WAIT ("CC"),C.LOWBYTE]
serin2 PORTB.7,396,[WAIT ("DD"),C.HIGHBYTE]
bilgi=bilgi-64
C=C+1
d=c*3
    volt=(d*/1250)/100
    mvolt=volt//10
    mvolt=mvolt+1
    volt=volt/10
IF MVOLT>9 THEN
VOLT=VOLT+1
MVOLT=0
ENDIF
IF MVOLT>11 THEN
VOLT=VOLT-1
MVOLT=9
ENDIF
if c<477 then
LCDOUT $FE,$1,"Pil Bitiyor:",Dec2 VOLT,",",DEC1 MVOLT 'LCD ekranın alt satırını temizle
else
LCDOUT $FE,$2,"Pil = ",Dec2 VOLT,",",DEC1 MVOLT,"      " 'LCD ekranın alt satırını temizle
endif
HIGH  PORTB.5
PAUSE 500
LOW PORTB.5
IF BILGI.BIT13=1 THEN 'Sıcaklık negatif ise
ISARET="-" 'İşaret artık + değil -
BILGI=~BILGI 'Gelen bilgideki bitleri tersle, 1->0, 0->1
BILGI=BILGI+1 'Bilgiyi 1 arttır.
ENDIF
ARA=BILGI*625 '12 bit hassasiyet kullandığımız için her değer 0.0625 santigrat dereceye denk geliyor.
DEGER=DIV32 10000
ARA=BILGI*625
ONDA1= DIV32 1000
ARA=BILGI*625
ONDA2= DIV32 100
ONDA1=ONDA1-(DEGER*10)
ONDA2=ONDA2-((dEGER*100)+(ONDA1*10))
LCDOUT $FE,$C0,"          " 'LCD ekranın alt satırını temizle
LCDOUT $FE,$C0,ISARET,#DEGER,".",dec1 ONDA1," ",0,"C","  ",dec2 volt,",",dec1 mvolt
PAUSE 200
GOTO BASLA 'BASLA etiketine dön
END

kaganayanoglu