Jalv2 ile Termometre (12F675 ve LM35)

Başlatan ByTEK, 21 Aralık 2011, 21:05:22

ByTEK

Merhaba Arkadaşlar..

12F675 kullanarak LM35 sensörlü, 1 derece hassasiyetli, 7 segmentli, 0..99 arası ölçüm yapabilen termometre devresi gerçekleştirdim.. Aslında bir arkadaşım okul ödevi olarak istemişti :) Bu uygulamada 12F675 kullanmamın sebebi Jalv2 ile port çoklama yöntemi kullanarak 7 segmentli display kullanımı ile ADC kullanımına örnek teşkil etmesini istediğim içindir.

Devre 0 ile 99 derece arasındaki sıcaklıkları ölçebilmektedir. Eğer derece 100 ve üzerinde ise Ekranda "--*" olarak gösterecektir. LM35 çıkışı Basit RC devresi ile filtrelenmiştir. Yazılımsal olarakta 10 kez toplanıp ortalaması alınmıştır. Port Çoklama işlemi için 74LS164 kullanılmıştır.

Baskı devre, Çalışma Videosu, Devre Şeması, Kaynak Kodları ve Gerekli Açıklamaları yer almaktadır.

- İndirme Linki : Jalv2 ile Termometre (12F675 ve LM35) Dosyalarını İndir



Çalışma Videosu :


---------------------------------------------------------------
-- Programın Adı : 1' hassasiyetli LM35 Termometre Devresi
--                 (0..99) arası Ölçüm
-- Yazan         : Sercan TEK  -  Turkey/Tekirdağ
-- Tarih         : 19.12.2011
-- chip          : 12F675 ve 74hc164
-- Derleyici     : jal 2.4p-alpha
---------------------------------------------------------------
-- ------------------------------------------------------------
include 12f675
pragma target clock 4_000_000        -- kristal 4 Mhz
pragma target OSC  INTOSC_NOCLKOUT   -- dahili OSC
pragma target WDT  disabled          -- watchdog Kapalı
pragma target MCLR INTERNAL          -- mclr kullanılmıyor

enable_digital_io()

pin_A0_direction =  input
pin_A1_direction =  output
pin_A2_direction =  output
pin_A3_direction =  output
pin_A4_direction =  output
pin_A5_direction =  output

alias birler is pin_a5                   -- birler hanesi pin_a5
alias onlar  is pin_a4                   -- onlar  hanesi pin_a4

----------------------------- ADC İşlemleri ---------------------------
const byte ADC_NVREF = ADC_NO_EXT_VREF   -- Harici Referans Yok
const ADC_HIGH_RESOLUTION = true         -- Çözünürlük 10 bit
include adc                              -- adc kütüphanesi Dahil
adc_init()                               -- adc hazırlanıyor

const  byte  ADC_CHANNEL = 0             -- 1 adet kanal kullanılacak (AN0)
set_analog_pin(ADC_CHANNEL)              -- AN0 analog pin yap


-------------------- 74HC164 için pin tanımlamaları -------------------
var volatile bit clock_pin    is pin_a1
var volatile bit data_pin     is pin_a2

procedure display_yolla(byte in giris_bilgi) is
  var bit veri_biti at giris_bilgi : 0
			for 8 loop
				data_pin = veri_biti
				giris_bilgi = giris_bilgi >> 1
				clock_pin = high
				clock_pin = low
			end loop
end procedure
-----------------------------------------------------------------------

procedure derece_al(byte out hane_10,byte out hane_1) is
 var word temp_deger = 0
 var byte basamaklar[] = {252,96,218,242,102,182,190,224,254,246}
  for 10 loop
   temp_deger = temp_deger + adc_read(0)
  end loop
    while (ADCON0_NDONE == 1) loop end loop
  temp_deger = ((temp_deger/10) * 100)/204

  if temp_deger > 99 then
     hane_10 = 2 --    "-"
     hane_1  = 2 --    "-"
  else
     hane_10 = basamaklar[(temp_deger / 10)]
     hane_1  = basamaklar[(temp_deger % 10)]
  end if
end procedure

var byte onlar_hanesi,birler_hanesi
forever loop

 derece_al(onlar_hanesi,birler_hanesi)

for 5 loop
  for 50 loop
    onlar = false birler = false
      display_yolla(onlar_hanesi)
     onlar = true
        _usec_delay(2000)
  onlar = false
     display_yolla(birler_hanesi)
     birler = true
        _usec_delay(2000)
  end loop
end loop

end loop


*****************************************************************************************************************
Edit : 26.12.2011 Güncelleme

Yapılan Yenilikler :

--> Transistörler BC547 yerine BC337 olarak değiştirildi.
--> 330 Ohm dirençler transistörün emiteri yerine kollektörüne seri olarak bağlandı. --> Yukarıdaki nedenlerden dolayı baskı devresi yeniden düzenlendi.
--> ilk Çalıştırmada Dİsplaylere animasyon eklendi.
--> Hazır adc kütüphanesi yerine adc rutine yeniden yazıldı.Bu sayede harici kütüphane ihtiyacı, sadece adreslerin tanımlı olduğu 12F675.jal oldu.


NOT : Daha önce devreyi yapan arkadaşlar İsteğe Bağlı yeni yazılımı yükleyip kullanabilirler. Donanımsal olarakta sadece BC547 yerine BC337 takabilirler.

Transistör Değiştirmedeki amaç ise Olası parlaklık sorununu engellemektir. Ayrıca BC337′nin yüksek güçlü olmasıdır. Proteus 7.8 SP2 kullanılmıştır. Dosyalar 7 versiyonu ile uyumlu olarak kaydedilmiştir.

Proteus 7.8 SP2 kullanılmıştır. Dosyalar 7 versiyonu ile uyumlu olarak kaydedilmiştir.

Jalv2 ile Termometre (12F675 ve LM35) v2 Dosyalarını İndir

ByTEK

Devre güncellenmiştir. Tüm açıklamalar yapılmış olup Gerekli Dosyalar ilk mesajın altında verilmiştir. Kolay gelsin..

İyi Çalışmalar Arkadaşlar..

ömer

sercan abı devre gercekten ıyıymıs.

mehmet61

#3
arkdaşlar bu devre hakkında acil yardımınıza ihityacım var lütfen yardım edin

mesaj birleştirme:: 13 Mart 2013, 12:22:17

devredeki entegreleri zorda olsa buldum ama kafama takılan bu entegreleri aldığım gibi montemi edicem yoksa programlama gibi birşey söz konusumu...hiçbirşey yapmadan direk taksam olurmu

M_B

Alıntı yapılan: mehmet61 - 13 Mart 2013, 12:08:49
arkdaşlar bu devre hakkında acil yardımınıza ihityacım var lütfen yardım edin

mesaj birleştirme:: 13 Mart 2013, 12:22:17

devredeki entegreleri zorda olsa buldum ama kafama takılan bu entegreleri aldığım gibi montemi edicem yoksa programlama gibi birşey söz konusumu...hiçbirşey yapmadan direk taksam olurmu
İndirdiğin dosyadaki uzantısı *.hex olan dosyayı Pic programlayıcı ile pic12f675 yukleyeceksin
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

mehmet61

tam olarak anlayamadım konuyu açarmısınız...biraz yabancısıyım programlama işlerinin...