Jump to page: 1 2
Thread overview
İlk Pic Devremi Çizdim
Jun 01, 2013
huseyin
Jun 02, 2013
huseyin
Jun 03, 2013
Salih Dinçer
Jun 03, 2013
erdem
Jun 06, 2013
huseyin
Jun 06, 2013
Salih Dinçer
Jun 18, 2013
huseyin
Jun 18, 2013
Salih Dinçer
Jun 19, 2013
erdem
Jun 29, 2013
huseyin
June 01, 2013

Merhaba Arkadaşlar
Uzun bilgi toplama serüvenim sonrasında pic programlama ve devrelerini oluşturma hakkında elimde biraz kaynak oldu.
Bu kaynakları da kullanarak birkaç devre örneği çizdim ve ccs de programladım ancak benim elektronik ile aram çok iyi değil ben nasıl kendimi geliştirebilirim
yardımcı olur musunuz?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 01, 2013

Erdem bilir. :) Kendisi burada yanıt yazmazsa sen özel mesajla sorabilir ve bize de hatırlatabilirsin.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 02, 2013

Tamam teşekkur ederim

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 03, 2013

Tavsiyem, breadboard (devre kurma tahtası) üzerinde ve pasif devre elemanlarıyla (kristal olmadan) ilk denemelerini yapman. Ayrıca programlama sırasında tak çıkar gerekeceğinden, bootloader veya ICSP kullanman iyi olacaktır. Başlangıçta bu zor gelirse 2 adet IC socket ile de PIC bacaklarına zarar vermeden çıkart ve tak yapabilirsin. Soketlerden bir breadboard üzerinde kalır diğeri PIC üzerinde. Soketlerin precision olmasında fayda vardır.

Başarılar...

  • Breadboard: Üzerinde delikleri olan, kısa devre diziler meydana getiren lehimsiz devre kurma tahtası.
  • Bootloader: PIC için geliştirilmiş bir önyükleyici. Yaptığı ise çalışma anında program belleğine kendisinin bulunduğu baş bölüm hariç yeni programı yazmak ve sonra yeniden başlatmak (restart) şeklinde özetleyebiliriz. Az yer kapladığı için ve TX/RX (serial communication) ile devre üzerinde (in-circuit) programlama yapıldığı için çok tercih ediliyor.
  • ICSP (In-Circuit Serial Programming): Bu da önceki açıklamada bahsettiğim gibi PIC'i sökmeden programlama imkanı sunar. Her PIC desteklemez ama 16F62X, 16F8X, 16F8XX serileri bile destekler. Zaten daha üst seviyelerde her şey var...:)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 03, 2013

Ali bey gibi İTÜ mezunu elektronik mühendisleri ve Salih gibi elektronikçi arkadaşlar varken benim tavsiye yapmam olur mu bilmiyorum ama.

Bu arada Salihcim merak ettim. Bu kanal senin mi ;-)

http://www.youtube.com/user/salihdb

"Bread board" adı üzerinde elektronikçilerin ekmek tahtası :)

Eskiden böyle ufak deneme tahtaları olmadığı için devreler kocaman tahta üzerine kuruluyormuş.

Bana sorarsanız bir kaç yolla elektronik öğrenilebilir.

http://temelelektronik.net/kitaplar.html

Birincisi işin kuramsal tarafını öğrenerek. Eğer vaktiniz varsa ve elektroniğe ciddi olarak bir merakınız varsa işin teorik kısmını öğrenmenizi tavsiye ederim. Çok faydası oluyor.

Eğer bu yolu seçerseniz bu kitapların oldukça iyi olduğunu söyleyebilirim.

Foundations of Analog and Digital Electronic Circuits

Elektrik - Elektronik Mühendisliğinin Temelleri

Ayrıca 6.002 gibi bir kurs da çok faydalı olabilir.

http://bit.ly/11SanZI

Diğer yöntem ise işin teori kısmına fazla girmeden, hobi amaçlı pratik devreler hazırlamak için şu kitaplar olabilir.

Getting Started in Electronics

Make: Electronics

Elektronik Hobi

Evet itiraf ediyorum. Benim ilk okuduğum Elektronik Hobi kitabıydı. Ve büyük bir kısmını anlamamıştım ;-)

Şu an kitapta kullanılan bazı parçaları bulamayabilirsiniz ama gerçekten ilginç fikirler veriyor.

Eğer sadece mikrodenetleyicilere bir şeyler yapmak istiyorsanız o listedeki Doğan İbrahim hocanın kitaplarını da beğendiğimi söyleyebilirim. Bunlar da pratiğe yönelik kitaplar. Gene bazı parçaları bulamayabilirsiniz ya da kaynak kodu derleyicilerle biraz değişmiş olabilir.

Konu olarak robotiği seçerseniz gene David Cook'un kitaplarında pratik hobi robotik konuları anlatıyor.

Hatta belki Arduino gibi geliştirme ortamları kullanılarak da bir başlangıç yapılabilir.

Ben şimdiye kadar Arduino kullanmadım. Bu devrede kullanılan parçaları bulmak artık pek mümkün değil. Ama gene de ileride böyle bir devre yapmayı düşünebilirim.

http://www.youtube.com/watch?v=CbvPjfKFbiE

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 06, 2013

Hepinize öncelikle teşekkür ederim. Bugün elektronikçiye gittim pcb sonra kristal falan işte temel elemanları aldım baskı devre tekniklerini de öğrendim breadboard dediğiniz bu delikli beyaz tahta mı ?(Fizik lab. da görmüştüm) Lehimsiz ise işime gelir.

Salih Hocam kristal olmadan pasif elemanlar ile neler yapılabilir elektronik bilgim çok kıt ben programlamadan başlamayı düşünmüştüm direkt :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 07, 2013

Merhaba Hüseyin,

Doğrudan (direct) program yazmaya geçersen "bu niye çalışmıyor!" gibi sonuçlar ile çok karşılaşabilirsin. Halbuki internette bulduğun kodun aynısını hatta HEX dosyasını olduğu gibi PIC'e yüklemişsindir!

Elbette malzemelerin hazır ise çok arzuladığın çalıştırma hadisesine çok kısa zamanda geçeceğiz. Öyle veya böyle bir LED yakıp, hatta bir düğme (button) ile bunu etkileşimli yapman mümkün olacak. Belki yazacaklarımı iyi anlarsan ve doğru uygulayabilirsen yazı sonunda bunu yapacaksın bile...:)

(Ancak uyarmalıyı#include <stdlib.h>#include <stdlib.h>#include <stdlib.h>m yazı uzun olabilir ve bir solukla okuma istersen....)

Belki elektroniğin en temel mevzularından biri osilatörlerdir. Kalbimiz bile bir frekansa göre hareket etmiyor mu? Öyleyse hayatın bile temeli diyebileceğimiz bir olayı çok iyi anlamalıyız. Bu PIC'in donanım bilgisine atılacak ilk adım olabilir ve lütfen sık sık program yazmanın yanında üzerinde çalıştığın donanımı da hakim olmaya çalış. Yoksa aralarındaki uçurum büyürse sorunlar sıklaşır. Yani frekans formulünden (f = 1/T) gidersek T değer küçüldükçe (T < 1) küçülür ve içinden çıkılmaz bir hal alır.

Şimdi, basit denemeler için Mega Hertz'ler seviyesinde PIC'in çalışmasına gerek yok. O yüzden PIC 2 OSC bacağı yerine bir tanesini (OSC1'i) ve de birer direnç/kondansatör ikilisini kullanarak basit bir başlangıç yapabiliriz. Ancak yazılım kısmında da programlarken ayarının doğru (RC in configuration bits) olduğuna emin olmasın. Bağlantısı ise şu şekilde:

'http://www.8051projects.net/pic_tutorial/Untitled-14.gif'

Çok basit değil mi? Biz buna RC Oscillator diyoruz ve elektronikte, bobinden tut da kristal elemanına, hatta şekillerine göre çok kapsamlı bir konudur. Ama bizim için 2,2K'nın altında olmadığı müddetçe bir direnç (örn. kolay bulabileceğin 10K) ile kristalli devrede de kullanabileceğin 20 pF (pikofarat) kondansatör yeterli oluyor. Tekrar hatırlatmalıyım RC ayarı önemli. Aslında bu konfigurasyon biti kristal kullanırken de önemli. Örneğin 20 MHz. kullanacağın zaman HS (HighSpeed) ayarı yapman gerekiyor.

http://320volt.com/wp-content/uploads/2009/04/breadboard.jpg

Genelde breadboard üzerinde 2 kenarda ikili yatay kısa devre olmuş bölümler vardır. Bunlardan biri artı (+ kırmızı), diğeri eksi (- mavi) deliklere direnç ile kondansatörü takarak kullanabilirsin. Kalan uçları da PIC'in olduğu bacağa takıyorsun, hepsi bu kadar...

Ne kadar kolay öyle değil mi?

Ancak bu kadar basit olmayabilir, şunlara da dikkat et:

  • Yine bir direnç (1K) kullanarak MCLR ucunu artıya (+) ver ve eğer PIC'i baştan başlatmak (reset) isteren,
  • Herhangi bir düğme (button) ile tıpkı RC bağlantısı gibi onun bir ucunu eksiye (-) diğerini MCLR'a bağla,
  • Doğal olarak PIC'in güç bacaklarını (+/-) bağlayacaksın ama Vdd uca 100 nF kondansatör takmalısın ve
  • Kondansatörün diğer ucunu şaseye (-) ver ama pilli devrelerde bu kondansatör çok şart değildir...

Hadi çok sıkıldık, şimdi biraz program yazalım...:)

Tabi PIC'i bahsettiğim bağlantılar da breadboard üzerinde kurabildiğini var sayıyorum. Herhangi bir bacağa (örn. PortB'nin 0. bitine), 1K'dan düşük bir direnç ile seri bir LED bağlayalım (sürelim) ki hiç bir şey bozulmasın. Bu 470 ohm olursa daha iyi olur. Her ne kadar PIC'in sink (LED artıya) / source (LED eksiye) akımları birbirine yakın ve LED'i bozmayacak seviyede olsa da en doğrusu direnç kullanmaktır.

Alıntı (EK BİLGİ):

>

LED'ler basit bir lambadan farklı olarak tıpkı elektrolitik bir kondansatör gibi artı/eksi uçlara sahiptir. Üstelik diyot özelliği vardır. Zaten bunu kısaltmanın açılımından anlayabilirsin. Ayrıca renklerine ve büyüklüklerine göre bir direnç hesabı vardır. Eğer yeşil bir LED pembe/kırmızı bir kıvamda yanıyorsa o bozulmaya başlıyor demektir. Ömrünü hızlıca tüketir o yüzden çok parlak yeşil bir renk yansa bile hesabı önemli olabilir ömrünü kısaltabilir. Şurada bir hesaplama script'i var, belki işine yarar:

http://320volt.com/led-calistirmak-icin-seri-direnc-hesaplari/

Gördüğün gibi hala donanımdan kurtulamadık. Peki bir LED'i, PIC çalıştığı müddetçe, sürekli yanıp sönmesini isteseydik ne gibi basit bir program yazardık. Elbette yüksek seviyeli bir dilde, toggle gibi komutlar ile bir kaç satırda bu mümkün. Ama başlanıçta PIC iyi tanıyabilmek için assembly ile kodlama yapmanı salık veriyorum:
'
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
LIST P=16F84
INCLUDE "P16F84.INC"

KURULUM:
SAY1 EQU H'0C'
SAY2 EQU H'0D'
CLRF PORTB
BSF STATUS, 5
CLRF TRISB
BCF STATUS, 5

TEKRARLA:
BSF PORTB, 0
CALL AZBEKLE
BCF PORTB, 1
GOTO TEKRARLA

;*************** ALT YORDAM ***************
AZBEKLE:
MOVLW H'FF'
MOVWF SAY1
L1: MOVLW H'FF'
MOVWF SAY1
L2: DECFSZ SAY2, F
GOTO L2
DECFSZ SAY1, F
GOTO L1
RETURN
;*************** ALT YORDAM ***************
END
'
C'de ise şöyle yapacaktık:

Alıntı:

>
> #include <p16f84a.h>
> #include "HardwareProfile.h"
> #include <stdlib.h>
>
> void main (void) {
>   TRISB = 0x00;
>   PORTB = 0x01;
>
>   while(1);
>     mInitAllLEDs();
>     mLED_1_Toggle();
>     PORTB = 0xFF;
>   }
> }
> ```

>
Aslında yukarıdaki kod da örneğini verdiğim assembly kodunu oluşturuyor. Belki çok fazla gereksiz şeyle dolduruyor olabilir. Ama mesele PIC'e hakim olmak yoksa ileride istediğin platformda kod yazabilirsin. Genelde assembly ile başlamayanlar, donanımı çok kavrayamadığında kodu ne kadar mükemmel yazarsa yazsın sıkıntı yaşarlar. En basitten "button bounce" diye bir kavram vardır. Grafikle anlatalım:

'<http://lh6.ggpht.com/-3oNbjYuMCsA/Th5FklEtJcI/AAAAAAAAFEM/uBZjs1gOxoo/image_thumb22.png?imgmax=800>'

Bir sonraki uygulamamızın, bir düğmeye basınca LED'i yakan bir şey olsun. Hatta ileri gidelim ve ilk bastığımızda yansın, ikinci bastığımızda sönsün. Bu o kadar kolay ki çift düğme kontrolü ile (BTFSS/BTFSC) düğmenin bırakılıp bırakılmadığını sorguluyoruz. Ancak "bounce" denilen olay ile LED, daha basarken bile defalarca yanıp sönebilir. Çünkü iki iletkenin yaklaşma anında mikro yıldırımlar (ark'lar) çakar ve gözle göremesek de mantık birimine (logic unit: PIC) gereksiz yere true/false döndürebilir. İşte bunu engellemek için küçük gecikmeler yapıyoruz. Tıpkı yukarıdaki ALT YORDAM gibi. Yani o tür şeyler hem istediğimiz aralıklarda bir şeyi yakıp söndürmek için kullanacağız, hem de düğmenin basılıp basılmadığını kontrol ederken olabilecek arkları görmemek için.

Şimdilik ara vermeliyim, yapacak işlerim var. Buraya kadar yazdıklarımı denediysen ve eğer istersen düğme olaylarına da geçeriz?

Başarılar...

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
June 18, 2013

Teşekkürler öncelikle baskı devre yapmayı öğrendim malzemelerim elimde var. Bu Xtal i illaha kapasitörler ile birlikte mi bağlamamız gerekiyor yani

http://u1306.hizliresim.com/1b/l/p9hc3.png

Bu şemanın mantığı nedir? Birde hocam bende programmer var ancak yükleme sorunu yaşıyorum işletim sistemim şuanda Win7 Home Premium. Elimde tüm yazılımlar var. Bana yardımcı olur musunuz?
Alıntı:

>

Şimdilik ara vermeliyim, yapacak işlerim var. Buraya kadar yazdıklarımı denediysen ve eğer istersen düğme olaylarına da geçeriz?

Siz nasıl isterseniz.
Herşey için çok teşekkür ederim

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 18, 2013

Bu bir geribeslemeli, ucuz maliyetli ve hepsinden önemlisi kararlı bir salınım (osilation) devresidir. Aşağıda bir prensip şeması var ve ayrıntılı bilgilerde şuradaki Wikipedia maddesinde: http://en.wikipedia.org/wiki/Pierce_oscillator

http://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/PIERCE_CRYSTAL_OSCILLATOR.jpg/240px-PIERCE_CRYSTAL_OSCILLATOR.jpg

Sanırım açıklamalar diğer şema üzerinden anlatılmış...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 19, 2013

Alıntı (huseyin325325:1371549807):

>

Teşekkürler öncelikle baskı devre yapmayı öğrendim malzemelerim elimde var. Bu Xtal i illaha kapasitörler ile birlikte mi bağlamamız gerekiyor yani

http://u1306.hizliresim.com/1b/l/p9hc3.png

Bu şemanın mantığı nedir?

O kısım zamanlayıcı kısmı. Mikrodenetleyicinin çalışması için sürekli bir saat darbesi gerekir.

İşte bu kısım da saat darbesini oluşturuyor.

Örneğin 4Mhz ya da 2Mhz kristal kullanırsanız kullanacağınız sığaçlar (kondansatör) 15-33 pF arasında, 100kHz kristal kullanırsanız sığaçlar 100-150pF arasında olabilir.

Alıntı (huseyin325325:1371549807):

>

Birde hocam bende programmer var ancak yükleme sorunu yaşıyorum

Eğer programlayıcının özelliklerini ve kullandığın mikrodenetleyiciyi belirtirseniz belki daha fazla yardımcı olabiliriz.

Eğer PIC Kit2 gibi devre üzerinde seri programlama özelliği olan bir programlayıcı kullanıyorsanız basitçe deneme kartında bu devreyi kurabilirsiniz.

http://farm8.staticflickr.com/7161/6810847449_f379c2c7c0_o.jpg

Burada 470 ohm'luk direnç yerine isterseniz bir diyot da kullanabilirsiniz demek istemiş.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2