Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Arduino Chilled Mirror Hygrometer

Komponen dan persediaan

Arduino UNO
× 1
catu daya 12V 10A
× 1
Kipas daya tinggi 12V 40mm
× 1
12V 40mm TEC
× 1
penyerap panas 40mm
× 1
cermin kecil
× 1
Perekat konduktif termal
× 1
Pasta termal
× 1
Pengemudi motor BTS7960
× 1
LED 3 mm:Kuning
× 1
Sensor cahaya OPT101
× 1
Modul MOSFET IRF520
× 1
Maxim Integrated DS18B20 Resolusi Termometer Digital 1-Kabel yang Dapat Diprogram
× 1
SparkFun Pelepasan Sensor Kelembaban dan Suhu - Si7021
× 1

Alat dan mesin yang diperlukan

Pistol lem panas (generik)

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Tentang

Mengukur kelembaban dapat dilakukan dengan berbagai cara. Metode yang paling populer adalah dengan menggunakan sensor kelembaban kapasitif. Sayangnya sensor ini cepat kehilangan akurasi saat dioperasikan terus menerus di lingkungan yang sangat lembab. Higrometer Cermin Dingin tidak mengalami masalah ini dan juga jauh lebih akurat, terutama dalam kisaran kelembaban tinggi. Sayangnya, Higrometer Cermin Dingin komersial berharga ribuan dolar. Operasi dasarnya cukup sederhana, jadi dimungkinkan untuk membuatnya sendiri. Ini tidak akan memiliki akurasi 0,1 derajat yang sama dengan perangkat komersial, tetapi untuk sebagian besar tujuan itu akan cukup baik, dan tentu saja lebih akurat daripada sensor kapasitif.

Proyek ini adalah bukti konsep dan tidak berarti produksi siap. Banyak perbaikan yang dapat dilakukan tetapi ini membuktikan fakta bahwa itu berhasil.

Cara kerjanya

Higrometer Cermin Dingin menggunakan Peltier (TEC) untuk mendinginkan permukaan reflektif sampai kondensasi muncul. Pengembunan dideteksi dengan sumber cahaya dan sensor optik. Suhu permukaan cermin dicatat pada saat kondensasi muncul. Suhu ini setara dengan titik embun. Kelembaban Relatif kemudian dapat dihitung menggunakan titik embun dan suhu lingkungan.

Penyederhanaan

Ada beberapa perbedaan dengan Higrometer Cermin Dingin DIY ini dibandingkan dengan unit komersial.

Higrometer Cermin Dingin komersial tidak menggunakan cermin konvensional karena tidak menghantarkan dan mendistribusikan panas dengan baik, menyebabkan penurunan akurasi dan efisiensi. Perangkat ini kebanyakan menggunakan tembaga berlapis platinum atau rhodium sebagai cermin. Karena itu tidak mudah diperoleh atau hemat biaya, cermin biasa digunakan dalam Higrometer Cermin Dingin DIY ini. Cermin persegi kecil akan lebih baik daripada cermin bundar tetapi saya tidak dapat menemukannya. Sebagai alternatif, pelat baja tahan karat yang dipoles akan lebih baik.

Higrometer Cermin Dingin komersial menggunakan Termometer Perlawanan Platinum (PRT) yang tertanam di bawah cermin, bukan termometer SMD yang dipasang ke permukaan cermin. PRT memerlukan elektronik tambahan dan memasangnya di antara Peltier dan cermin sementara pada saat yang sama memberikan konduktivitas termal yang baik merupakan masalah. Kerugian memasang termometer ke permukaan cermin adalah memodifikasi sifat distribusi panas, mengurangi akurasi. Namun termometer yang dipasang di permukaan jauh lebih mudah dibuat dan cukup akurat.

Higrometer Cermin Dingin komersial menggunakan cermin yang jauh lebih kecil sekitar 5 mm, bukan 4 cm. karena itu membutuhkan lebih sedikit daya dan memiliki faktor bentuk yang lebih kecil. Namun, cermin kecil dan Peltier yang serasi tidak tersedia seperti varian yang lebih besar. Selain itu, Peltier kecil membutuhkan tegangan yang sangat rendah, membutuhkan driver khusus. Juga lebih sulit untuk memasang termometer SMD ke permukaan cermin kecil sambil menyisakan cukup ruang untuk memantulkan sedikit cahaya.

Versi saat ini tidak memiliki penutup pemblokiran cahaya. Ini dapat dengan mudah dicetak 3d dan sangat disarankan untuk memblokir gangguan dari sumber cahaya luar. Ini juga dapat digunakan untuk menahan sumber cahaya dan sensor cahaya pada tempatnya. Jika Anda membuat kandang cetak 3D, pastikan ventilasinya baik. Anda dapat menggunakan kipas Peltier untuk ventilasi, tetapi pastikan untuk menarik udara ke dalam enklosur, bukan meniup ke dalamnya. Bagian dalam juga harus mudah dijangkau untuk pembersihan cermin.

Implementasi saat ini tidak dapat mengukur titik beku karena memerlukan pembedaan antara partikel es dan tetesan air, yang memerlukan sensor optik kedua untuk mengukur cahaya yang tersebar.

Bagaimana membangun

Ambil Peltier, bersihkan kedua permukaan, dan letakkan perekat konduktif termal di sisi yang panas. Pastikan terdistribusi secara merata. Jika Anda tidak memiliki perekat konduktif termal, Anda dapat menggunakan pasta termal dengan beberapa tetes lem super di dekat tepinya. Ini bekerja sama baiknya. Bersihkan permukaan unit pendingin dan tekan unit pendingin dan Peltier secara bersamaan dan biarkan lem mengering.

Setelah heat sink menempel pada Peltier dan lem mengering, pasang cermin dengan cara yang sama, pastikan untuk membersihkan permukaan bawah terlebih dahulu. Penting agar pasta termal didistribusikan secara merata dan tidak ada celah udara, jika tidak, distribusi panas pada cermin tidak akan merata.

Setelah semua lem mengering, pasang kipas. Pastikan untuk menggunakan kipas yang cukup kuat untuk mendinginkan unit pendingin karena cukup panas. Cara memasang kipas ke unit pendingin tergantung pada jenis unit pendingin yang Anda gunakan. Saya hanya merekatkan keduanya menggunakan pistol lem panas.

Nyalakan kipas, lalu Peltier untuk memeriksa apakah setidaknya ada dua area di cermin tempat kondensasi muncul pada saat yang bersamaan. Jangan menyalakan Peltier terlalu lama karena itu pasti akan membuat profil kondensasi yang seragam. Anda ingin melihat seperti apa saat kondensasi baru saja terlihat. Jika Anda tidak puas dengan hasilnya, coba lagi dengan Peltier, cermin, dan unit pendingin baru karena kecil kemungkinan Anda dapat melepas bagian-bagian tersebut dan mengembalikan permukaan yang halus.

Saya tidak mendistribusikan pasta termal secara merata sehingga menghasilkan profil kondensasi yang tidak teratur seperti yang Anda lihat pada foto di atas.

Penting untuk membuat foto atau menandai area di mana kondensasi muncul pada saat yang sama karena ini adalah area di mana Anda harus memasang sensor suhu permukaan cermin dan mengukur jumlah cahaya yang dipantulkan dari cermin.

Dalam proyek ini saya menggunakan Si7021 untuk mengukur suhu cermin karena memberikan output kebisingan yang rendah. Sayangnya alamat I2C dikodekan dengan keras sehingga Anda hanya dapat menggunakan salah satu dari sensor tersebut. Untuk suhu lingkungan saya menggunakan sensor suhu DS18B20 tetapi tidak memiliki akurasi yang sangat tinggi. Satu-satunya alasan saya menggunakan sensor itu adalah karena kebetulan saya memilikinya.

Untuk memasang Si7021 (atau sensor suhu berbasis PCB) ke cermin, pertama-tama letakkan setetes besar pasta termal non-listrik pada sensor suhu. PCB harus ditutup dengan pasta termal juga, untuk mencegah kondensasi pada elektronik. Kemudian letakkan 4 gumpalan besar lem panas di setiap sudut PCB. Anda harus bergerak cepat. Tekan sensor ke cermin di lokasi di mana kondensasi muncul secara merata. Pastikan untuk menempatkan sensor secara horizontal dan tekan sensor dengan kuat ke cermin. Lem panas akan mengeras dengan cepat setelah menyentuh cermin. Jika Anda perlu memposisikan ulang sensor, Anda dapat dengan mudah mengikisnya dengan pisau pemotong kotak, melepaskan lemnya, dan mencoba lagi. Jika Anda memiliki kondensasi pada PCB, isolasi dengan lem panas atau plastik semprot.

Kipas dikendalikan oleh modul MOSFET IRF520.

Sensor cahaya yang digunakan adalah OPT101, yang sensitif, memiliki output noise yang rendah, dan mudah digunakan.

Untuk sumber lampu, Anda dapat menggunakan dioda laser berdaya rendah atau LED biasa. Saya mencoba keduanya dan keduanya berfungsi dengan baik. Laser memiliki keuntungan dari respon yang lebih baik tetapi lebih sulit untuk berbaris. LED memiliki respons yang lebih datar karena lebih banyak cahaya yang tersebar, tetapi lebih mudah untuk disejajarkan. Jika Anda menggunakan LED, pastikan itu mengeluarkan sinar terfokus.

Output cahaya LED dan laser cenderung terlalu tinggi, dan menggunakan PWM untuk mengurangi output bukanlah pilihan karena akan menyebabkan gangguan pada sensor cahaya. Sebagai gantinya, cukup tempatkan resistor secara seri dengan LED atau laser untuk mengurangi output.

Untuk memasang LED atau laser dan sensor cahaya OPT101, saya menggunakan beberapa kawat tembaga yang dipilin menjadi kawat pengunci agar lebih kaku. Kedua ujungnya diikat dengan lem panas. Ini bagus untuk pembuktian konsep tetapi juga terlalu rapuh untuk digunakan di luar pengaturan lab (atau ruang bawah tanah). Sangat mudah untuk menyejajarkan sensor dan sumber cahaya. Cara yang lebih baik adalah dengan mencetak 3d dudukan untuk perangkat ini, juga karena penutup cetak 3d adalah suatu keharusan untuk mencegah gangguan dari cahaya luar.

Untuk mengendalikan Peltier digunakan driver motor BTS7960. Cara paling efisien untuk menggerakkan Peltier adalah dengan mengubah arus, bukan menggunakan PWM. Namun, pengontrol Peltier tidak tersedia seperti driver motor BTS7960 dan untuk bukti konsep ini, konsumsi daya bukanlah faktor.

Setelah dirakit, unggah kode ke Arduino dan sesuaikan rentang sensitivitas OPT101 dengan potensiometer. Resistansi yang lebih tinggi berarti output tegangan yang lebih tinggi untuk jumlah cahaya yang sama. Lihat lembar data OPT101, Gambar 3 - Responsivitas Tegangan vs Iradiasi. Untuk debugging, Anda dapat meniup cermin untuk membuat kondensasi, atau menempatkan objek di depan sensor. Jika Anda memiliki AC, coba nyalakan (atau matikan) dan tunggu. Anda akan dapat melihat perubahan kelembapan.

Pada grafik di bawah ini Anda dapat melihat suhu (biru), pembacaan optik (merah), dan titik embun terukur (hijau). Anda dapat melihat titik embun naik saat saya mematikan AC.

Keamanan

Meskipun kode yang disertakan tidak mendukung ini, perangkat keras dapat memanaskan cermin selain mendinginkannya. Ini dilakukan hanya dengan mengembalikan polaritas pada Peltier. Pemanasan cermin dapat digunakan untuk menghilangkan kondensasi dengan cepat dan meningkatkan waktu respons. Selain itu, kondensasi penguapan kilat menghilangkan kontaminan kecil. Namun, ini juga menimbulkan risiko keamanan potensial karena permukaan cermin tidak memiliki pendingin. Jika kode macet saat memanaskan Peltier, paling-paling itu akan melelehkan lem panas yang menahan termometer di tempatnya dan paling buruk akan memicu kebakaran karena kabel meleleh yang menyebabkan korsleting.

Akurasi

Karena suhu titik embun yang diukur adalah nilai absolut, kalibrasi tidak sepenting dengan higrometer kapasitif atau resistif. Namun, setidaknya akan ada beberapa perbedaan suhu antara area sensor suhu permukaan cermin dan area penginderaan cahaya. Jika Anda perlu memverifikasi keakuratan pembacaan, Anda dapat mengkalibrasi perangkat dengan Higrometer Cermin Dingin komersial yang dikalibrasi.

Adapun kontaminasi cermin, ini hanya sebagian masalah. Pembacaan cahaya yang dipantulkan tidak mutlak tetapi relatif terhadap awal siklus pendinginan. Saat siklus pendinginan dimulai, cermin bebas dari pengembunan. Jumlah cahaya yang dipantulkan diukur dan digunakan sebagai referensi untuk mendeteksi kondensasi. Jika cermin terkontaminasi dan lebih sedikit cahaya yang dipantulkan, seharusnya tidak mempengaruhi deteksi kondensasi. Namun, beberapa kontaminan dapat menurunkan atau meningkatkan suhu terjadinya kondensasi, jadi untuk akurasi terbaik, bersihkan permukaan cermin dari waktu ke waktu.

Cermin dan sensor suhu sekitar tidak perlu memiliki akurasi terkalibrasi tinggi, tetapi resolusinya harus tinggi. Misalnya, jika suhu sebenarnya adalah 24,0 derajat, tetapi mengukur, 24,5 derajat, itu baik-baik saja selama cermin dan termometer sekitar juga mengukur 24,5 (dapat dinormalisasi) dan jumlah hanya kegugupan dengan satu desimal. Banyak termometer memiliki jitter 0,2 atau 0,3 derajat. Akan lebih baik menggunakan sensor suhu TSYS01 untuk pengukuran suhu permukaan cermin dan suhu sekitar karena sensor ini memberikan akurasi yang sama dengan Termometer Resistensi Platinum 0,1 derajat.

Adalah penting bahwa sensor suhu membuat kontak yang baik dengan permukaan cermin. Penggunaan pasta termal non-listrik konduktif sangat penting.

Jangan mendinginkan cermin lebih cepat dari waktu respons termometer, jika tidak, titik embun yang dirasakan akan tidak akurat.

Sensor suhu harus ditempatkan di lokasi cermin tempat kondensasi area penginderaan cahaya muncul secara bersamaan.

Memasang sensor suhu pada permukaan cermin memodifikasi distribusi panas, mengurangi akurasi. Mungkin tergoda untuk menggunakan unit termometer inframerah sebagai alternatif, tetapi sayangnya cermin memantulkan sejumlah radiasi termal sehingga pengukurannya akan dipengaruhi oleh lingkungan sekitar.

Secara teknis, pembacaan kelembaban juga tergantung pada tekanan barometrik tetapi efeknya sangat kecil di lingkungan sekitar. Perubahan tekanan apa pun yang disebabkan oleh pintu yang dibanting, dan hembusan angin luar yang menyebabkan perbedaan tekanan di dalam gedung kemungkinan besar akan menyebabkan lebih banyak masalah daripada yang seharusnya.

Udara panas dari heat sink Peltier tidak boleh ditarik ke atas cermin.

Penurunan suhu yang lambat akan memberikan pembacaan yang lebih akurat, tetapi juga menurunkan waktu respons. Waktu respons dapat ditingkatkan dengan menggerakkan suhu mendekati titik embun.

Kode

  • Higrometer Cermin Dingin
Higrometer Cermin DinginC/C++
Kode Arduino
#include #include  //Watchdog crash detection//Ini adalah library khusus.#include "Si7021.h" //sensor kelembapan dengan pemanas#include  //DS18B20 temp sensor#include  //DS18B20 temp sensor//Library timer:https://github.com/brunocalou/Timer#include "timer.h"#include "timerManager.h" //Menentukan pin perangkat keras pada papan Arduino.#menentukan pendinginanPWM 6#menentukan pemanasanPWM 5#menentukan pendinginanAktifkan 13#menentukan pemanasanAktifkan 12#menentukan tecFan 7#menentukan opticalSensor 0 //Analog in#menentukan satuWireBus A3 //DS18B20 sensor suhu// Status TEC.#define COOLING 0#define HEATING 1#define OFF 2//TimerTimer timerMainLoop;Timer timerTecCooling;Timer timerSampleNoise;//Sensor suhu (kelembaban tidak digunakan). Si7021 si7021;//DS18B20 sensor suhuOneWire oneWire(oneWireBus); Sensor DallasTemperature(&oneWire);kelembaban float =0;float ambientTemp =0;float opticalDewpoint =0;//Setel ini ke nilai awal yang lebih tinggi untuk mendapatkan rentang Serial Plotter yang benar.float mirrorTemp =30; optik mengambang =30; titik embun mengambang =15; //nilai awal harus lebih rendah dari mirror temp.float relativeHumidity =30;int tecState =OFF;bool cooling =false;int intervalTecCooling =200; //Seberapa sering timer TEC diperbarui di ms.float opticalThreshold =0.5f; //0.5 //Jumlah derajat C pembacaan optik harus turun di bawah referensi untuk menandai deteksi kondensasi. Ini harus lebih besar dari sinyal noise.int pwmIncrement =1; int startPwm =100;int maxPwm =255;int intervalMainLoop =200; int tecPwm =0;int noiseSampleIndex =0;int noiseSampleAmount =10;float noiseSampleHighest =0;float noiseSampleLowest =10000;bool noiseSampling =false;float calHumidity(float TD, float T){ //Titik embun tidak boleh lebih tinggi dari suhu. jika(TD> T){ TD =T; } //Aproksimasi Agustus-Roche-Magnus. float rh =100*(exp((17.625*TD)/(243.04+TD))/exp((17.625*T)/(243.04+T))); return rh;}//Setel TEC ke pemanasan, pendinginan, atau mati.void SetTEC(int state, int amount){ tecState =state; //Perhatikan bahwa untuk pemanasan dan pendinginan, pin pemanas DAN pendingin harus disetel ke tinggi. Tanyakan kepada perancang PCB mengapa. //Driver yang digunakan untuk mengontrol TEC:papan driver motor BTS7960. Perhatikan bahwa PWM untuk menggerakkan TEC tidak efisien dan lebih baik menggunakan sumber arus variabel. switch(status) { case PENDINGINAN:digitalWrite(heatingEnable, HIGH); analogWrite(pemanasanPWM, 0); digitalWrite(coolingEnable, TINGGI); analogWrite(PWM pendinginan, jumlah); merusak; kasus PEMANASAN:digitalWrite (pendinginanEnable, TINGGI); analogWrite(PWM pendinginan, 0); digitalWrite(Aktifkan pemanasan, TINGGI); analogWrite(pemanasanPWM, jumlah); merusak; case OFF:digitalWrite(coolingEnable, LOW); analogWrite(PWM pendinginan, 0); digitalWrite(Aktifkan pemanas, RENDAH); analogWrite(pemanasanPWM, 0); merusak; default:digitalWrite(coolingEnable, RENDAH); analogWrite(PWM pendinginan, 0); digitalWrite(Aktifkan pemanas, RENDAH); analogWrite(pemanasanPWM, 0); }}pengaturan batal() { //Deteksi kerusakan anjing pengawas. Ini demi keamanan karena Anda tidak ingin TEC terjebak dalam mode pemanasan. wdt_enable(WDTO_2S); //WDTO_500MS //WDTO_1S Serial.begin(9600); //9600 //57600 pinMode(PWM pendinginan, OUTPUT); pinMode(pemanasanPWM, OUTPUT); pinMode(coolingEnable, OUTPUT); pinMode(HeatingEnable, OUTPUT); pinMode(tecFan, OUTPUT); pinMode (sensor optik, INPUT); //Setup timerMainLoop.setInterval(intervalMainLoop); timerMainLoop.setCallback(mainLoop); timerMainLoop.start(); timerTecCooling.setInterval(intervalTecCooling); timerTecCooling.setCallback(tecCoolingCallback); timerSampleNoise.setInterval(intervalTecCooling); timerSampleNoise.setCallback(sampleNoiseCallback); //si7021 pengaturan sensor suhu. uint64_t serialNumber =0ULL; si7021.begin(); serialNumber =si7021.getSerialNumber(); //DS18B20 sensor sensor suhu onewire.begin(); //Nonaktifkan logging debug sensor suhu agar grafik berfungsi dengan benar. /* Serial.print("Nomor seri Si7021:"); Serial.print((uint32_t)(nomor seri>> 32), HEX); Serial.println((uint32_t)(nomor seri), HEX); //Versi firmware Serial.print("Versi firmware Si7021:"); Serial.println(si7021.getFirmwareVersion(), HEX); */ startNoiseSampling(); }//Dapatkan pembacaan sensor optik.float getOptical(){ int opt ​​=analogRead(opticalSensor); float optFactored =(float)opt / 30.0f; return optFactored;}//Timer callback.void tecCoolingCallback(){ digitalWrite(tecFan, HIGH); // Tingkatkan kekuatan TEC secara perlahan. tecPwm +=peningkatan pwm; //Clamp if(tecPwm> maxPwm){ tecPwm =maxPwm; } //Setel jumlah pendinginan TEC SetTEC(Pendinginan, tecPwm); //Apakah kondensasi terdeteksi? if(optical <=(noiseSampleLowest - opticalThreshold)){ //Log titik embun; titik embun =mirrorTemp; opticalDewpoint =optik; berhentiTek(); }}void startNoiseSampling(){ noiseSampling =true; noiseSampleTinggi =0; noiseSampleTerendah =10.000; timerSampleNoise.start();}void sampleNoiseReset(){ timerSampleNoise.stop(); noiseSampleIndex =0; noiseSampling =false;}void sampleNoiseCallback(){ if(noiseSampleIndex> noiseSampleAmount){ sampleNoiseReset(); startTecCooling(); } else{ if(optical> noiseSampleHighest){ noiseSampleHighest =optik; } if(optical =noiseSampleLowest)){ startNoiseSampling(); } }void loop() { //Watchdog deteksi kerusakan wdt_reset(); // Perbarui semua pengatur waktu. TimerManager::instance().update();}

Skema


Proses manufaktur

  1. Cermin
  2. Arduino Spybot
  3. FlickMote
  4. TV Buatan Sendiri B-Gone
  5. Kaleidoskop Infinity Mirror
  6. Jam Master
  7. Temukan Saya
  8. Arduino Power
  9. Tech-TicTacToe
  10. Arduino Quadruped