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
 
1023'e bölmüşsün ama orada 1024'e bölmelisin. O kısmı düzeltmedim.
ADC okurken Vref(Vcc) gerilimi 10-bitte
1023 değeri veriyor. Hesap yapılırken
bunu gözönüne bulundurmak lazım.
Aynı şekilde 12-bit için 4095...
 
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 personel

Forum istatistikleri

Konular
6,956
Mesajlar
118,801
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top