Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

25 Mayıs 2011 Çarşamba

Atmega8 ve HP03S ile USB bağlantılı barometre


İtalyan fizikçi ve matematikçe Toricelli ilk barometreyi icat ettiğinde su kullanmıştı ve 10 metrelik su sütununun 1 atmosferik basınca denk düştüğünü bulmuştu. (Daha sonra aynı deneyi civa ile tekrarladı.76 mm civa) Günümüzde gelişen elektronik algılayıcılar ve dolayısı ile elektronik elemanlar sayesinde hava basıncını daha yüksek hassasiyet ve kesinlik ile ölçülmesine olanak vermektedir.

Bu projede Atmega8 ve HP03S (basınç algılama modülü) kullanarak bilgisayara USB bağlantısı üzerinden ölçüm sonuçları gönderilmeye çalışılacak.
Basınç Ölçümü

En azından şu bilinmektedir ki açık hava basıncı vardır. Sonuçta dünyanın katmanlarından biri olan atmosfer (gaz katmanı olarak)dünyanın çekim gücü nedeniyle dünya yüzeyinde bir basınç oluşturur. Kullanılan ölçüm sistemlerine göre çeşitli birimlerde tanımlanmıştır. ( bar, paskal gibi.)

Şekil-1 :Atmosfer yeryüzünde bir basınç oluşturur

İlk ölçüm şekli 12 metrelik su sütunundan oluşturulan sistem ile(ölçüm 10 metrelik olarak) ilk barometreyi oluşturuldu. Daha sonra su yerine civa kullanılmış ve cam borudan oluşturulan sistemde 1 atmosferlik basınç 76mm civa basıncına denk düşer hale gelmiştir.

Şekil-2 :Civalı barometrenin temel ilkesi.(Günümüzde civanın insan sağlığı üzerindeki olumsuz etkileri bilindiğinde civa içeren bu tür araçlar kullanımdan kaldırılmıştır).

Daha sonraları ise hava basıncını ölçmek için mekanik ölçüm sistemleri kullanılmıştır. Kullanım kolaylığı açısından ölçeklenerek barometre daha taşınabilir hal gelmiştir.

Meterolojik bilimlerde vazgeçilmez bir öğe olarak günlük hayatımızda bulunan barometre hava hareketlerinin izlenmesi ve hava tahmihlerinde vazgeçilmez ölçü aleti olarak kullanılır. (basınç merkezlerinin izlenmesi ile yağışlı veya güneşli hava tahminlerinde sıkça karşımıza çıkar).

Not: Barometrenin kapalı kaplar için ölçümde kullanılan şekli manometre olarak adlandırılır.
Basınç sensörü-HP03S

Basınç sensörü genelde sabit, bilinen basınç altında kapatılan bir kutucuğun iç basıncı ile dış basıncının karşılaştırılması esasına dayanır.

Bu projede HP03S basınç sensörü kullanılmaktadır.Hope Microelectronics (HOPE RF) firmasına ait bir üründür.

Veri kağıtlarında piezo-rezistif bir algılayıcı içeriyor. Bu algılayıcı değeri (gerilim olarak) 16-bitlik ADC üzerinden 2 baytlık veriye dönüştürülüyor. Burada belirtilmesi gereken bir nokta var. Bu modül üzerindeki basınç tek başına ölçülebilir bir büyüklük değil. En azından sıcaklık ile bir bağlantısı var. Bu nedenle hesaplama için gereken sıcaklık değeri HP03S üzerinde bulunuyor. Sıcaklık değeride (doğrudan sıcaklık değeri olarak değil) 2 baytlık veri şeklinde okunabiliyor.

Şekil-3 :HP03S basınç algılayıcısını resmi.Metal yüksüğün dibindeki elektronik elemanlar görülmektedir

Algılayıcı 2.2V ile 3.6V aralığında çalışabiliyor. Devrenin beslemesi için gereken gerilim kolaylıkla sağlanabiliyor. HP03S modülü düşük güç harcamak üzere tasarlanmış.

HP03S modülünden elde edilen basınç ve sıcaklık değerlerinin hesaplanması için gereken bazı ek parametrelere ihtiyaç var. Bu parmetreler modül üzerindeki bir EEPROM üzerinde saklanıyor. ADC ile EEPROM aynı veri yolunu paylaşmakla birlikte (I2C) sonuçta erişim adresleri farklı.


ParametreAçıklamasıEEPROM AdresiBilgisiDeğer Aralığı
C1Hassasiyet katsayısı16:17MSB:LSB0x100 - 0xFFFF
C2Denkleştirme Katsayısı18:19MSB:LSB0x00 - 0x1FFF
C3Hassasiyetin sıcaklık katsayısı20:21MSB:LSB0x00 - 0x400
C4Denkleştirmenin sıcaklık katsayısı22:23MSB:LSB0x00 - 0x1000
C5Referans sıcaklık22:25MSB:LSB0x1000 - 0xFFFF
C6Sıcaklığın sıcaklık katsayısı26:27MSB:LSB0x00 - 0x4000
C7Denkleştirmeyi İyileştirme ayarı28:29MSB:LSB0x960 - 0xA28
ASensöre özel parametre 30LSB0x01 - 0x3F
BSensöre özel parametre 31LSB0x01 - 0x3F
CSensöre özel parametre 32LSB0x01 - 0x0F
DSensöre özel parametre 33LSB0x01 - 0x0F
Tablo-1:EEPROM'da saklanan parametreler.(EEPROM Adresleri onluk sistemdedir)

EEPROM içerisinde saklanan parametreler hakkında genel bilgileri Tablo-1'den alabilirsiniz. Bu parametreler aletten okunduktan sonra hesaplama işlemi için (en azından bizim anlayabileceğimiz geçer basınç ve sıcaklık değerini) hesaplamak kullanılır.

Tabiki buradaki sabit sayıların yanında alınması gereken iki önemli değer daha var. Bunlar sıcaklık ve basınç değerleridir. Bu değerler hakkında genel bilgi tablo 2'den ulaşılabilir.
ParametreAçıklamasıDeğer Aralığı
D1ölçülen basınç0x00 - 0xFFFF
D2ölçülen sıcaklık0x00 - 0xFFFF
Tablo-2:Sensörden ölçülen değerler.

Tüm parametreler okunduktan sonra yapılması gereken sadece sıcaklık ve basınç için değerleri okumak ve biraz da matematik işlem yapılması gerekiyor.
HP03s'de i2c iletişimi

Parametrelerin saklandığı bölümün iletişimi 24C02 eeprom ile uyumludur. Yani adresi 0xA0 şeklinde tanımlanmıştır. (0. bit 0=yazma 1= okuma) (Zaten yazma işleminin olmaması gerekir.)

Şekil-4 :HP03S üzerindeki EEPROM'u okumak için HP03S ile işlemci arasındaki iletişim.

HP03S üzerindeki i2c EEPROM'u okumak için adımlar olarak (temel i2c işlemleri bilindiği kabul edilmektedir) Burada okunan C1,C2,C3...C,D gibi tanımlanmış olan HP03S parametreleridir.
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci EEPROM çip kodunu EEPROM yaz bilgisi ile birlikte gönderir (0xA0)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci EEPROM adres kodunu gönderir.(0x10)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci i2c tekrardan başlama durumunu gönderir
  • İşlemci EEPROM çip kodunu EEPROM oku bilgisi ile birlikte gönderir (0xA1)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • HP03 ilk veri adresindeki veriyi işlemciye gönderir (0x10 adresindeki)
  • İşlemci bir kabul sinyalini gönderir
  • HP03 sonraki veri adresindeki veriyi işlemciye gönderir (0x11 adresindeki)
  • İşlemci bir kabul sinyalini gönderir
  • --sırayla veriler okunur ve son veriye gelindiğinde
  • HP03 son veri adresindeki veriyi işlemciye gönderir (bu son adres aslında paremetre adresidir)
  • İşlemci bir kabul yok sinyalini gönderir
  • İşlemci i2c sonlandırma durumu gönderir

Şekil-4 üzerinde görülen iletişim şekli aşağı yukarı i2c iletişimi hakkında bir fikir verecektir.
HP03S (veya HP03M-sadece bacak bağlantı farkı var) sıcaklık va bısınç değerlerini okumak için.

Şekil-5 :HP03S üzerindeki ADC bilgisini okumak için HP03S bacakları üzerindeki sinyallerin şekli

ADC okumak için öncelikle MCLK bacağı üzerinde 32768Hz'lik bir darbe verilmesi gerekiyor. Bu ADC'nin ölçüm yapması için gereken bir sinyal olduğu belirtilmiş. Hatta bu sinyal belirtilen frekansa ne kadar yakın verilebilirse HP03 modülünün o kadar düşük güç tükettiği belirtilmiş. 4MHz işlemci frekansı ile işlemciden ancak 32786,885 Hz frekansında sinyal verilebiliyor.

ADC bölümünün işlem yapabilmesi için ayrıca XCLR olarak belirtilen HP03S modülü bacağının lojik-1 seviyesine çekilmesi ve veriler okunduktan sonra lojik-0 seviyesine çekilmesi gerekiyor

Şekil-6 :HP03S üzerindeki sıcaklık bilgisini okumak için HP03S ile işlemci arasındaki iletişim.

HP03S modülü üzerinden sıcaklık bilgisini (ADC ile) okumak için;
  • Öncelikle işlemci XCLR bacağını lojik-1 seviyesine çeker
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC çip kodunu ADC yaz bilgisi ile birlikte gönderir (0xEE)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xFF)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xE8)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci bir sonlandırma durumu gönderir
  • İşlemci ADC'nin gerekli işlemleri yapabilmesi için yaklaşık 50ms bekler.
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC çip kodunu ADC yaz bilgisi ile birlikte gönderir (0xEE)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xFD)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC işlem kodunu gönderir (0xEF)
  • HP03 bir kabul sinyalini gönderir
  • HP03 ADC değeri yüksek anlamlı baytı gönderir
  • İşlemci kabul biti gönderir
  • HP03 ADC değeri düşük anlamlı baytı gönderir
  • İşlemci kabul yok biti gönderir
  • İşlemci sonlandırma durumu gönderir
  • İşlemci XCLR bacağını lojik-0 seviyesine çeker

Veri okunması şekli ile basınç bilgisi aşağı yukarı sıcaklık bilgisi ile aynı şekilde okunur. Sadece bir parametrede farklılık vardır.

Şekil-7 :HP03S üzerindeki basınç bilgisini okumak için HP03S ile işlemci arasındaki iletişim.

HP03S modülü üzerinden basınç bilgisini (ADC ile) okumak için;
  • Öncelikle işlemci XCLR bacağını lojik-1 seviyesine çeker
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC çip kodunu ADC yaz bilgisi ile birlikte gönderir (0xEE)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xFF)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xF0)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci bir sonlandırma durumu gönderir
  • İşlemci ADC'nin gerekli işlemleri yapabilmesi için yaklaşık 50ms bekler.
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC çip kodunu ADC yaz bilgisi ile birlikte gönderir (0xEE)
  • Adresleme tamamsa HP03 bir kabul sinyalini gönderir
  • İşlemci ADC işlem kodunu gönderir (0xFD)
  • HP03 bir kabul sinyalini gönderir
  • İşlemci i2c başlama durumunu gönderir
  • İşlemci ADC işlem kodunu gönderir (0xEF)
  • HP03 bir kabul sinyalini gönderir
  • HP03 ADC değeri yüksek anlamlı baytı gönderir
  • İşlemci kabul biti gönderir
  • HP03 ADC değeri düşük anlamlı baytı gönderir
  • İşlemci kabul yok biti gönderir
  • İşlemci sonlandırma durumu gönderir
  • İşlemci XCLR bacağını lojik-0 seviyesine çeker

Bu bilgiler HP03S modülünden okunur ve USB-seri dönüştürücü modül üzerinden bilgisayara gönderilir. Bilgisayar üzerindeki program bu bilgileri değerlendirir
Elektriksel Sinyal Seviyesini Çevirme

Devre olarak göz önüne alındığında Atmega8 5V ile çalışırken, HP03S 3.3V ile çalışmaktadır. Eğer doğrudan birbirlerine bağlanırsa bazı sorunlar olacağı kesin. Bunun için gerilim farkları için seviye çeviricilerin kullanılması gerekir.

Şekil-8 :SDA hattı üzerindeki kullanılan iki yönlü iletişim için gerilimi seviyesi çevirici.


Şekil-9 :SCLK ve XCLR gibi hatlar üzerinde kullanılan işlemci tarafından kontrol edilen tek yönlüiletişim için gerilimi seviyesi çevirici.


Şekil-10 :MCLK gibi hatlar üzerinde kullanılan işlemci tarafından kontrol edilen tek yönlü iletişim için gerilimi seviyesi çevirici. (Çıkışı evrilmektedir)

Aslında tüm bağlantılar için şekil-9'daki seviye çevirici kullanılabilir. Elimde fazla mosfet olmadığından devre üzerinde böyle bir çözümü gidildi.
USB

Bu projede "FT232BL USB-Seri Dönüştürücü" projesinde kullanılan devre kullanılmaktadır. "FT232BL USB-Seri Dönüştürücü" projesi adından da anlaşılacağı gibi bir USB-seri (UART) dönüştürücüdür. Bu projenin alında işte bu bölümü dikkate değer. Basınç ve sıcaklım ölçüm sonucu bilgisayara bu şekilde iletilir.

Bilindiği gibi Atmega8 işlemcisinin USB portu yok, ama bir UART portu var. Atmega8'in UART portu USB-seri dönüştürücünün Seri portuna bağlanır ve USB-seri dönüştürücünün USB bölümüde bilgisayara bağlanır.

Sonuçta bu USB-seri dönüştürücü bilgisayar ile Atmega8 devresi arasında bir köprü olarak kullanılıyor. USB-seri dönüştürücünün bilgisayardaki sürücüleri Sanal seri port oluşturan bölümü kullanılacağından, bir yerde bilgisayar üzerindeki ölçüm programı sanki Atmega8 devresi bilgisayarın seri portuna bağlanmış gibi işlem yapacaktır.
Devre

Proje bileşenleri göz önüne alındığında HP03S modülü, Atmega8 işlemci devresi (işlemci devresi) , USB-seri dönüştürücü ve projeye dahil edilmesi gereken bir bilgisayar. Bilgisayar ölçüm aralığını belirler, ölçüm sonucuna göre gelen bilgileri hesaplar ve sonucu gösterir, hatta gerekirse hesaplanan bilgiler bilgisayara kaydedilir.

HP03S modülü sıcaklık ve basınç ölçümü için üzerindeki 16 bitlik ADC işlemci bilgisayardan gelen emirler doğrultusunda okunur ve ölçüm sonucunu USB-seri dönüştürücüye iletir. USB -seri dönüştürücü bilgisayarın USB portuna yöneltir. Bilgisayar üzerindeki program gelen bu bilgiyi hesaplar ve sonucunu kullanıcıya iletilir

Şekil-11 :İşlemci kartı (Atmega8 işlemcisi ve HP03S algılama sensörü modülü ile.


Şekil-12 :USB-seri dönüştürücü kartı


Şekil-13 :İşlemci kartı ile USB-seri dönüştürücü kartını bağlayan iki ucunda 2x5'li dişi konnektör bulunan 10 yollu şerit kablo


Şekil-14 :USB-seri dönüştürücü kart ile bilgisayar arasındaki bağlantıyı sağlayan USB kablo


Şekil-15 :İşlemci kartı ile USB-seri dönüştürücü kartı birbirine bağlı halde

Şema

USB seri dönüştürcü Devresinin kalbi zaten görüldüğü üzere FT232BL IC1. Tüm iletişim sistemini bu eleman kontrol ediyor. Bu tüm devreye bağlı olan R9 ve R10 (27R) seri USB akım sınırlama dirençleri. Burada R9 (27R) ucuna bağlı olan R8 (1K5) direnci USB’nin tipini (USB2.0) belirleyen dirençtir. Buradaki R6 (4k7) ve R7 (10K)devre harici besleme durumunda bilgisayarın kapatılması durumunda USB cihazın sıfırlanması ile ilgili bir görevi var. R1 ve R2 (1K)dirençleri LED1 ve LED2 LED’lerinin akım sınırlama dirençleridir. LED1 ve LED2 LED’leri seri port iletişim monitörü olarak çalışır. R3(10K) ve R4 (2K2) IC2 (93C46) EEPROM’un veri aktarma uçlarının FT232BL entegresine bağlantısında kullanılır. Bu bağlantı şekli konusunda ayrıntılı bilgi için FT232BL veri kağıtlarını incelenmesi yerinde olabilir. C1, C2 (27pF) ve XT1 (6MHz)ise IC1 için saat frekans üretim sistemini oluşturuyor. USB-A USB bağlantı konnektörü. (isteyen doğrudan USB kablosunu doğrudan lehimleyebilir.) P1 seri bağlantı için bağlantı portudur. P2 ve P3 ise besleme bağlantısı için seçim konektörleridir. Her ikisine takılacak köprü yardımıyla kullanılabilir.

M1 (HP03S) basınç va sıcaklık sensörlerini barındıran modüldür. İşlemci kartı IC3 (ATmega8) işlemcisi tarafından yönlediriliyor. Bu işlemcinin saat frekansı ihtiyacı C8 ve C9 (27pF) kondansatörler ile birlikte XT2 (4MHZ) kristal tarafından karşılanıyor. M1 ile gösterilen HP03S modülü basınç ve sıcaklık ölçümü sonucunu işlemciye gönderirken aynı zamanda basınç ve sıcaklık için gereken parametreleri saklar. SDA iletişimi için R11 (10K) ,Q1 (BS170) ve R14 (10K) elemanları gerilim seviye dönüşümünü sağlarlar. SCL için ise R12 (10K), D2 (1N4148) R15 (10K) elemanları gerilim seviye dönüşümünü sağlarlar. MCLK (ADC için) R19 (10K) pull up direnci olmak üzere, R20 (1k) ,Q2 (BC547) ve R16 (10K) gerilim seviye dönüşümünü sağlar. Ayrıca HP03S 'in XCLR bacağı için R13 (10K), D3 (1N4148) ve R17 gerekli gerilim seviyesi dönüşümünü sağlar. R18 (1K) direnç ile seri bağlı LED3 devrenin çalışmasında monitör olarak kullanılmaktdır.

M1 modülü için gereken 3.3V'luk besleme gerilimini IC4 (LP2950-3.3) gerekli regülasyonu sağlayacaktır.

Devrenin beslemesi P4 konnnektörü üzerinden D1 (2W10M) köprü diyodu üzerinden IC5 (7805) regüle edilerek devrenin ihtiyacı olan beslemeyi oluşturur.

P1 ve P5 işlemci ve USB kartlarının UART bağlantısı için (seri) kullanılır.

Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.

Şekil-16:Blok şeması


Şekil-17:Devre şeması (P1 ve P5 konnektörleri gösterilmemiştir)

Devre Yapımı

Devre montajı açısından kritik bir durum yoktur. Görüldüğü gibi devre son derece sadedir. Yüzey montaj elemanların montajında biraz daha dikkatli olmak yerinde olacaktır.

Yüzey montaj elemanları herne kadar eleman yüzü üzerinde gösterilsede bu elemanlan kartın bakır yolları üzerine monte edildiğinde eleman yüzü üzerinden görülüdüğü gibi gösterilmiştir. Herhangi bir şüpheye düştüğünüzde ilgili elemanların veri kağıtlarını kontrol etmeniz de yarar var.

Şekil-18:USB-seri dönüştürücü ve işlemci kartının yolları


Şekil-19:USB-seri dönüştürücü ve işlemci kartının eleman yerleşimi


Şekil-20:USB-seri dönüştürücü ve işlemci kartının yolları birlikte eleman yerleşimi


Şekil-21:USB-seri dönüştürücü ve işlemci kartlarının kablo bağlantısı


Şekil-22:İşlemci kartı üzerindeki IC4 ve IC5 arasındaki besleme girişlerini bağlayan bağlantı köprüsü. (Bu bağlantı yapılmazsa, 3.3V bölümü çalışmaz.) Kablo bağlantısı mavi renkte gösterilmiştir.

Devre Elemanları

27RR9,R10
470RR5
1KR1,R2,R18,R20
1k5R8
2k2R4
4k7R6
10KR3,R7,R11,R12,R13,R14,R15,R16,R17,R19
27pFC1,C2,C8,C9
100nFC3,C4,C5,C7,C11,C12,C13,C14
10µF/25VC6,C10,C15
3mm Kırmızı LEDLED2
3mm Yeşil LEDLED1,LED3
FT232BLIC1
Atmega8 (DIL)IC3
93C46 (DIL)IC2
7805IC5
LP2950-3.3IC4
BS170Q1
BC547 Q2
1N4148D2,D3
2W10M veya benzeriD1
6Mhz kristalXT1
4Mhz kristalXT2
HP03S veya HP03MM1
10 Header(2x5)P1,P5
6 Header(2x3)isp
USB-A konnektörUSB-A
3 bacak sıra pinP2,P3
köprüköprü(jumper) 2 Adet
2 bacaklı klemansP4


Besleme için 9V'luk adaptör, USB-seri dönüştürücü kartı ile işlemci kartı arasına (P1 ve P5) 2x5 bağlantı uçu ile birlikte 10 yollu yassı kablo kablo ve konnektörü ve bilgisayar için USB bağlantı kablosu unutulmamalıdır.
Ayar ve kullanım

Ayar için öncelikle USB -seri dönüştürücü kartındaki P2 ve P3 konnektörleri üzerindeki köprüler ayarlanması gerekir. Bu köprüler FTDI232 işlemcisinin besleme ve çalışma şeklini belirler.

İşlemci kartı üzerindeki köprüleme için kullanılan kabloyu unutmayın. (IC4 ile IC5 arasındaki besleme için.).

Şekil-23:USB-seri dönüştürücü kartı üzerindeki köprülerin konumları.(Köprü konumları kırmızı alanlar ile işaretlenmiştir)

Devrelerden önce USB -seri dönüştürücü devresinin çalıştığından ve bilgisayar ile ilgili sürücülerin yüklendiğinden emin olur. Burada sanal seri port sürücüleri kullanılacaktır. (Bunun anlamı USB seri dönüştürücü yerine max232 entegresi ile yapılmış seri gerilim dönüştürücü kullanımı ile birlikte işlemci kartının kullanılabileceğidir).

İşlemci (Atmega8) işlemci kartı üzerine takmadan önce devreye beleme uygulanır ve uygun noktalardan gerilimler ölçülür. Bu şekilde kısadevre veya açık devre olup olmadığı kontrol edilir.

Her şey tamamsa işlemci takılıp (hatta sensör) işlemci gerekli programlamalar ve ayarlamalar yapılır. Bu noktada sistemi tam çalışır hale getirmek için çalışmaya başlamak gerekir.

Sistemi oluşturan kartları bağla, USB kablosunu bilgisayara bağla ve işlemci kartına besleme gerilimi uygula. Bilgisayar üzerindeki "BaroMetre.exe" programını çalıştır. Gelen ana pencere üzerinde herhangi bir butona tıklamadan "Ayarlar" butonuna tıkla.

Burada bilmeniz gereken konu USB kartının atandığı seri portun numarasıdır. Bu aslında basit. USB kart takılmadan programı çalıştırılır, ayarlara girilir ve bakılır. Seri portlar not alınır. Sonra USB kart takılı iken ayarlardaki Seri portlara bakılır. Fazla olan port USB kart için atanmış seri porttur. Zaten bilgisayar üzerinde seri port yoksa, tek bir tane seri port görülecektir.

Ayarlar penceresinde iken önce USB kart için atanmış seri portu ayarla. Herşey tamam ve çalışır halde ise, sıra ile "C1 Oku", "C2 Oku".. "C Oku" "D Oku" butonları ile belirtilmiş olan HP03S parametrelerini işlemci üzerinden almak ve kullanmak gerekiyor. Sadece butonlara basmak yeterlidir. Basılan buton ile ilgili yanındaki yazı alanına parametreyi yazılmasını sağlayacaktır. Örneğin "C1 Oku" butonuna basılırsa bilgisayar işlemciden C1 parametresini okur ve "C1 Oku" butonu yanındaki yazı alanına C1 parametresini (onluk sistemde) yazar. İlk basılan buton ile birlikte yazı alanı üzerinde gösterilen değer en azından sistemin çalıştığını gösterir. Butona basıldığında yazı alanına değer gelmezse aynı işlemi başka bir buton ile dene.(Parametre 0 değerini taşıyor olabilir) Hepsi sıfır ise sisteminizi ve ayarlarınızı kontrol edin. (Bir yerde hata var).USB-seri dönüştürücü kartı üzerindeki LED'ler seri port işlem yoğunluğunu izlemek için kullanılabilir.

Bu işlem sıra ile bütün butonlara basarak tüm parametre alanları doldurmak gereklidir. (C1, C2, C3 ...B, C, D). Bu parametreler okunan sıcaklık ve basınç kullanılarak kullanıcının anlayabileceği hale getirilir. Buradaki önemli nokta tüm bu parametre alanları parametreler yerleştirildikten sonra "Tamam" butonuna tıklanmasıdır. "Tamam" butonuna tıklandıktan sonra, yapılan tüm ayarlamalar program ile aynı klasördeki aynı isimli ".ini" uzantılı dosyaya kaydedilir ve program her başlatıldığında aynı dosyadan okunarak kullanılır. (Ayarlar penceresindeki her bir değer aynı şekilde bu ".ini" uzantılı dosya içinde saklanır. Bu projede "BaroMetre.ini" isimli bir dosyadır.

"Tamam" butonuna basılması ile ana pencereye gelinir. Burada tekil ölçüm için iki buton var: Sıcaklık ve basınç. Her iki buton üzerinde yer alan yazı alanlarına ölçülen değerlerden hesaplanan sonuçlar yazılacaktır. "Sıcak" butona basıldığında ölçülen sıcaklık değeri parametreler kullanımıyla gerekli işlemlerden geçirilecek ve sonucu sıcaklık butonu üzerine yazılacaktır. Aynı zamanda sol taraftaki liste alanında da görüntülenecektir. Ve de ayarlarda bir dosya kaldı seçeneği aktifse sonuç zaman ile birlikte dosyaya kaydedilecektir.

"Basınç" için butona basmadan önce bir kez "sıcak" butonuna basılması gerekiyor. Çünkü basınç hesabı için sıcaklık değeri hesabı gerekiyor. "Basınç" butonuna basıldığında, hemen butonun üzerindeki yazı alanına hesaplanan basınç değeri koyar, sol taraftaki liste alanına değeri yazar ve dosya kaydı seçeneği seçilmişse, dosyaya zaman ile birlikte sonucu kaydeder.

"Ölç" butonu ölçümün belirli aralıklarda tekrarlanmasını sağlar. Ölçüm için sürekli bilgisayar başında beklenmesi gerekmez."Ölç butonuna tıklandığında, bilgisayar bir zamanlayıcıyı aktifleştirir.Önce sıcaklık değerini ölçer, yaklaşık "300ms" sonra basınç değerini ölçer ve "Ayarlar" penceresindeki "Okuma zamanı" belirtilen değer kadar bekler ve tekrar sıcaklık değerini ölçer...

Ölçülen değerler yukarıda "Sıcak" ve "Basınç" butonlarında anlatılan işlemleri aynı şekilde yerine getirir. Tek farkı sürekli tekrar edilmesidir.

İşlemci kartı üzerindeki LED3 sıcaklık ölçümünde yanacak ve basınç ölçümünde sönecektir. Böylece sürekli ölçüm işleminde sistemin faliyetleri gözlenebilecektir.
Bilgisayar programı

"BaroMetre.exe" programı Delphi 7 ile yazıldı ve derlendi. Program sadece XP üzerinde denendi. Programı çalıştırmak için "BaroMetre.exe" dosyasının yanında "BaroMetre.ini" dosyasıda aynı klasör içinde bulunması gerekmektedir. İni dosyası yok ise program ile ilgili ayarlar yapıldıkça Ayarlar penceresinde "Tamam" butonuna tıklandığında yapılan ayarlar ile ilgili değişiklikler ini dosyası yoksa önce ini dosyası oluşturulur ve tüm değişkenler bu ini dosyasına kaydedilir.
ANA PENCERE
"BaroMetre.exe" programı çalıştırıldığında ile ekrana gelecek olan penceredir.

Şekil-24:Ana pencere.

Ana pencere üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. Program açık olduğu süre içinde hesaplanan sıcaklık ve basınç değerleri listesi (Son ölçüm en üstte yer alır)
  2. Program açık olduğu sürede hesaplanan son sıcaklık değeri gösterilir
  3. Program açık olduğu sürede hesaplanan son basınç değeri gösterilir
  4. Butona tıklandığında bir sıcaklık ölçümü yapar.
  5. Butona tıklandığında bir basınç ölçümü yapar.
  6. Butona tıklandığında ölçüm işlemlerini başlatır. Ayarlar penceresindeki "Okuma Zamanı" alanındaki seçilen zaman birimi sıklığında ölçüm gerçekleştirilir.
  7. Ayarlar penceresine girmek için tıkla.

AYARLAR PENCERESİ

Şekil-25:Ayarlar penceresi. Projede kullanılmış olan HP03s algılayıcının parametre değerleri görülmektedir.

Ayarlar penceresi üzerindeki rakamlarla ilişkilendirilen alanları incelersek;
  1. USB-seri dönüştürücü tarafından oluşturulan sanal seri porta seçmek için açılır menü. Program açıldığında bilgisayar üzerindeki seri portlar taranır ve bu menüye eklenir. (Donanıma bağlı olarak değişken olabilir)
  2. İşlemci kartından "C1" değerini almak için butona tıkla
  3. İşlemci kartından gelen "C1" parametresinin görüntülendiği yazı alanı
  4. İşlemci kartından "C2" değerini almak için butona tıkla
  5. İşlemci kartından gelen "C2" parametresinin görüntülendiği yazı alanı
  6. İşlemci kartından "C3" değerini almak için butona tıkla
  7. İşlemci kartından gelen "C3" parametresinin görüntülendiği yazı alanı
  8. İşlemci kartından "C4" değerini almak için butona tıkla
  9. İşlemci kartından gelen "C4" parametresinin görüntülendiği yazı alanı
  10. İşlemci kartından "C5" değerini almak için butona tıkla
  11. İşlemci kartından gelen "C5" parametresinin görüntülendiği yazı alanı
  12. İşlemci kartından "C6" değerini almak için butona tıkla
  13. İşlemci kartından gelen "C6" parametresinin görüntülendiği yazı alanı
  14. İşlemci kartından "C7" değerini almak için butona tıkla
  15. İşlemci kartından gelen "C7" parametresinin görüntülendiği yazı alanı
  16. İşlemci kartından "A" değerini almak için butona tıkla
  17. İşlemci kartından gelen "A" parametresinin görüntülendiği yazı alanı
  18. İşlemci kartından "B" değerini almak için butona tıkla
  19. İşlemci kartından gelen "B" parametresinin görüntülendiği yazı alanı
  20. İşlemci kartından "C" değerini almak için butona tıkla
  21. İşlemci kartından gelen "C" parametresinin görüntülendiği yazı alanı
  22. İşlemci kartından "D" değerini almak için butona tıkla
  23. İşlemci kartından gelen "D" parametresinin görüntülendiği yazı alanı
  24. Yapılan ölçüm sonuçlarının bilgisayara kaydedilmesi için bir metin dosyası açmak gerekir. Bu buton işte o metin dosyasını açmak (daha doğrusu boş metin dosyası) için kullanılır.
  25. Ölçüm sonuçlarının kaydedileceği metin dosyası adı ve bilgisayar üzerindeki yeri
  26. "Ölç" butonu ile kullanılan otomatik ölçme zaman aralığını belirler.
  27. Ölçüm sonuçlarının metin dosyasına (7 nolu alandaki dosya adına) kaydetme izni için işaretle. İşaretli değilse kayıt yapılmaz.
  28. Hesaplanan basınç değeri sonuna "mbar" birimini ekler (29 ile işaretli radio buton ile ilişkilidir.)
  29. Hesaplanan basınç değeri sonuna "hpa" birimini ekler(28 ile işaretli radio buton ile ilişkilidir.)
  30. Ayarlar işlemlerini tamamlanması, ayarların kaydedilmesi ve "Ayarlar" penceresinin kapatılması ve ana pencere geri dönülmesi için "Tamam" butonuna tıkla.

Not:Bu projede ölçülen değer ve hesaplamaların kesinliği konusunda doğrulama şansım olmadığı için "BaroMetre.exe" dosyasının açık kodları verilmektedir.(işlemci programı için zaten verilmektedir).



Ekler:

ATMEGA8 hakkında bilgi için

"Atmega8 ve HP03S ile USB bağlantılı barometre" için dosyalar-birleşik

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....

18 Mayıs 2011 Çarşamba

Atmega8 ve HH10D ile USB bağlantılı higrometre


"Atmega8 ve HH10D ile LED Ekranlı Higrometre" projesi ile LED ekranlıda olsa bir higrometre yapıldı. Ama bu aleti okumak için sürekli başında biri bulunmak zorunda. Yani (örneğin sera) ortamın neminin sürekli olarak izlenmesi gerekli olan bir durumda haliyle LED ekranlı bir higrometre yetersiz kalacağı ortada. Bu durumda ölçü aletinin bilgisayar gibi veri kaydetme yeteneği olan bir makineye bağlanması gerekir.

Bu projede Atmega8 ve HH10D (nem algılama modülü) kullanarak bilgisayara USB bağlantısı üzerinden ölçüm sonuçları gönderilmeye çalışılacak.
Nem Ölçümü

Dünyamızın atmosfer dediğimiz bölümü bilindiği üzere bir gaz karışımıdır. Bu gaz karışımının için normal şartlar altında azot, oksijen, karbondioksit ve diğer gazların yanısıra su buharı da bulunur. Atmosferdeki su buharı miktarına göre çeşitli etkilere sahiptir. Sıcaklık ile ilişkili olan su buharı etkisi kimi yaz günlerinde özellikle sahillerde yaşayan kişiler için hayatı çekilmez kılar. Kışın soğuk günlerinde ise su buharı azlığı çatlamış ve kurumuz ciltler ve dudakları göz önüne serer.

Bazı ortamlar açısından su buharı (nem) daha önemlidir. Örneğin bir sera veya bir ürünün kurutulması ile ilgili bir bölüm ise iş biraz daha önem kazanır. Atmosferik tahminler açısından ise önemi daha da artar.

Bu projedeki nem ölçümü Hope Microelektronics firması (HOPERF) firması tarafından üretilmiş olan HH10D isimli bir nem algılayıcı modül kullanılarak gerçekleştirilir. "Atmega8 ve HH10D ile LED Ekranlı Higrometre" projesinde bu sensörün kullanımı hakkında bilgi bulabilirsiniz.

Algılayıcı çıkışı basitçe nem ve frekans bağlantılı bir çıkış vermektedir. Böylece çıkışta ölçülen frekans nem ile orantılıdır. Daha doğrusu ters orantılıdır. Nem arttıkça frekans azalır. Böylece HH10D parametrelerindeki "Offset" denkleştirme parametresi sadece ölçülebilecek en yüksek frekansı verir.(Nem=0).

Gerisi sadece HH10D için yayınlanmış veri kağıdındaki formülü uygulamaktır. Sonuç yüzde ifadesi ile bağıl nem değerini verir.
USB


Şekil-1 :USB bağlantı fişi.

Şu anda bilgisayarlar açısından neredeyse vazgeçilmez bir arabirim bağlantısıdırlar. Kullanım esnekliği ve kolaylığı nedeniyle (en azından kullanıcı açısından) oldukça y aygınlaşmış durumdadırlar. Yazıcı, tarayıcı, taşınabilir bellek, taşınabilir sabit disk, oyun kolları, klavye ve fare gibi bir çok araç için USB bağlantısı kullanılır hale gelmiştir.

Bu projede "FT232BL USB-Seri Dönüştürücü" projesinde kullanılan devre kullanılmaktadır. "FT232BL USB-Seri Dönüştürücü" projesi adından da anlaşılacağı gibi bir USB-seri (UART) dönüştürücüdür. Bu projenin alında işte bu bölümü dikkate değer. Nem ölçüm sonucu bilgisayara bu şekilde iletilir.

Şekil-2 :FT232BL USB-Seri Dönüştürücü kartı üzerindeki FTDI232.

Bilindiği gibi Atmega8 işlemcisinin USB portu yok, ama bir UART portu var. Atmega8'in UART portu USB-seri dönüştürücünün Seri portuna bağlanır ve USB-seri dönüştürücünün USB bölümüde bilgisayara.

Sonuçta bu USB-seri dönüştürücü bilgisayar ile Atmega8 devresi arasında bir köprü olarak kullanılıyor. USB-seri dönüştürücünün bilgisayardaki sürücüleri Sanal seri port oluşturan bölümü kullanılacağından, bir yerde bilgisayar üzerindeki ölçüm programı sanki Atmega8 devresi bilgisayarın seri portuna bağlanmış gibi işlem yapacaktır.
Devre

Proje bileşenleri göz önüne alındığında basitçe HH10D modülü, Atmega8 işlemci devresi (işlemci devresi) , USB-seri dönüştürücü ve projeye dahil edilmesi gereken bir bilgisayar. (Bilgisayar ölçüm aralığını belirler, ölçüm sonucuna göre gelen bilgileri hesaplar ve sonucu gösterir, hatta gerekirse hesaplanan bilgiler bilgisayara kaydedilir.

HH10D modülü ortamdaki nem miktarına göre belirli bir frekansta kare dalga yayınlar. İşlemci devresi yayınlanan bu karedalgayı bilgisayardan gelen emirler doğrultusunda ölçümler ve ölçüm sonucunu USB-seri dönüştürücüye iletir. USB -seri dönüştürücü bilgisayarın USB portuna yöneltir. Bilgisayar üzerindeki program gelen bu bilgiyi hesaplar ve sonucunu kullanıcıya iletilir.

Şekil-3 :İşlemci kartı (Atmega8 işlemcisi ve HH10D nem algılama sensörü ile.


Şekil-4 :USB-seri dönüştürücü kartı


Şekil-5 :İşlemci kartı ile USB-seri dönüştürücü kartını bağlayan iki ucunda 2x5'li dişi konnektör bulunan 10 yollu şerit kablo


Şekil-6 :USB-seri dönüştürücü kart ile bilgisayar arasındaki bağlantıyı sağlayan USB kablo


Şekil-7 :işlemci kartı ile USB-seri dönüştürücü kartı birbirine bağlı halde

Şema

USB seri dönüştürcü Devresinin kalbi zaten görüldüğü üzere FT232BL IC1. Tüm iletişim sistemini bu eleman kontrol ediyor. Bu tüm devreye bağlı olan R9 ve R10 (27R) seri USB akım sınırlama dirençleri. Burada R9 (27R) ucuna bağlı olan R8 (1K5) direnci USB’nin tipini (USB2.0) belirleyen dirençtir. Buradaki R6 (4k7) ve R7 (10K)devre harici besleme durumunda bilgisayarın kapatılması durumunda USB cihazın sıfırlanması ile ilgili bir görevi var. R1 ve R2 (1K)dirençleri LED1 ve LED2 LED’lerinin akım sınırlama dirençleridir. LED1 ve LED2 LED’leri seri port iletişim monitörü olarak çalışır. R3(10K) ve R4 (2K2) IC2 (93C46) EEPROM’un veri aktarma uçlarının FT232BL entegresine bağlantısında kullanılır. Bu bağlantı şekli konusunda ayrıntılı bilgi için FT232BL veri kağıtlarını incelenmesi yerinde olabilir. C1,C2 (27pF) ve XT1 (6MHz)ise IC1 için saat frekans üretim sistemini oluşturuyor. USB-A USB bağlantı konektörü. (isteyen doğrudan USB kablosunu doğrudan lehimleyebilir.) P1 seri bağlantı için bağlantı portudur. P2 ve P3 ise besleme bağlantısı için seçim konektörleridir. Her ikisine takılacak köprü yardımıyla kullanılabilir.

İşlemci kartı IC3 (ATmega8) işlemcisi tarafından yönlediriliryor. Bu işlemcinin saat frekansı ihtiyacı C11 ve C12 (27pF) kondansatörler ile birlikte XT2 (3.6864MHZ) kristal tarafından karşılanıyor. M1 ile gösterilen HH10D modülü nem ölçümü sonucunu frekans ölçümü için işlemciye gönderirken aynı zamanda nem/frekans dönüşümü için gereken parametreleri saklar. SDA iletişimi için R19 (10K) ,Q1 (BS170) ve R17 (10K) elemanları gerilim seviye dönüşümünü sağlarlar. SCL için ise R18 (10K), D2 (1N4148) R16 (10K) elemanları gerilim seviye dönüşümünü sağlarlar. FOUT (frekans çıkış sinyali için) R11 (1k), Q2 (BC847) ve R14 (10K) gerilim seviye dönüşümünü sağlar.

M1 modülü için gereken 3.3V'luk besleme gerilimini IC4(LP2950-3.3) gerekli regülasyonu sağlayacaktır.

Devrenin beslemesi P4 konnnektörü üzerinden D1 (2W10M) köprü diyodu üzerinden IC5 (7805)regüle edilerek devrelinin ihtiyacı olan beslemeyi oluşturur.

Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.

Şekil-8:Blok şeması


Şekil-9:Devre şeması (P1 ve P5 konnektörleri gösterilmemiştir)

Devre Yapımı

Devre montajı açısından kritik bir durum yoktur. Görüldüğü gibi devre son derece sadedir. Yüzey montaj elemanların montajında biraz daha dikkatli olmak yerinde olacaktır.

Yüzey montaj elemanları herne kadar eleman yüzü üzerinde gösterilsede bu elemanlan kartın bakır yolları üzerine monte edildiğinde eleman yüzü üzerinden görülüdüğü gibi gösterilmiştir. Herhangi bir şüpheye düştüğünüzde ilgili elemanların veri kağıtlarını kontrol etmeniz de yarar var.

Şekil-10:USB-seri dönüştürücü ve işlemci kartının yolları


Şekil-11:USB-seri dönüştürücü ve işlemci kartının eleman yerleşimi


Şekil-12:USB-seri dönüştürücü ve işlemci kartının yolları birlikte eleman yerleşimi

Devre Elemanları

0R(köprüleme) SMD-1206R12,R13,R15
27RR9,R10
470RR5
1KR1,R2
1K SMD-1206R11
1k5R8
2k2R4
4k7R6
10KR3,R7
10K SMD-1206R14,R16,R17,R18,R19
27pFC1,C2
27pF SMD-1206C11,C12
100nFC3,C4,C5
100nF SMD-1206C6,C7,C9,C13,C14
10µF/25VC8,C10
3mm Kırmızı LEDD2
3mm Yeşil LEDD1
FT232BLIC1
Atmega8 (DIL)IC3
93C46 (DIL)IC2
7805IC5
LP2950-3.3IC4
BS170Q1
BC847 SMDQ2
1N4148 SMDD2
2W10M veya benzeriD2
6Mhz kristalXT1
3.6864Mhz kristalXT2
HH10DM1
10 Header(2x5)P1,P5
6 Header(2x3)isp
USB-A konnektörUSB-A
3 bacak sıra pinP2,P3
köprüköprü(jumper) 2 Adet
2 bacaklı klemansP4

Besleme için 9V'luk adaptör, USB-seri dönüştürücü kartı ile işlemci kartı arasına (P1 ve P5) 2x5 bağlantı uçu ile birlikte 10 yollu yassı kablo kablo ve konnektörü ve bilgisayar için USB bağlantı kablosu unutulmamalıdır.
Ayar ve kullanım

Ayar için öncelikle USB -seri dönüştürücü kartındaki P2 ve P3 konnektörleri üzerindeki köprüler ayarlanması gerekir. Bu köprüler FTDI232 işlemcisinin besleme ve çalışma şeklini belirler.

İşlemci kartı üzerindeki köprüleme için kullanılan kabloyu unutmayın. (IC4 ile IC5 arasındaki besleme için).

Şekil-13:USB-seri dönüştürücü kartı üzerindeki köprülerin konumları.)


Şekil-14:İşlemci kartı üzerindeki besleme için gereken köprü kırmızı çizgi ile gösterilmiştir.

Devre çalıştırıldığında ve bilgisayar bağlantısı yapıldığında öncelikle USB kartının USB sürücülerinin bilgisayara yüklenmesi gerekiyor. Bu sürücüleri FTDI232 ürününün üretici sitesinde son sürümlerini bulabilirsiniz.

Projede USB bağlantısı olduğu belirtildi isede aslında sanal seri port kullanılacağından bilgisayar üzerindeki ölçüm ve kontrol programını çalıştırın. "Ayarlar" butonuna tıklayın. Açılan "Ayarlar" Penceresinde öncelikle USB kartınız için oluşturulan seri portu seçin. "Tamam" butonuna basın. Tekrar "Ayarlar" butonuna basın ve Ayarlar penceresini açın

Bu aşamada öncelikle HH10D modülünden ölçüm ile ilgili paremetrelerin okunup program tarafından kaydilmesinin sağlanması gerekiyor. "Sens Oku" butonuna basıldığında işlemci kartından 2 baytlık değer okunur ve butonun hemen yanındaki ilgili alana yerleştirilir. (devre çalışıyorsa) "Offset Oku" butonuna basıldığında aynı şekilde işlemci kartından 2 baytlık değeri okunur ve bunotunun yanındaki ilgili metin alanına yerleştirilir. Şu aşamada ölçüm için yeterlidir. Sadece "Tamam" butonuna bas ve ayarları kapat.

Ana penceredeki "Tek Ölçüm" butonuna basıldığında işlemciye ölçümü başlatması için gerekli komutu gönderir. (ölçüm için en az 1 saniye geçmesi gerekir) İşlemci kartında yapılan ölçüm 2 baytlık veri halinde gelir. HH10D veri kağıtlarında belirtilen matematik ifade ışığında işlem yapılır ve sol taraftaki listede görüldüğü gibi butonun hemen üzerindeki metin alanında da o anki değer görüntülenir.

Sürekli ölçüm için "Ölç" butonuna bas. Bu "Ayarlar" penceresinde seçilebilen zamanlayıcı değerleri ile belirli aralıklarla ölçümün gerçekleştirilmesini sağlar. Bu butona basıldığı zaman etketi "Durdur" olarak değişir. Ölçmeyi sonlandırmak için "Durdur" butonuna bas.

Nem ölçme sonuçlarından yapılan hesaplamada sonuçlar virgülden sonra iki hane ile sınırlandırılmıştır. Bağıl nem zaten yüzde ile ifade edildiğinden tam sayı bölümü 0 ile 99 aralığında olacaktır.
Bilgisayar programı

"NemMetre.exe" programı Delphi 7 ile yazıldı ve derlendi. Program sadece XP üzerinde denendi. Programı çalıştırmak için "NemMetre.exe" dosyasının yanında "NemMetre.ini" dosyasıda gerekmektedir. İni dosyası yok ise program ile ilgili ayarlar yapıldıkça Ayarlar penceresinde "Tamam" butonuna her tıklanışta yapılan ayarlar ile ilgili değişiklikler için önce ini dosyası oluşturulur ve sonraki değişiklikler bu ini dosyasına kaydedilir.

FTDI için USB sürücü yazılımı yüklenmesi gerekir. Bu konulu ile ilgili olarak FTDI sitesinde sürücü ve nasıl yükleneceği konusunda bilgi verilmektedir.
ANA PENCERE
"NemMetre.exe" programı çalıştırıldığında ile ekrana gelecek olan penceredir.

Şekil-15:Ana pencere.

Ana pencere üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. Program açık olduğu süre içinde hesaplanan nem değerleri listesi (Son ölçüm en üsttekidir.)
  2. Program açık olduğu sürede hesaplanan son nem değeri
  3. Butona tıklandığında tek ölçüm yapar.
  4. Butona tıklandığında ölçüm işlemlerini başlatır. Ayarlar penceresindeki "Okuma Zamanı" alanındaki seçilen zaman birimi sıklığında ölçüm gerçekleştirilir.
  5. Ayarlar penceresine girmek için tıkla.

AYARLAR PENCERESİ

Şekil-16:Ayarlar penceresi.

Ayarlar penceresi üzerindeki rakamlarla ilişkilendirilen alanları incelersek;
  1. USB-seri dönüştürücü tarafından oluşturulan sanal seri porta seçmek için açılır menü. Program açıldığında bilgisayar üzerindeki seri portlar taranır ve bu menüye eklenir. (Donanıma bağlı olarak değişken olabilir)
  2. İşlemci kartından "Sens" değerini almak için butona tıkla (Hassasiyet değeri).
  3. İşlemciden alınan "Sens" değeri bu alana yazılır.
  4. İşlemciden alınan "Offset" değeri almak için bu butona tıkla (Denkleştirme)
  5. İşlemciden alınan "Offset" değeri bu alana yazılır.
  6. Yapılan ölçüm sonuçlarının bilgisayara kaydedilmesi için bir metin dosyası açmak gerekir. Bu buton işte o metin dosyasını açmak (daha doğrusu boş metin dosyası) için kullanılır.
  7. Ölçüm sonuçlarının kaydedileceği metin dosyası adı ve bilgisayar üzerindeki yeri
  8. "Ölç" butonu ile kullanılan otomatik ölçme zaman aralığını belirler.
  9. Ölçüm sonuçlarının metin dosyasına (7 nolu alandaki dosya adına) kaydetme izni için işaretle. İşaretli değilse kayıt yapılmaz.
  10. Ayarlar işlemlerini tamamlanması, ayarların kaydedilmesi ve "Ayarlar" enceresinin kapatılması ve ana pencere geri dönülmesi için "Tamam" butonuna tıkla.


Ekler:

ATMEGA8 hakkında bilgi için

"Atmega8 ve HH10D ile USB bağlantılı higrometre" için dosyalar-birleşik

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....


9 Mayıs 2011 Pazartesi

Atmega32 ile Grafik LCD'nin Karakter LCD olarak kullanımı (Seri port üzerinden)


Karakter LCD kullananlar bilirler, özellikle (ı,İ,ş,Ş,ç,Ç,ö,Ö,ü,Ü,ğ,Ğ gibi) Türkçe karakter kullanımı işi içine girdiği zaman son derece sınırlayıcı yapıları özellikle de karakter ROM'larında bu karakterlerin bulunmaması ekran üzerinde özellikle mesaj gösterileceği zaman son derece zorluklar çıkarmakta ve anlam kaymaları açısından mesajın içeriğinin anlaşılmasında bazen sorunlara yol açabilmektedir. Hatta bazı karakterlerin estetikten yoksun bir biçimde gösterilmesi ise işin cabası. Çözümü en azından Türkçe karakter bulunan bir LCD kullanmak! Tabii bulunabilirse. Ya da bir grafik LCD'yi bu amaç doğrultusunda kullanmak!!

Bu projede Atmega32 ile bir grafik LCD'nin karakter olarak seri port üzerinden kullanımını için çalışılacaktır.
Karakter LCD


Şekil-1 :Karakter LCD üzerindeki karakterin görünümü (tek karakter için).


Şekil-2 :Karakter LCD üzerinde gösterilen karakterler.

Karakter LCD'ler aslında kendi karakter ROM'ları olan ve veri olarak sadece bu karakterlerin adresi ile ekran üzerinde gösterebilen grafik LCD denebilir. Çoğunlukla sınırlı miktarda ekran üzerinde ek karakter gösterimi için RAM birimi vardır.

Yaygın olarak İngilizce karakterleri göstermek üzere düzenlenmiş karakter LCD'ler çoğunlukla karakteri 7x5 matris alanı oluşturacak şekilde (veya 8x5) gösterebilirler. Bu nedenle bazı karakterleri 7x5 alana sığdırabilmek için karakter üzerinde düzenlemelere gidilir. (g ve y gibi karekterin yukarı kaydırılması gibi).

Önemli bir konuda Türkçede yer alan bazı karakterlerin İngilizcede yer almamasıdır. Bu sorun bir noktaya kadar karakter RAM bölümü ile çözülsede, program hazırlama açısından, özellikle sınırlı işlemci kapasitesinin bir bölümünün bu işlemler için ayrılmasına neden olur.

Bazı dillerin destekleri bulunan karakter LCD ekranlar satılsalarda, hem nadir bulunurlar hem de fiyat açısından bir pahalıdırlar.
Karakterin Oluşturulması


Şekil-3 :Grafik LCD için oluşturulmuş birkaç karakterin görünümü.

Grafik LCD için işlemcinin RAM bölgesinde tüm ekran görüntüsü oluşturulup, veya bilgisayardan tüm ekran görüntüsü alınıp ekrana yansıtılabilir. Baya ek iş olduğu açık. Hele ki sınırlı kaynakları olan işlemciler için. Bilgisayar veya başka bir işlemciden tüm ekran verisinin 1Kbayt civarında olacak biçimde aktarımının alacağı zamanı düşünmek gerekir.

En iyi çözüm işlemciye doğrudan karakter olarak alınması ve gelen karaktere uygun olarak grafik LCD ekranına görüntüyü göndermektir. Burada görüntünün oluşturulmasında fazla karşık hale getirmemek için 16x6 matris alanında karakter oluşturulacak şekilde planlandı. Ayrıcı 10 ve 11. karakterlerin arasının ekranın sol ve sağ arasındaki ayrıma denk gelmesi dikkate alındı.

Not: Özellikle karakter görüntüsünün doğrudan ekranda oluşturulması hem hız açısından daha hızlı olmasını sağlar hem de küçük RAM kapasitesi olan işlemciler için kullanılabilir uygulama olmasına olanak tanımaktadır. (Bu uygulamanın Atmega32 üzerinde yapılmış olmasına rağmen)

Bilgisayardan gelen ilk veri satır kodunu oluşturuyor. Sonraki 20 karakter bilgisi ve sonrada satır sonu kodudur. Bu bilgi iletişimi tamalandıktan sonra bilgisayardan sırayla ikinci, üçüncü, dördüncü satırlarla ilgili bilgiler birinci satır bilgisi ile aynı biçimde sırayla işlemciye gelir.

Bu dört satır bilgileri işlemci tarafından alınmasından sonra işlemci bu bilgileri programında yer alan karakter ROM'unu kullanarak ekran üzerinde görüntüyü oluşturacak şekilde işler ve görüntüyü ekrana yükler. Ekrana görüntünün yüklenmesinden sonra işlemci gelecek sonraki karakter verisi için satır tamponlarını hazırlar

Şekil-4 :Grafik LCD için oluşturulmuş karakterlerin ekran üzerinde gösterimi. Karakterlerin oluşturulmasında karakter LCD görüntülerinden yararlanılmıştır.

Bir karakter (satırı) oluşturmak için iki ekran satırı kullanılmaktadır. Yani karakterler kenar boşlukları dahil 16x6'dir. Karakterin kendisi için için 16x5'dir. Aslında 16'lık sütun tamamı kullanılmıyor. Ama karakterlerde bir standart oluşturmak için bu şekilde tanımlandı.

Burada dikkate alınması gereken konu bu işlemlerin sürme hızıdır. Yani karakter verileri ekrana gönderirken işlemciye karakter verisi gönderirseniz büyük olasılıkla sorun çıkacaktır. Çünkü bölüm ile ilgili hata kontrolu yapılmamıştır. (Belki veri kaybı yaşayabilirsiniz.)

Projeye karakter satırlarını kendi başlarına negatif gösterebilme seçeneği eklenmiştir. (karakter satırı olarak) Bu işlem karakterler işlemciye gönderilirken kullanılan satır kodu ile yapılmaktadır. Dolayısı ile bilgisayar programındaki satırla ilintili negatif kutucuğunu işaretlemek bu işlem için yeterlidir.
Devre

Bu projede kullanılan ekran "PGM12864A-NSW" grafik LCD'dir.

Proje basitçe üç ana bölüme ayrılabilir: Bilgisayar ve işlemci arasındaki iletişimi sağlayan RS232 arayüzü (seviye çevirici), işlemci ve Grafik LCD.

RS232 arayüzü işlemci UART bağlantısının bilgisayarın RS232 portuna bağlantısını sağlayan seviye çeviricidir. İşlemci devresi Atmega32 işlemcisi, projenin beslemesi ve LCD ekranın parlaklık ayarı ve bağlantısını oluşturur. Grafik LCD işlemin sonucunu kullanıcıya sunulmasını sağlayan arayüzdür.

Şekil-5 :İşlemci kartı şu hali ile Grafik LCD ekrana kablolar ile lehimli.


Şekil-6 :İşlemci kartı ile bilgisayar arasındaki seviye çevirici RS232 devresi


Şekil-7 :"PGM12864A-NSW" grafik LCD


Şekil-8 :İşlemci kartı ile RS232 kartı arasındaki bağlantıyı sağlayan kablo


Şekil-9 :İşlemci kartı ile Grafik LCD'nin bağlantı durumu

Şema

Sistemin kalbini IC1 ile ATMEGA32 oluşturuyor. Kesin zamanlama ihtiyacını karşılamak için XT1(3.6864MHz) kristal ile C6 ve C7 (27pF) kondansatörler ile birlikte işlemci için gereken zamanlama frekansını üretirler. R1 (1K) ve LED1 (LED) ile devrenin çalışmasını izlemek üzere kullanılsada bu bölümde ihtiyaç olmadığından devre dışı bırakılmıştır. Grafik LCD ekran şemada gösterilmese de P3 konnektör bağlatısı üzerinden kablo ile bağlanmaktadır. R3 (10K) trimpot grafik LCD'nin kontrast ayarı için kullanılmaktadır.

Devrenin beslemesi P1 konnnektörü üzerinden D1 (2W10M) köprü diyodu üzerinden IC2 (7805)regüle edilerek devrelinin ihtiyacı olan beslemeyi oluşturur.

IC3 (MAX232) C10,C11,C12 ve C13 (10µF) ile birlikte bilgisayar ile işlemci arasındaki RS232 seviye çevirci olarak çalışmaktadır.R4 (1k) ve LED2 devre için çalışma monitörü olarak çalışır.P7 DP9 bilgisayar için RS232 bağlantı konnektörüdür. İşlemci kartı ile RS232 kartı arasındaki bağlantı için kullanılar P2 ve P6 şemada gösterilmemiştir.

Belirtilmeyen geri kalan kondansatörler filtre amaçlıdır.

Şekil-10:Blok şeması


Şekil-11:Devre şeması (isp ve P1 haricindeki konnektörler gösterilmemiştir)

Devre Yapımı

Devre montajı açısından kritik bir durum yoktur. Görüldüğü gibi devre son derece sadedir. Sadece kabloları karta lehimlerken kısa devre olmamaları için dikkatli olmak yerinde olacaktır.

Şekil-12:Grafik LCD sürücü kartı ve RS232 kartı yollar


Şekil-13:Grafik LCD sürücü kartı ve RS232 kartı eleman yerleşimi


Şekil-14:Grafik LCD sürücü kartı ve RS232 kartı yolları birlikte eleman yerleşimi

Devre Elemanları

1KR1,R4
27RR2
10K yatık trimpotR3
27pFC6,C7
100nFC1,C2,C4,C5,C8,C9
10µF/25VC3,C10,C11,C12,C13,C14
3mm yeşil LEDLED1,LED2
ATMEGA32 (DIL)IC1
7805IC2
MAX232IC3
2W10M veya benzeriD1
3,6864 Mhz kristalXT1
2x3Header (ISP6)isp
2x5Header P2, P6
2'li klemensP1
16 bacaklı entegre soketi (DIL)-
40 bacaklı entegre soketi (DIL)-
PGM12864-

Besleme için 9V'luk adaptör, RS232 kartı ile işlemci kartı arasına (P2 ve P6)2x5 bağlantı uçu ile birlikte 10 yollu yassı kablo kablo ve konnektörü ve ayrıca grafik LCD ekran ile işlemci kartı arasındaki kablolar unutulmamalıdır.

(İişlemci kartı ile RS232 kartı birleştirilirse, kart üzerindeki yollarla birleştirileceğinden P2 ve P6 ile birlikte bu konnektörler arasındaki bağlantıda gereksiz kalır.)
Ayar ve kullanım

Ayar için devreye ilk enerji verildiğinde ekranın görülebilecek şekilde trimpot ile ayarlanır. Daha sonra bir daha dokunmaya gerek olmaksızın çalışır. Zaten geriye bilgisayarda veri göndermeye kalıyor.

Şekil-15:Grafik ekran üzerinde ilk çıkacak görüntü.( Bu görüntü işlemcide grafik bilgisi olarak saklanmaktadır)


Şekil-16:Bilgisayardan gelen bilgilerle oluşturulmuş grafik LCD ekranı

Bilgisayar Programı

Bilgisayar programı Delphi7'de yazıldı. (LCDEkran.exe). Normalde programın bulunduğu klasör içinde birde ini dosyası eşlik eder. Ayarları bu ini dosyasına kaydedilir. Bilgisayar programı olarak daha önce RS232 ve RS485 iletişim yöntemi ile karakter LCD üzerine bilgi gönderen program üzerinde bazı değişiklikler ve güncellemeler yapılarak tekrar derlenmiştir. Programın sadece "Girdi" penceresi ve "Seçenekler" penceresi incelenecektir. İsteyen diğer bölümleri kendisi inceleyebilir.

GİRDİ PENCERESİ

Şekil-17:Girdi penceresi.

Girdi penceresi üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. 1. satır metin giriş alanı (maksimum 20 karakter)
  2. 1. satır metir girdi alanı seçenekleri
  3. Ekran üzerindeki 1. satır negatif-pozitif seçimi (işaretli= negatif)
  4. Ekran üzerindeki 1. satır metin ortalama veya sola dayalı olma seçeneği (işaretli=ortalı)
  5. 2. satır metin giriş alanı (maksimum 20 karakter)
  6. 2. satır metir girdi alanı seçenekleri
  7. Ekran üzerindeki 2. satır negatif-pozitif seçimi (işaretli= negatif)
  8. Ekran üzerindeki 2. satır metin ortalama veya sola dayalı olma seçeneği (işaretli=ortalı)
  9. 3. satır metin giriş alanı (maksimum 20 karakter)
  10. 3. satır metir girdi alanı seçenekleri
  11. Ekran üzerindeki 3. satır negatif-pozitif seçimi (işaretli= negatif)
  12. Ekran üzerindeki 3. satır metin ortalama veya sola dayalı olma seçeneği işaretli=ortalı)
  13. 4. satır metin giriş alanı (maksimum 20 karakter)
  14. 4. satır metin girdi alanı seçenekleri
  15. Ekran üzerindeki 4. satır negatif-pozitif seçimi (işaretli= negatif)
  16. Ekran üzerindeki 4. satır metin ortalı veya sola dayalı olma seçeneği işaretli=ortalı)
  17. Her tıklamada sadece bir kez ekranda yer alan ayarlar doğrultusunda verileri grafik LCD ekrana gönderir
  18. Ekranda yer alan ayarlar doğrultusunda verileri belirli aralıklarla grafik LCD ekrana gönderir
  19. Grafik LCD ekranını siler
  20. "Seçenekler" penceresini açar.

SEÇENEKLER PENCERESİ

Şekil-17:Seçenekler penceresi.

Seçenekler penceresi üzerinde rakamlarla ilişkilendirilen alanları incelersek;
  1. Grafik LCD'nin bağlandığı bilgisayarın RS232 portu.
  2. Girdi penceresi seçme radio butonu.
  3. Yapılan ayarların onaylandığı, kaydedildiği ve (şu anda anlatılan) Girdi penceresine geçiş butonu.

Karakter Programı

Bu bölümde anlatılan program yapılan karakterleri beğenmeyipte, ben kendi karakterlerimi yapacağım diyen kişiler içindir. Program Delphi 7'de yazıldı. İsteyen aynı işleri kareli kağıt ve kalem ile de yapabilir. Program "karakterGLCD.exe" adı ile kayıtlıdır.

Program penceresi üzerindeki öğeler kısaca:

Şekil-18:Karakter verisi oluşturmak için kullanılan bilgisayar programı.Örnekte çizilmiş küçük j ve oluşturulmuş kodu.

  1. Karakterin oluşturulacağı 16x5 matris alanı (kenar boşluğu otomatik verilere eklenir)
  2. Büyük harflerin üzerindeki nokta ve işaretler için alan.
  3. Küçük harfin üzerindeki büyük harf alanı.
  4. Küçük harf alanı (tabii ki büyük harf alanı)
  5. Harflerin aşağı taşan kuyuruk ve ek işaret alanı.
  6. Karakter matris alanını siler (tamamen beyaz yapar)
  7. Karakter matris alanındaki şekle göre 9 nolu alanda kodu oluşturur ve kaydeder. Kaydetmek için bir diyalog penceresi açar ve oluşturulmuş veri .asm uzantısı ile kaydedilir.
  8. Program içinde karaktere verilen etiketin girilebildiği alan. Örneğin "A" azarsanız karakter veri etiketine "kar_A_1" ve "kar_A_2" etiketleri oluşturulur.
  9. Karakter verisinden oluşturulan kodun görüntülendiği alan.

Oluşturulan karakter kodu işlemcinin programı içindeki ilgili alanlara eklenerek istenilen karakter bilgisayar üzerinden gönderildiğinde kullanılabilir hale gelir.



Ekler:

ATMEGA32 hakkında bilgi için

"Atmega32 ile Grafik LCD'nin Karakter LCD olarak kullanımı (Seri port üzerinden)" için dosyalar-birleşik

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....

Translate

Sayfalar

Etiketler

İzleyiciler