1000 kişiden bir kişi için ! devam.... 320volt blog

Elektronik Devreler Projeler » Microchip PIC devreleri bilgiler, Yazar Projeleri Makaleler Elektronik Genel »

PIC 18F452 İle Sıcaklık-Nem-Basınç Algılayıcı

pic-18f452-ile-sicaklik-nem-basinc-algilayici

Zorlu bir yılın ardından üniversitede dersler bitti. Benim gibi DGS ile elektrik-elektronik mühendisliğine geçenlerin işi gerçekten zor :D Dersler zaten zor birde üzerine intibak döneminde olmanın stresi… İyi kötü elimden geleni yaptım ama 16 dersin 5’inden kalmayı başardım. Bu yüzden tatil boyunca ders çalışmaya devam :D Ders çalışmanın yanında bu yaz uygulamayı düşündüğüm bazı projelerim var.

Projelerim;

• Birden çok sensör kullanılarak elde edilen verilerin kablosuz olarak bilgisayara aktarılması ve görsel bir arayüz kullanarak veri kaydedilmesi. Elde edilen veriler doğrultusunda uzak noktadaki çıkışların kontrol edilmesi ve LCD kullanılarak mesajlaşmak.

• Yukarıdaki projenin geliştirilerek ethernet ve USB üzerinden erişim sağlanması, verilerin her uç noktada SD/MMC karta kaydedilmesi,

• Eğer yukarıdaki projeler biterse protip PCB için basit bir CNC yapmak :D

Bu projeleri gerçeklediğim takdirde PIC ve PICC konusunda epey yol kat edeceğime inanıyorum. Yaptığım çalışmalara elimden geldiğince paylaşmaya çalışacağım. İlk projemiz 18F452 ile sıcaklık-nem-basınç değerlerinin algılanması. Sıcaklık ve nem değerlerini algılamak için piyasada en çok bulunan SHT11 sensörünü kullandım (Biraz pahalı ama kaliteli :D )

Basıncı algılamak içinse MPX5100A sensörünü kullandım. SHT11 zaten dijital çıkış veriyor ve i2C protokolü ile haberleşiyor. Kullanımı için gerekli kütüphane dosyaları PICC için mevcut.

MPX5100A basınç sensörü ise analog bir çıkış üretiyor. Çıkışından elde edilen gerilim değeri kullanılarak basınç değeri hesaplanıyor. Gerekli formül datasheet’inde mevcut ve şu şekilde;

Nominal Transfer Value: VOUT = VS (P x 0.009 – 0.095)± (Pressure Error x Temp. Mult. x 0.009 x VS) VS = 5.0 V ± 5% P kPa

Buradan P değişkenini çekerek basınç değerini hesaplayabiliyoruz. Programı PICC dili kullanarak yazdım. Açılışta ve ana ekranda gösterilen grafikleri daha önce ki yazılarımda anlattığım şekilde Bitmap2LCD programını kullanarak oluşturdum.

algilama-devresi-isis-semasi

SHT11 ve MPX5100A’yı plakete dişi header kullanarak bağladım böylece istediğim zaman kablo ile uzatma yapabileceğim. Başlangıçta tek kaynaktan PC’ye veri aktaracağım için devreye grafik LCD ve fazladan butonlar ekledim ilerde kullanmak amacıyla. Sonraki adımda verileri RS232 üzerinden PC’ye aktarıp görsel bir arayüz aracılığıyla veritabanına kaydedeceğim.

Projeyi bu aşamadan sonra adım adım ilerletmeyi ve maddi güçüm, vaktim, vs yeterse 1 ayda bitirmeyi düşünüyorum.

Kolay gelsin :D

Projenin isis simülasyon görüntüsü

Projeye ait kaynak kod dosyaları, proteus isis simülasyon şeması ares pcb dosyaları: pic-18f452-ile-sicaklik-nem-basinc-algilayici.ZIP

PIC 18F452 İLE SICAKLIK-NEM-BASINÇ ALGILAYICI (Malzeme Listesi)

MALZEME ADI

ADET

PIC16F452

1

128×64 GRAFİK LCD

1

20MHz KRISTAL OSİLATÖR

1

33 pF KONDANSATÖR

2

100 nF KONDANSATÖR

2

330 uF KONDANSATÖR

2

10KΩ Direnç

5

7805 REGÜLATÖR

2

1N4001 DİYOT

2

SHT11 (SICAKLIK-NEM SENSÖRÜ)

1

MPX5100 (BASINÇ SENSÖRÜ)

1

KLEMENS

1×2(GİRİŞ)

BUTON

41

ERKEK-DİŞİ HEADER PİN

-

Yazar: Konyalı

Yazarımızın 320volt.com Blog üzerinde şu an okuduğunuz yazı dahil 15 yazısı bulunmaktadır. Yazarımız hakkında bilgileri ve diğer yazılarını görmek için bakınız;

Elektronik

 
  1. uzulmezhasan@hotmail.com says:

    @Kayseri
    void glcd_writeByte(int1 side, BYTE data)
    {
    if(side) // Choose which side to write to
    output_high(GLCD_CS2);
    else
    output_high(GLCD_CS1);

    output_low(GLCD_RW); // Set for writing
    output_d(data); // Put the data on the port
    delay_cycles(1);
    output_high(GLCD_E); // Pulse the enable pin
    delay_cycles(5);
    output_low(GLCD_E);

    output_low(GLCD_CS1); // Reset the chip select lines
    output_low(GLCD_CS2);
    }

    // Purpose: Reads a byte of data from the specified chip
    // Ouputs: A byte of data read from the chip
    BYTE glcd_readByte(int1 side)
    {
    BYTE data; // Stores the data read from the LCD

    set_tris_d(0xFF); // Set port d to input
    output_high(GLCD_RW); // Set for reading

    if(side) // Choose which side to write to
    output_high(GLCD_CS2);
    else
    output_high(GLCD_CS1);

    delay_cycles(1);
    output_high(GLCD_E); // Pulse the enable pin
    delay_cycles(4);
    data = input_d(); // Get the data from the display’s output register
    output_low(GLCD_E);

    output_low(GLCD_CS1); // Reset the chip select lines
    output_low(GLCD_CS2);
    return data; // Return the read data
    }

    #endif

    bu fonksiyonlarda ki gecikmelerin sürelerini oynayarak programı tekrar derleyin.

  2. Kayseri says:

    İşin kötüsü bunu nasıl yapacağımı bilmiyorum :( bu gecikme süreleri bir örnek verirseniz telefonla görüşmemiz mümkünmü bilgi alsam kısa bir örnek bir gösterseniz söyleseniz ?

  3. Kayseri says:

    Şöyle bir durum var birde şimdi yazılım 20 mhzde 20 mhz kristal taktığımda hiç görüntü yok…
    Yazılım 20 mhz de iken 4 mhz kristal taktıgımda bu görüntü geliyor :(
    yazılımı 4mhz yapıyorum 4 mhzlik kristal takıyorum gene aynı görüntü

  4. Kayseri says:

    Bu devreyi 2*16 lcd ile nasıl çalıştırabilirim bu mümkünmü yada önerebileceğiniz başka biryol?

Yorum Sayfaları
1 3 4 5

Yorum yapın

Doğrulama: (kutuyu işaretleyiniz)

  • Lütfen Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  • Yorumunuz yönetici tarafından kontrol edilmeden yayımlanmaz.
  • Paylaşılan devrelerin malzeme listesini istemeyiniz. Olsa zaten paylaşılırdı şema üzerinden listeyi çıkartabilirsiniz
  • Gavatar sitesine avatarınızı yükleyebilirsiniz.