Daftar Isi:
- Langkah 1:
- Langkah 2: Beli Bagian Di Bawah Ini:
- Langkah 3: Pengkabelan
- Langkah 4: Siapkan Sirkuit PH, DO, Kartu SD
- Langkah 5: Siapkan Perangkat Lunak
- Langkah 6: Mulai Pengodean
- Langkah 7: Hasil pada Pengkabelan (dapat Ditingkatkan) dan Layar LCD
- Langkah 8: Impor Data dan Buat Grafik
- Langkah 9: Kalibrasi
- Langkah 10: Terlalu Banyak Pengkabelan?
- Langkah 11: Pengakuan:
Video: Cara Membuat Data Logger untuk Suhu, PH, dan Oksigen Terlarut: 11 Langkah (Berikut Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Tujuan:
- Buat pencatat data seharga $500. Ini menyimpan data untuk suhu, pH, dan DO dengan cap waktu dan menggunakan komunikasi I2C.
- Mengapa I2C (Inter-Integrated Circuit)? Seseorang dapat menumpuk sebanyak mungkin sensor di baris yang sama mengingat masing-masing sensor memiliki alamat yang unik.
Langkah 1:
Langkah 2: Beli Bagian Di Bawah Ini:
- Arduino MEGA 2560, $35,
- Adaptor daya untuk papan Arduino, $5,98,
- Modul LCD I2C (tampilan), $8,99,
- Penembusan Jam Waktu Nyata (RTC), $7,5,
- Papan pelarian kartu MicroSD, $7,5,
- Kartu SD 4 GB, $6,98,
- Sensor Digital DS18B20 tahan air, $9,95,
- Probe pH + Kits+ Buffer standar, $149,15,
- DO probe + Kits+ Buffer standar, $247,45,
- Papan tempat memotong roti, kabel jumper, $7,98,
- (Opsional) Isolator Tegangan, $24,
Total: $510,48
* Bagian tertentu (seperti papan generik) dapat dibeli dari vendor lain (eBay, penjual Cina) dengan harga lebih rendah. Probe pH dan DO direkomendasikan untuk mendapatkannya dari Atlas Scientific.
* Sebuah multimeter dianjurkan untuk memeriksa konduktivitas dan tegangan. Biayanya sekitar $10-15 (https://goo.gl/iAMDJo)
Langkah 3: Pengkabelan
- Gunakan kabel jumper/DuPont untuk menghubungkan bagian-bagian seperti yang ditunjukkan pada sketsa di bawah ini.
- Gunakan multimeter untuk memeriksa konduksi.
- Periksa Pasokan Tegangan Positif (VCC) dan Ground (GND) (mudah bingung jika Anda tidak terbiasa dengan sirkuit)
- Colokkan adaptor daya dan periksa indikator daya di setiap bagian. Jika ragu, gunakan multimeter untuk memeriksa tegangan antara VCC dan GND menjadi (5V)
Langkah 4: Siapkan Sirkuit PH, DO, Kartu SD
- Beralih ke I2C untuk sirkuit pH dan DO
- Jerawat pH dan DO dikirimkan dengan komunikasi Serial sebagai mode default Transmit/Receive (TX/RX). Untuk menggunakan mode I2C Clock line (SCL), dan Data line (SDA), alihkan mode dengan (1): cabut kabel VCC, TX, RX, (2): lompat TX ke Ground for Probe, PGND (bukan GND), (3) pasang VCC ke rangkaian, (4): tunggu sampai LED berubah dari Hijau menjadi Biru. Selengkapnya cek di halaman 39 (Datasheet untuk rangkaian pH,
- Lakukan langkah yang sama dengan sirkuit DO
- (jika Anda tahu cara mengunggah kode sampel ke papan, Anda dapat melakukannya melalui monitor Serial)
- Format kartu SD ke format FAT
Langkah 5: Siapkan Perangkat Lunak
- Unduh Lingkungan Pengembangan Terpadu Arduino (IDE),
- Instal perpustakaan ke Arduino IDE:
- Kebanyakan dari mereka datang dengan perangkat lunak Arduino. LiquidCrystal_I2C.h tersedia melalui GitHub
- Instal driver untuk USB. Untuk Arduino asli, Anda mungkin tidak perlu menginstalnya. Untuk yang generik, Anda perlu menginstal driver CH340 (GitHub:
- Periksa apakah Anda menghubungkan papan dengan benar dengan menjalankan tes LED berkedip
- Bagaimana menemukan alamat MAC dari suhu digital 18B20. Menggunakan template pemindai I2C di Arduino IDE dengan probe terpasang. Setiap perangkat memiliki alamat MAC yang unik, sehingga Anda dapat menggunakan probe suhu sebanyak mungkin dengan satu saluran bersama (#9). 18B20 menggunakan satu kabel I2C, jadi ini adalah kasus khusus dari metode komunikasi I2C. Di bawah ini adalah salah satu metode untuk menemukan MAC – Medical Access Control (“ROM” saat Anda menjalankan prosedur di bawah).
Langkah 6: Mulai Pengodean
- Copy paste kode di bawah ini ke Arduino IDE:
- Atau unduh kode (.ino) dan jendela baru akan muncul di Arduino IDE.
/*
Tutorial referensi:
1. Temperatur, ORP, pH logger:
2. Secured Digital (SD) Shield:
Kode ini akan menampilkan data ke monitor serial Arduino. Ketik perintah ke monitor serial Arduino untuk mengontrol Sirkuit pH EZO dalam mode I2C.
Dimodifikasi dari referensi tutorial di atas, sebagian besar dari kode I2C oleh Atlas-Scientific
Terakhir diperbarui: 26 Juli 2017 oleh Binh Nguyen
*/
#include //aktifkan I2C.
#define pH_address 99 //nomor ID I2C default untuk Sirkuit pH EZO.
#define DO_address 97 //nomor ID I2C default untuk Sirkuit EZO DO.
#include "RTClib.h" // Fungsi tanggal dan waktu menggunakan RTC DS1307 yang terhubung melalui I2C dan Wire lib
RTC_DS1307 rtc;
#include // Untuk perpustakaan SD
#include // kartu SD untuk menyimpan data
const int chipPilih = 53; // perlu mencari tahu tentang Adafruit SD breakout//https://learn.adafruit.com/adafruit-micro-sd-breakout-board-card-tutorial/wiring
//DO=MISO, DI=MOSI, pada ATmega pin#: 50(MISO), 51(MOSI), 52(SCK), 53(SS)
char logFileName = "dataLT.txt"; // ubah logFileName untuk mengidentifikasi eksperimen Anda, misalnya PBR_01_02, datalog1
id panjang = 1; //nomor id untuk memasukkan urutan log
#termasuk
LiquidCrystal_I2C lcd (0x27, 20, 4);
#termasuk
#termasuk
#define ONE_WIRE_BUS 9 //tentukan pin # untuk pemeriksaan suhu
OneWire oneWire(ONE_WIRE_BUS);
Sensor suhu Dallas(&oneWire);
DeviceAddress ProbeP = { 0x28, 0xC2, 0xE8, 0x37, 0x07, 0x00, 0x00, 0xBF }; //Alamat MAC, unik untuk setiap probe
String dataString; // varian utama untuk menyimpan semua data
String dataString2; // varian sementara untuk menyimpan Temperatur/pH/DO untuk dicetak
char data komputer[20]; //instruksi dari Atlas Scientific: kita membuat array karakter 20 byte untuk menampung data yang masuk dari pc/mac/other.
byte diterima_dari_komputer=0; //kita perlu tahu berapa banyak karakter yang telah diterima.
byte serial_event=0;//tanda untuk memberi sinyal saat data telah diterima dari pc/mac/other.
kode byte = 0; //digunakan untuk menyimpan kode respon I2C.
char pH_data[20]; //kita membuat array karakter 20 byte untuk menampung data yang masuk dari rangkaian pH.
byte in_char=0; //digunakan sebagai buffer 1 byte untuk menyimpan byte terikat dari Sirkuit pH.
byte i=0; // counter digunakan untuk array ph_data.
int waktu_=1800; //digunakan untuk mengubah penundaan yang diperlukan tergantung pada perintah yang dikirim ke Sirkuit pH Kelas EZO.
mengapung pH_mengambang; //float var digunakan untuk menyimpan nilai float dari pH.
char DO_data[20];
//mengambang suhu_C;
void setup() // inisialisasi perangkat keras.
{
Serial.begin(9600); // aktifkan port serial.
Kawat.begin(pH_address); // aktifkan port I2C untuk probe pH
Wire.begin(DO_address);
lcd.init();
lcd.begin(20, 4);
lcd.lampu latar();
lcd.rumah();
lcd.print("Halo PBR!");
lcd.setCursor(0, 1);
lcd.print("Inisialisasi…");
Serial.print("RTC adalah…");
jika (! rtc.begin())
{
Serial.println("RTC: Jam waktu nyata…TIDAK DITEMUKAN");
while (1);// (Serial.println("RTC: Jam waktu-nyata…DITEMUKAN"));
}
Serial.println("MENJALANKAN");
Serial.print("Jam Waktu Nyata…");
jika (! rtc.isrunning())
{rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));
}
Serial.println("BEKERJA");
lcd.setCursor(0, 0);
lcd.println("RTC: Oke");
Serial.print("Kartu SD…"); // lihat apakah kartu ada dan dapat diinisialisasi:
if (!SD.begin(chipSelect))
{ Serial.println("Gagal"); // jangan lakukan apa-apa lagi:
kembali;
}
Serial.println("Oke");
lcd.setCursor(0, 1);
lcd.println("Kartu SD: Oke");
Serial.print("Berkas Catatan: ");
Serial.print(logFileName);
Serial.print("…");
File logFile = SD.open(logFileName, FILE_WRITE); // buka filenya. "datalog" dan cetak header
jika (logFile)
{
logFile.println(",,, "); //menunjukkan ada data di run sebelumnya
String header = "Tanggal -Waktu, Temp(C), pH, DO";
logFile.println(tajuk);
logFile.close();
Serial.println("SIAP");
//Serial.println(dataString); // cetak ke port serial juga:
}
else { Serial.println("kesalahan membuka datalog"); } // jika file tidak terbuka, muncul kesalahan:
lcd.setCursor(0, 2);
lcd.print("Berkas log:");
lcd.println(logFileName);
penundaan (1000);
sensor.mulai();
sensor.setResolution(ProbeP, 10); ///10 adalah resolusi (10bit)
lcd.clear();
nomor = 0;
}
lingkaran kosong()
{ //loop utama.
dataString = String(id);
dataString = String(',');
DateTime sekarang = rtc.now();
dataString = String(sekarang.tahun(), DES);
dataString += String('/');
dataString += String(sekarang.bulan(), DES);
dataString += String('/');
dataString += String(sekarang.hari(), DES);
dataString += String(' ');
dataString += String(sekarang.jam(), DES);
dataString += String(':');
dataString += String(now.minute(), DEC);
dataString += String(':');
dataString += String(sekarang.detik(), DEC);
lcd.rumah();
lcd.print(dataString);
sensor.requestTemperatures();
tampilanSuhu (ProbeP);
Wire.beginTransmission(pH_address); // panggil sirkuit dengan nomor ID-nya
Wire.write('r'); //kode keras r untuk dibaca terus-menerus
Kawat.endTransmisi(); //mengakhiri transmisi data I2C.
waktu penundaan_); //menunggu jumlah waktu yang tepat agar rangkaian menyelesaikan instruksinya.
Wire.requestFrom(pH_address, 20, 1); //panggil sirkuit dan minta 20 byte (ini mungkin lebih dari yang kita butuhkan)
while(Wire.available()) //apakah ada byte yang akan diterima
{
in_char = Kawat.baca(); //menerima satu byte.
if ((in_char > 31) && (in_char <127)) //periksa apakah karakter tersebut dapat digunakan (dapat dicetak)
{
pH_data= in_char; // muat byte ini ke dalam array kita.
saya+=1;
}
if(in_char==0) //jika kita melihat bahwa kita telah dikirimi perintah null.
{
saya=0; //reset penghitung i ke 0.
Kawat.endTransmisi(); //mengakhiri transmisi data I2C.
merusak; //keluar dari perulangan while.
}
}
serial_event=0; //setel ulang bendera acara serial.
dataString2 += ", ";
dataString2 += String(pH_data);
Wire.beginTransmission(DO_address); // panggil sirkuit dengan nomor ID-nya
Wire.write('r');
Kawat.endTransmisi(); //mengakhiri transmisi data I2C
waktu penundaan_); //tunggu jumlah waktu yang tepat agar rangkaian menyelesaikan instruksinya
Wire.requestFrom(DO_address, 20, 1); //panggil sirkuit dan minta 20 byte
while(Wire.available()) //apakah ada byte yang akan diterima.
{
in_char = Kawat.baca(); //menerima satu byte.
if ((in_char > 31) && (in_char <127)) //periksa apakah char dapat digunakan (printable), jika tidak, in_char berisi simbol di awal file.txt
{ DO_data= in_char; // muat byte ini ke dalam array kita
saya+=1; //mendapatkan penghitung untuk elemen array
}
jika(dalam_char==0)
{ //jika kita melihat bahwa kita telah dikirimi perintah null
saya=0; //reset penghitung i ke 0.
Kawat.endTransmisi(); //mengakhiri transmisi data I2C.
merusak; //keluar dari perulangan while.
}
}
serial_event=0; //setel ulang bendera acara serial
pH_float = atof (pH_data);
dataString2 += ", ";
dataString2 += String(DO_data);
lcd.setCursor(0, 1);
lcd.print("Suhu/ pH/ DO");
lcd.setCursor(0, 2);
lcd.print(dataString2);
dataString += ', ';
dataString += dataString2;
File dataFile = SD.open(logFileName, FILE_WRITE); // buka filenya. perhatikan bahwa hanya satu file yang dapat dibuka pada satu waktu, jadi Anda harus menutup file ini sebelum membuka file lainnya.
if (dataFile) // jika file tersedia, tulis ke sana:
{
dataFile.println(dataString);
dataFile.close();
Serial.println(dataString); // cetak ke port serial juga:
}
else { Serial.println("kesalahan membuka file datalog"); } // jika file tidak terbuka, muncul kesalahan:
lcd.setCursor(0, 3);
lcd.print("Berjalan(x5m):");
lcd.setCursor(15, 3);
lcd.print(id);
identitas++; // tingkatkan satu ID iterasi berikutnya
dataString = "";
penundaan (300000); //tunda 5 menit = 5*60*1000 md
lcd.clear();
} //akhiri loop utama
void displayTemperature(DeviceAddress deviceAddress)
{
float tempC = sensor.getTempC(deviceAddress);
if (tempC == -127.00) lcd.print("Kesalahan Suhu");
lain dataString2 = String(tempC);
}//kode berakhir di sini
- Pilih port COM yang tepat melalui Arduino IDE di bawah Tools/Port
- Pilih papan Arduino yang tepat. Saya menggunakan Mega 2560 karena memiliki lebih banyak memori internal. Arduino Nano atau Uno berfungsi dengan baik dengan pengaturan ini.
- Periksa dan kode dan unggah kode
Langkah 7: Hasil pada Pengkabelan (dapat Ditingkatkan) dan Layar LCD
- Pemberitahuan: Saya menemukan noise dari probe DO ke probe pH setelah 2-3 bulan operasi terus menerus. Menurut Atlas Scientific, in-line voltage isolator direkomendasikan ketika pH, probe konduktivitas beroperasi bersama. Selengkapnya ada di halaman 9 (https://goo.gl/d62Rqv)
- Data yang dicatat (yang pertama memiliki karakter yang belum dicetak sebelum data pH dan DO). Saya memfilter ke kode dengan hanya mengizinkan karakter yang dapat dicetak.
Langkah 8: Impor Data dan Buat Grafik
- Impor data Dari Teks Di bawah tab DATA (Excel 2013)
- Pisahkan data dengan koma (itulah sebabnya koma setelah setiap input data sangat membantu)
- Plot datanya. Setiap data di bawah ini memiliki sekitar 1700 poin. Interval pengukuran adalah 5 menit (dapat disesuaikan). Minimum untuk sirkuit DO dan pH untuk membaca data adalah 1,8 detik.
Langkah 9: Kalibrasi
- Sensor suhu digital (18B20) dapat dikalibrasi dengan menyesuaikan perbedaan langsung ke. Sebaliknya, jika kompensasi dan kemiringan memerlukan kalibrasi, Anda dapat melakukannya dengan mengubah nilai pada baris #453, DallasTemperature.cpp di folder \libraries\DallasTemperature.
- Untuk probe pH dan DO, Anda dapat mengkalibrasi probe dengan larutan yang menyertainya. Anda harus menggunakan kode sampel oleh Atlas Scientific dan ikuti instruksi dari file ini.
- Ikuti halaman 26 dan 50 untuk pemeriksaan pH (https://goo.gl/d62Rqv) untuk kalibrasi dan kompensasi suhu, dan juga halaman, 7-8 dan 50 untuk pemeriksaan DO (https://goo.gl/mA32mp). Pertama, silakan unggah ulang kode generik yang disediakan oleh Atlas, buka Serial Monitor dan masukkan perintah yang tepat.
Langkah 10: Terlalu Banyak Pengkabelan?
- Anda dapat menghilangkan kartu SD dan modul jam waktu nyata dengan menggunakan Dragino Yun Shield untuk papan Arduino (https://goo.gl/J9PBTH). Kode perlu dimodifikasi untuk bekerja dengan Yun Shield. Inilah tempat yang baik untuk memulai (https://goo.gl/c1x8Dm)
- Masih terlalu banyak kabel: Atlas Scientific membuat panduan untuk sirkuit EZO mereka (https://goo.gl/dGyb12) dan papan solderless (https://goo.gl/uWF51n). Mengintegrasikan suhu digital 18B20 ada di sini (https://goo.gl/ATcnGd). Anda harus terbiasa dengan perintah di Raspbian (versi Debian Linux) yang berjalan di Raspberry Pi (https://goo.gl/549xvk)
Langkah 11: Pengakuan:
Ini adalah proyek sampingan saya selama penelitian pascadoktoral yang saya kerjakan pada fotobioreaktor tingkat lanjut untuk membudidayakan mikroalga. Jadi saya pikir perlu kredit para pihak telah memberikan syarat untuk mewujudkannya. Pertama, hibah, DE-EE0007093: “Pengayaan dan Pengiriman CO2 Atmosfer (ACED),” dari Departemen Energi AS, Kantor Efisiensi Energi dan Biofuel dan Bioproduk Alga Bertarget Energi Terbarukan. Saya berterima kasih kepada Dr. Bruce E. Rittmann di Pusat Biodesign Swette untuk Bioteknologi Lingkungan, Universitas Negeri Arizona karena telah memberi saya kesempatan untuk mengotak-atik elektronik dan Arduino. Saya dilatih di bidang teknik lingkungan, kebanyakan kimia, sedikit mikrobiologi.
Direkomendasikan:
KALIBRASI SENSOR OKSIGEN TERLARUT ARDUINO: 4 Langkah
KALIBRASI SENSOR OXYGEN TERLARUT ARDUINO: Dalam tutorial ini, kita akan mengkalibrasi sensor oksigen terlarut (D.O) EZO Atlas Scientific menggunakan Arduino Uno. TEORI KALIBRASI Bagian terpenting dari kalibrasi adalah mengamati pembacaan selama proses kalibrasi. Paling mudah untuk mengkalibrasi
Cara Menambahkan Oksigen Terlarut ke Pengukur Hidroponik WiFi: 6 Langkah
Cara Menambahkan Oksigen Terlarut ke WiFi Hidroponik Meter: Tutorial ini akan mendemonstrasikan cara menambahkan rangkaian EZO D.O dan probe ke Kit Hidroponik WiFi dari Atlas Scientific. Diasumsikan bahwa pengguna memiliki kit hidroponik wifi yang berfungsi dan sekarang siap untuk menambahkan oksigen terlarut. PERINGATAN: Atlas Sci
Cara Membuat Perekam Data Kelembaban dan Suhu Secara Real Time Dengan Arduino UNO dan SD-Card - Simulasi Data-logger DHT11 di Proteus: 5 Langkah
Cara Membuat Perekam Data Kelembaban dan Suhu Secara Real Time Dengan Arduino UNO dan SD-Card | Simulasi Data-logger DHT11 di Proteus: Pendahuluan: hai, ini Liono Maker, ini tautan YouTube. Kami membuat proyek kreatif dengan Arduino dan bekerja pada sistem tertanam. Data-Logger: Data logger (juga data-logger atau perekam data) adalah perangkat elektronik yang merekam data dari waktu ke waktu dengan
Cara Membuat Roda Mobil RC Dari Karton dan Kertas Kraft: 9 Langkah (Berikut Gambar)
Cara Membuat Velg Mobil RC Dari Karton dan Kertas Kraft : Velg RC merupakan bagian penting untuk semua mobil RC. Ada berbagai kategori dan jenis roda RC dan pemilihan roda yang tepat adalah salah satu faktor terpenting ketika berhadapan dengan mobil-mobil ini. Ketika saya mulai membuat DIY mobil RC, salah satu
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): 6 Langkah (Dengan Gambar)
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini dan