EEPROM İLE DATALOGGER YAPMAK

Başlatan Yunus Emre, 07 Ocak 2023, 15:54:58

Yunus Emre

Merhaba, devremde kullanacağım Eeprom ile tarih ve sıcaklık bilgisi tutmam gerekiyor. Verileri eeproma kaydetmekte problem yaşamıyorum. Bunu ise belirli bir düzende datalogger gibi yapmak istiyorum. Veri kaydı en az 1500 adet olacak. Bu konuda önerilerinizi rica ediyorum.

ete

Harici bir eprom kullanman gerekecek ama verileri hangi formatta kaydedeceksin?
Format derken Epromdan ne kadar yer tutacaklarını soruyorum.
Tarih bilgisi Saat+dak şeklinde kayıt edilir ve 2 byte yer tutar.
Sıcaklık bilgisi tek byte da olabilir 2 byte da. Sıcaklıkta Ondalık değer kullanıyorsan oda 2 byte olarak kayıt edilmesi gerekir. Bu durumda sana gereken yer 1500x4=6000 byte ederki buda yaklaşık 6K lık eprom hafızası demektir ki bu durumda standart 8 K lık bir eprom kullanman gerekecektir.

24LC08B bu iş için uygun gözüküyor. I2C eprom dur.

Ete

Yunus Emre

#2
ETE Hocam tarih ve saat bilgisini seri haberleşme üzerinden belirli bir formatta alıyorum. Gelen veriyi bir dizi içerisine kayıt edip daha sonra o dizi içerinden işime yaracak dataları alıyorum. Fakat bu verileri eproma kayıt edebilsem de okumakta sıkıntı yaşıyorum. Eprom 1 byte veri aldığından benim 2210011210 şeklinde düzenlediğim tarih ve saat bilgisini düzgün kayıt edemiyorum. Bundan dolayı bende 22 10 01 12 10 şeklinde 5 data olarak gönderiyorum. Eproma göndereceğim data düzenlediğim kısımda oluşturduğum diziler sadece kendi datalarını değil diğer dataları gösteriyor. Umarım durumu anlatabilmişimdir.
  
    //Seri haberleşme üzerinden gelen tarih ve saat bilgisi içerinden kullanacağımda dataları seçtiğim kısım.
    // Bu kısmı ekrana yazdırmak için kullanıyorum.
  Y1=TARIH[0];
  Y2=TARIH[1];
  Y3=TARIH[2];
  A1=TARIH[3];
  A2=TARIH[4];
  A3=TARIH[5];
  G1=TARIH[6];
  G2=TARIH[7];
  S1=TARIH[9];
  S2=TARIH[10];
  S3=TARIH[11];
  D1=TARIH[12];
  D2=TARIH[13];
  
    //Eproma yazdırmak için oluşturduğum diziler
    // Bu kısımda Hangi diziyi yazdırmak istersem kendisinde sonraki dizileride yazdırıyor.TH1 verisini 
    // yazdırdığım zaman TH2,TH3,TH4,TH5 deki verileride yazıyor. TH3 yazdırdığım zaman TH4,TH5 deki 
    //verileride yazıyor.
  TH1[1]=G2;
  TH1[0]=G1;  
  TH2[1]=A2;
  TH2[0]=A1;  
  TH3[1]=Y2;
  TH3[0]=Y1;
  TH4[1]=S2;
  TH4[0]=S1; 
  TH5[1]=D2;
  TH5[0]=D1;
  printf(lcd_putc,"\f%s",TH1);

ete

Sorunun ne olduğunu anlamadım.
Bildiğim kadarı ile bütün bilgilerin tamamını diziye aktaramazsın. Bu durumda kullanabileceğin kadarını alıp değerlendirmen gerekir.
Tarih isimli dizi zaten elinde mevcut ise neden onları başka değişkenlere aktarıp ordan farklı bir diziye geçiriyorsunki.
Üstelik neden 13 adet bilgi var. Resmin tamamına bakmayınca böyle abuk subuk sorular ortaya çıkıyor.
Tarih bilgisi 2210011210 şeklinde geliyor ise kayıt mantığın doğru. Ama bu bilgi hangi tarihe denk geliyor yada neyin karşılığı onuda bilirsek belki farklı bir yol düşünebiliriz.

Ete

Yunus Emre

#4
Haklısınız eksik verdiğim bilgileri tamamlayayım. Seri haberleşme üzerinden " 22/01/04,01:12:58-00 " formatında TARIH dizi içerisine alıyorum. Daha sonra "22/01/04 01:12" şeklinde toplamda 13 adet bilgiyi alıp ekrana yazdırarak kullanıyorum. Eproma bu kadar uzun bilgi yazdırma zor olacağı için "22 01 04 01 12" TH1,TH2,TH3,TH4,TH5 dizilerine aktarıp bunları eproma yazdırmaya çalışıyorum.
1. Problemim yukarıda da belirttiğim gibi TH1 dizisini eproma veya ekrana yazdırmaya çalışacağım zaman, TH1,TH2,TH3,TH4,TH5 Dizilerinide yazdırıyor. Bunun önüne geçemedim.
2. Problemim Eproma verileri doğru formatta kaydedemediğim için yanlış değerler alıyorum. 
Çözüm olacağını düşündüğüm bir yöntem de Verileri teke tek kaydetmek. Örneğin yıl datası 22 olsun. Bunu 2 ve 2 şeklinde kayıt etmek doğru olur mu ? Kullandığım eprom boyutu 512K Boyut olarak çok problem yaşayacağımı sanmıyorum.

ete

Şimdi de ortada kod olmayınca neden bir diziyi yazdırında diğerinide yazdırıyor anlamam mümkün değil maalesef.
Kod doğru yazılmış ise istenileni yapar. O zaman ters mantık yürütürsek istenilen kod yazılamamış diye düşünürüm.

Ete

Yunus Emre

Hocam yukarıda ki kod bloğu bu hali ile çalıştırdığımda dediğim hatayı alıyorum.

Powered by EzPortal