Data-logging Menggunakan Arduino: Sebuah Pendahuluan

Artikel Asli

Saya benar-benar belajar tentang Arduino ketika saya mencari pilihan yang mudah untuk mengukur sinyal analog dan akhirnya membeli kit starter yang kompatibel dengan Arduino dan kloning perisai data Adafruit yang murah. Ada tutorial yang sangat mudah diikuti dari Adafruit yang memberi gambaran bagus tentang kemungkinannya.

Singkatnya, sangat mudah mengukur sinyal analog dengan Arduino dan menyimpannya ke kartu SD. Karena Arduino Uno (dan sebagian besar versi lain seperti Nano dan Mega) berjalan di 5V dan tidak termasuk slot SD, Anda memerlukan semacam perisai yang menggeser sinyal ke 3.3V untuk kartu SD (baik perisai datalogging atau satu dari perisai layar LCD dengan slot kartu SD yang terpasang pada LCD). Dalam perangkat lunak Arduino, ada sketsa datalogger sebagai contoh untuk perpustakaan kartu SD yang memungkinkan logging hingga ~ 1 kHz (dalam artikel ini ditulis dalam bahasa Jerman, ada beberapa grafis bagus dengan input generator sinyal). Bergantung pada kebutuhan Anda, Anda mungkin juga ingin mentransfer data secara langsung ke komputer melalui koneksi serial atau nirkabel – lihat di sini atau di sini untuk contohnya. Biasanya saya mengeluarkan data log ke kartu SD.

Menghubungkan kartu SD ke Arduino

Sebuah komunikasi antara Arduino dan kartu SD biasanya terjadi melalui SPI – tidak semua kartu SD akan bekerja, jadi jika Anda mengalami masalah, coba ganti kartu. Bergantung pada Arduino yang Anda gunakan, output SPI diarahkan ke pin yang berbeda – perisai datalogging saya hanya bekerja dengan UNO saya, karena AKHIR saya harus memasang kabel antara pin SPI dan port yang sesuai pada perisai TFT. Lihat diagram pinout di sini untuk DUE. The Adafruit M0 datalogger dan the Teensy 3.5 / 3.6 memiliki output SPI yang langsung dihubungkan ke slot kartu SD.

Pilihan untuk datalogging yang lambat dan akurat

Solusi berbasis Arduino Uno yang ditunjukkan di atas memiliki beberapa keuntungan dan keterbatasan. Sainsmart Uno yang kompatibel dengan Arduno memiliki pilihan untuk berjalan pada 3.3 V tapi jika Arduino Anda tidak melakukannya, Anda memerlukan sesuatu untuk menggeser voltase kartu SD ke 3.3V. Kemudian lagi, banyak sensor membutuhkan 5V, sehingga menempel pada UNO (atau Nano jika Anda peduli dengan ruang) adalah pilihan bebas hazzle. Jika sensor Anda mendukung suplai 3.3V, ada pilihan lain: Pro Arduino yang berjalan pada 3.3V atau terutama jika Anda menginginkan produk kecil dan kuat tanpa banyak solder, datalogger Adafruit Feather M0 ini memiliki konsumsi daya yang cukup rendah dan dapat dengan mudah didukung oleh sebuah paket baterai (saya baru saja membeli datalogger M0 dan sesuai dengan yang diinginkan).

Semua opsi ini terbatas pada frekuensi penebangan sekitar 1 kHz (lihat bagian logging berkecepatan tinggi di bawah untuk rinciannya). Kombinasi perisai Arduino Uno + datalogging saya berjalan di 6 baterai AA atau powerbank kecil selama ~ 24 jam tanpa menggunakan mode daya rendah arduino – dengan desain yang cerdas dan fungsi tidur, waktu yang jauh lebih lama dapat dicapai (lihat juga  Adafruit tutorial ini – ini juga harus bekerja dengan datalogger M0 yang terhubung di atas).

Masalah lain mungkin adalah keakuratan analog analog digital digital Arduino (ADC). Sensor suhu saya memiliki kisaran suhu 0,01 V per derajat C, jadi resolusi pengukurannya adalah pada resolusi 500 ° C / 1024 = ~ 0,5 ° C. Karena pengukuran saya tidak seharusnya mengungguli 110 ° celsius, saya dapat mengatur kisaran ke 0 .. 1.1 V dengan fungsi AnalogReference, mendapatkan resolusi teoritis ~ 0,1 ° C. Pada titik ini, suara dari sensor atau arduino saya itu sendiri melampaui sinyal sebenarnya yang menyebabkan pembacaan yang bising.

Orang mungkin dengan mudah mengangkat bahu pada titik ini dan defaultnya “ADC Arduino selalu menyebalkan”. Tapi ada pilihan untuk perbaikan: Karena suara sinyal mengarah ke distribusi acak dan kami juga tidak tertarik pada pembacaan cepat, kami juga dapat mengambil banyak bacaan dari sensor, rata-rata mengarahkannya langsung ke Arduino dan hanya menyimpan nilai rata-rata . Dalam pengujian saya, ini dengan mudah memungkinkan akurasi yang jauh lebih baik dalam kisaran akurasi relatif 0,01 ° C (kesalahan absolut mungkin jauh lebih besar kecuali jika saya menemukan cara untuk mengkalibrasi sensor saya, namun selama saya hanya memperhatikan kenaikan suhu, ini harus baik):

Pilihan untuk datalogging frekuensi tinggi

Misalkan Anda ingin menyetel frekuensi datalogging untuk pengukuran getaran (blog ini adalah tentang dinamika multibody). Dalam kasus ini, semua opsi yang dibahas di atas memiliki beberapa keterbatasan serius:

Dengan beberapa modifikasi mudah, sketsa datalogging standar dari perpustakaan SD dan adafruit dapat disesuaikan dengan kecepatan data ~ 1-2 kHz:

  • Jika Anda memerlukan timestamp dari jam realtime, hanya ambil sekali saat penyiapan. Setelah itu, hanya output millis () nilai.
  • hindari mengumpulkan data dalam variabel string – alih-alih langsung melewatkan variabel integer ke fungsi dataFile.print
  • Buka file output dalam fungsi pengaturan dan gunakan fungsi flush () setiap ~ 500 siklus (sesuai dengan kebutuhan Anda) untuk menulis data.

Jika Anda ingin meningkatkan datarates, pilihan yang mudah adalah beralih ke model 3.x model remaja yang lebih baru atau Arduino Due. Versi 3,5 dan 3.6 yang sederhana hadir langsung dengan slot sd di papan tulis dan model 3.5 saya berkinerja baik dengan tingkat pembalakan di atas 10 kHz. Karena memori onboard yang besar, Anda mungkin juga membaca banyak data dengan kecepatan sangat tinggi ke dalam memori (100 MHz harus dimungkinkan dengan fungsi standar AnalogRead namun tergantung pada setting dan perpustakaan, Anda mungkin akan meningkatkannya ke nilai yang lebih tinggi) dan lalu simpan di SD sesudahnya. Arduino Due saya sudah terhubung ke layar TFT dengan slot SD dan memiliki mode osiloskop yang sedang berjalan, tapi saya belum sempat menambahkan mode datalogging ke dalamnya (ini ada pada daftar tugas saya – saya ingin memiliki itu langsung accesible dari menu touchscreen).

Ringkasan

Papan Arduino dan compatibles memungkinkan Anda membangun perangkat datalogging yang relatif murah dan kuat dengan konsumsi daya rendah. Bergantung pada kebutuhan Anda, perangkat yang berbeda mungkin bisa membantu, terutama datalogger bulu Buah Anyfruit untuk pengaturan berdaya rendah dengan ruang instalasi kecil dan papan 3.6 / 3.6 yang sangat kecil untuk logging dengan frekuensi tinggi.

Saya telah menggabungkan sebagian besar kode yang saya gunakan untuk datalogging menjadi satu sketsa Arduino – yang agak berantakan, namun bisa dijadikan rujukan. Anda bisa menemukannya di sini.

Leave a Reply

Your email address will not be published. Required fields are marked *