gelen_veri değişkeninin tipi nedir, kaç bitlik bir değişken? Adc çözünürlüğün 10bit. bu durumda adc değeri olarak 1023 dönebilir. Sen 350 turda da 1000 değerini alırsan gelen_veri değişkeninin içeriği 350.000 olur. Bir sıkıntı bu olabilir.

Değişlen tipin float mı?

"gelen_veri" değişkenini döngüden önce sıfara eşitlemelisin,
LM35 in kullandığı değişkenler ve tipleri;

C++:
// LM35 Sıcaklık Sensörü
const int lm35 = A3;

float voltaj_deger = 0;
int sicaklik = 0;
int gelen_veri = 0;
/////////////////////////
 
LM35 çıkış olarak ne veriyor o önemli.
lm35.PNG
 
Dereceyi 46 ya kadar çıkarttığımda seri monitörde olan bu;

lm35_45 derece.PNG
 
Döngüden hemen önce gelen_veri yi sıfıra eşitlemen lazım. Sen sadece program başlarken bir kere sıfırlıyorsun. Böyle olunca gelen_veri de taşma kaçınılmaz.

Bunun dışında başka bir taşma sorunu daha var. gelen_veri şu anda 16 bitlik bir integer. Şu anda okunan değerlerle taşma meydana gelmiyor, ama mevcut değerlerin üç katı veya daha fazla değerler okunursa gene taşma meydana gelecek. En iyisi gelen_veri yi long (32 bit) yapmak.
 
Döngüden hemen önce gelen_veri yi sıfıra eşitlemen lazım. Sen sadece program başlarken bir kere sıfırlıyorsun. Böyle olunca gelen_veri de taşma kaçınılmaz.

Bunun dışında başka bir taşma sorunu daha var. gelen_veri şu anda 16 bitlik bir integer. Şu anda okunan değerlerle taşma meydana gelmiyor, ama mevcut değerlerin üç katı veya daha fazla değerler okunursa gene taşma meydana gelecek. En iyisi gelen_veri yi long (32 bit) yapmak.
Aynen dediğin gibi yaptım, düzeldi abi.

C++:
const int lm35 = A3;

float voltaj_deger = 0;
int sicaklik = 0;
long gelen_veri = 0;

 gelen_veri = 0;
  for (int i = 0; i < 350; i++) // daha kararlı ortalama bir sonuç almak için 300 kez okuma yapma
  {
    gelen_veri = gelen_veri + analogRead(lm35);
    //delay(1);
  }

  gelen_veri = gelen_veri / 350;
  voltaj_deger = (gelen_veri / 1023.0) * 5000;
  sicaklik = voltaj_deger / 10.0;
  Serial.print("Analog Okuma: ");
  Serial.println(analogRead(lm35));
  Serial.print("gelen_veri: ");
  Serial.println(gelen_veri);
    Serial.print("sicaklik: ");
  Serial.println(sicaklik);

lm35_50 derece.PNG
 
@Gokrtl Kodunu biraz daha okunaklı olacak şekilde değiştirdim:

C++:
#define PIN_LM35 A3

float pinOku(int pin, int okumaSayisi) {
    long deger = 0;
    for (int i = 0; i < okumaSayisi; ++i) {
        deger += analogRead(pin);
    }
    return deger / float(okumaSayisi);
}

void loop() {
    float gelen_veri = pinOku(PIN_LM35, 350);
    float voltaj_deger = (gelen_veri / 1023.0) * 5000;
    int sicaklik = voltaj_deger / 10.0;
    Serial.print("Analog Okuma: ");
    Serial.println(analogRead(lm35));
    Serial.print("gelen_veri: ");
    Serial.println(gelen_veri);
    Serial.print("sicaklik: ");
    Serial.println(sicaklik);
}

1023'e bölmüşsün ama orada 1024'e bölmelisin. O kısmı düzeltmedim.
 
@Gokrtl Kodunu biraz daha okunaklı olacak şekilde değiştirdim:

C++:
#define PIN_LM35 A3

float pinOku(int pin, int okumaSayisi) {
    long deger = 0;
    for (int i = 0; i < okumaSayisi; ++i) {
        deger += analogRead(pin);
    }
    return deger / float(okumaSayisi);
}

void loop() {
    float gelen_veri = pinOku(PIN_LM35, 350);
    float voltaj_deger = (gelen_veri / 1023.0) * 5000;
    int sicaklik = voltaj_deger / 10.0;
    Serial.print("Analog Okuma: ");
    Serial.println(analogRead(lm35));
    Serial.print("gelen_veri: ");
    Serial.println(gelen_veri);
    Serial.print("sicaklik: ");
    Serial.println(sicaklik);
}

1023'e bölmüşsün ama orada 1024'e bölmelisin. O kısmı düzeltmedim.
float ondalıklı sayı çıkartıyor, o yüzden tercih etmiyorum.
0-1023 toplam 1024 oluyor diye öyle yaptım. Matematik zayıf :)
 
Orada yapılan işlem, çok sayıda ölçümün ortalamasını almak ve böylece bir çeşit filtreleme yapmak. Ama senin yaptığın gibi tek işleme indirgersen o zaman bu filtreleme işlemi yapılmamış oluyor.
Aşağıdaki şekilde anlatmak istediğim daha anlaşılır olur;

C++:
gelen_veri = 0;
  for (int i = 0; i < 350; i++) // daha kararlı ortalama bir sonuç almak için 300 kez okuma yapma
  {
    gelen_veri = gelen_veri + analogRead(lm35);
  }

sicaklik = gelen_veri / 716,1 ;
 
@Gokrtl Projen odev olarak ogretmene verilmeye layik bulundu. Kodlari tam olarak yazmayi unutma ama. :katil2: :katil1:
 
Bu projemi ısı olayını çözemediğim için bitirememiştim. Rezistans teli ile olmamıştı.
Uzun zaman önce Aliexpress de favorime eklediğim ısıtıcı padi sonunda sipariş ettim.
Gelince tabak altına yapıştırıp ısı işinide halletmiş olacağım. Sonra detaylı resimleri ile birlikte ya 1.mesaja yerleştiririm yada yeni bir konu açarım.

Ekran görüntüsü 2024-01-08 175500.png


@Gokrtl Projen odev olarak ogretmene verilmeye layik bulundu. Kodlari tam olarak yazmayi unutma ama. :katil2: :katil1:

Kodları inşallah kaybetmemişimdir. Bir ara veri kaybım oldu. O arada gitmediyse paylaşırım. Yoksa zaten yeniden yazmamız gerekebilir.
Cihaz canavar gibi çalışıyor. Daha biraz önce beher içinde coppersulfat erittim. Deneylere devam... :D
 
Bu projemi ısı olayını çözemediğim için bitirememiştim. Rezistans teli ile olmamıştı.
Uzun zaman önce Aliexpress de favorime eklediğim ısıtıcı padi sonunda sipariş ettim.
Gelince tabak altına yapıştırıp ısı işinide halletmiş olacağım. Sonra detaylı resimleri ile birlikte ya 1.mesaja yerleştiririm yada yeni bir konu açarım.

28676 eklentisine bak



Kodları inşallah kaybetmemişimdir. Bir ara veri kaybım oldu. O arada gitmediyse paylaşırım. Yoksa zaten yeniden yazmamız gerekebilir.
Cihaz canavar gibi çalışıyor. Daha biraz önce beher içinde coppersulfat erittim. Deneylere devam... :D
Benim mesaj bu haliyle anlamsiz kalmis. Onu attigim gun, yeni kaydolan bir uye acik acik boyle yazmisti. Adam "kodlari da tam olarak eklerseniz ben bunu proje olarak okula vereyim" demisti. Yuh yani. :oops: Utanip silmis sanirim sonra. Keske SS alsaymisim.
 
Benim mesaj bu haliyle anlamsiz kalmis. Onu attigim gun, yeni kaydolan bir uye acik acik boyle yazmisti. Adam "kodlari da tam olarak eklerseniz ben bunu proje olarak okula vereyim" demisti. Yuh yani. :oops: Utanip silmis sanirim sonra. Keske SS alsaymisim.
O da bir şey mi? Bir tanesi yaptığım kumbarayı direk istedi. "Ver kullanayım sonra geri gönderirim" dedi direk. :katil2:
Utanip silmis sanirim sonra. Keske SS alsaymisim.
Ben hala görebiliyorum sildiği mesajı. :D
 
12v 15w ısıtıcı geldi ama içinden yapıştıracak bir şey çıkmadı. Bunun için sağlam tutacak bant almam lazım.

Şurada "yanmaz" diye başlık atılmış bir bant var. Acaba iş görür mü?

20240127_220845.jpg
 
12v 15w ısıtıcı geldi ama içinden yapıştıracak bir şey çıkmadı. Bunun için sağlam tutacak bant almam lazım.

Şurada "yanmaz" diye başlık atılmış bir bant var. Acaba iş görür mü?

29639 eklentisine bak
Kırmızı conta silikonu iş görür herhalde
 
Yok. Bant tarzı bir şey lazım.
 
Silikon pad için 50mm kapton bant aldım. Çok pahalı lanet şey. :kizgin2:
Padi yerine yapıştırdım. İnşallah sıcaktan bir şey olmaz. 240 dereceye kadar dayanıklı yazıyordu. Şimdi tabağı yerine takıp üzerine birde lm35 yerleştireceğim.

20240202_230225.jpg
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,787
Mesajlar
98,997
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top