Daftar Isi:

ESP32 NTP Temperature Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu: 7 Langkah (dengan Gambar)
ESP32 NTP Temperature Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu: 7 Langkah (dengan Gambar)

Video: ESP32 NTP Temperature Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu: 7 Langkah (dengan Gambar)

Video: ESP32 NTP Temperature Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu: 7 Langkah (dengan Gambar)
Video: Lesson 23 - Thermistor Thermometer 2024, Juli
Anonim
Image
Image
ESP32 NTP Suhu Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu
ESP32 NTP Suhu Probe Cooking Thermometer Dengan Koreksi Steinhart-Hart dan Alarm Suhu

Masih dalam perjalanan untuk menyelesaikan "proyek yang akan datang", "ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm" adalah Instruksi yang menunjukkan bagaimana saya menambahkan probe suhu NTP, buzzer piezo, dan perangkat lunak ke sentuhan kapasitif saya. Input Sentuh Kapasitif ESP32 Menggunakan "Sikat Lubang Logam" untuk Tombol" untuk membuat termometer memasak yang sederhana namun akurat dengan alarm suhu yang dapat diprogram.

Tiga tombol sentuh kapasitif memungkinkan tingkat alarm suhu diatur. Menekan tombol tengah akan menampilkan tampilan "Atur Suhu Alarm", mengaktifkan tombol kiri dan kanan untuk masing-masing mengurangi atau meningkatkan suhu alarm. Menekan dan melepaskan tombol kiri akan menurunkan suhu alarm satu derajat, sedangkan menekan dan menahan tombol kiri akan terus menurunkan suhu alarm hingga dilepas. Demikian pula, menekan dan melepaskan tombol kanan akan meningkatkan suhu alarm satu derajat, sementara menekan dan menahan tombol kanan akan terus meningkatkan suhu alarm sampai dilepaskan. Setelah selesai menyesuaikan suhu alarm, cukup sentuh tombol tengah lagi untuk kembali ke tampilan suhu. Setiap saat suhu sama dengan atau lebih tinggi dari suhu alarm, buzzer piezo akan berbunyi.

Dan seperti yang disebutkan, probe suhu NTP digunakan dalam desain bersama dengan persamaan dan koefisien Steinhart-Hart yang diperlukan untuk pembacaan suhu yang akurat. Saya telah menyertakan deskripsi yang terlalu bertele-tele tentang persamaan Steinhart-Hart, koefisien Steinhart-Hart, pembagi tegangan, dan aljabar di Langkah 1 (sebagai bonus, ini membuat saya tertidur setiap kali saya membacanya, jadi Anda mungkin ingin lewati Langkah 1 dan langsung ke Langkah 2: Merakit Elektronik, kecuali tentu saja Anda perlu tidur siang).

Jika Anda memutuskan untuk membuat termometer memasak ini, untuk kustomisasi dan pencetakan 3D, saya telah menyertakan file berikut:

  • File Arduino "AnalogInput.ino" berisi perangkat lunak untuk desain.
  • File cad Autodesk Fusion 360 untuk kasing menunjukkan bagaimana kasing dirancang.
  • Cura 3.4.0 File STL "Case, Top.stl" dan "Case, Bottom.stl" siap untuk pencetakan 3D.

Anda juga akan membutuhkan keakraban dengan lingkungan Arduino serta keterampilan dan peralatan menyolder, dan sebagai tambahan mungkin memerlukan akses ke ohmmeter digital, termometer, dan sumber suhu yang akurat untuk kalibrasi.

Dan seperti biasa, saya mungkin lupa satu atau dua file atau siapa yang tahu apa lagi, jadi jika Anda memiliki pertanyaan, jangan ragu untuk bertanya karena saya membuat banyak kesalahan.

Elektronik dirancang menggunakan pensil, kertas, dan kalkulator bertenaga surya Radio Shack EC-2006a (Cat. No. 65-962a).

Perangkat lunak ini dirancang menggunakan Arduino 1.8.5.

Kasing dirancang menggunakan Autodesk Fusion 360, diiris menggunakan Cura 3.4.0, dan dicetak di PLA pada Ultimaker 2+ Extended dan Ultimaker 3 Extended.

Dan satu catatan terakhir, saya tidak menerima kompensasi dalam bentuk apa pun, termasuk tetapi tidak terbatas pada sampel gratis, untuk komponen apa pun yang digunakan dalam desain ini.

Langkah 1: Matematika, Matematika, dan Lainnya Matematika: Steinhart–Hart, Koefisien, dan Pembagi Resistor

Matematika, Matematika, dan Lainnya Matematika: Steinhart–Hart, Koefisien, dan Pembagi Resistor
Matematika, Matematika, dan Lainnya Matematika: Steinhart–Hart, Koefisien, dan Pembagi Resistor

Desain saya sebelumnya yang menggabungkan probe suhu NTC menggunakan teknik pencarian tabel untuk mengubah tegangan masuk dari pembagi resistor ke suhu. Karena ESP32 mampu input analog dua belas bit, dan karena saya merancang untuk meningkatkan akurasi, saya memutuskan untuk menerapkan persamaan "Steinhart-Hart" dalam kode untuk konversi tegangan ke suhu.

Pertama kali diterbitkan pada tahun 1968 oleh John S. Steinhart dan Stanley R. Hart, persamaan Steinhart-Hart mendefinisikan resistansi terhadap hubungan suhu dari probe suhu NTC sebagai berikut:

1 / T = A + (B * (log(Thermistor))) + (C * log(Thermistor) * log(Thermistor) * log(Thermistor))

di mana:

  • T adalah derajat Kelvin.
  • A, B, C adalah koefisien Steinhart-Hart (lebih lanjut tentang itu sebentar lagi).
  • Dan Thermistor adalah nilai resistansi termistor probe suhu pada suhu saat ini.

Jadi mengapa persamaan Steinhart-Hart yang tampaknya rumit ini diperlukan untuk termometer digital berbasis probe suhu NTC yang sederhana? Sebuah probe suhu NTC "ideal" akan memberikan representasi resistansi linier dari suhu aktual, sehingga persamaan linier sederhana yang melibatkan input tegangan dan penskalaan akan menghasilkan presentasi suhu yang akurat. Namun, probe suhu NTC tidak linier dan, ketika dikombinasikan dengan input analog non-linear dari hampir semua prosesor papan tunggal berbiaya rendah seperti WiFi Kit 32, menghasilkan input analog non-linear dan dengan demikian pembacaan suhu tidak akurat. Dengan menggunakan persamaan seperti Steinhart-Hart bersama dengan kalibrasi hati-hati, pembacaan suhu yang sangat akurat menggunakan probe suhu NTC dengan prosesor papan tunggal berbiaya rendah dapat dicapai dengan menghasilkan perkiraan suhu aktual yang sangat dekat.

Jadi kembali ke persamaan Steinhart-Hart. Persamaan tersebut menggunakan tiga koefisien A, B dan C untuk menentukan suhu sebagai fungsi dari resistansi termistor. Dari mana ketiga koefisien ini berasal? Beberapa produsen menyediakan koefisien ini dengan probe suhu NTC mereka, dan yang lainnya tidak. Selain itu, koefisien yang disediakan pabrikan mungkin atau mungkin tidak untuk pemeriksaan suhu yang tepat yang mungkin Anda beli, dan kemungkinan besar koefisien tersebut mewakili sampel besar dari semua pemeriksaan suhu yang mereka produksi selama periode waktu tertentu. Dan akhirnya, saya tidak dapat menemukan koefisien untuk probe yang digunakan dalam desain ini.

Tanpa koefisien yang diperlukan, saya membuat Steinhart-Hart Spreadsheet, kalkulator berbasis spreadsheet yang membantu menghasilkan koefisien yang diperlukan untuk pemeriksaan suhu NTC (Saya kehilangan tautan ke kalkulator berbasis web serupa yang saya gunakan bertahun-tahun yang lalu, jadi saya membuat yang ini). Untuk menentukan koefisien untuk pemeriksaan suhu, saya mulai dengan mengukur nilai resistor 33k yang digunakan pada pembagi tegangan dengan ohmmeter digital, dan memasukkan nilainya ke dalam area kuning pada lembar kerja berlabel "Resistor". Selanjutnya, saya menempatkan probe suhu di tiga lingkungan; suhu kamar pertama, air es kedua dan air mendidih ketiga, bersama dengan termometer digital akurat yang diketahui, dan berikan waktu agar suhu pada termometer dan jumlah input termistor yang muncul di layar WiFi Kit 32 (lebih lanjut tentang ini nanti) untuk menstabilkan. Dengan suhu dan jumlah input termistor stabil, saya memasukkan suhu yang ditunjukkan oleh termometer akurat yang diketahui dan jumlah termistor yang muncul pada tampilan Kit WiFi 32 ke area kuning spreadsheet berlabel "Derajat F dari Termometer" dan "AD Hitung dari WiFi Kit 32" masing-masing, untuk masing-masing dari tiga lingkungan. Setelah semua pengukuran dimasukkan, area hijau pada spreadsheet menyediakan koefisien A, B, dan C yang diperlukan oleh persamaan Steinhart-Hart yang kemudian cukup disalin dan ditempelkan ke dalam kode sumber.

Seperti yang disebutkan sebelumnya, output dari persamaan Steinhart-Hart adalah dalam derajat Kelvin, dan desain ini menampilkan derajat Fahrenheit. Konversi dari derajat Kelvin ke derajat Fahrenheit adalah sebagai berikut:

Pertama, ubah derajat Kelvin ke derajat Celcius dengan mengurangkan 273,15 (derajat Kelvin) dari persamaan Steinhart-Hart:

Derajat C = (A + (B * (log(Thermistor))) + (C * log(Thermistor) * log(Thermistor) * log(Thermistor))) - 273,15

Dan kedua, ubah derajat Celcius ke derajat Fahrenheit sebagai berikut:

Derajat F = ((Derajat C * 9) / 5) + 32

Dengan persamaan dan koefisien Steinhart-Hart lengkap, persamaan kedua diperlukan untuk membaca keluaran pembagi resistor. Model pembagi resistor yang digunakan dalam perancangan ini adalah:

vRef<---Thermistor<---vOut<---Resistor<---Ground

di mana:

  • vRef dalam desain ini adalah 3.3vdc.
  • Termistor adalah probe suhu NTC yang digunakan dalam pembagi resistor.
  • vOut adalah output tegangan dari pembagi resistor.
  • Resistor adalah resistor 33k yang digunakan dalam pembagi resistor.
  • Dan tanah adalah, yah, tanah.

v Keluaran pembagi resistor pada perancangan ini dipasang pada input analog WiFi Kit 32 A0 (pin 36), dan tegangan keluaran pembagi resistor dihitung sebagai berikut:

vOut = vRef * Resistor / (Resistor + Thermistor)

Namun, seperti dicatat dalam persamaan Steinhart-Hart, nilai resistansi termistor diperlukan untuk mendapatkan suhu, bukan output tegangan dari pembagi resistor. Jadi menata ulang persamaan untuk menghasilkan nilai termistor memerlukan penggunaan aljabar kecil sebagai berikut:

Kalikan kedua sisi dengan "(Resistor + Thermistor)" menghasilkan:

vOut * (Resistor + Thermistor) = vRef * Resistor

Bagilah kedua sisi dengan "vOut" yang menghasilkan:

Resistor + Termistor = (vRef * Resistor) / vOut

Kurangi "Resistor" dari kedua sisi menghasilkan:

Termistor = (vRef * Resistor / vOut) - Resistor

Dan akhirnya, dengan menggunakan sifat distributif, sederhanakan:

Termistor = Resistor * ((vRef / vOut) - 1)

Mengganti jumlah input analog WiFi Kit 32 A0 dari 0 hingga 4095 untuk vOut, dan mengganti nilai 4096 untuk vRef, persamaan pembagi resistor yang memberikan nilai resistansi termistor yang diperlukan oleh persamaan Steinhart-Hart menjadi:

Termistor = Resistor * ((4096 / Hitungan Input Analog) - 1)

Jadi dengan matematika di belakang kita, mari kita merakit beberapa elektronik.

Langkah 2: Merakit Elektronik

Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik
Perakitan Elektronik

Untuk elektronik, sebelumnya saya telah merakit demonstrator ESP32 Capacitive Touch https://www.instructables.com/id/ESP32-Capacitive… Dengan perakitan tersebut, diperlukan komponen tambahan sebagai berikut:

  • Lima, 4" potongan kawat 28awg (satu merah, satu hitam, satu kuning dan dua hijau).
  • Satu, probe Maverick "ET-72 Temperature Probe" (https://www.maverickthermometers.com/product/pr-003/).
  • Satu, konektor "telepon" 2,5 mm, dudukan panel (https://www.mouser.com/ProductDetail/502-TR-2A).
  • Satu, 33k ohm 1% 1/8 watt resistor.
  • Satu, piezo buzzer https://www.adafruit.com/product/160. Jika Anda memilih buzzer piezo yang berbeda, pastikan sesuai dengan spesifikasi yang satu ini (bergerak gelombang persegi, <= keluaran ESP32 saat ini).

Untuk merakit komponen tambahan, saya melakukan langkah-langkah berikut:

  • Stripping dan tinned ujung masing-masing 4 "panjang kawat seperti yang ditunjukkan.
  • Solder salah satu ujung kabel kuning dan salah satu ujung resistor 33k ohm ke pin "Tip" konektor telepon.
  • Solder salah satu ujung kabel hitam ke ujung bebas resistor 33k ohm dan potong kabel resistor berlebih.
  • Terapkan heat shrink tubing di atas kabel dan resistor.
  • Solder salah satu ujung kabel merah ke pin "Lengan" pada konektor telepon.
  • Solder ujung bebas kabel kuning ke pin 36 pada WiFi Kit 32.
  • Solder ujung bebas kabel hitam ke pin GND pada Kit WiFi 32.
  • Solder ujung bebas kabel merah ke pin 3V3 pada WiFi Kit 32.
  • Solder satu kabel hijau ke salah satu ujung buzzer piezo.
  • Menyolder sisa kabel hijau ke sisa kabel bel piezo
  • Solder ujung bebas salah satu kabel piezo hijau ke pin 32 pada WiFi Kit 32.
  • Solder ujung bebas kabel piezo hijau yang tersisa ke pin GND pada WiFi Kit 32.
  • Dicolokkan probe suhu ke konektor telepon.

Dengan semua kabel lengkap, saya memeriksa pekerjaan saya.

Langkah 3: Menginstal Perangkat Lunak

Menginstal Perangkat Lunak
Menginstal Perangkat Lunak

File "AnalogInput.ino" adalah file lingkungan Arduino yang berisi perangkat lunak untuk desain. Selain file ini, Anda akan memerlukan perpustakaan grafis "U8g2lib" untuk tampilan OLED Kit32 WiFi (lihat https://github.com/olikraus/u8g2/wiki untuk informasi lebih lanjut tentang perpustakaan ini).

Dengan pustaka grafis U8g2lib terinstal di direktori Arduino Anda, dan "AnalogInput.ino" dimuat ke lingkungan Arduino, kompilasi dan unduh perangkat lunak ke dalam WiFi Kit 32. Setelah diunduh dan dijalankan, baris teratas tampilan OLED pada WiFi Kit 32 harus membaca "Suhu" dengan suhu saat ini ditampilkan dalam teks besar di tengah layar.

Sentuh tombol tengah (T5) untuk menampilkan tampilan "Atur Suhu Alarm". Sesuaikan suhu alarm dengan menekan tombol kiri (T4) atau tombol kanan (T6) seperti yang dijelaskan dalam pendahuluan. Untuk menguji alarm, sesuaikan suhu alarm agar sama dengan atau lebih rendah dari suhu saat ini dan alarm akan berbunyi. Setelah selesai mengatur suhu alarm, sentuh tombol tengah untuk kembali ke tampilan suhu.

Nilai dProbeA, dProbeB, dProbeC dan dResistor dalam perangkat lunak adalah nilai yang saya tentukan selama kalibrasi probe yang saya gunakan dalam desain ini dan harus menghasilkan pembacaan suhu yang akurat hingga beberapa derajat. Jika tidak, atau jika akurasi yang lebih tinggi diinginkan, maka kalibrasi berikutnya.

Langkah 4: Mengkalibrasi Pemeriksaan Suhu NTP

Mengkalibrasi Pemeriksaan Suhu NTP
Mengkalibrasi Pemeriksaan Suhu NTP

Item berikut diperlukan untuk mengkalibrasi probe suhu:

  • Satu ohmmeter digital.
  • Satu termometer digital akurat yang diketahui mampu 0 hingga 250 derajat F.
  • Satu gelas air es.
  • Satu panci berisi air mendidih (berhati-hatilah!).

Mulailah dengan mendapatkan nilai resistor 33k yang sebenarnya:

  • Lepaskan daya dari papan WiFi Kit 32.
  • Lepaskan probe suhu dari konektor telepon (mungkin juga perlu untuk melepas solder kabel hitam dari WiFi Kit 32, tergantung pada ohmmeter digital Anda).
  • Buka Spreadsheet Steinhart-Hart.
  • Ukur nilai resistor 33k ohm menggunakan ohmmeter digital dan masukkan ke dalam kotak "Resistor" kuning di spreadsheet dan ke dalam variabel "dResistor" di perangkat lunak. Meskipun ini mungkin tampak berlebihan, resistor 33k ohm 1% memang dapat mempengaruhi keakuratan tampilan suhu.
  • Pasang probe suhu ke konektor telepon.

Selanjutnya dapatkan koefisien Steinhart-Hart:

  • Nyalakan termometer digital akurat yang diketahui.
  • Colokkan sumber daya USB ke WiFi Kit 32.
  • Tekan dan tahan tombol kiri (T4) dan kanan (T6) secara bersamaan hingga muncul tampilan "Thermistor Counts".
  • Biarkan termometer digital dan tampilan jumlah termistor menjadi stabil.
  • Masukkan suhu dan penghitungan termistor ke dalam kolom kuning "Derajat F dari Termometer" dan "Jumlah AD dari ESP32" pada baris "Kamar".
  • Masukkan termometer digital dan probe termistor ke dalam air es dan biarkan kedua layar menjadi stabil.
  • Masukkan suhu dan penghitungan termistor ke dalam kolom kuning "Derajat F dari Termometer" dan "Penghitungan AD dari ESP32" pada baris "Air Dingin".
  • Masukkan termometer digital dan probe termistor ke dalam air mendidih dan biarkan kedua layar menjadi stabil.
  • Masukkan suhu dan penghitungan termistor ke dalam kolom kuning "Derajat F dari Termometer" dan "Penghitungan AD dari ESP32" pada baris "Air Mendidih".
  • Salin koefisien "A:" hijau ke dalam variabel "dProbeA" di kode sumber.
  • Salin koefisien "B:" hijau ke dalam variabel "dProbeB" di kode sumber.
  • Salin koefisien "C:" hijau ke dalam variabel "dProbeC" di kode sumber.

Kompilasi dan unduh perangkat lunak ke dalam WiFi Kit 32.

Langkah 5: Pencetakan 3D Kasus dan Perakitan Akhir

3D Mencetak Kasing dan Rakitan Akhir
3D Mencetak Kasing dan Rakitan Akhir
3D Mencetak Kasing dan Rakitan Akhir
3D Mencetak Kasing dan Rakitan Akhir
3D Mencetak Kasing dan Rakitan Akhir
3D Mencetak Kasing dan Rakitan Akhir

Saya mencetak "Case, Top.stl" dan "Case, Bottom.stl" pada ketinggian lapisan.1mm, pengisi 50%, tanpa penyangga.

Dengan kasing yang dicetak, saya merakit elektronik dan kasing sebagai berikut:

  • Saya melepas solder kabel dari colokan tiga lubang, menekan colokan lubang ke posisi di "Case, Top.stl", lalu menyolder kembali kabel ke colokan lubang, dengan hati-hati mencatat kiri (T4), tengah (T5) dan kanan (T6) kabel dan masing-masing tombol.
  • Amankan konektor telepon ke lubang bundar di "Case, Bottom.stl" menggunakan mur yang disertakan.
  • Tempatkan bel piezo di rakitan bawah casing di sebelah konektor telepon, dan kencangkan dengan selotip dua sisi.
  • Geser WiFi Kit 32 ke posisinya ke dalam unit bawah casing, pastikan port USB pada WiFi Kit 32 sejajar dengan lubang oval di bagian bawah casing (JANGAN tekan layar OLED untuk menempatkan WiFi Kit 32 di bagian bawah casing perakitan, percayalah pada saya yang satu ini, jangan lakukan itu!).
  • Tekan rakitan atas kasing ke rakitan bawah kasing dan kencangkan di tempatnya menggunakan titik-titik kecil lem cyanoacrylate tebal di sudut-sudutnya.

Langkah 6: Tentang Perangkat Lunak

Tentang Perangkat Lunak
Tentang Perangkat Lunak

File "AnalogInput.ino" adalah modifikasi dari file "Buttons.ino" dari Instructable saya sebelumnya "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/". Saya telah memodifikasi tiga bagian kode asli "setup()", "loop()" dan "InterruptService()" untuk menyertakan perangkat lunak untuk probe dan alarm, dan saya telah menambahkan tiga bagian kode tambahan "Analog()", "Buttons()" dan "Display()" untuk membersihkan "loop()" dan untuk menambahkan perangkat lunak yang diperlukan untuk probe dan alarm.

"Analog()" berisi kode yang diperlukan untuk membaca hitungan termistor ke dalam array, rata-rata array hitungan, menggunakan pembagi tegangan untuk menghasilkan nilai termistor dan akhirnya menggunakan persamaan Steinhart-Hart dan persamaan konversi suhu untuk menghasilkan derajat Fahrenheit.

"Buttons()" berisi kode yang diperlukan untuk memproses penekanan tombol dan mengedit suhu alarm.

"Display()" berisi kode yang diperlukan untuk menampilkan informasi pada layar OLED.

Jika Anda memiliki pertanyaan atau komentar tentang kode, atau aspek lain dari Instruksi ini, jangan ragu untuk bertanya dan saya akan melakukan yang terbaik untuk menjawabnya.

Saya harap Anda menikmatinya (dan masih terjaga)!

Langkah 7: "Proyek Mendatang"

NS
NS

Proyek mendatang, "Intelligrill® Pro", adalah monitor perokok probe suhu ganda yang menampilkan:

  • Perhitungan pemeriksaan suhu Steinhart-Hart (sebagai lawan dari tabel "pencarian") untuk meningkatkan akurasi seperti yang tergabung dalam Instruksi ini.
  • Waktu prediktif hingga penyelesaian pada probe 1 menggabungkan peningkatan akurasi yang diperoleh dari perhitungan Steinhart-Hart.
  • Probe kedua, probe 2, untuk memantau suhu perokok (terbatas pada 32 hingga 399 derajat).
  • Kontrol input sentuh kapasitif (seperti pada Instruksi sebelumnya).
  • Pemantauan jarak jauh berbasis WIFI (dengan alamat IP tetap, memungkinkan pemantauan kemajuan perokok dari mana saja tersedia koneksi internet).
  • Kisaran suhu yang diperluas (32 hingga 399 derajat).
  • Alarm penyelesaian yang dapat didengar baik di dalam pemancar Intelligrill® dan di sebagian besar perangkat pemantauan berkemampuan WiFi.
  • Tampilan suhu dalam derajat F atau derajat C.
  • Format waktu dalam JJ:MM:SS atau JJ:MM. Tampilan baterai dalam volt atau % terisi.
  • Dan output PID untuk perokok berbasis auger.

"Intelligrill® Pro" masih menguji untuk menjadi Intelligrill® berbasis HTML yang paling akurat, penuh fitur, dan andal yang pernah saya rancang. Ini masih dalam pengujian, tetapi dengan makanan yang membantu mempersiapkannya selama pengujian, berat badan saya naik lebih dari beberapa kilogram.

Sekali lagi, saya harap Anda menikmatinya!

Direkomendasikan: