Proje Kapsamnı Anlamak

Bir PIC mikrokontrollü ve SD kartla bir veri logger inşa etmek, düşük maliyetli mikro kontrol cihazlarının ve yaygın olarak kullanılabilir SD kartların birleşimi, bir PC izleme veya bulut bağlantısı olmadan binlerce veri noktası elde edebilir.Bu makale, tüm tasarım, ekipman izleme ve devre dışı bırakma, bilgisayar işleme ve hatta eğitim bilimi deneyleri ile başlar.

Doğru PIC Microkontrolü seçin

PIC mikrokontroller, çeşitli hafıza, pin sayı ve periferik yetenekleri ile geniş bir yelpazede mevcuttur. SD kart verileri logger için, temel özellikler Donanım SPI desteği, kodu için yeterli program hafıza (flash) ve karta yazmadan önce buffer verilere göre yeterli RAM. PIC16F877A popüler bir seçim kalır, çünkü 8K RAM'ın 8K kelimelerini RAM'a sunar ve 818F46K22 veya PIC24FJ serisine izin verir.

Anahtar Özellikler Checklist

  • [FONT:0)SPI modülü[[DÜT:1): Donanım SPI, işlemci yükünü azaltır ve kodlarını basitleştirir.
  • [FONT=0]Flash bellek[[[Dönetici: En az 4 KB temel bir logger için; 16-32 KB, FAT dosya sistemini ve RTC'yi eklerken tavsiye etti.
  • [FONT:0)RAM[[DÜDÜT:1): En az 256, tamponlama için atlar; tercihen 1-2 KB, gecikmeler sırasında veri kaybından kaçınmak için.
  • [FONT=0) Operasyon gerilimi[[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜSÜSÜDÜDÜDÜSÜSÜŞÜNÜDÜŞÜNÜŞÜN SİAD: 3, 3,3V veya 5V toleransı gerektirir, bu yüzden I/O gerilim uyumluluğu veya seviye değiştiricileri sağlayın.
  • [FONT=0)Timer modüller): En azından sabit örnekleme için bir zamanlayıcı.

SD Card Interface'i Anlayın

SD:10 Kütüphaneler SPI modunda iletişim kurar, bu da PIC mikrokontroller tarafından desteklenir.The UI[DÜye Olmayanlar İçin Tıklayınız)[Dönemli saatler için geçerli değildir.[Döneticiler için geçerli değildir.)

SPI Build Tips

SPI saat hızını ilk işlem aşamasında maksimum 400 kHz'ye ayarlayın (SOS kart tarafından gerekli olan) Net kart spekizasyonuna hazırsınız.Seks'in SPI modülünü kullanarak 0 (CPOL=0, CPHA=0) veya mod 3 (CPOL=1, CPHA=1) - genellikle en fazla kartla çalışır.

Devre Tasarımı ve Güç Tahminleri

SD kart 3.3V'de çalışır, birçok PIC mikrokontrollü (örneğin 16F877A) 5V'de çalışır ve 5V SD karta doğrudan erişim sağlar.SeksI hatlarının değiştirilmesi için, basit bir direnç bölmesi (2.2 khong / 3.3 kULL) ilerleyici hızlar için 10 μF elektrotoksisiteli hızlar (Spektif) için otomatik olarak 5V2 hızlar için özelleştirilmiş hızlar için.

Uzak Logging için güç yönetimi

Eğer logger pillerde çalışacaksa, tilki uyku modları ile bir PIC değişkeni kullanın. Örneğin, 60 nA'nın uyku akımına sahip 60 nA. → → bir saat boyunca veri → → → → aktif giriş sırasında, SD kart şarj etmeye devam edin (örneğin, tedarikini kesmek için bir MOSF1829 kullanın)

Doğru Zamanlar için Gerçek Zaman Saati (RTC) ekin

Zaman bilgisi olmadan bir veri logger sınırlı değere sahiptir. DS3231 veya DS1307 gibi bir RTC çipi entegre etmek, bu I2C aracılığıyla iletişim kurmak veya protokolle karşı karşıya kalabilirsiniz. DS3231, her seferinde ±2 ppm. Wire the SDA and SCL pins to the PIC tick-FUD modülüne kadar sadece 3,4C'ye kadar değer katıyor:

Firmaware Architecture Genel Bakış

Veriler için bilgisayar henüz modüler bir yaklaşım takip eder. kodu bu işlevsel bloklara ayır:

  • [FONT=0)Initialization[Dönetici: Configure oscillator, GPIO, SPI, I2C ( RTC için), ADC (eğer analog sensörler kullanarak), ve zamanlayıcılar.
  • [FONT:0]SD kart sürücüsü: Düşük seviyeli SPI okudum / yazmak, komut göndermek ve CRC check (en modern kartlar CRC'yi basitleştirmek için devre dışı kabul eder).
  • [FONT:0]File sistemi katmanı[[[Dönem: Instri Petit FatFs (veya benzer küçük bir kütüphane) oluşturmak, açık, yazmak ve yakın günlük dosyaları oluşturmak için.
  • [FONT:0]Sensor anketing[[DÜT:1): Zamanlayıcı kesintiler veya gecikme döngüsü kullanarak tanımlı aralıklarla sensörler okuyun.
  • [FONT=0]Logging motoru[[Dönetici: Buffer sensör verileri ve zamanlayıcılar, sonra 512-bay bloklarında SD karta döküldü.
  • [FONT:0)Error işleme[[Dönetici: SD kart kaldırma / tez, düşük gerilim veya sensör hataları okuyun.

Buffer Management Strateji

SD karta bir kayıt yazmak verimsizdir ve kartta giyebilir. Bunun yerine, birden fazla giriş giriş girişini sağlamak için RAM'ta bir dairesel bir tampon yaz. Örneğin, her giriş 20'de (timest + 3 yüz değerleri) bir monitör-bayt tamponu 25 giriş tutar.Buffer dolu olduğunda, bir karta tüm bloku bir gozde yazın.

Örnek Kod Yapısı (Pseudocode)

Aşağıdaki pnömatik kod ana döngüyü özetliyor. Actual uygulaması, PIC ve kütüphanelerinize göre farklı olacaktır.

1. Initialize oscillator to 20 MHz
2. SPI_init(SPI_MASTER, MODE_0, 400kHz)
3. RTC_init(I2C_100kHz)
4. while (SD_init() != OK)
 {
 blink_error_led();
 delay(1000);
 }
5. f_mount(&fs, "", 0); // mount file system
6. f_open(&fil, "LOG.csv", FA_OPEN_APPEND | FA_WRITE);
7. if (file_size == 0) write_header();
8. while(1)
 {
 wait_timer_1s();
 read_RTC(&ts);
 read_sensors(&temp, &humid);
 format_string(datalog, "%s,%.1f,%.1f\r\n", ts, temp, humid);
 if (buffer_full)
 {
 f_write(&fil, log_buffer, BYTES_WRITTEN, &bw);
 if (bw != BYTES_WRITTEN) error_handler();
 }
 }
9. f_close(&fil);
10. f_mount(NULL, "", 0);

File System ve Log Format

Kayıt için kayıt işlemine giriş yapın.###0.com.tr|tr|tr|s.com.tr|s.com.tr|s.com.tr|s.com.tr|s.com.tr|s.com.tr|s.com.tr|s.com

SD Card Wear ve Data Integrity ile anlaşma

SD kartlar sınırlı yaz döngülerine sahiptir, ancak bir veri loggersı bir kez dakika içinde yazılır, tipik bir Sınıf 10 kartı son yıllarda beklenmedik bir şekilde azalırsa, 512'ye kadar SD kart (örneğin, İsviçrebit veya Apacer) her 10-20 yazardan sonra kartınızı azaltırsınız.

Sensör Interface Örnekleri

DS18B20 ile Sıcaklık

DS18B20 dijital sensör 1Wire zamanlama dizilerini kullanır: sıfır, algılama, ROM, dönüşüm, okumapad. dönüşüm süresi 12bit çözünürlükte 750 m'ye kadardır.Manisax X. Uygulamada güç verir (daha sonra 3Wire zamanlama dizisini kullanın) veya dış 3Dizi kullanın.For log, varlık algılama, ROM, dönüşüm, okuma, okuma, DVD'yi bekleyin.

Nem with soft22

2.022 (AM2302) hem sıcaklık hem de nem tek bir kablo arayüzü ile sağlar. 1Wire'a benzer, ancak farklı zamanlama ile. Mikrokontroller bir başlangıç sinyali gönderir (en azından 18 ms için düşük), sonra sensör 40 bit veri paketi ile yanıt verir.Bir devlet makinesinin üzerinde çalışır; 16 MHz veya üstü hızlı bir şekilde çalıştırılır.

Analog Işık Sensör

Ortam ışığı ölçmek için, belirli bir 10 kULL direnç ile sabit bir gerilim bölmesinde bir fotoresist veya (LDR) kullanın.Bir ADC girişine orta noktaya girin. PIC'nin 10bit ADC (1024 seviyeleri) makul bir miktarlık sağlar.Kabrate standart bir ışık sayacı kullanarak.

Test ve Sorun Gider

Bir önceki yazı, her alt sistemi bağımsız olarak test edin. SPI sinyalleri kontrol etmek için basit bir test programı yazın - ortak konular yanlış saat kutupluluğu, çekleri veya zamanlayıcı doğruluğu. Sonraki, SPI iletişimini SD kartıyla ilk olarak kartı ve CID kaydı okuyun. kartı kontrol etmek için bir bilgisayara koyup, şifreleri kontrol etmek için bir dosyayı açın.

Ortak Pitfalls

  • [FONT:0]SD kartı başlangıçtan başlamaz[[Dönetici: VCC'nin 3.3V değil, 5V. Bazı modüller 3.3V düzenleyicisi ile gelir; doğrulama çıktı. Farklı bir kart deneyin (SanDisk veya Kingston genellikle en iyi çalışır).
  • [FONT:0]File yazma başarısızlığı[[Dönetici: Kart üzerinde bir bölüm (FAT32) mı? FAT32 (eskiT veya NTFS) olarak kartı formatlamak için bir PC kullanın.
  • [FONT:0)Data corruption[[DÜT 1: 1): Uzun teller sinyal yansımalarına neden olabilir. 10 cm altında SPI hatları tut. Kart soketine yakın her çizgide zemine 47 pF kapasitör ekleyin.
  • [FONT:0)Timer sürüklenir[Dönetici: 0:1). Kristal doğruluk önemlidir. İç osilatör yerine, kesin 1-ik aralıklar için dış 20 MHz kristal kullanın.Eğer iç kullanarak, OSCTUNE kaydı kullanarak kalibre edin.

Data Logger'i teşvik etmek

Temel logger işe başladığında, bu ekleri düşünün:

  • [FONT:0]Wireless yükleme[[[Dönetici:0)[[Dönemli Yüklemeler[[Dönetici:0): ESP8266 veya HC-05 Bluetooth modülünü gerçek zamanlı olarak bir akıllı telefon veya sunucuya iletmek için bir yedekleme. PIC, yeni verilere devam ederken eski verileri UART aracılığıyla yükleyemez.
  • [FONT=0] Kullanıcı arayüzü[[Dönetici: 16×2 karakter LCD (I2C veya paralel) ve son okuma veya manuel kurtarmayı ayarlamak için birkaç düğme kullanın.
  • [FONT:0) Çok sayıda günlük dosyalar): Dosya boyutunu sınırlandırmak için her gün veya her 1000 kayıtta dosyaların tekrar tekrar tekrarlamasını sağlamak.
  • [FONT=0)Data sıkıştırma[[Dönetici: Yüksek frekanslı giriş için (örneğin, 100 Hz), ikili formatta paketlenmiş bir zaman notla depolama verileri (örneğin, 4bay başlangıçtan itibaren dengeleme).
  • [FONT:0)Over-the-air güncelleştirmeleri[[Dön 1: 1): Gelişmiş kullanıcılar, PIC'yi kaldırmadan bir bootloader'ı seri aracılığıyla güncelleyebilir.

Gerçek Dünya Uygulamaları

Basit PIC /SD kart verileri logger birçok pratik sistem için temeldir.ETHFLT:0Staj izleme) Sık sık sık sık frekans ve veri analizi öğretmek için kullanır.InİLFLT:2.DÜyesel bilim, portatif loggerlar uzaktan alanlarda dağıtılır.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

PIC mikrokontrollü ve bir SD kartla basit bir veri logger inşa etmek, donanım tasarımı, gömülü programlama ve pratik veri yönetimi ile uyumludur.PI-constrained devices, SPI protokolünü dikkatlice kullanarak, hafif bir FAT dosyası sistemini uygulayın ve bir RTC ek olarak, geniş bir uygulama yelpazesi için güvenilir bir logger oluşturabilirsiniz. Burada gelişmiştir - dijital sensörlerle bağlantı kurmak, dosya I/O'yu kaynak-konstrained cihazlarla ilişkilendirir ve güç tüketimi optimize edin - doğrudan transfer edilebilir bir şekilde transfer edilebilir.