17 Aralık 2012 Pazartesi

RF Alıcı / Verici modüllerle çalışmak


 RF Alıcı/Vericiler
Kısa mesafeli ve düşük hızlı kablosuz kontrollerde DORJI'nin modülleri oldukça kullanışlı.
Alıcı-verici modülleri sürmenin birkaç yolu var.

HT12E ve HT12D entegreleri ile 8 bit adreslenebilir verici-Alıcı yapabilirsiniz. HT12 dökümanlarında, uygulama örnekleri mevcut. Bu entegre doğrudan RF modüllere bağlanabilir ve fazla bir devre elemanı da gerektirmez.


Bu entegreleri kullanmak istemezseniz, herhangi bir PIC de kullanabilirsiniz.

Modüllerin PIC ile kullanımına ait basit bir 
örnek yapmak istersek;




Ben DORJI'nin modüllerini kullandım, benzer modüller piyasada kolaylıkla bulunabiliyor.
(Elimde daha önce almış olduğum Laipac firmasının TLP serisi modülleri, mesafe olarak dorji'nin modüllerinden 2-3 kat daha uzağa gidiyor.) genel olarak kodlama mantığı aynı. 

(Örnekler MicroPascal içindir)


Verici devresi:
Verici modülü PIC'in bir portuna bağlayın. (soft uart kullanıyoruz) Bu portu aşağıdaki şekilde tanımlayın.

Soft_Uart_Init(PORTA, 0, 1, 1200, 1); //PORTA.0 Rx (kullanılmıyor)
                                      //PORTA.1 Tx

                                      //1200 baud 
//eşzamanlama bilgisi
Soft_Uart_Write($AA); //10101010
Soft_Uart_Write($AA);
Soft_Uart_Write($AA);
Soft_Uart_Write($AA);
Soft_Uart_Write($AA);
Soft_Uart_Write($FF); //11111111
Soft_Uart_Write($FF);
Soft_Uart_Write($FF);
Soft_Uart_Write($FF);
Soft_Uart_Write($FF);
//data
Soft_Uart_Write(84);   //ascii T
Soft_Uart_Write(88);   //ascii X
Soft_Uart_Write(84);   //ascii T

Soft_Uart_Write(69);   //ascii E
Soft_Uart_Write(83);   //ascii S
Soft_Uart_Write(84);   //ascii T

Datadan önce eşleme bilgisini göndermek gerekiyor, sonra istediğiniz uzunlukta
data gönderebilirsiniz. Tek yönlü haberleşmede "data alındı" bilgisi alamayacağınızdan, periyodik olarak dataları göndermek daha iyi. Paketlerden biri kaybolsa da, diğeri ulaşacaktır. Paket gönderme arasındaki süreyi de deneyerek en aza indirebilirsiniz.

Preamble/senkron kullanımı konusunda nette detaylı bilgi bulabilirsiniz.
(bu konuda UDEA firmasının dökümanlarından da faydalanabilirsiniz. bakınız)

Alıcı devresi:
Alıcı modülü PIC'in bir portuna bağlayın.

Soft_Uart_Init(PORTA, 0, 1, 1200, 1); //PORTA.0 Rx

kontrol_byte1 := Soft_Uart_Read(err);
kontrol_byte2 := Soft_Uart_Read(err);


//T ve X dataları ard arda alınmışsa, 4 byte data al
if (kontrol_byte1 = 84) and (kontrol_byte2 = 88) then begin
   for i:=0 to 3 do    

      data[i] := Soft_Uart_Read(err);
end;


Ben kablosuz sıcaklık sensörü için bu şekilde kullanıyorum.
Verici modülde dikkat edilmesi gereken; anten devreye çok yakın ise, PIC'in RF sinyalinden etkilenmesi mümkün olabiliyor. Devreyi metal bir kutuya koyarak veya PIC'e ekranlama yaparak bunun önüne geçilebilir.

Modüllerin dökümanlarına, alttaki linklerden ulaşabilirsiniz.


http://www.dorji.com/docs/data/DRA887TX.pdf
http://www.dorji.com/docs/data/DRA887RX.pdf

12 Aralık 2012 Çarşamba

ELM327 ile OBDII haberleşmesi


Araçların, arıza kodu, anlık veri vs. gibi bilgilerini aşağıdaki devre ile izleyebilir,
hataları silebilirsiniz.
Aşağıda, ELM327 devre şeması mevcut, yeni model araçlar, CAN protokolünü desteklediğinden, devrenin 
tamamını yapmanıza gerek yok. (ISO ve J1962 bağlantıları)
Ancak piyasada çok uygun fiyatlara (ELM entegresini orjinalinden daha ucuza) hazır devreler bulmak mümkün. Devreyle uğraşmak istemiyorsanız, hazır modüllerden birini alabilirsiniz. Bunlar RS232 kablolu veya bluetooth'lu olabilir.



Resimde görülen modül ve benzerlerini 15-20$ civarında bulabilirsiniz.
Devreyi yapmak isteyenler için de şema aşağıda. 




Bazı markalarda farklılık gösterse de genelde OBD2 soketi ve bağlantıları aşağıdaki gibidir.


ELM327 için PC ve Android tabanlı yazılımlar mevcut. Tablet PC veya cep telefonlarında
Torque pro yazılımı kullanabilirsiniz. PC için de Scan Master yazılımı oldukça başarılı.

Harici bir yazılımla kullanılabileceği gibi, kendi yazılımınızı geliştirmeniz (veya bir mikrokontrolcü ile ELM'den bilgi almanız) mümkün. Bir PIC ile araca ait bazı bilgileri okuyup bir ekrana yazdırabilirsiniz.

Her araçtan tüm veriler okunamayabiliyor ancak genel olarak temel anlık verileri almak mümkün.



torque pro uygulaması


scan master yazılımı

 
ELM327 üzerinden kendi kodunuzu yazarak, ihtiyacınız olan verileri alabilirsiniz.
Yazının sonraki bölümlerinde, OBD portuna bilgi gönderme ve okuma konusunda detaylı bilgi bulabilirsiniz.

27 Ağustos 2012 Pazartesi

220V AC IR DIMMER


RC5 protokolü kullanan herhangi bir kumanda ile kontrol edebileceğiniz güzel bir devre.
Işık şiddetini, 10 kademe olarak azaltıp arttırabilir, açıp kapatabilirsiniz. aynı zamanda 2 dakika gecikmeli kapanma özelliği de mevcut.

Devrede IR alıcı olarak 38KHz'lik TSOP serisi kullanabilirsiniz. (TSOP1738 veya 1238)
TRIAC olarak TIC206 kulanılmış olsa da, muadilleri ile de sorunsuz çalışır. (BTA12 gibi) Burada dikkat edilmesi gereken, TRIAC'ın gate ucunda kullanılan direnç değeridir. Bunun yerine 1kohm'luk bir trimpot bağlayarak sorunsuz çalışan değere kadar ayarlayın ve yerine sabit direnç takın. BTA12-600 kullanacaksanız, 100 ohm direnç uygundur.

Kumanda olarak philips, vestel, lg, digitürk kumandaları kullanılabilir. Programlama için;
SW1 butonuna 11 saniye basılı tutun, lamba yarı güçte yanacak ve led yanıp sönecektir. Bundan sonra, kumandada atama yapacağınız 4 tuşa sırasıyla basın. (her tuşta, ışık ve led sinyal verecektir)

Tuşlar:
1-aç/arttır
2-azalt
3-uyku modu (2 dakika sonra kapat)
4-kapat

Dört tuşu da atadığınızda, ışık sönecek ve çalışmaya hazır olacaktır. SW1 butonunu aynı zamanda aç/kapat için de kullanabilirsiniz. Butonu kullanmak istemiyorsanız, programlamadan sonra sökebilirsiniz.


devre şeması





Gerekli hex dosyaları ve diğer bilgileri, kendi sitesinden indirebilirsiniz.
http://www.elektronika.ba/617/ir-light-dimmer-v1/

Başka bir 220V AC dimmer uygulaması için:
220V AC Dimmer

22 Temmuz 2012 Pazar

555 ile PWM motor/LED sürücü





Devredeki motor yerine led (şerit led vs.) bağlanabilir. Mosfet olarak,
IRFZ44 veya muadilleri kullanılabilir.





Led sürülecekse, D3 diyotunu kullanmaya gerek yoktur. Soğutucu kullanmadan, 5 metre
şerit led sorunsuz şekilde çalıştırılabilir. Devre ile bilgisayar fanlarının da hız kontrolü yapılabilir. 




16 Temmuz 2012 Pazartesi

USB-Grafik LCD arabirimi





Bilgisayar sistem/donanım bilgilerini görmek için 240x128 ile yapılmış bir çalışma.
Grafik LCD, 18F2550 ile sürülüyor. Devre, toshiba chipset'li GLCD'nin arkasına doğrudan takılabiliyor. Ben XIAMEN PGM240128C-NS kullandım. (sayfanın sonunda gerekli dökümanları bulabilirsiniz)

Devre 5 volt ile çalışır ve harici beslemeye ihtiyaç duymadan USB portundan beslenebilir.  USB portuna takıldığında, 1-2 saniye içinde hazır olur ve sürücü istemez. (Aygıt yöneticisinde HID olarak görünür.)
PC'de çalışan bir yazılım, ölçülen bilgileri USB üzerinden devreye gönderir. .NET, VB veya Delphi ile kendi uygulamalarınızdan da kolaylıkla bilgi gönderebilirsiniz.
Ben sistem bilgilerini toplayan ve bunların bir kısmını GLCD'ye gönderen bir yazılım kullanıyorum.




Grafik LCD'nin arka aydınlatması PIC'in pwm çıkışına bağlıdır, yazılım üzerinden ayarlanabilir. Ayrıca, 18F2550'nin boşta kalan portları da, ilaveler için kart üzerine alınmıştır. (buton, led, sensör vs bağlanabilir)

Kart üzerinde ICSP portu vardır, ICSP destekleyen bir programcınız varsa, devre üzerinde PIC'i programlayabilirsiniz. Veya bootloader ile usb portu üzerinden de yeniden yükleme yapabilirsiniz.


glcd, aşağıdaki şekilde konfigüre edilmeli.

procedure GLCD_Initialize;
begin
   SPI_Init();
   Spi_T6963C_Config(240, 128, 8, PORTC, 1, PORTC, 0, 2, 1, 0, 4, 0);
   S
pi_T6963C_panelFill(0);

   Spi_T6963C_graphics(1);
   Spi_T6963C_text(1);



PGM240128C Datasheet
baskıdevre (PCB)


6 kanal PWM Fan Kontrol (USB)




PWM Fan sürücü Kartı

Bilgisayar fanlarını kontrol etmek, hız, sıcaklık vs. bilgileri almak için hazırladığım
bir devre. Bağımsız çalışabileceği gibi, USB portu üzerinden de izlenebilir/kontrol edilebilir.



Devre kontrolcü olarak 18F2550 PIC kullanıyor. 6 adet fan, pwm sinyali ile mosfetler üzerinden sürülüyor. Sıcaklık ölçmek için 2 adet sensör bağlanabilir. Ben DS1820 kullandım.
Bunun dışında, PIC'in analog/dijital çıkışları da kart üzerinde. İstenirse bu uçlara
potansiyometre veya başka donanımlar bağlanabilir. Potansiyometre ile, manual hız kontrolü yapılabilir.




Ayrıca kartın kontrol ettiği 4 fanın devirleri de ölçülebiliyor. Bunun için kart üzerindeki sokete MAX6651 entegresini bağlamalısınız. Bu entegre tek başına fan hız kontrolü ve 4 fana kadar hız ölçümü yapabiliyor ancak bu devrede sadece fan devir ölçümü için kullanıldı.


MAX6651'in PIC ile haberleşmesi I2C üzerinden yapılıyor. Devir ölçmek istemiyorsanız kullanmanıza gerek yok.
Devre, tek başına kullanıldığında, sıcaklık sensörlerinden aldığı bilgiye göre fan hızlarını
ayarlayabilir. Harici girişlere bağlanan buton/potansiyometreler ile de istenirse manual kullanılabilir. Sensör sayısını arttırmak da mümkün.
18F2550'nin USB portu, ana kart üzerindeki USB hattına bağlanırsa, PC üzerinde çalışan bir yazılım ile daha detaylı kontroller yapmak mümkün. 
3 parti yazılımlarla, donanıma ait sıcaklık bilgileri alınıp, buna göre fanlar otomatik olarak çalıştırılabilir. Ben bunun için everest yazılımını kullanıyorum. bu yazılım tüm donanım sıcaklıklarını, voltaj, hız, kullanım bilgilerini veriyor. Bu bilgiler kendi yazılımım üzerinde toplanıp, fan kontrol devresine ve grafik LCD'ye aktarılıyor.




Kart üzerinde aynı zamanda, ICSP portu da mevcut. Bu şekilde devre üzerinde programlama yapabilirsiniz. Veya PIC için USB bootloader kullanabilirsiniz.

Devre ve fanlar, beslemeyi, molex konnektör üzerinden alıyor. (5V, 12V)




PIC 18F 2550 datasheet

Montajlı hazır devre için linke tıklayınız.

IR Repeater

IR (infrared) kumandaların mesafesini arttırmaya veya birden fazla cihazın kontrolüne ihtiyaç duyabilirsiniz.

Aşağıdaki devre, IR alıcıdan aldığı sinyali tekrarlamaktadır. IR Led (verici), tekrarlayıcı devreden, alıcının bulunduğu yere uzatılarak, alıcı gözün önüne yerleştirilir. (IR alıcı için Vishay'ın TSOP 
serisi kullanılmıştır. bu göz ile 36-40KHz arası kumandalar rahatlıkla çalışmaktadır.)

Benim uygulamamda, birden fazla tipte kumanda ve birden fazla alıcı cihaz vardı.
Tekrarlayıcı devrede, transistör çıkışına 6 adet röle ekledim, her rölenin çıkışına da bir IR Led bağlayarak, ledleri cihazlara uzatıp, alıcı gözlerinin önüne gelecek şekilde yapıştırdım.




verici göz

bir seçici/komütatör ile seçilen hatta ait röle çekiliyor ve IR alıcıdan alınan sinyal, seçilen hat için tekrarlanıyor.


kanal seçici




Ayar:
Frekans ölçmeniz mümkünse, 555'in <rst> ucunu şaseye çekip, çıkışında 38KHz elde edecek şekilde trimpotu ayarlayın.
Kablo mesafesine göre çıkış transistörü ve direnç değerlerini değiştirerek devreyi kullanımınıza göre optimize edebilirsiniz.
Dsmart, Digitürk, Next, Topfield gibi cihazlarla şu an halen kullanılmaktadır.


TSOP datasheet

14 Temmuz 2012 Cumartesi

Time Code Reader


LTC Longitidinal (veya Linear) time code reader








Yayın sistemlerinde kullanılan timecode jeneratörden üretilen sinyalin, timecode girişi olmayan cihazlara veya yazılım tabanlı sistemlere entegrasyonu için timecode okuyucular piyasada mevcuttur. Yayın cihazlarıyla, bilgisayar tabanlı sistemleri senkronize etmek için aşağıdaki sistem kullanılabilir.

Mikrokontrolcü tabanlı bir devre, sistemdeki cihazlara dağıtılan LTC sinyalini çözümleyerek, USB veya seri port (RS232) üzerinden bilgisayara gönderir. Bilgisayardaki sunucu yazılımı, çevrilmiş LTC sinyalini işleyerek, hem kendi saatini günceller hem de ağ üzerinden kendisine bağlanan diğer bilgisayarlara dağıtır.
Böylece, sistem saati ile yazılımlar senkron yapılmış olur. (kayıt yazılımları, saatler, bilgisayarlar, log yazılımları vs.)


LTC sinyali, dijital bir sinyaldir, ancak bir mikrokontrolcüye bağlamak için TTL seviyesine çevirmek gerekir. LTC sinyali, basit bir devre yardımıyla, genliği düzeltilerek kontrolcünün dijital girişine gönderilir, kontrolcü, 80 bitlik datayı çözüp formatlayarak, RS232 veya USB portundan bilgisayara gönderir.

Aşağıda, LTC sinyalin yapısı görülmektedir.




buffer devresi

Server uygulaması





Client uygulaması

Time Server, donanımdan (burada, time kod jeneratöründen) aldığı saat bilgisi ile, lokal saatini eşleştirir. Bu işlem belirli kriterlere bağlı olarak sürekli tekrarlanır. 

Uygulama aynı zamanda NTP server olarak çalışır, yani ağ üzerindeki diğer bilgisayarlar, client yazılımı üzerinden, periyodik olarak server'a bağlanarak kendi saatlerini güncellerler. 



kaynaklar: