• Sonuç bulunamadı

2. SD KARTLAR yıllarında teknolojinin gelişmesiyle daha küçük boyutlu hafıza kartlarına olan ilgi artmıştır. Bu yıllarda mikrosd kartlar

N/A
N/A
Protected

Academic year: 2022

Share "2. SD KARTLAR yıllarında teknolojinin gelişmesiyle daha küçük boyutlu hafıza kartlarına olan ilgi artmıştır. Bu yıllarda mikrosd kartlar"

Copied!
6
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

SD KART ÜZERİNDE HAVA BASINCI VERİLERİNİ SAKLAYAN PIC MİKROKONTROLÖR PROJESİ

Prof. Dr. Doğan İbrahim

Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Bilgisayar Mühendisliği Bölümü, Lefkoşa, KKTC E-mail: dogan@neu.edu.tr

1. GİRİŞ

SD Memory Card (Secure Digital Memory Card), Türkçesi ‘Güvenli Sayısal Hafıza Kartı’ anlamına gelmektedir. İlk olarak SanDisk [1] tarafından 2001’li yıllarda ortaya çıkan bu kartlar MMC (Multimedya Kart) kartların bir gelişmiş şekli olarak da düşünülebilir.

SD kartlar günümüzde birçok elektronik cihazlarda kullanılmaktadırlar. Örneğin, cep telefonlarında, sayısal kameralarda, MP3 çalanlarda, GPS alıcılarında, PDAlar- da, ve daha bunlar gibi birçok elektronik cihazlarda SD hafıza kartlarını görmemiz mümkündür. Hafıza kartı olarak kullanılan diğer kartlar şunlardır: SM (“Smart Media”), CF (“Compact Flash”), MMC (“Multi Media”), ve MS (“Memory Stick”).

Bu yazımızda PIC18F452 modeli bir mikrokontrolöre SD kart bağlantısının nasıl yapılacağı açıklanmaktadır.

Projede PIC mikrokontrolör bir hava basıncı sensörü sayesinde basıncı algılayıp okumuş olduğu basınç ver- ilerini her saniye bir SD kart üzerinde saklamaktadır.

Projede mikrokontrolör yazılımı MikroElektronika firmasının [2] geliştirmiş olduğu mikroBasic derleyici kullanılarak yapılmıştır.

2. SD KARTLAR

Şekil 1 de resmi gösterilen standart SD kartlar içerisinde mikroişlemci, hafıza, ve giriş-çıkış devreleri bulunmaktadır. 32mm x 24mm x 2.1mm ebatlarında olan SD kartların 16MB, 32MB, 64MB, 128MB, 256MB, 512MB, 1GB, 2GB ve 4GB kapasiteli çeşitleri bulunmaktadır.

Sonraları, daha küçük cihazlarda kullanılmak için miniSD kartlar geliştirilmiştir. Bu kartların boyutları standard SD kartın yarısı kadar olup 20mm x 21.5mm x 1.4mm ölçülerindedirler. miniSD kartlar genellikle 32MB ce 2GB arasında bir kapasitede üretilmektedirler. MiniSD kartları adapterler sayesinde standart SD soketlerinde kullanmak mümkündür.

2005 yıllarında teknolojinin gelişmesiyle daha küçük boyutlu hafıza kartlarına olan ilgi artmıştır. Bu yıllarda mikroSD kartlar üretilmiştir. Boyutları sadece 11mm x 15mm x 1mm olan mikroSD kartlar 32MB ve 2GB arasında bir kapasitede üretilmektedirler. mikroSD kartları adapterler

sayesinde miniSD ve standart SD soketlerinde kullanmak mümkündür.

SD kartlar yaklaşık 2MB/s veri aktarımı yapabilmektedirler. Veri transfer hızı genellikle standard CDROM okuma hızı baz alınarak verilmektedir. 1x olarak da bilinen standart CDROM hızı yaklaşık 150kB/s dir. Bu durumda, 32x diye satılan bir SD kartın hızı 32x150 = 4,8MB/s kadardır.SD kartlar 9 bacaklıdır.

Şekil 2 de standart bir SD kartın bacak bağlantıları gösterilmiştir. Şekilden de görüleceği gibi kolay tanınması için 9 nolu bacak diğerlerinden daha aşağıdadır.

Tablo 1 de SD kartın bacak bağlantıları açıklanmıştır. SD kartlar iki modda çalışmaktadır: SD kart modu, ve SPI (Seri Arayüz Bus modu). Genellikle daha kolay olduğu için birçok projelerde kart SPI modunda kullanılmaktadır. Bu modda kullanıldığında sadece aşağıdaki 7 bacağa gerek olmaktadır:

Tablo 1 SD kart bacak bağlantıları

Bacak İsim SPI Modu

1 CD/DAT3/CS Çip seç

2 CMD/Datain Dışarıdan karta

veri

3 VSS Toprak

4 VDD Güç Kaynağı

5 CLK Saat

6 VSS2 Toprak

7 DAT0 Kartdan dışarı-

ya verir

8 DAT1 Kullanılmaz

9 DAT2 Kullanılmaz

1 2 3 4 5 6 7 8 9

Önsöz Duyurular Makale PIC Mikrokontrolör

Projesi Sempozyum EMO Hakkında Eğlence Seminer Gezi Yeni Üyeler

(2)

• 2 tane toprak (bacak 3 ve 6)

• Güç kaynağı (bacak 4)

• Çipi seç (bacak 1)

• Çıkış (bacak 7)

• Giriş (bacak 2)

• Saat (bacak 5)

Burada 3 tane bacağın güç kaynağı ve toprak için kullanıldığı göz önünde bulundurulursa veri alış-verişi için sadece aşağıdaki 4 bacağın kullanıldığını görürüz:

• Çipi seç (bacak 1)

• Çıkış (bacak 7)

• Giriş (bacak 2)

• Saat (bacak 5)

Karta güç kaynağı bağlandığında ilk olarak kart SD modunda çalışmaktadır. Daha sonra karta gönderilen komutlar sayesinde kart SPI moduna geçirilmektedir. mikroC derleyici kartı SD moduna koyup çalıştırmaktadır.

Tablo 2 de bazı SD kartların kapasiteleri verilmiştir:

Tablo 2 SD kart kapasiteleri

Model Kapasite

SDSDB-16 16Mb

SDSB-32 32Mb

SDSJ-64 64Mb

SDSDJ-128 128Mb

SDSDJ-256 256Mb

SDSDJ-512 512Mb

SDSDJ-1024 1024Mb

Kart üzerinde bir bölüm güvenli veri saklamak için ayrılmıştır. Bu bölüm göz önünde bulundurulursa, kullanıcının yazıp okuyabileceği bölüm Tablo 3 de gösterildiği gibidir. Örneğin, 1GB SD kart üzerinde 20,480 güvenli sektör ve kullanıcının yazıp okuyabileceği 1,983,744 sektör bulunmaktadır. Kullanıcı bu sektörlerin herhangi birine veri yazıp okuyabilir (1 sektör = 512 bayt).

Tablo 3 SD kart sektör alanları

Model Güvenli Alan

(Sektör) Kullanıcı Alanı (Sektör)

SDSDB-16 352 28.800

SDSDB-32 736 59,776

SDSDJ-64 1,376 121,856

SDSDJ-128 2,624 246,016

SDSDJ-256 5,376 494,080

SDSDJ-512 10,240 940,864

SDSDJ-1024 20,480 1,983,744

SD kartlar tipik olarak 2.7V gerilim ile çalışmaktadırlar. Karta verebileceğimiz maksimum gerilim 3.6V geçmemelidir. Eğer kart mevcut 5V ile çalıştırılacaksa gerilimi 5V dan 2.7V – 3.6V düşüren regülatör devresi kullanmamız gerekmektedir.

3. SD KART MIKROBASIC KOMUTLARI

MikroBasic PIC derleyicisinin SD kartlara yazıp okumak için birçok özel fonksiyonları bulunmaktadır.

Bu fonksiyonlar sayesinde SD kartlar üzerinde dosyalar yaratabilir ve veri saklayabiliriz. SD kart fonksiyonları sadece PIC18 serisi mikrokontrolörler için yazılmıştır (PIC16 serisi için bu fonksiyonları kullanamayız)

Önemli olan mikroBasic SD kart fonksiyonları Tablo 4 de verilmiştir. Bu fonksiyonları iki bölüme ayırabiliriz: Direk olarak SD kart sektörlerine veri yazıp okumak için kullanılan fonksiyonlar (ilk 3 fonksiyon), ve SD kart üzerinde dosya yaratıp bu dosyaya veri yazıp okuyan fonksiyonlar.

SD kartın herhangibir sektörüne veri yazıp okumak için şu işlemleri yapmalıyız:

• Kartı hazırla (Mmc_Init)

• Kartın istenilen sektörüne veri yaz (Mmc_Write_

Sector)

• Kartın istenilen sektöründen veri oku (Mmc_Read_

Sector)

Yukarıdaki işlemlere ilaveten, kart üzerinde olan bir dosyaya veri ilave etmek istediğimizde şu işlemleri yapmalıyız:

(3)

• Kartı Hazırla (Mmc_Fat_Init)

• Dosya ismini tanımla (Mmc_Fat_Assign)

• Dosyanın sonuna git (Mmc_Fat_Append)

• Dosyaya veri yaz (Mmc_Fat_Write) Mmc_Fat_Assign fonksiyonu ile dosya ismini tanımlarken, dosya ismi büyük harf, 8 karakterli olmalı, ve 3 karakter dosya uzantısı verilmelidir. Dosya ismi ve uzantısı arasında nokta kullanmamalıyız. Dosya isminden sonra argüman olarak 0x80 kullanırsak yeni dosya yaratılir, aksi halde yeni dosya yaratılmaz (daha fazla bilgi için mikroBasic kullanım kılavuzuna bakınız).

MikroBasic SD kart fonksiyonlarını kullanmazdan önce ilk olarak kartı SPI moduna koymamız gerekmektedir. Bunun için ise programımızın başında aşağıdaki fonksiyonu olduğu gibi çağırmamız gerekmektedir:

Spi_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE,

CLK_IDLE_LOW, LOW_2_HIGH)

Tablo 4 : Önemli mikroBasic SD kart fonksiyonları

Komut Tanımı

Mmc_Inıt Fonksiyonları BAşlat

Mmc_Read_Sector 1 Sektör Oku Mmc_Write_Sector 1Sektöre Yaz Mmc_Fat_Init FAT dosya sistemini

başlat

Mmc_Fat_QuickFormat Kartı format yap Mms_Fat_Assign Dosya ismini belirt Mmc_Fat_Reset Dosyanın başına git Mmc_ Fat_Rewrite Dosyanın başına git ve

doyayı temizle Mmc_Fat_Append Dosyanın sonuna git Mmc_Fat_Read Dosyadan veri oku Mmc_Fat_Write Dosyaya veri yaz

4. PIC SD KART PROJESİ

Projenin blok şeması Şekil 3 de verilmiştir. Pro- jenin elektronik devresi ise Şekil 4 de görülebilir.

Projede PIC18F452 modeli bir mikrokontrolör [3]

kullanılmıştır. Projede PIC18 serisinden PIC18F452 dışında başka herhangibir mikrokontrolör

kullanmamız mümkündür. Mikrokontrolör 4MHz rezonatör ile çalıştırılmıştır, fakat arzu edilirse kristal de kullanılabilir. Mikrokontrolörün AN0 analog bacağı MPX4115A modeli [4] bir hava basıncı sen- sörüne bağlanmıştır. Bu sensör aşağıda gösterildiği gibi 6 veya 8 bacaklı olabilir:

6 bacaklı sensör

Bacak Tanım

1 Çıkış gerilimi

2 Toprak

3 +5V gerilim

4-6 Kullanılmaz 8 bacaklı sensör

Bacak Tanım

1 Kullanılmaz

2 +5V gerilim

3 Toprak

4 Çıkış gerilimi 5-8 Kullanılmaz

Şekil 3. Projenin blok şema

Basınç Sensörü

Mikro

Kontrolör SD Kart

Şekil 4. Projenin elektronik devresi

SD KART ÜZERİNDE HAVA BASINCI VERİLERİNİ

SAKLAYAN PIC MİKROKONTROLÖR PROJESİ

İçindekiler Önsöz Duyurular Makale PIC Mikrokontrolör

Projesi Sempozyum EMO Hakkında Eğlence Seminer Gezi Yeni Üyeler Vefat

(4)

Sensör Şekil 5 de gösterilmiştir.

Şekil 5. MPX4115A basınç sensörü

MPX4115A hava basıncı sensörünün çıkış gerilimi şu formül ile verilmektedir:

) 095 . 0

* 009 . 0 (

* 0 .

5 −

= kPa

V veya,

0.009

095 . 0 0 .

5 +

= V kPa burada,

kPa = Atmosferik basınç (Kilo Pascals)

V = Sensörün çıkış gerilimi (V)

Hava basıncı ölçümlerinde genellikle milibar birimi kullanılmaktadır. Deniz seviyesinde ve 15ºC sıcaklıkta hava basıncı 1013.3 milibardır. Yukarıdaki formülde basınç kPa olarak verilmiştir. kPa basınç birimini milibar basınç birimine dönüştürmek için formülü 10 ile çarpmamız gerekmektedir:

0.009

095 . 0 0 . 10 5

+

= V x mb veya,

009 . 0

95 . 0 0 .

2 +

= V

mb

Şekil 6 da MPX4115A sensor gerilim çıkışının basınç ile değişimi gösterilmiştir. Burada bizim ilgimizi çeken bölgeler basıncın 800 – 1000 milibar arasında olduğu bölgelerdir.

Hava basıncını milibar olarak okuyup kart üzerinde saklamak için gerekli işlemler şunlardır:

• Mikrokontrolörün analog giriş portlarından birini kullanarak analog basıncı 10 bitlik bir dijital sayı olarak oku.

0 1 2 3 4 5

200 300 400 500 600 700 800 900 100 0

110 0 M illib a r s

Volts

Şekil 6 MPX4115A hava basıncı – gerilim değişimi

• Formülü kullanarak okunmuş olan gerilimi milibar biriminden basınca dönüştür.

• Basıncı SD kart üzerindeki dosyaya yaz.

SD kart mikrokontrolörü PORT C bacaklarına şu şekilde bağlanmıştır:

(5)

Çip seç RC2

Saat RC3

Çıkış RC4

Giriş RC5

SD kart giriş bacaklarındaki maksimum gerilimin 3.6V geçmemesi gerekmektedir. Bunun için çıkışı +5V olan mikrokontrolör bacaklarındaki gerilim 3.3K ve 2.2K gerilim bölücü dirençler kullanılarak +3V a düşürülmüştür.

Projede SD karta gerilim sağlamak için MC33269 DT-3.3 modeli [5] ve +5V gerilimi +3.3V a düşüren regülatör kullanılmıştır.

Projenin yazılımı Şekil 7 de verilmiştir. Ana programın başında AN0 bacağı giriş olarak tanımlanmış ve A/D çevirici konfigür yapılmıştır. Daha sonra Spi_Init_

Advanced fonksiyonu çağrılarak kart SPI çalışma moduna konmuştur. mikroBasic SD kart dosya kullanan fonksiyonları kullanmazdan önce Mmc_

Fat_Init fonksiyonuna çağırmamız gerekmektedir.

SD kart üzerinde dosya yaratmak için Mmc_Fat_

Assign fonksiyonunu kullandık ve Mmc_Fat_Rewrite fonksiyonu ile dosyanın başına gidip Mmc_Fat_Write fonksiyonu il şu başlığı yazdık: BASINÇ VERILERI.

Ana program esas olarak sonsuz bir döngü içerisinde çalışmaktadır.

SD KART UZERINDE HAVA BASINCI VERILERINI SAKLA

Bu projede PIC18F452 modeli bir mikrokontrolor kullanilmistir.

Mikrokontrolorun PORT C bacaklarina bir SD kart su sekilde baglanmistir:

Kart CS - RC2 Kart CLK - RC3 Kart DO - RC4 Kart DI - RC5

Ayni zamanda mikrokontrolorun AN0 analog giris bacagina MPX4115A modeli

bir hava basinci sensoru baglanmistir.

Program kart uzerinde “BASINC.TXT” isimli yeni bir dosya açar ve her 15 saniyede bir sicaklik ve hava basinci verilerini bu dosyalarda saklar.

Dosya: BASINC.PBP Tarih: Ocak 2007 Programlayan: Doğan Ibrahim program BASINC

Hava basincini AN0 analog portdan oku ve Veri degiskeninde sakla.

Veri degiskeni basinci milibar olarak saklar sub function Basinc_Oku() as Word DIM Veri as Longint

Dim Temp as word

Temp = Adc_Read(0) Basinci oku Veri = Longint(Temp)*10000/1024

‘ Volt’a donustur

Veri = Veri + 950

Veri = Veri / 9 Result = Word(Veri) Basinc

end sub main:

DIM basinc as Word DIM Stat as Byte

DIM Basinclik as String[5]

DIM BBaslik as String[80]

DIM YeniSatir as Byte[1]

TRISA = 0x01 AN0 bacagi giris ADCON1 = 0x8E

A/D ceviriciyi hazirla

YeniSatir[0] = chr(10)

BBaslik = “BASINC VERILERI” + chr(10)

SPI bus baslat

Spi_Init_Advanced(MASTER_OSC_DIV16,DATA_

SAMPLE_MIDDLE,

CLK_IDLE_LOW,LOW_2_HIGH) SD karti dosyalama islemi icin hazirla Stat = Mmc_Fat_Init(PORTC, 2)

Basinc Dosya ismini belirt, dosyanin basina git ve baslik yaz

Stat = Mmc_Fat_Assign(“BASINC.TXT”, 0x80) Mmc_Fat_Rewrite()

Mmc_Fat_Write(BBaslik,16)

Tekrar:

‘ Basinci oku ve acilmis olan dosyaya yaz basinc = Basinc_Oku()

‘ Basinci oku

WordToStr(basinc,Basinclik)

İçindekiler Önsöz Duyurular Makale PIC Mikrokontrolör

Projesi Sempozyum EMO Hakkında Eğlence Seminer Gezi Yeni Üyeler Vefat

(6)

Karaktere donustur

Mmc_Fat_Assign(“BASINC.TXT”, 0x80)

‘ Dosyayi belirt Mmc_Fat_Append()

Mmc_Fat_Write(Basinclik, 5) Basinci karta yaz

Mmc_Fat_Append()

Mmc_Fat_Write(Yenisatir, 1) Yeni satir yaz

Delay_Ms(15000)

‘ 15 saniye bekle

Goto Tekrar

‘ Tekrarla End.

Şekil 7. Projenin yazılımı

Basınc_oku fonksiyonu AN0 portundan basıncı okur ve sayısala dönüştürür. 10-bit analog-sayısal çevirici kullanıldığı için sayısala çevirilen sayı 0 ve 1023 arasında herhangibir değer alabilir (toplam 1024 değer). +5V referans gerilimi 1024 adım olarak gösterildiği için, okunmuş olan sayısal değeri Volt olarak gerçek gerilime dönüştürmek için 5/1024 ile çarpmamız gerekmektedir. Bu elde ettiğimiz Volt değeri daha önce verilen formülde gösterildiği gibi 2 ile çarpıp 0.95 ilave etmemiz ve sonra da 0.009 a bölmemiz gerekmektedir. Kısacası, basıncı gerçek milibar olarak hesaplamak için, eğer elde ettiğimiz sayısal sayı Temp ise yapmak istediğimiz işlem şudur:

milibar = ( 2 * Temp * (5/1024) + 0.95 ) / 0.009 veya,

milibar = ( 10* Temp /1024 + 0.95 ) / 0.009

Kesirli işlemleri ortadan kaldırmak için pay ve paydayı 1000 ile çerparsak,

milibar = ( 10000 * Temp /1024 + 950) / 9 Basınc_Oku fonksiyonunda yukarıdaki işlem yapılıp hava basıncı değeri elde edilmektedir.

Programda yazmak istediğimiz dosya adını Mmc_Fat_

Assign alt-programı ile belirtmemiz gerekmektedir.

Şekil 8 de BASINC.TXT dosyasının WORD programı ile açılımı gösterilmiştir.

Şekil 8. SD kart üzerindeki BASINC.TXT dosyasının Word ile açılımı

5. SONUÇ

Bu yazımızda SD hafıza kartlarının PIC

mıkrokontrolör tabanlı sistemlerde kullanımlarına bir göz attık. Yazımızda hava basinci yarı-iletken bir basinç sensörü ile algılanır ve milibara dönüştürülüp her 15 saniyede bir SD kart üzerindeki bir dosyada saklanır. Yazımızda PIC18 modeli bir mikrokontrolör ve mikroBasic derleyici kulalnılmıştır.

SD kartlar boyutlarının küçük ve yüksek kapasitelerinden dolayı portabıl cihazlarda veri saklamak için ideal bir yapıya sahiptirler. SD kartların kapasiteleri hemen her yıl artmaktadır.

Halen piyasada 4GB kapasiteli kartlar mevcuttur.

Bu yazımızda prensipleri verilmiş ve tasarımı yapılmış olan SD kart sistemi geliştirilip çok daha kompleks SD kart sistemleri kurmak mümkündür.

6. KAYNAKÇA

1. www.sandisk.com

2. www.mikroelektronika.com 3. www.microchip.com 4. www.motorola.com

5. www.proactivecomponents.com 6. D. Ibrahim, “PIC Mikrokontrolör SD Kart Projeleri”

Bileşim Yayıncılık ve Fuarcılık A.Ş., 2008, www.bilesim.com.tr

Referanslar

Benzer Belgeler

Pil destekli gerçek zaman saati Rölanti devir kontrolu Akü şarj çalışması Savaş modu desteği Çoklu Nominal Koşullar Kontaktör+motorlu şalter sürme 4 çeyrek enerji

Görüleceği üzere benzetme yöntemiyle verilen bu örnekte olduğu gibi, söz konusu sd kart la ilgili olarak da 6 aşamadan oluşan (imaj alma, imaj içeriğinde Linux işletim

Esnek uzatma hortumunun (14) di- ğer ucuna ikisi bir arada toz fırça- sı (13), hassas yüzeyler için toz fırça- sı (15), fırçalı olarak da kullanılabilen dar ağızlı uç

6) İlgili mevzuatlarda belirlenen kullanım ömrü süresince malın azami tamir süresi 20 iş gününü, geçemez. Bu süre, garanti süresi içerisinde mala

gezginler indir download gta san andreas save turkce.cem özkan olmayacak bir hayal indir youtube.adobe flash player indir android apk.windows live messenger indir gezginler xp.Gta

Çoklu resim modu ile işiniz bittiğinde tek- rar OK düğmesine basın veya tam ekran izleme moduna geri dönmek için EXIT (Çıkış) düğmesine ya da kanal listesine

Bir sonraki defa Ev’e tıklayarak oraya doğru güzergah otomatik olarak hesaplanır.. iletişim Listemizden

• Müşteri ana verisi genel veriler, satış alanı verileri ve şirket kodu verileri olmak üzere üç kısımdan oluşur. • Genel veriler satış dağıtım ve muhasebe ile