bayram's profilebayram adlı kullanıcının...PhotosBlogListsMore Tools Help

bayram

Feed

The owner hasn't specified a feed for this module yet.

bayram adlı kullanıcının alanı

hepinize merhaba
February 23

matemapıc



Sinyalin türevinin, sinyalin çok küçük zaman dilimlerindeki değişim hızını bulmakla aynı anlama geldiğini hatırlayalım.

Acaba sinyaldeki değişim hızı verilmiş olsa bu değişime neden olan sinyali bulabilir miyiz?

Bu sinyali arama işlemine integral bulma işlemi denir.

Örnek olarak daha önceleri hazırlayıp üzerinde konuştuğumuz tabloyu tekrar inceleyelim.

(sn)

0

1

2

3

4

V (v)

0

1

2

2

0

Voltajın Değişim Hızı (v/sn)

?

1

1

0

-2

 

Yukarıdaki tabloda, ilk satır ile üçüncü satırı biliyor olalım. Acaba ikinci satırdaki değerleri bulabilir miyiz?

? işareti bir belirsizliği ifade etmektedir. O halde voltajın başlangıç değeri tabloda 0 olarak bilinmesine rağmen biz tersten giderken bunu bilemeyeceğiz demektir. Voltajın T=0 anındaki değere Vo diyelim ve bilinmeyen olarak kalsın. (İlk değer belirsizliği)

T = 1 sn anında türev +1v/sn  imiş yani Vo voltajı 1v artmış demektir. O halde T=1sn  anında voltajımız Vo+1 olacaktır.

T = 2 sn anında türev  +1v/sn  imiş yani  voltajmızı 1v artmış demektir. O halde T=2sn  anında voltajımız Vo+1+1 olacaktır.

T = 3 sn anında türev  +0v/sn  imiş yani  voltajımız 1v artmış demektir. O halde T=3sn  anında voltajımız Vo+1+1 +0 olacaktır.

T = 4 sn anında türev   -2v/sn  imiş yani  voltajımız 2v azalmış demektir. O halde T=4sn  anında voltajımız Vo+1+1 +0 -2 olacaktır.

Şimdi  Vo=0 için (bize birisi bu değeri versin) voltajın T nin değişik anlarındaki değerlerini bulmamız istendi. Bu değer çoğunlukla tarafımızdan bir şekilde bilinir yada bulunur, bilinmiyorsa Vo olarak kalır.

T=0sn de V=0 imiş. (Öyle dediler)

T=1sn de V=1

T=2sn de V=2

T=3sn de V=2

T=4sn de V=0

Bu değerlerle tablodaki ilk satırı karşılaştırsanız aynı olduğunu görürsünüz. Şu anda değişim hızından yararlanarak sinyalin orjinal durumunu yani değişim hızının integralini bulmuş olduk.

Değişim hızını ilgilenilen zaman aralığı ile çarparsak o aralıkta sinyaldeki artış bulunur. Bunu daha önceki artışlara ekleye ekleye orjinal sinyali bulmuş oluruz.(*)

Gerçek  örnek olarak sabit akım ile doldurulan kondansatörü inceleyelim. Bir kondansatörden sabit akım akıtılırsa kondansatör uçlarındaki voltaj düzgün (lineer artar). Bunu pek çoğumuz biliyor ve değişik uygulamalarda kullanıyoruz.

Türev bilgimizle bu olaya göz atalım.

I=C * dv/dt olduğunu biliyoruz. akım sabit ise (C de sabit) dv/dt sabit demektir.

dv/dt nin sabit olması ne demektir?  Voltajın herhangi bir anında, bu ana çok yakın bir anda tekrar bir voltaj ölçümü yapar ve voltajın değişim hızına bakarsak bunun sabit olduğunu görüyoruz demektir. Üstelik bu zamanın her yerinde sabit demektir.

(V1 - V2) / (T1-T2) zamanın her yerinde aynı ise  V1-V2 farkı diğer zamanlardaki farklarla aynı demektir. Buda sinyalin düzgün değiştiği anlamına gelir.

Örneğin 1ms artımlarla yaptığımız voltaj ölçümleri 1,2,3,4,5,6 v olsun. Takip eden herhangi iki voltaj arasındaki fark sabittir.

Dolayısıyla türev sabit ise düzgün bir artıştan söz edilebilir.

İsterseniz aynı örneği bir başka açıdan ele alalım.

Kondansatörün birimi sn /ohm olduğuna göre i akımı  dt (epsilon sn) sn sonunda voltajda,          dV = (1/C) * i * dt artışı gözlenecektir.(küçük d harfinin, değişkenin küçük artışı anlamına geldiğini hatırlayın)

Kondansatör i sabit akımıyla  şarj edildiğine göre voltajı şu şekilde bulabiliriz. Olayın başlangıcında kondansatör voltajı Vo olsun. Boş bir kondansatör denmiş olsaydı Vo = 0 olacaktı.

T=dt anında (epsilon saniye sonra) voltajdaki artım, (1/C) * i * dt olacaktır.

O halde dt sn sonra voltajımız Vo + (1/C) * i * dt olacaktır.

Bulunduğumuz zamandan itibaren tekrar dt sn sonra voltajdaki artım gene (1/C) * i * dt olacaktır.

O halde başlangıçtan 2x dt sn sonra voltajımız Vo + ((1/C)* i * dt) + ((1/C)* i * dt) olacaktır.

Bu işlemi zamanın n * dt anına kadar devam ettirirsek voltajımızın n * dt anındaki değerini

Vc = Vo+ (1/C) * n * i * dt

olarak buluruz. O halde voltajımız i*(1/C) eğimi ile artıyor demektir.

Burada Vo ilk değerdir. Biz ancak gerçek sinyali Vo değerini biliyorsak biliriz aksi halde DC bileşeni

bilinmeyen ancak Dc nin üstünde değişen bir sinyalden bahsedebiliriz.

Bir integral alan devrenin girişine sabit bir DC gerilim uygularsak integral devresi (integratör) çıkışında  zamanla düzgün artan bir voltaj elde ederiz. Giriş voltajını herhangi bir anda 0 yaparsak integratör çıkışı en son değerini saklar (hafızaya alır). Gene her hangi bir anda sabit DC  voltajını negatif değere götürür ve sabit bırakırsak bu kez integratör çıkışı azalmaya başlar.

DC gerilimde integratörün davranışı basitçe anlaşılmaktadır. Peki ya integratöre giren sinyal değişken bir sinyal ise, integratör çıkışındaki sinyal ne alama gelir.

İntegratöre giren sinyal, integratöre şu soruyu sorar. Ben  bir sinyalin değişim hızının zamana göre değişimiyim. Hadi bil bakalım ben hangi sinyalden türetildim.(Burada türetilmek türevi alındım demektir ve türeme buradan gelmektedir.)

İntegratör, sinyali  işler ve sinyale; işte sen şu anda çıkışımdaki sinyalin değişim hızısın der.

İntegratör giriş sinyalin o anki ani değerini sonsuz küçük zaman ile çarpar ve biraz evvelki çıkış sinyalinin ani değerine ekler ve  şimdiki sonuç bu der. Bu işlemi yaparken de bizim sonsuz küçük olarak düşündüğümüz (tam olarak haya dahi edemediğimiz)  manyak küçük sayının tam anlamıyla  kendisini kullanır. 100 Bin liraya satın aldığımız kondansatör bizim hayal dahi edemediğimiz o sonsuz küçük sayının noktadan sonra trilyon kere trilyon sonraki basamağını bildiği gibi bu basamağında sağındaki trilyonlarca basamağı biliyor bundan sonra gelenleri de ........

İntegral için, bir eğrinin grafiğinin altında kalan alanı bulma işlemi  de denir. Bu yorumu (*) satırını ipucu göstererek size bırakıyorum.

Görüldüğü gibi integral ve türev (aslında diferansiyel) ters işlemlerdir. (Toplama-çıkartma yada çarpma - bölme gibi)

İntegralin konsansatör ile ilişkisini integrali anlatırken örnek olarak ele aldık. Şimdi de Endüktansın integral ile ilişkisine bakalım ve daha öce yaptığımız tehlikelı deneyde 6H lik bobine 3v uygulanınca neden 1 sn sonunda bobinden akan akımın 500mA'e yükseldiğini inceleyelim.

V=L di/dt olduğunu türev konusundan biliyoruz.

di= (1/L)*V*dt yazabiliriz.

Bu bağıntı şöyle der. L değerli Endüktansın uçlarındaki gerilimin ani değeri V ise ve  dt (epsilon saniye) boyunca sabit kaldı ise akımda di artışı olur.

I akımını bulmak demek (1/L)*V*dt ifadesinin integralini almak demektir.

Şimdi T=0 anında I=0 biliyoruz. (Hatırlarsanız daha önce kondansatörde Vo bilinmiyordu bize veriliyordu, Şimdi biz Io değerini kendimiz bulduk, çekmecede duran tarafoyu masamıza koyduk uçlarına tel lehimledik bu esnada içinden hiç akım akmadığından eminiz o halde uçlarına pil bağladığımız andan biraz önce akımının sıfır olduğunu (başlangıç şartını, başlangıç değerini) biliyoruz.

Zamandaki sonsuz küçük artışı 1us (mikro saniye) alalım. Yani bu bizim epsilon saniye değerimiz olsun. 1 saniye sonuna kadar 1sn / 1us yani 1 milyon tane işlem yapmamız gerekir. Neyse başlayalım.

di= (1/L)*V*dt  bağıntısına göre; 3V kalem pil kullanmıştık

T=1us anında di=(1/6) * 3*1e-6=0.5e-6A lik akım artışı olur. Bunu sıfır olan ilk akıma ilave edersek T=1 us sonundaki akım 0.5e-6A olur. (0.5mikroamper.) Varan bir, kaldı 999999 hesap.

T=2us anında, T=1us anına göre di=(1/6) * 3*1e-6=0.5e-6A lik akım artışı olur. Bunu T=1us anındaki akıma ilave edersek T=2 us sonundaki akım 1e-6A olur. (1 mikroamper.) Varan iki, kaldı 999998 hesap.

T=3us anında, T=2us anına göre di=(1/6) * 3*1e-6=0.5e-6A lik akım artışı olur. Bunu T=2us anındaki akıma ilave edersek T=3 us sonundaki akım 1.5e-6A olur. (1.5 mikroamper.) Varan üç, kaldı 999997 hesap.

........................................... devam edersek

T=1miyon us anında, T=999999us anına göre di=(1/6) * 3*1e-6=0.5e-6A lik akım artışı olur. Bunu T=999999us anındaki akıma ilave edersek T=1 milyon us sonundaki akım 0.5A olur. (yarım amper.)

Gerçektende   di= (1/L)*V*dt  matematiksel bağıntısında iki tarafında integrali alınırsa (V sabit)

I=(V/L)*T bulunur. Aman ha, bu bağıntıyı DC voltaj haricindeki voltajlar için kullanmayın, eğer kullanacak sanız örneğin V=sin(t) için di= (1/L)*sin(t)*dt   bağıntısının integralini bulmalısınız.

Kaldığımız yere geri döner ve değerleri I=(V/L)*T bağıntısında yerlerine koyarsak.

V=3V L=6H T=1sn   I=0.5A bulunur.

İntegral ve Türevin uygulama alanları

Türev

Bir sinyalin değişim hızı ile ilgili bilgi edinmemizi sağlar. Yüksek frekanslı sinyaller türev alıcı çıkışında büyük genlikli sinyaller verir, tersine alçak frekanslı sinyaller düşük genlikli sinyaller verir.

Türev almak yüksek frekans geçiren filtre yapmak demektir. Frekans arttıkça çıkış genliği de artar. Frekans sonsuza giderken kazanç da sonsuza gider.

Sinyalde değişim olmazsa türev sıfır olur buda sinyalin tepe yaptığı noktaları bulmamıza kolaylık sağlar. Sinyalin kıvrım yaptığı yerler (yükselip düşüşe geçtiği yada tersi) kolayca anlaşılır.

Türev sinyaldeki anormallikleri ön plana çıkartır.

Sabit kazanç, integral ve türev  birlikte kullanılarak karmaşık filtrelerin yapılması mümkün olur.

Fazda 90 derece ilerleme sağlar.

İntegral

Sinyaldeki yüksek frekanslı bileşenlerin bastırılmasını sağlar. (Sinyalin ortalaması ile orantılı sinyal üretir.)

Çok küçük genlikli, DC yada düşük frekanslı sinyallerin zaman içinde yüksek genlikli sinyaller üretmesini sağlar.

Filitre devrelerinde kullanılır.

Fazda 90 derece gerileme sağlar.

 

İşlemcilerde türev ve integral uygulamalarında esaslar

Öncelikle daha önceleri sıkça bahsettiğimiz sonsuz küçük tanımını tekrar hatırlayalım. Sıfıra çok yakın çok küçük sayıya sonsuz küçük sayı demiştik. Bir sinyali sonsuz küçük zaman aralıklarıyla ölçmek demek, sinyali çok sık aralıklarla ölçmek demektir. Mikroişlemcili sistemlerde analog sinyaller, ADC ile sayısal değerlere çevrilir. İşlemcinin sinyal genliğini öğrenmek için ADC yi başlatması ve içeriğini okuması işlemine, işlemcinin sinyalden örnek alması denir.

Bir sinyal digital ortamda işlenecek ise  örnek alma hızı çok yüksek olmalıdır. Tabi ki bunun teknik sınırları vardır.

1. ADC nin çevrim hızı

2. İşlemcinin ADC den okuduğu veriyi işleme süresi

Bir sinyali işlemek için Shanon örnekleme teorisine göre, uğraşılan sinyalin en yüksek frekanslı bileşeninin frekansının 2 katı hızla örnek almak yeterlidir. Ancak uygulamada 10 yada daha çok katı hızda örnek alınır.

Örneğin EKG (Kalp sinyallerinin izlenmesi) için örnekleme hızımız ne olmalıdır.

Kalp dakikada 80 kez atar, Bu yaklaşık 0.75 sn lik peryda sahşp sinyal  demektir. Bunun 10 katı hızla örnek almalıyız. ACABA DOĞRUMU ?

Kalp sinyali peryodu 0.75 sn olabilir ancak bu sinyalin 1/0.75 =1.4 Hz olduğu anlamına gelmez. Shanon teorisi sinyalin, en yüksek frekanslı bileşeninin 2 katı hızda örnek almamızı söyler. Kalp sinyali karmaşık bir sinyaldir ve bu sinyal yüksek frekanslı bileşenler içerir. (Ben sinyali incelemedim ama en azından 100Hz civarında bileşenler olduğunu tahmin ediyorum). Örnek olarak 100 Hz bileşen varsa örnekleme hızımız en az 200Hz olmalıdır.

Uygulamada 100*10=1KHz kullanılır.

Bu nedenle örnekleme hızını tespit ederken sinyalin en yüksek bileşenleri hakkında fikir sahibi olmak gerekir.

Peki  çok yüksek hızlarla  örnek alsak olmaz mı?

Örneğin sinyalimin en yüksek frekanslı bileşeni 100Hz ise 10000Hz ile örnek alsam ?

Eğer 8 bit ADC kullanıyorsanız yüksek hızlarla ölçüm yapmanın hiç bir mantığı yoktur.Çünkü sinyaldeki çok küçük değişimler ADC nin bit sayısından dolayı hep aynı sayıya dönüşür (sinyal kırpılır). Eğer sinyaliniz düşük frekanslı ise buna karşılık yüksek örnekleme hızıyla örnekleme yapacaksanız ADC çözünürlülüğü de yüksek olmalıdır. Bu da beraberinde maliyet problemi getirir.

Dolayısı ile ADC çözünürlüğü ve örnekleme hızının tespiti çok önemlidir.

İşlemcinin ADC yi gelişigüzel zamanlarda okuması yerine sabit zaman aralıklarında okuması gerekir. Bu tür örnek almaya periyodik örnek alma denir. Bunun için işlemcinin içindeki timerlardan yararlanılır. Periyodik örnek alma, ayrık verilerle uğraşırken işlemlerde kolaylıklar sağlar. (Ayrık veriler için geliştirilmiş matematiksel teknikler,  genellikle ölçümlerin periyodik yapıldığını varsayar.)

Şayet, incelediğimiz sinyalin çok yüksek frekanslı bileşenleri bizi ilgilendirmiyorsa, ADC önüne söz konusu yüksek frekanslı sinyalleri bastıracak alçak geçiren filtre bağlamak gerekir.

İşlemcilerde türev uygulaması

Türev alma konusunda bir kaç teknik vardır. Biz bunlardan sadece birisini inceleyeceğiz.

A, ADC den okunan değer.

 B ADC den Bir önce okunan değer.

T  örnek alma zamanı

TRV ADC den okunan sinyalin türevinin değeri

olmak üzere aşağıdaki yöntemle sinyalin türevi kolayca alınır.

Döngü:.

ADC yi oku A

TRV = (A - B) / T

B = A

T kadar bekle

Goto Döngü

Bu program parçacığı Timer int. içine yazılırsa türev, işlemci üzerinde koşturulan diğer programların işlenme hızından bağımsız olarak düzgün olarak hesaplanmış olacaktır.

İşlemcilerde integral uygulaması

İntegral alma konusunda bir kaç teknik vardır. Biz bunlardan sadece birisini inceleyeceğiz.

A, ADC den okunan değer.

T  örnek alma zamanı

INTG  den okunan sinyalin integrali

olmak üzere aşağıdaki yöntemle sinyalin integrali kolayca alınır.

Döngü:.

ADC yi oku A

INTG = INTG + (A *  T)

T kadar bekle

Goto Döngü

Bu program parçacığı Timer int. içine yazılırsa integral, işlemci üzerinde koşturulan diğer programların işlenme hızından bağımsız olarak düzgün olarak hesaplanmış olacaktır.

Burada INTG değişkeninin uzunluğuna dikkat etmek gerekir, yüksek genlikli düşük frekanslı sinyaller . INTG = INTG + (A *  T) bağıntısı gereği integre edilirken sonuç, INTG değişkenine sığmayıp taşabilir.

Son olarak  şu kısa açıklamayı yaparak yazımızı bitirelim.

İşlemciler lojik devrelerin yerini alarak sayısal devrelerin daha küçük alana sığdırılmasını, tasarımdaki hataların genellikle  donanımda büyük değişiklikler yapmadan sadece   yazılımı değiştirerek giderilmesini sağlamışlardır. Bu büyük bir avantajdır.

Teknolojik ilerlemeler sayesinde artan işlemci gücü, analog sinyallerin de digital ortamda işlenebilmesine olanak sağlamış ve mikroişlemcili sistemlerin  avantajlarından analog sistemlerde de yararlanılması mümkün olmuştur.

Bu sayede digital teknoloji günlük hayatta her yerde karşımıza çıkmaktadır.

Sayısal sinyal işleme her ne kadar mikroişlemcilerle (MPU) yapılabiliyorsa da program yazım teknikleri klasik işlemci yazım tekniklerinden farklı olarak matematiksel denklemlerin (fark denklemlerinin). çözümü esasına dayanır. İşlemlerde hız ve kolaylık sağlayan sinyal işleme çipleri  (DSP) mikroişlemcilerin özel versiyonlarıdır.

Sayısal sinyal işleme teknikleri matematiğin gerçek uygulaması olup teknoloji ne kadar ilerlerse ilerlesin  gerek işlemcinin  sınırlı işlem hızı gerek sonsuz küçük (epsilon) sayısı yeterince küçük alınamaması gerek se  ADClerin sonsuz bit uzunluğa çıkmalarının mümkün  olmaması nedeniyle sayısal sinyal işleme tekniği  analog devrelerin hızına ve doğruluğuna ulaşamaz.   Dolayısı ile kondansatör ve bobin içeren devreler, uzun yıllar cazip olmaya devam edecektir.

Son

 

pıc

Pic
PIC Serisi mikroislemciler MICROCHIP firmasi tarafindan gelistirilmis ve üretim amaci çok fonksiyonlu logic uygulamalarinin hizli ve ucuz bir Mikroislemci ile yazilim yoluyla karsilanmasidir. PIC’in kelime anlami -PERIPHERAL INTERFACE CONTROLLER- Giris Cikis islemcisidir. Ilk olarak 1994 yilinda 16 bitlik ve 32 bitlik büyük islemcilerin giris ve çikislarindaki yükü azaltmak ve denetlemek amaciyla çok hizli ve ucuz bir çözüme ihtiyaç duyuldugu için gelistirilmistir. Çok genis bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacin ilk meyvesidir. PIC islemcileri RISC -benzeri islemciler olarak anilir. PIC16C54 12 Bit komut hafiza genisligi olan 8 bitlik CMOS bir islemcidir. 18 bacakli dip kilifta 13 I/O bacagina sahiptir ve 20 Mhz osilator hizina kadar kullanilabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadir. Bu hafiza kapasitesi birçok insani güldürmüstür sanirim ama bir risc islemci olmasi birçok isin bu kapasitede uygulanmasina olanak vermektedir. Örnegin ANTRAK R94 rölesinde kullanilan role kontrol devresi bir adet PIC16C54 içermektedir. Bu devre sayesinde R94 Time Out Timer, DTMF kodlu Kontrol ve kapatma, Konusma sonu zamanlamasi gibi islemler program belleginde 324 byte yer kaplamakta 14 byte RAM kullanilmaktadir. PIC serisi tüm islemciler herhangi bir ek bellek veya giris/çikis elemani gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalistirilabilmektedir. Tek bacaktan 40 mA akim çekilebilmekte ve entegre toplami olarak 150 mA akim akitma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansinda çektigi akim çalisirken 2 mA stand-by durumunda ise 20uA kadardir. PIC 16C54’ün fiyatinin 2.0 US$ civarinda oldugu düsünülürse bu islemcinin avantaji kolayca anlasilir. PIC 16C54 ‘un mensup oldugu islemci ailesi 12Bit core 16C5X olarak anilir. Bu gruba temel grup adi verilir. Bu ailenin üyesi diger islemciler PIC16C57, PIC16C58 ve dünyanin en küçük islemcisi olarak anilan 8 bacakli PIC12C508 ve PIC 12C509’dur. Interrupt kapasitesi ilk islemci ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadir. Daha sonra üretilen ve Orta sinif olarak taninan 14Bit Core- 16CXX ailesi birçok açidan daha yetenekli bir grup islemcidir. Bu ailenin temel özelligi interrupt kapasitesi ve 14 bitlik komut isleme hafizasidir. Bu özellikler Pic’i gerçek bir islemci olmaya ve karmasik islemlerde kullanilmaya yatkin hale getirmistir. PIC16CXX ailesi en genis ürün yelpazesine sahip ailedir. 16CXX ailesinin en önemli özellikleri seri olarak devre üstünde dahi programlanmasi -ki bu özellik PIC16C5x de epey karmasikti , paralel programlanabiliyordu- interrupt kabul edebilmesi, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardi giris çikislari kabul edecek islemcilere ürün yelpazesinde yer vermesi. PIC 16CXX ailesinin amatör elektronikçiler arasinda en çok taninan ve dünyada üzerinde ençok proje üretilmis, internetin gözdesi olan bireyi PIC16C84 veya yeni adiyla PIC16F84 dur PIC 16F84 un bu kadar popüler olmasi onun çok iyi bir islemci olmasindan ziyade program belleginin Eeprom - Elektrikle silinip yazilabilen bellek - olmasindan kaynaklanmaktadir. Seri olarak dört adet kabloyla programlanmasi da diger önemli avantajidir. Bugüne kadar amatörce bir islemciyle ugrasmis herkesin en büyük sikintisi eprom veya eprom tabanli islemcileri programladiktan sonra UltraViole isik kaynagi ile silip tekrar programlamaktir. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmustur. Evde üretilmesi zor olan özel bir programlayici da madalyonun diger yüzüdür. PIC16F84 amatörler tarafindan internette en bol programlayicisi bulunan islemcidir herhalde. Ben su ana kadar 50 den fazla PC ve MAC tabanli evde yapabileceginiz programlayiciya rastladim. Eprom silmek diye birsey zaten söz konusu degil zira eeprom bellegi programlayan programlayici devre 1 saniye içinde ayni bellegi silebilmektedir. Bu özellik size çok hizli ve defalarca deneyerek program gelistirme avantajini getirmektedir ki bu amatör elektronikçi için bulunmaz bir nimettir. Bu denemeleri yaparken islemciyi devrenizden sökmeniz dahi gerekmez. Bu tip programlamaya ISP -In System Programming- denmektedir. Amatör bir elektronikçi PIC16F84 ile Program gelistirmek için asagidaki ekipmana ihtiyaç duyacaktir: PIC16F84 MS-DOS tabanli PC ASCII Editör (Örnegin Dos'un EDIT'I) MPASM Assembler Programlayici/silici Programlayici için yazilim.
 

mikro işlemci

    Click Here!
Mikroişlemci
Genel bir ifadeyle bir esas işi yapan kısmı olarak isimlendirilebilecek olan mikroişlemciler hakkında biraz daha ayrıntılı bir açıklama şu şekilde yapılabilir:
Bir dijital bilgisayar üç temel kısımdan oluşmaktadır.
Merkezi İşlem Birimi - MİB (Central Processing Unit – CPU)
Program ve Veri Hafızaları (Program and Data Memory)
Giriş – Çıkış Birimleri (Input – Output Units)
Merkezi İşlem Birimi (MİB / CPU), verileri işleme ve sistemi oluşturan çeşitli birimler arasında bilgi akışı kontrolü işlemlerini gerçekleştirir. Veri işlemenin büyük çoğunluğu MİB de yer alan Aritmetik Lojik Birim üzerinde gerçekleştirilir.
Ancak bu işlemlerin gerçekleştirilmesi sırasında Kod Çözme Kontrol Birimleri ile çeşitli Saklayıcılar (Registers) da çok yoğun olarak kullanılır. İşte bu merkezi işlem birimini oluşturan çeşitli alt birimlerin tek bir entegre devre üzerinde gerçekleştirilmiş – üretilmiş haline Mikroişlemci (Microprocessor) adı verilir. Bir mikroişlemci kullanılarak hazırlanmış bilgisayarlara mikrobilgisayar denilmektedir. Hafıza ve giriş-çıkış birimlerinin miktarı, türü ve kapasitesi uygulamaya bağlı olarak değişir.
İsimlendirmede kullanılan mikro adı ise işlemcinin veya bilgisayarın yeteneğinin kısıtlılığını değil, boyutlarının küçüklüğünü belirtmek için kullanılır. Modern gelişmiş mikroişlemcilerde bir kaç milimetre karelik alanda milyonlarca tranzistör yer almaktadır. Örneğin Pentium II işlemcisinde (ön hafıza, cache memory) hariç 7.5 milyon adet tranzistör bulunmaktadır.
Mikroişlemcilerin tarihsel gelişimine kısaca bir göz atılacak olursa ilk mikroişlemcinin bir hesap makinesinde kullanılmak üzere INTEL firması tarafından 1971 de I4004 adıyla üretilen 4 bitlik bir işlemci olduğu görülür. Bu tarihten önce bilgisayarların MİB leri önceleri elektron tüpleri ve röleler daha sonraki dönemde ise tranzistörler ve çeşitli elektronik devreler kullanılarak hazırlanıyordu.
Çok büyük yer kaplayan ve çok güç tüketen bu eski bilgisayarlar ortam şartlarına karşı da çok duyarlıydılar. İşlem kapasitelerinin çok kısıtlı olmasının yanı sıra sürekli bakım gerektiriyorlardı.
Bir fikir vermesi açısından 1945 de Pennsylvania Üniversitesinde tamamlanan ENIAC isimli ilk bilgisayarın 30 metre boyu ve 30 ton ağırlığı olduğunu söyleyebiliriz. 18,000 radyo tüpünden oluşan cihaz 100 Kwatt güç harcamaktaydı. 1971 deki, bilgisayarın temel elemanı kabul edilen MİB ‘in tek bir entegre devre içine sığdırılarak üretimi, yarı-iletken teknolojisinde, tranzistörün keşfi gibi bir sıçrama gerçekleştirmiştir.
INTEL, özel sipariş üzerine geliştirdiği 4 bitlik I4004 (1971) ve 8 bitlik I8008 (1972) entegre devrelerine ilk müşterilerinden başka bir ilgi beklemediği için üretim hattını düşük kapasitede tutmuştu. Ancak aksine bu işlemciler büyük bir ilgi gördü ve 1974 de genel amaçlı ilk 8 bitlik MİB olan I8080 işlemcisini üretti. Bu işlemciye büyük bir talep oldu ve kısa bir zamanda I8080 endüstri standardı oldu.
İki yıl sonra 1976 da daha gelişmiş bir model olan I8085 üretildi. Bu arada 1975 yılında sektörün ikinci önemli ismi olan Motorola firması da MC6800 adındaki işlemciyi piyasaya sürerek o günden itibaren süre gelen bir yarışa katılmış oldu. Mikroişlemcilerin sınıflandırılmasında önemli bir ölçü olan bit sayısı işlemcinin üzerinde ilem yapabildiği en uzun verinin bit sayısını gösterir.
Kelime uzunluğu (word lenght) de denilen bu parametre 4 bit, 8 bit, 16 bit, 32 bit gibi değerler alabilmektedir. Bu değer aynı zamanda işlemcinin saklayıcılarının ve veri yolunun genişliğini de gösterir. Ancak bazen harici ve dahili veri yolları farklı genişliklerde olabilir. 1978 yılında ilk 16 bitlik işlemcisi olan 8086 yı üreten INTEL bir yıl sonra 1979 da harici veri yolu genişliği 8 bit olmanın dışında 8086 ile aynı yapıya sahip olan 8088 i piyasaya sürdü. 8088, 1981 de üretilmeye başlanan IBM PC (Personel Computer – Kişisel Bilgisayarların) ilk işlemcisi olmuştur.
16 bitlik işlemcilerde endüstri standardı olan 8086 / 8088 günümüze kadar gelen çeşitli ürünlerle X86 ailesi diye isimlendirilen mikroişlemci ailesinin çekirdeği (core) olmuştur.
 

pic

Nihayet en çok merak edilen konulardan bir tanesi olan PIC programlamaya gelebildik. Konuya girmeden önce, maillerine hala cevap yazamady?ym okurlardan özür diliyorum. Çok fazla sayyda mail geldi?i için, geri dönmem biraz zaman alyyor. Ynternet sayfamyzy da unuttu?umu söyleyen okurlar oldu. Gerçekten, synavlar, i? güç derken uzun süredir sayfa ile ilgilenemedim. Bunu ?ubat ayy içinde telafi edece?im.

PIC programlama, öyle çok kysa bir ?ekilde anlatylacak bir konu de?il. Bu güne kadar ö?rendi?imiz bütün bilgiler, burada i?imize yarayacak. Yyide ho?ta, PIC te neyin nesi? diyen okurlarymyz olabilir. Bu sebeple biraz açyklamakta fayda görüyorum. PIC, giri? çyky? elemanlarynyn denetimini çok hyzly olarak yapabilecek bir ?ekilde dizayn edilmi? bir chip'tir. Örne?in, lamba, röle, motor, ysy ve benzeri sensörlerin denetimi bu chipler ile yapylabilir.

Daha önceden geli?tirdi?miz uygulamalaryn, çaly?abilmesi için, bir bilgisayara ve üzerindeki paralel yada seri porta ihtiyaç duyuyorduk. PIC programlamayy ö?rendikten sonra bu uygulamalary, bilgisayardan ba?ymsyz bir hale getirebilece?iz. Bu chip'ler, RISC (Reduced Instruction Set Computer) mimarisi ady verilen bir yöntem kullanylarak üretildiklerinden, bu PIC leri programlamak için gereken komutlar oldukça basit ve sayy olarak azdyr.

Uygulamalarymyzy, PIC 16F84 serisi ile gerçekle?tirece?iz. Bu chip PIC16C84 olarakta bilinir. Ykisininde birbirinden hiçbir farky yoktur. Bu chip'i tercih etmemizin en büyük nedeni, FLASH teknolojisi ile üretilmi? olmasydyr. Flash memory 'e yüklenen bir program, chip'e uygulanan enerji kesilse bile silinmeyecektir. Flash bellekler, bu özellikleri ile EEPROM bellekler olarakta bilinirler. PIC lerde memory çe?itleri üç tiptir,

EPROM (Erasable PROgrammable Memory): Bu bellek tipine, elektrik sinyali ile kayyt yapylyr. Silip yeniden ba?ka bir program yazabilmek için mor ötesi y?yk altynda bir süre tutmak gerekir. Bu i?lem EPROM silici denen cihazlarla yapylyr.
EEPROG (Electrically Erasable PROgrammable Memory): Microchip firmasy bu bellek tipini FLASH bellek olarakta adlandyryr. EPROM dan farky, silme i?leminin hyzly ve elektrik sinyali ile yapylmasydyr. Bizim kullanaca?ymyz PIC 16F84 bu kategoriye girmektedir.
ROM (Read Only Memory): Maliyeti dü?üktür fakat, sadece bir kez, fabrikasyon syrasynda yazylabilirler. Kötü yany, üretimden sonra chip programy içinde bir hata tespit edilirse, üretilen bütün chiplerin atylmak zorunda olmasydyr.

PIC 16F84 üzerindeki flash memory sayesinde, chip üzerine bir program yazdyktan sonra, herhangi bir silici cihaza gereksinim duymadan ve beklemeden, kolayca programy silmek yada yeniden programlamak mümkündür.

PIC 'ler, PIC Assembly ile programlanyr. Toplam 35 komuttan olu?ur. Herhangi bir text editörü ile kodlary yazmak mümkündür. Bu kodlary derleyecek birde programa ihtiyacymyz olacaktyr. Biz, Microchip firmasynyn üretti?i, www.microchip.com adresinden de ücretsiz olarak indirebilece?iniz MPASM derleyicisini kullanaca?yz. Tercih yinede size kalmy?. Ba?ka derleyicilerde bulmak mümkün.

MPASM ile, makina diline çevrilmi? olan bu program kodlaryny, PIC 'e yazmak için, bir PIC programlayycy devresine ihtiyacymyz var. Bu karty, kendimiz yapabilece?imiz gibi, hazyr olarakta almamyz mümkün. E?er hazyr bir PIC programlama kiti almak istiyorsanyz, ProtoPIC ady verilen ve www.tekno-market.com adresinde de satylan, Infogate firmasynyn üretti?i bu karty da almanyz mümkün. E?er satyn almak istemiyorsanyz, kendiniz de yapabilirsiniz. Bunun için, syk olarak kullanylan Sam J. Engstrom ' un geli?tirdi?i, seri port üzerinden PIC 16F84 programlayycy devresinin ?emasyny veriyorum.


Bir PIC 'i programladyktan sonra, yapylacak bir devre üzerinde deneme yapmak gerekecektir. Sonuçlara göre belki chip 'i yeniden programlama gerekecektir. Bu nedenle, çaly?malarymyzda hep kullandy?ymyz breadboard lardan buradada kullanyyoruz. PIC çyky? portundaki sinyaller genellikle, bu uçlara ba?lanan ledler ile izlenir. Syrf bu i? için üretilmi? PIC deneme kartlaryda vardyr. Konumuz ilerledikçe bizde kendimize bir deneme karty yapaca?yz.

PIC16F84, çok az enerji harcar. Flash belle?e sahip olmasy nedeni ile, clock giri?ine uygulanan sinyal kesildi?inde registerleri içerisindeki veri bozulmadan durur. Sinyal tekrar verildi?inde, program kaldy?y yerden devam eder. RA0-RA3 pinleri ile RB0-RB7 pinleri giri? çyky? portlarydyr. Ayny daha önceki paralel port uygulamalarymyz gibi çaly?yr. Bu portlar ile dy? ortama gönderilecek sinyaller, dü?ük olacaktyr. Bu nedenle, sinyalleri güçlendirmek için daha önce kullandy?ymyz, röle ve transistör gibi ek elemanlara ihtiyacymyz olacaktyr. Yinede bu enerji, ayny paralel porttaki gibi LED yakmak için yeterlidir.

Portlaryn maksimum sink akymy 25mA, source akymy ise 20mA dyr. Kö?eye ve elektroni?e yeni giri?en arkada?laryn hevesini kyrmamak için kullandy?ym terimleri azda olsa açyklamaya çaly?aca?ym. Kendimdende biliyorum çünkü, ilk bu i?lere heves etti?imde nezaman elime bir elektronik kitaby alyp okumaya ba?lasaydym, mutlaka anlamady?ym bir sürü ?ey olurdu. Sonradan kastyryp dururdum nedir ne de?ildir diye.

Vss (5) -Vdd (14) uçlary (Besleme):

Herneyse, Sink akymy gerilim kayna?yndan çyky? portuna do?ru akan akyma, Source akymy ise ise GND (toprak) ucuna do?ru akan akyma denir. PIC16F84 ün çekti?i akym, besleme gerilimine, portlardaki yüke ve clock giri?ine uygulanan saat sinyalinin frekansyna göre de?i?ir. Besleme gerilimi +5 Volt olarak, 5 numaraly Vdd ucundan, toprak ba?lantysyny ise 14 numaraly Vss ucundan girilir. PIC 'e ilk kez enerji verildi?inde, meydana gelebilecek gerilim dalgalanmalary nedeniyle olu?abilecek aryzalary önlemek amacy ile, Vdd ile Vss arasyna 0.1µf lik bir dekuplaj kondansatörü ba?lamakta fayda vardyr.


OSC1/CLK IN (16) ve OSC2/CLK OUT (15) (Clock Giri? ve Çyky?lary):

Daha önce seri portu anlatty?ymyz sayyda, saat (clock) sinyalinde bahsetmi?tik. Clock sinyali, pe?i syra gönderilen lojik "1" ve "0" darbelerinden olu?ur. Bu darbelerin araly?y, clock sinyalinin frekansyny belirler. Bu sinyali üretmek için osilatör devreleri kullanylyr. Bu devrelerin en klasi?i RC devreleridir. Bir RC devresi adyndanda anla?ylaca?y gibi, bir direnç ve kondansatörden olu?ur. Bu tip osilatörler, zamanlamanyn çok önemli olmady?y durumlarda kullanylyr. Sinyal üretme manty?y çok basittir. +5 Volt de?eri, kondansatör doluma ula?ana kadar topra?a akmak isteyecektir. Kondansatör doldu?u anda gerilim OSC1 giri?ine akar. Kondansatör tekrar bo?alyr ve i?lem ba?a döner. Böylece kondansatörün dolup bo?almasyna dayanan pe?isyra bir darbe sinyali üretilmi? olur.

OSC1 ucuna uygulanan bu frekansyn dörtte biri OSC2 ucundan çykar. Bu sinyalle de di?er bir eleman sürülebilir. Clock sinyalli RC osilatör devrelerinin dy?ynda kristal kontrollü osilatörler yada seramik resonatörler kullanylabilir. Ylk ba?larda çok hassas zamanlama gerektiren devreler yapmayaca?ymyz için RC tipi osilatör bizim i?imizi görecektir.

Giri?/Çyky? Portlary (RA0-RA3 ve RB0-RB7):

PIC16F84 te 13 adet giri?/çyky? portu vardyr. Bunlardan 8 tanesi B portu (RB0-RB7) di?er 5 tanesi de A portudur (RA0-RA4). Bu portlar giri? veya çyky? için programlanabilir. Programlama kysmyny bir dahaki sayyda inceleyebilece?iz. Bu portlardan geçebilecek sink yada source akymlary bir LED i sürmek için yeterli enerjiyi verecektir. Çyky? akymynyn az geldi?i durumlarda yükseltici devreler kullanylabilir. B portunun 8 ucu sanki 50K ohm luk dirençlerle Pull-up yapylmy? gibi etki gösterir. Bu port uçlaryndan bir tanesi çyky? olarak ayarlandy?ynda o uçtaki pull-up direnci iptal edilir. Bu kysymlary uygulama syrasynda daha rahat kavramak mümkün olacaktyr.

Reset Devresi ve ucu (4):

PIC16F84 e gerilim uygulandy?ynda, programyn ba?langyç adresinden itibaren çaly?masyny sa?layan bir reset devresi vardyr. Terslenmi? olan MCLR (4) ucu ile, programyn kullanycy tarafyndan kesilip ba?tan ba?latylmasy sa?lanabilir. Bunun için MCLR ucuna +5V 'luk gerilim uygulamak gerekir. Bu i?lem bir buton ile yapylabilir.

PIC Assembly

Assembler, text editöründe yazdy?ymyz komutlary, PIC 'in anlayabilece?i hexadesimal kodlara çeviren bir programdyr. Bilgisayarynyzdaki i?lemicininde, programlanmasy yine bu dile dayanyr. Kysacasy Assembler bilgisayar dillerinin en kökte olanydyr. Assembly kodlaryny kavramak ve kullanmak oldukça zordur. Do?rudan adresler ile çaly?mak gerekir. Komut yerine ço?u zaman sadece rakam ve harf yazarsynyz. Kary?yk olsa bile anla?ylmaz de?ildir. Bir dahaki sayyda gerçekle?tirece?imiz ilk PIC programynda, bir çok komudun kullanymyny anlamanyz mümkün olacaktyr.


PIC16F84 ün uçlarynyn temel olarak ne i?e yarady?yny görmü? olduk. Unutmayynki, burada PIC programlamanyn tüm detaylaryny ve özelliklerini anlatmamyz mümkün olmayacaktyr. E?er PIC programlama i?ine girmek istiyorsanyz, size tavsiye edece?im bir kitap olacak. Uzun süredir toplady?ym PIC ile ilgili dökümanlaryn neredeyse derlenmi? bir halini bu kitapta buldum. Ayny zamanda yazymdada kaynak olarak kullandy?ym kitaplardan bir tanesi;

Alta? Yayynlary
Uygulamaly Ö?retim Serisi
Mikrodenetleyiciler ve PIC programlama
Yazar: Orhan Altynba?ak

Bu kitap bize her zaman destek olan ERA Bilgi Sistemleri ve Yayyncylyk firmasynyn destekledi?i bir kitap. ERA 'nyn da bu konu ile ilgili güzel kitaplary bulunmakta. Size tavsiyem bu kitaby edinin. Gerçekten çok faydaly ve anla?ylabilir bilgiler içeriyor.

Ayryca yine kaynak olarak kullandy?ym, Sam J. Engstrom 'un http://www.pp.clinet.fi/~newmedia/sengelec/index.html adresli sayfasyna bir göz atyn. Bu adresten ?emasyny verdi?im PIC programlama kiti hakkynda ve uygulamalar hakkynda linkler bulmanyz mümkün. Birde sitemize yeni eklenen bir link gözüme çarpty. http://picpro.cjb.net adresine de bir göz atyn bence.

Uygulamaly yazylar sizler tarafyndan daha çok tutuldu?unu biliyorum. Paralel port ile olabilecek bir çok uygulamayy gerçekle?tirdik bu güne kadar. Gerisi sizin yaratycyly?ynyza kalyyor birazda. PIC programlamayy ö?rendikten sonra, biraz Yapay Zeka programlamadan bahsedece?iz ve örnek programlar geli?tirece?iz. Daha sonrada adym adym, bilgisayar kontrollü basit bir robot yapaca?yz. Daha sonra da bir ev otomasyonu projemiz olacak. Örne?in parmak iziniz ile evinizin kapysyny açabilece?iniz bir devre gerçekle?tirece?iz.

Esasynda yapylabilecek çok fazla ?ey var ama, bir noktadan sonra i? tamamen maddi güce dayanyyor. www.robotstore.com adresine girdi?iniz zaman neredeyse bütün parçalary almak istiyorsunuz. Fakat kargosuyla birlikte oldukça pahalyya geliyor. O bakymdan robot tasarlarken, mümkün oldu?u kadar bulabilece?imiz malzemeleri seçmeye özen gösterece?im.

Bu aylykta bu kadar. Bir dahaki sayyda yine PIC programlamayy anlatyyoruz. Bu sefer programlama kysmyna de?inece?im ve bir uygulamamyz olacak. Uygulama sever okurlara duyurulur :) . Görü?mek dile?iyle, ho?çakalyn.

 
by 
by 
by 
by 
by 
tablo  
Photo 1 of 48

Feed

The owner hasn't specified a feed for this module yet.
There are no categories in use.

Windows Media Player

Xbox Live GamerCard

An error occurred loading this module.

Xbox Live Recent Games

An error occurred loading this module.