Bu projede "Atmega8 ile Bluetooth ve DS1820 termometre" konusu işlenecektir.
HC06 BLUETOOTH Modül
Şekil-1 :Bluetooth iletişiminde bilgisayar ve devre için iki
modül gerekir. Her ikisinin de HC06 olması gerekmez. Bilgisayar tarafına
kolaylık olması açısından USB Bluetooth modüller kullanıbilir.
Şekil-2 :HC06 modül.
HC06 ile ilgili olarak ihtiyacımız olan
Modül Adı | linvor |
Modül şifresi | 1234 |
İki bluetoot arasında iletişim başlangıcıda (bağlanırken), akım 30-40mA aralığında inip çıkar. Kabaca 25mA civarındarır. Bağlantı esnasında ise, iletişim yapılsın veya yapılmasın, akım 8mA'dir. Bu uyku modu değildir. Bu parametre tüm Bluetooth modüller için aynıdır.
DS1820 ve 1-hatlı bağlantı
Şekil-3 :1-hatlı (1-wire) dalga şekli örneği.
Bacak bağlantılarıda azaltma sağlamak üzere kullanılan iletişim yöntemlerinden biri olarak 1- hatlı (1-wire) bağlantısıdır. Bu iletişim yönteminde tüm iletişim 1 tane hat üzerinden yürütülür. Hatta bazı durumlarda besleme bile (GND hattını saymazsak)
Şekil-4 :1-hatlı (1-wire) bağlantı örneği.
İşlemci veri gönderecekse;
Lojik-1 için uzun bir darbe oluşturacak; Lojik-0 için ise kısa bir darbe oluşturacak. DS1820 bu sinyalleri okuyup gerekli biti alacaktır.(bir bit için)
Şekil-5 :DS1820
İşlemci zaten veri alma işlemine hazırdır çünkü kendisi bir veri istemiştir. İşlemci kısa bir darbe oluşturacak ve DS1820 buna ; Lojik-1 için uzun bir darbe ve Lojik-0 için kısa bir darbe ile karşılık verecektir.
Şekil-6 :DS1820 bacak bağlantıları.
İş aşamaları 1-hatlı port üzerinden DS1820 erişimi için protokol:
- Başlama
- ROM fonksiyon komutu
- Bellek fonksiyon komutu
- İş/Veri
- İşlemci tarafından bir sıfırlama darbesi gönderilir.
- DS1820 tarafından HAZIR darbesi ile cevaplanır.
- DS1820 ROM bölümünü okumak isteyen okusun , ama biz atlıyoruz.
- İşlemci sıcaklığı dönüştür komutunu gönderir.
- İşlemci 500ms süresince hattı lojik 1 seviyesinde tutarak sıcaklık çevrilmesine izin verir.
- Tekrar işlemci tarafından bir sıfırlama darbesi gönderilir.
- DS1820 tarafından HAZIR darbesi ile cevaplanır.
- Tabii ki ROM okuma bölümünü atlıyoruz.
- Bu noktada İşlemci DS1820'nin Geçici Bellek alanını oku komutu gönderir.
- DS1820 bu noktada CRC kontrol baytı dahil olmak üzere 9 bayt gönderir.
- İşlemci tarafından bir sıfırlama darbesi gönderilir.
- DS1820 tarafından HAZIR darbesi ile cevaplanır. bir sıcaklık okuma işlemi tamamlanmış olur.
Elimizde CRC kontrolu yapmadığımızı varsayarsak 8 değerlendirilmesi gereken bayt var,bunlar;
bayt 0 | Sıcaklık LSB |
bayt 1 | Sıcaklık MSB |
bayt 2 | TH Register |
bayt 3 | TL Register |
bayt 4 | Ayrılmış |
bayt 5 | Ayrılmış |
bayt 6 | Count Remain |
bayt 7 | Count Per °C |
bayt 8 | CRC |
Not: biz sadece kırmızı ile işaretli baytları kullanacak ve değerlendirecek şekilde yazılım düzenlendi. Eğer yüksek çözünürlük isteyen varsa yeşil ile işaretli baytlar kullanılarak elde edilir. Bunun için biraz internet ve DS1820 üzerine örnekleri araştırmanızı öneririm.
ilk iki bayt sıcaklık değeridir. LSB sıcaklığın kendisini ve MSB ise sıcaklığın eksi/artı için değer içerir. (asılnda 9.bit oluyor) TH ve TL Registerleri alarm registerleri(kayıt için). 4. ve 5. bayt başka geliştirilen aletlerde kullanılmak üzere ayrılmış. 6. ve 7. bayt yüksek çözünürlük isteyenler için eklenmiş baytlardır. (biraz hesap gerektirir) Son bayt yukarıda belirtilen baytları kullanarak oluşturulan bir hata kontrol baytı.
Dolayısı ile şu an için sistem 0.5 C'lik ölçüm hassasiyetine sahip olur.
Devre
Proje iki ana gruba ayrılmıştır. DS1820 sensör ile iletişim kurma, ölçüm
sonuçlarını alma ve alınan verilerin bilgisayara aktarılması.
Bu durumda iletişim işini yürüten HC06 ve işlemci kartı ile bağlantı için
küçük bir kartı oluyor. Küçük kart üzerinde sadece gerektiğinde UART portlarını
değiştirmek için iki tane köprü var.
İşlemci kartı ise, her ne kadar DS1820 ile iletişim için kablo bağlandı ise
de normalde kart üzerine monte edilebilen; sensör, işlemci ve devre için
kullanılacak beslemenin içerir.
Buraya kadarki olanlar sadece sıcaklığı ölçmek ve sonucu iletmek için
kullanılmaktadır. Elbette ki iletilen verinin alınması için bir sistem gerekir
ki, bu da bluetooth bağlantısı olan bir bilgisayar. Her bilgisayarda Bluetooth
modülü bulunmadığı durumlarda basit yolla bir usb bağlantısı olan Bluetooth
modülü gerekmektedir.
Projede bilgisayara bağlı olan Bluetooth master konumda çalışırken, işlemciye bağlı olan HC06 bluetooth modül slave konumunda çalışmaktadır. İletişim iki yönlüde yapılabilmektedir. Bilgisayar Atmega8'e sıcaklı okuması için komut gönderirken işlemci devreside okunan sıcaklık değerini bilgisayara 2 bayt olarak geri göndermektedir.
Şekil-7 :HC06 Bluetooth modülünün bulunduğu kartı.
Şekil-8 :İşlemci kartı.
Şekil-9 :İşlemci ve bluetooth kartlarının arasındaki bağlantıyı
sağlayan konnektörleri ile birlikte 10 yollu şerit kablo.
Şekil-10 :Bilgisayar üzerinde Bluetooth yoksa bir tane
USB-Bluetooth modül yeterli olacaktır.
Projede bilgisayara bağlı olan Bluetooth master konumda çalışırken, işlemciye bağlı olan HC06 bluetooth modül slave konumunda çalışmaktadır. İletişim iki yönlüde yapılabilmektedir. Bilgisayar Atmega8'e sıcaklı okuması için komut gönderirken işlemci devreside okunan sıcaklık değerini bilgisayara 2 bayt olarak geri göndermektedir.
Şema
Devrenin kalbini IC1 (Atmega8) oluşturmaktadır.İşlemcinin zamanlama ihtiyacını karşılamak için XTL1(3.6864MHz) kristal ile C1
ve C2 (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ılmaktadır. R2 (4K7) 1-hatlı bağlantı için hem besleme hem de hat
empedansı için kullanılmaktadır.IC2 (DS1820) 1-hatlı dijital termometre
çipidir.ISP konektörü işlemci programlamak için kullanılacak konnektör
bağlantısıdır. (isteyen işlemciyi başka bir yerde programlayıp sonra devreye
takabilir.)
Bluetooth iletişim kartı üzerinde C10 (100nF) kondansatörü besleme gerilimi üzerindeki parazitleri süzmektedir.
D1 (W10M), IC3 (7805), C5,C6 (100nF), C3 (10µF/25V) besleme devresini oluşturmaktalar. Geriye kalan bütün kondansatörler devre oluşabilecek gürültüleri süzme görevini yerine getirir.
Not:İşlemcinin yakınındaki L1 bobini bu devrenin gerektiğinde LM35 gibi bir sıcaklık sensörü ile kullanılacağı varsayılarak AVCC üzerindeki gerilim dalgalanmalarını filtre etmek amacı ile eklenmiştir. İsteyen bu elemanı bir tel köprü ile değiştirebilir.Çünkü şu anki sıcaklıklı sensörümüz dijitaldir ve işlemcinin üzerindeki adc kullanılmamaktadır.
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.
Not:DS1820 doğrudan karta lehimlemek istenirse, bacak
bağlantılarına dikkate etmeniz gerekmektedir. Yoksa beslemeler ters bağlanmış
olur. Kablo ile bağlayacaksanız, Şekil-16 yardımcı olacaktır.
Besleme için 9V'luk adaptör unutulmamalıdır.
Devre üzerinde herşey tamamsa Enerji verildiğine Şekil 19'dakine benzer bir görünümü olacaktır. Artık devre bilgisayar ile iletişime hazırdır. Bu durumda bilgisayar üzerine programımızın yüklendiğine ve bluetooth takıldığı ve ayarlarının yaplmış olduğunu varsayıyoruz.
"M8_bluetooth_DS1820_termometre.exe" C# ile yazılmıştır. Bu nedenle
çalıştırabilmek için Frameworks.net runtime sürüm 4'ün bilgisayarınızda yüklü
olması gerekiyor. Program Win xp üzerinde geliştirilmiş ve denenmiştir.
"M8_bluetooth_DS1820_termometre.exe" simgesi üzerine iki kez tıklayıp çalıştırıyoruz.
Ana pencere
Program ilk açıldığında gösterildiği penceredir. Bu pencere üzerindeki
öğelerin açıklaması aşağıda verilmiştir.
Ayarlar penceresi
Program üzerinde sınırlıda olsa bir hata kontrolu vardır. Yani çalışırken blueetooth bağlantısı koparsa ekranda bir uyarı verecek ve cihazlarınızı kontrol etmenizi isteyecektir.
Program için olsun devre için olsun yapılabilecek çok şey var. Örneğin ölçüm
sonuçları grafik olarak ekranda görüntülenebilir.
Bilgisayar ile ilgili Bluetooth ayarları için "Atmega8 ve Bluetooth ile LED Saat" projesine bakılabilir. O projede ayrıntılı olarak anlatılmıştır.
Son olarak bilgisayar tarafının programını yazmak isteyenler için veri şu şekilde iletilmektedir
1-Bilgisayar devreye "0x17" değerini gönderiyor.
2-Devrede bilgisayar 2 baytlık sıcaklık bilgisini gönderiyor. LSB olarak
tanımlayabileceğimiz bayt; ölçülen sıcaklığın alt 4 biti ("0000"+"4 alt biti")
şeklinde gönderir ve MSB olarak tanımlayabileceğimiz bayt; ölçülen sıcaklığın
üst 4 biti , işaret biti ve MSB biti şeklinde ("MSB biti"+"işaret biti"+"00"+"4
üst bit") şeklinde gönderiliyor. (ilki LSB ve ikincisi MSB olarak gelir)
Bilgisayar tarafında da önce gelen değer 127'den büyük mü bakılıyor. Küçükse bu değer LSB olarak işaretleniyor... Eğer değer 127'den büyükse gelen değer MSB olarak işaretleniyor.. Önce MSB değer 128'den çıkarılıyor. Elde edilen sayı 63'den büyük mu bakıılıyor... Eğer 63'den küçükse gelen değer pozitif sayıdır.
Sıcaklık değeri=( (MSB*16)+LSB)/2
Eğer 63'den büyükse negatif sıcaklık değeri olduğu kabul edilir ve önce MSB değeri 64'den çıkarılır ve;
Sıcaklık değeri=(( (MSB*16)+LSB)-256)/2
şeklinde sıcaklık şekilleri hesaplanır.
Bu işlemler işlemci devresi ile bilgisayar arasında senkron ile yapıldığından bilgisayarda gösterilen değer işlemcide ölçülen değer olmuş oluyor.
Ekler:
Atmega8 hakkında bilgi için
"Atmega8 ile Bluetooth ve DS1820 termometre" projesi için gereken dosyalar
Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....
Bluetooth iletişim kartı üzerinde C10 (100nF) kondansatörü besleme gerilimi üzerindeki parazitleri süzmektedir.
D1 (W10M), IC3 (7805), C5,C6 (100nF), C3 (10µF/25V) besleme devresini oluşturmaktalar. Geriye kalan bütün kondansatörler devre oluşabilecek gürültüleri süzme görevini yerine getirir.
Not:İşlemcinin yakınındaki L1 bobini bu devrenin gerektiğinde LM35 gibi bir sıcaklık sensörü ile kullanılacağı varsayılarak AVCC üzerindeki gerilim dalgalanmalarını filtre etmek amacı ile eklenmiştir. İsteyen bu elemanı bir tel köprü ile değiştirebilir.Çünkü şu anki sıcaklıklı sensörümüz dijitaldir ve işlemcinin üzerindeki adc kullanılmamaktadır.
Şekil-11:Blok şeması
Şekil-12:Devre şeması (P2 ve P3 konnektörü gösterilmemiştir)
Devre Yapımı
Şekil-13:İşlemci ve bluetooth kartı yollar
Şekil-14:işlemci kartı eleman yerleşimi
Şekil-15:işlemci kartı yolları birlikte eleman yerleşimi
Şekil-16:Kartların bağlantıları. DS1820 sensörü doğrudan karta
lehimlemek isteyenler için kart üzerindeki bağlantılar LM35 için olup birebir
uyumlu değildir.
Şekil-17:Bluetooth kartındaki köprülerin konumları
Şekil-18:Tüm sistemin bağlantı yapılmış hali.
Devre Elemanları
1K | R1, |
4K7 | R2 |
10µH | L1 |
27pF | C1,C2 |
100nF | C4,C5,C6,C7,C8,C9,C10 |
10µF/25V | C4 |
LED | LED1 |
Atmega8 (DIL) | IC1 |
DS1820 | IC2 |
7805 | IC3 |
W10M veya benzeri | D1 |
3,6864 Mhz kristal | XTL1 |
2x3 Header (ISP6) | isp |
2'li klemens | P1 |
28 bacaklı entegre soketi (DIL) | - |
10 yollu şerit kablo (10cm) | - |
IDC10 kablo dişi konnektör 2 adet | - |
IDC10 kart tipi erkek konnektör | P2,P3 |
1x3 sıra pin erkek | J1,J2 |
1x4 sıra pin dişi | M1 için |
HC06 Bluetooth modül | M1 |
J1 ve J2 için köprü dişi | - |
Besleme için 9V'luk adaptör unutulmamalıdır.
Bilgisayar Programı
Şekil-19:Devre çalışırken. İlk açıldığında ve sonraki durumda
bilgisayardan sıcaklık okuma komutu geldiğinde okunan veri gönderilene kadar ki
durumu.
Devre üzerinde herşey tamamsa Enerji verildiğine Şekil 19'dakine benzer bir görünümü olacaktır. Artık devre bilgisayar ile iletişime hazırdır. Bu durumda bilgisayar üzerine programımızın yüklendiğine ve bluetooth takıldığı ve ayarlarının yaplmış olduğunu varsayıyoruz.
Şekil-20:Bu proje için C# üzerinde yazılmış bilgisayar programı
simgesi.
"M8_bluetooth_DS1820_termometre.exe" simgesi üzerine iki kez tıklayıp çalıştırıyoruz.
Ana pencere
Şekil-21:Ana pencere
- Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler;
- Ölçülen değerlerin görüntülendiği alan.
- Ölçülen son değerin görüntülendiği alan.
- Sürekli okuma veya sürekli okumayı sonladırmak için buton.
Ayarlar penceresi
Şekil-22:Ayarlar penceresi.
- Ana pencere-Ayarlar penceresi arasında geçişi sağlayan etiketler.
- Seri port seçimi için seçenekler.
- Baud seçimi için seçenekler.
- Rapor dosyasının kaydedildiği yer(ölçüm sonuçlarının kaydedildiği).
- Ölçüm sonuçlarını kaydetme seçeneği.
- Ölçüm aralıkları ayarı için seçenekler.
Program üzerinde sınırlıda olsa bir hata kontrolu vardır. Yani çalışırken blueetooth bağlantısı koparsa ekranda bir uyarı verecek ve cihazlarınızı kontrol etmenizi isteyecektir.
Şekil-23:Program çalışırken alınmış bir hata mesajı.
Şekil-24:Bluetooth bu noktada işe yarıyor. Yani sistemin
portatif olması.
Son olarak bilgisayar tarafının programını yazmak isteyenler için veri şu şekilde iletilmektedir
1-Bilgisayar devreye "0x17" değerini gönderiyor.
Şekil-25:Verilerin iletişim şekli.
Bilgisayar tarafında da önce gelen değer 127'den büyük mü bakılıyor. Küçükse bu değer LSB olarak işaretleniyor... Eğer değer 127'den büyükse gelen değer MSB olarak işaretleniyor.. Önce MSB değer 128'den çıkarılıyor. Elde edilen sayı 63'den büyük mu bakıılıyor... Eğer 63'den küçükse gelen değer pozitif sayıdır.
Sıcaklık değeri=( (MSB*16)+LSB)/2
Eğer 63'den büyükse negatif sıcaklık değeri olduğu kabul edilir ve önce MSB değeri 64'den çıkarılır ve;
Sıcaklık değeri=(( (MSB*16)+LSB)-256)/2
şeklinde sıcaklık şekilleri hesaplanır.
Bu işlemler işlemci devresi ile bilgisayar arasında senkron ile yapıldığından bilgisayarda gösterilen değer işlemcide ölçülen değer olmuş oluyor.
Ekler:
Atmega8 hakkında bilgi için
"Atmega8 ile Bluetooth ve DS1820 termometre" projesi için gereken dosyalar
Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....
Hiç yorum yok:
Yorum Gönder