dijital sensor veri okuma yardım

Başlatan [TR]ahmet, 28 Ağustos 2013, 22:09:29

[TR]ahmet

dth22 dijital sıcaklık ve nem ölçme sensörününü kullanacağım  sensör 40 bitlik veri gönderiyor bunu nasıl alabilirim ?

Kabil ATICI

her aradığımızı aradığımız gibi bulamıyoruz.
http://learn.adafruit.com/dht/connecting-to-a-dhtxx-sensor
en azından fikir verebilir.Maxim veya Dallas semiconductor ürünlerin kullanılan 1-wire bağlantısı kullanıyor gibi görünüyor.
ambar7

[TR]ahmet

Alıntı yapılan: ambar7 - 28 Ağustos 2013, 22:38:28
her aradığımızı aradığımız gibi bulamıyoruz.
http://learn.adafruit.com/dht/connecting-to-a-dhtxx-sensor
en azından fikir verebilir.Maxim veya Dallas semiconductor ürünlerin kullanılan 1-wire bağlantısı kullanıyor gibi görünüyor.
teşekkürler ben  bu sensörle ilgili çoğu kaynağı inceledim bu kütüphaneyi de indirdim fakat kullanamadım diğer incelediklerimde ise bazı yerlerde hata veriyorlar. Sorunumu tam olarak anlatamamışım benim sadece istediğim o biti nasıl alabilirim sensörün nasıl veri gönderdiğini anlatım kodları falan yazdım fakat gelen veriyi nasıl okuyacağımı bilmiyorum orada takıldım :(

Kabil ATICI

(40 bit) 5 bayt verinin verinin ilk ikisi nem, sonraki ikisi sıcaklık sanırım sonuncusu kontrol için.
nem için
f = (data[0] *256 + data[1])/ 10;

sıcaklık için
      f =( (data[2] & 0x7F)* 256+ data[3])/10

sıcaklığın eksi değerleri için
      if (data[2] & 0x80)
   f *= -1;

bu değerleri test etmek gerek...
ambar7

[TR]ahmet

Alıntı yapılan: ambar7 - 29 Ağustos 2013, 00:17:30
(40 bit) 5 bayt verinin verinin ilk ikisi nem, sonraki ikisi sıcaklık sanırım sonuncusu kontrol için.
nem için
f = (data[0] *256 + data[1])/ 10;

sıcaklık için
      f =( (data[2] & 0x7F)* 256+ data[3])/10

sıcaklığın eksi değerleri için
      if (data[2] & 0x80)
   f *= -1;

bu değerleri test etmek gerek...

cevap verdiğin  için teşekkürler .veriyi alamadığımdan dolayı daha parçalamaya gelemedim :(   data'yı (40 bitlik veriyi) nasıl alacağımı  bilmiyorum gelen binary sayıları nasıl değişkene aktarabilirim ? sorunum tam olarak bu

Kabil ATICI

#5
temelde DS1820 gibi çalışıyor (dalga şekli olarak)
Fark ise sen sensörden veri okumak için komut göndermene gerek yok

İşlemci hattı 500µs için lojik-0 çekiyor. Sonra lojik 1 çekikip okuma konumuna geçiyor.(20-40µs  civarında
bekleniyor)
sonra yaklaşık 80µs'lik (sensör tarafından lojik-0 sinyali geliyor).

işlemci
-----            -----
      |           |                 
      ----------
      500µs


sensör
                        ----           ------------
                             |          |             |
                             ---------               ---------bu noktada veri okunmaya başlanır
                              80µs        80µs



      --------           ---------------
               |           |                 |
               ----------                  --------------- lojik 1
                   50µs      120µs

      --------           ---------------
               |           |                 |
               ----------                  --------------- lojik 0
                   50µs      26-28µs

ver kağıdında öyle diyor... veri kağıdında fazla bilgi verilmemiş. üstün körü geçilmiş.
buna göre seviye olarak lojik 0'dan sonra sinyalin Vcc'deki konumda kaldığı sürek kontrol edilir 100µs'den küçükse lojik sıfır büyükse lojik 1 olarak kabul edilebilir.

Haberleşme tamamen sıkı bir zamanlama kontrolu gerektriyor.
Aslında bunu bir osilaskop veya lojik analizor ile bakmak lazım.
ambar7

[TR]ahmet

Alıntı yapılan: ambar7 - 29 Ağustos 2013, 15:18:13
temelde DS1820 gibi çalışıyor (dalga şekli olarak)
Fark ise sen sensörden veri okumak için komut göndermene gerek yok

İşlemci hattı 500µs için lojik-0 çekiyor. Sonra lojik 1 çekikip okuma konumuna geçiyor.(20-40µs  civarında
bekleniyor)
sonra yaklaşık 80µs'lik (sensör tarafından lojik-0 sinyali geliyor).

işlemci
-----            -----
      |           |                 
      ----------
      500µs


sensör
                        ----           ------------
                             |          |             |
                             ---------               ---------bu noktada veri okunmaya başlanır
                              80µs        80µs



      --------           ---------------
               |           |                 |
               ----------                  --------------- lojik 1
                   50µs      120µs

      --------           ---------------
               |           |                 |
               ----------                  --------------- lojik 0
                   50µs      26-28µs

ver kağıdında öyle diyor... veri kağıdında fazla bilgi verilmemiş. üstün körü geçilmiş.
buna göre seviye olarak lojik 0'dan sonra sinyalin Vcc'deki konumda kaldığı sürek kontrol edilir 100µs'den küçükse lojik sıfır büyükse lojik 1 olarak kabul edilebilir.

Haberleşme tamamen sıkı bir zamanlama kontrolu gerektriyor.
Aslında bunu bir osilaskop veya lojik analizor ile bakmak lazım.

şimdi anlatım ben gelen signali nasıl alacağımı bilmiyordum fakat sensor 1 yada 0 bilgisini gönderiyor ben  gelen veriyi  okuyup 1µs bekledikten sonra 40 biti alana kadar böyle yaparsam sorunum çözülür çok yardımcı oldun teşekkür

Start signal
Microprocessor data bus (SDA) to bring down a period of time (at least 800μs) [1] notify the sensor to prepare the data.
Response signal
Sensor data bus (SDA) is pulled down to 80μs, followed by high-80μs response to host the start signal.
Data format
Host the start signal is received, the sensor one-time string from the data bus (SDA) 40 data, the high first-out.
Humidity
Humidity resolution of 16Bit, the previous high; humidity sensor string value is 10 times the actual humidity values.
Temp.
Temperature resolution of 16Bit, the previous high; temperature sensor string value is 10 times the actual temperature value;
The temperature is the highest bit (Bit15) is equal to 1 indicates a negative temperature, the temperature is the highest bit (Bit15) is equal to 0 indicates a positive temperature;
Temperature in addition to the most significant bit (Bit14 ~ bit 0) temperature values.
Parity bit
Parity bit = humidity high + humidity low + temperature high + temperature low


datashette pek bilgi yok fakat bu sensörün üç adı varmış diğer adları am2302 ve sht11 veya sht15 
am2302 datashettinde çoğu şeyi anlatıyor