สารบัญ:

ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ: 7 ขั้นตอน (พร้อมรูปภาพ)
ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: โปรเจค arduino เครื่องวัดอุณหภูมิ ความชื้น ตั้งโชว์ แสดงผลผ่านหน้าจอ OLED ต่อยอดแจ้งเตือนผ่าน Line 2024, กรกฎาคม
Anonim
Image
Image
ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ
ESP32 NTP Temperature Probe เครื่องวัดอุณหภูมิในการปรุงอาหารพร้อมการแก้ไข Steinhart-Hart และสัญญาณเตือนอุณหภูมิ

ยังคงอยู่ระหว่างการเดินทางเพื่อทำ "โครงการที่จะเกิดขึ้น" ให้เสร็จ "ESP32 NTP Temperature Probe Cooking Thermometer พร้อม Steinhart-Hart Correction and Temperature Alarm" เป็นคำแนะนำที่แสดงวิธีที่ฉันเพิ่มหัววัดอุณหภูมิ NTP, piezo buzzer และซอฟต์แวร์ให้กับการสัมผัสแบบ capacitive ของฉัน " ESP32 Capacitive Touch Input โดยใช้ "Metallic Hole Plugs" สำหรับปุ่มต่างๆ เพื่อสร้างเทอร์โมมิเตอร์สำหรับทำอาหารที่เรียบง่ายแต่แม่นยำพร้อมการเตือนอุณหภูมิที่ตั้งโปรแกรมได้

ปุ่มสัมผัสแบบ capacitive สามปุ่มช่วยให้สามารถตั้งระดับการเตือนอุณหภูมิได้ การกดปุ่มตรงกลางจะแสดงหน้าจอ "Set Alarm Temperature" ทำให้ปุ่มซ้ายและขวาสามารถลดหรือเพิ่มอุณหภูมิการเตือนได้ตามลำดับ การกดและปล่อยปุ่มซ้ายจะลดอุณหภูมิการเตือนลงหนึ่งองศา ขณะที่กดปุ่มซ้ายค้างไว้จะลดอุณหภูมิการเตือนอย่างต่อเนื่องจนกว่าจะปล่อย ในทำนองเดียวกัน การกดและปล่อยปุ่มขวาจะเพิ่มอุณหภูมิการเตือนหนึ่งองศา ขณะที่กดปุ่มขวาค้างไว้จะเพิ่มอุณหภูมิการเตือนอย่างต่อเนื่องจนกว่าจะปล่อย เมื่อปรับอุณหภูมิการเตือนเสร็จแล้ว เพียงแตะปุ่มกลางอีกครั้งเพื่อกลับไปที่การแสดงอุณหภูมิ เมื่อใดก็ตามที่อุณหภูมิเท่ากับหรือสูงกว่าอุณหภูมิปลุก เสียง Piezo จะดังขึ้น

และดังที่ได้กล่าวมาแล้ว หัววัดอุณหภูมิ NTP ถูกใช้ในการออกแบบร่วมกับสมการและค่าสัมประสิทธิ์ของสไตน์ฮาร์ต-ฮาร์ตที่จำเป็นสำหรับการอ่านค่าอุณหภูมิที่แม่นยำ ฉันได้รวมคำอธิบายที่ละเอียดมากเกินไปของสมการสไตน์ฮาร์ต-ฮาร์ต สัมประสิทธิ์ของสไตน์ฮาร์ต ตัวแบ่งแรงดันไฟฟ้า และพีชคณิตไว้ในขั้นตอนที่ 1 (เป็นโบนัส มันทำให้ฉันหลับทุกครั้งที่อ่าน ดังนั้นคุณอาจต้องการ ข้ามขั้นตอนที่ 1 และตรงไปที่ขั้นตอนที่ 2: การประกอบอุปกรณ์อิเล็กทรอนิกส์ เว้นแต่คุณจะต้องงีบหลับ)

หากคุณตัดสินใจที่จะสร้างเทอร์โมมิเตอร์สำหรับทำอาหารสำหรับการปรับแต่งและการพิมพ์ 3 มิติ ฉันได้รวมไฟล์ต่อไปนี้ไว้:

  • ไฟล์ Arduino "AnalogInput.ino" ที่มีซอฟต์แวร์สำหรับการออกแบบ
  • ไฟล์ cad ของ Autodesk Fusion 360 สำหรับเคสที่แสดงวิธีการออกแบบเคส
  • ไฟล์ Cura 3.4.0 STL "Case, Top.stl" และ "Case, Bottom.stl" พร้อมสำหรับการพิมพ์ 3 มิติ

คุณจะต้องมีความคุ้นเคยกับสภาพแวดล้อม Arduino ตลอดจนทักษะและอุปกรณ์ในการบัดกรี นอกจากนี้ อาจจำเป็นต้องเข้าถึงโอห์มมิเตอร์แบบดิจิตอล เทอร์โมมิเตอร์ และแหล่งอุณหภูมิที่แม่นยำสำหรับการสอบเทียบ

และเช่นเคย ฉันอาจจะลืมไฟล์ไปหนึ่งหรือสองไฟล์ หรือใครรู้อะไรอีก ดังนั้นหากคุณมีคำถามใดๆ โปรดอย่าลังเลที่จะถามเพราะฉันทำผิดพลาดมากมาย

อุปกรณ์อิเล็กทรอนิกส์ได้รับการออกแบบโดยใช้ดินสอ กระดาษ และ Radio Shack EC-2006a (Cat. No. 65-962a) เครื่องคิดเลขพลังงานแสงอาทิตย์

ซอฟต์แวร์ได้รับการออกแบบโดยใช้ Arduino 1.8.5

เคสนี้ได้รับการออกแบบโดยใช้ Autodesk Fusion 360 หั่นโดยใช้ Cura 3.4.0 และพิมพ์ใน PLA บน Ultimaker 2+ Extended และ Ultimaker 3 Extended

และหมายเหตุสุดท้าย ฉันไม่ได้รับค่าตอบแทนใดๆ ในรูปแบบใดๆ รวมถึงแต่ไม่จำกัดเพียงตัวอย่างฟรี สำหรับส่วนประกอบใดๆ ที่ใช้ในการออกแบบนี้

ขั้นตอนที่ 1: คณิตศาสตร์ คณิตศาสตร์ และคณิตศาสตร์อื่นๆ: Steinhart–Hart ค่าสัมประสิทธิ์ และตัวแบ่งตัวต้านทาน

คณิตศาสตร์ คณิตศาสตร์ และอื่นๆ คณิตศาสตร์: Steinhart–Hart ค่าสัมประสิทธิ์ และตัวแบ่งตัวต้านทาน
คณิตศาสตร์ คณิตศาสตร์ และอื่นๆ คณิตศาสตร์: Steinhart–Hart ค่าสัมประสิทธิ์ และตัวแบ่งตัวต้านทาน

การออกแบบก่อนหน้านี้ของฉันที่รวมหัววัดอุณหภูมิ NTC ใช้เทคนิคการค้นหาตารางเพื่อแปลงแรงดันไฟฟ้าขาเข้าจากตัวแบ่งตัวต้านทานเป็นอุณหภูมิ เนื่องจาก ESP32 มีความสามารถในอินพุตแบบอะนาล็อกสิบสองบิต และเนื่องจากฉันกำลังออกแบบเพื่อเพิ่มความแม่นยำ ฉันจึงตัดสินใจใช้สมการ "Steinhart-Hart" ในโค้ดสำหรับการแปลงแรงดันไฟฟ้าเป็นอุณหภูมิ

ตีพิมพ์ครั้งแรกในปี 2511 โดย John S. Steinhart และ Stanley R. Hart สมการ Steinhart-Hart กำหนดความสัมพันธ์ความต้านทานต่ออุณหภูมิของหัววัดอุณหภูมิ NTC ดังนี้

1 / T = A + (B * (ล็อก (เทอร์มิสเตอร์))) + (ล็อก C * (เทอร์มิสเตอร์) * บันทึก (เทอร์มิสเตอร์) * บันทึก (เทอร์มิสเตอร์))

ที่ไหน:

  • T คือองศาเคลวิน
  • A, B, C คือสัมประสิทธิ์ Steinhart-Hart (เพิ่มเติมในอีกสักครู่)
  • และเทอร์มิสเตอร์คือค่าความต้านทานเทอร์มิสเตอร์เทอร์มิสเตอร์ที่อุณหภูมิปัจจุบัน

เหตุใดสมการ Steinhart-Hart ที่ดูเหมือนซับซ้อนนี้จึงจำเป็นสำหรับเทอร์โมมิเตอร์แบบดิจิตอลที่ใช้หัววัดอุณหภูมิ NTC อย่างง่าย หัววัดอุณหภูมิ NTC ที่ "เหมาะสม" จะแสดงค่าความต้านทานเชิงเส้นของอุณหภูมิจริง ดังนั้นสมการเชิงเส้นอย่างง่ายที่เกี่ยวข้องกับแรงดันไฟฟ้าขาเข้าและการปรับขนาดจะส่งผลให้มีการแสดงอุณหภูมิที่แม่นยำ อย่างไรก็ตาม หัววัดอุณหภูมิ NTC ไม่ได้เป็นเส้นตรง และเมื่อรวมกับอินพุตอนาล็อกแบบไม่เป็นเชิงเส้นของโปรเซสเซอร์แบบบอร์ดเดี่ยวราคาประหยัดเกือบทั้งหมด เช่น WiFi Kit 32 จะผลิตอินพุตแบบอะนาล็อกที่ไม่ใช่เชิงเส้นและทำให้อ่านอุณหภูมิได้ไม่ถูกต้อง ด้วยการใช้สมการ เช่น Steinhart-Hart ควบคู่ไปกับการสอบเทียบอย่างระมัดระวัง การอ่านค่าอุณหภูมิที่แม่นยำสูงโดยใช้หัววัดอุณหภูมิ NTC ที่มีโปรเซสเซอร์แบบบอร์ดเดี่ยวราคาประหยัดสามารถทำได้โดยการสร้างค่าประมาณที่ใกล้เคียงมากของอุณหภูมิจริง

กลับไปที่สมการสไตน์ฮาร์ต-ฮาร์ต สมการนี้ใช้สัมประสิทธิ์สามตัว A, B และ C เพื่อกำหนดอุณหภูมิเป็นฟังก์ชันของความต้านทานเทอร์มิสเตอร์ สัมประสิทธิ์ทั้งสามนี้มาจากไหน? ผู้ผลิตบางรายให้ค่าสัมประสิทธิ์เหล่านี้กับโพรบวัดอุณหภูมิ NTC ของตน และรายอื่นๆ ไม่ได้ให้ นอกจากนี้ ผู้ผลิตยังให้ค่าสัมประสิทธิ์สำหรับหัววัดอุณหภูมิที่แน่นอนหรือไม่ก็ได้ที่คุณอาจซื้อได้ และค่าสัมประสิทธิ์น่าจะเป็นตัวแทนของตัวอย่างขนาดใหญ่ของหัววัดอุณหภูมิทั้งหมดที่พวกเขาผลิตในช่วงระยะเวลาหนึ่ง และสุดท้าย ฉันไม่สามารถหาค่าสัมประสิทธิ์ของโพรบที่ใช้ในการออกแบบนี้ได้

หากไม่มีค่าสัมประสิทธิ์ที่จำเป็น ฉันได้สร้าง Steinhart-Hart Spreadsheet ซึ่งเป็นเครื่องคิดเลขที่ใช้สเปรดชีตที่ช่วยในการสร้างสัมประสิทธิ์ที่จำเป็นสำหรับหัววัดอุณหภูมิ NTC (ฉันทำลิงก์ไปยังเครื่องคิดเลขบนเว็บที่คล้ายกันซึ่งฉันใช้เมื่อหลายปีก่อนหายไป ดังนั้นฉันจึงสร้างอันนี้ขึ้นมา). เพื่อหาค่าสัมประสิทธิ์ของหัววัดอุณหภูมิ ฉันเริ่มต้นด้วยการวัดค่าตัวต้านทาน 33k ที่ใช้ในตัวแบ่งแรงดันไฟฟ้าด้วยโอห์มมิเตอร์แบบดิจิตอล แล้วป้อนค่าลงในพื้นที่สีเหลืองของสเปรดชีตที่ระบุว่า "ตัวต้านทาน" ต่อไป ฉันวางหัววัดอุณหภูมิในสามสภาพแวดล้อม อุณหภูมิห้องแรก น้ำแข็งก้อนที่สอง และน้ำเดือดที่สาม พร้อมด้วยเทอร์โมมิเตอร์ดิจิตอลที่แม่นยำที่รู้จัก และให้เวลาสำหรับอุณหภูมิบนเทอร์โมมิเตอร์และจำนวนอินพุตเทอร์มิสเตอร์ที่ปรากฏบนจอแสดงผล WiFi Kit 32 (เพิ่มเติมในภายหลัง) เพื่อรักษาเสถียรภาพ เมื่อทั้งอุณหภูมิและจำนวนอินพุตของเทอร์มิสเตอร์คงที่แล้ว ฉันจึงป้อนอุณหภูมิที่ระบุโดยเทอร์โมมิเตอร์ที่แม่นยำที่รู้จักและจำนวนเทอร์มิสเตอร์ที่ปรากฏบนจอแสดงผลของชุด WiFi 32 ลงในพื้นที่สีเหลืองของสเปรดชีตที่ระบุว่า "องศา F จากเทอร์โมมิเตอร์" และ "AD นับจาก WiFi Kit 32" ตามลำดับ สำหรับแต่ละสภาพแวดล้อมในสามสภาพแวดล้อม เมื่อป้อนการวัดทั้งหมดแล้ว พื้นที่สีเขียวของสเปรดชีตจะให้ค่าสัมประสิทธิ์ A, B และ C ที่กำหนดโดยสมการสไตน์ฮาร์ต-ฮาร์ต จากนั้นจึงคัดลอกและวางลงในซอร์สโค้ด

ดังที่ได้กล่าวไว้ก่อนหน้านี้ ผลลัพธ์ของสมการสไตน์ฮาร์ต-ฮาร์ตอยู่ในหน่วยองศาเคลวิน และการออกแบบนี้แสดงองศาฟาเรนไฮต์ การแปลงจากองศาเคลวินเป็นองศาฟาเรนไฮต์มีดังนี้:

ขั้นแรก แปลงองศาเคลวินเป็นองศาเซลเซียสโดยลบ 273.15 (องศาเคลวิน) จากสมการสไตน์ฮาร์ต-ฮาร์ต:

องศา C = (A + (B * (ล็อก (เทอร์มิสเตอร์))) + (ล็อก C * (เทอร์มิสเตอร์) * บันทึก (เทอร์มิสเตอร์) * บันทึก (เทอร์มิสเตอร์))) - 273.15

ประการที่สอง แปลงองศาเซลเซียสเป็นองศาฟาเรนไฮต์ดังนี้

องศา F = ((องศา C * 9) / 5) + 32

เมื่อสมการ Steinhart-Hart และสัมประสิทธิ์สมบูรณ์ ต้องใช้สมการที่สองเพื่ออ่านเอาต์พุตตัวแบ่งตัวต้านทาน แบบจำลองของตัวแบ่งตัวต้านทานที่ใช้ในการออกแบบนี้คือ:

vRef<---เทอร์มิสเตอร์<---vOut<---ตัวต้านทาน<---กราวด์

ที่ไหน:

  • vRef ในการออกแบบนี้คือ 3.3vdc
  • เทอร์มิสเตอร์คือโพรบอุณหภูมิ NTC ที่ใช้ในตัวแบ่งตัวต้านทาน
  • vOut คือแรงดันเอาต์พุตของตัวแบ่งตัวต้านทาน
  • ตัวต้านทานคือตัวต้านทาน 33k ที่ใช้ในตัวแบ่งตัวต้านทาน
  • และพื้นดินก็คือพื้นดิน

v ตัวแบ่งตัวต้านทานออกจากการออกแบบนี้ต่ออยู่กับอินพุตอะนาล็อก WiFi Kit 32 A0 (พิน 36) และเอาต์พุตแรงดันไฟฟ้าของตัวแบ่งตัวต้านทานคำนวณได้ดังนี้:

vOut = vRef * ตัวต้านทาน / (ตัวต้านทาน + เทอร์มิสเตอร์)

อย่างไรก็ตาม ดังที่ระบุไว้ในสมการสไตน์ฮาร์ต-ฮาร์ต ค่าความต้านทานเทอร์มิสเตอร์เป็นสิ่งจำเป็นเพื่อให้ได้อุณหภูมิ ไม่ใช่แรงดันเอาต์พุตของตัวแบ่งตัวต้านทาน ดังนั้นการจัดเรียงสมการใหม่เพื่อให้ได้ค่าเทอร์มิสเตอร์จึงต้องใช้พีชคณิตเล็กน้อยดังนี้

คูณทั้งสองข้างด้วย "(ตัวต้านทาน + เทอร์มิสเตอร์)" ส่งผลให้:

vOut * (ตัวต้านทาน + เทอร์มิสเตอร์) = vRef * ตัวต้านทาน

หารทั้งสองข้างด้วย "vOut" ส่งผลให้:

ตัวต้านทาน + เทอร์มิสเตอร์ = (vRef * ตัวต้านทาน) / vOut

ลบ "ตัวต้านทาน" จากทั้งสองด้านส่งผลให้:

เทอร์มิสเตอร์ = (vRef * ตัวต้านทาน / vOut) - ตัวต้านทาน

และสุดท้าย ใช้คุณสมบัติการกระจาย ทำให้ง่ายขึ้น:

เทอร์มิสเตอร์ = ตัวต้านทาน * ((vRef / vOut) - 1)

แทนที่ WiFi Kit 32 A0 จำนวนอินพุตแบบอะนาล็อกที่ 0 ถึง 4095 สำหรับ vOut และแทนที่ค่า 4096 สำหรับ vRef สมการตัวแบ่งตัวต้านทานที่ให้ค่าความต้านทานเทอร์มิสเตอร์ที่กำหนดโดยสมการ Steinhart-Hart จะกลายเป็น:

เทอร์มิสเตอร์ = ตัวต้านทาน * ((4096 / จำนวนอินพุตแบบอะนาล็อก) - 1)

ด้วยคณิตศาสตร์ที่อยู่เบื้องหลังเรา เรามาประกอบอุปกรณ์อิเล็กทรอนิกส์กันเถอะ

ขั้นตอนที่ 2: การประกอบอุปกรณ์อิเล็กทรอนิกส์

การประกอบอิเล็คทรอนิคส์
การประกอบอิเล็คทรอนิคส์
การประกอบอิเล็คทรอนิคส์
การประกอบอิเล็คทรอนิคส์
การประกอบอิเล็คทรอนิคส์
การประกอบอิเล็คทรอนิคส์

สำหรับอุปกรณ์อิเล็กทรอนิกส์ ก่อนหน้านี้ฉันได้ประกอบ ESP32 Capacitive Touch Demonstrator https://www.instructables.com/id/ESP32-Capacitive… ด้วยการประกอบนั้น จำเป็นต้องมีส่วนประกอบเพิ่มเติมดังต่อไปนี้:

  • เส้นลวด 28awg ห้าเส้น 4 นิ้ว (สีแดง 1 เส้น สีดำ 1 เส้น สีเหลือง 1 เส้น และสีเขียว 2 เส้น)
  • หนึ่ง หัววัด "ET-72 Temperature Probe" Maverick (https://www.maverickthermometers.com/product/pr-003/)
  • ขั้วต่อ "โทรศัพท์" ขนาด 2.5 มม. หนึ่งตัว ตัวยึดแผง (https://www.mouser.com/ProductDetail/502-TR-2A)
  • ตัวต้านทาน 33k ohm 1% 1/8 วัตต์หนึ่งตัว
  • หนึ่ง piezo buzzer https://www.adafruit.com/product/160 หากคุณเลือกเสียง Piezo Buzzer อื่น ตรวจสอบให้แน่ใจว่าตรงกับข้อกำหนดของเครื่องนี้ (ขับเคลื่อนด้วยคลื่นสี่เหลี่ยม <= เอาต์พุตปัจจุบันของ ESP32)

ในการประกอบส่วนประกอบเพิ่มเติม ฉันได้ทำตามขั้นตอนต่อไปนี้:

  • ปอกและชุบปลายสายไฟแต่ละเส้นยาว 4 นิ้วตามที่แสดง
  • บัดกรีปลายด้านหนึ่งของสายสีเหลืองและปลายด้านหนึ่งของตัวต้านทาน 33k ohm เข้ากับพิน "เคล็ดลับ" ของขั้วต่อโทรศัพท์
  • บัดกรีปลายสายสีดำด้านหนึ่งไปยังปลายด้านที่ว่างของตัวต้านทาน 33k ohm และตัดลวดตัวต้านทานส่วนเกินออก
  • ใช้ท่อหดด้วยความร้อนเหนือสายไฟและตัวต้านทาน
  • บัดกรีปลายสายสีแดงด้านหนึ่งเข้ากับพิน "ปลอก" ที่ขั้วต่อโทรศัพท์
  • บัดกรีปลายสายสีเหลืองที่ว่างเพื่อตรึง 36 บน WiFi Kit 32
  • บัดกรีปลายสายสีดำที่ว่างเข้ากับพิน GND บน WiFi Kit 32
  • บัดกรีปลายสายสีแดงที่ว่างเข้ากับพิน 3V3 บน WiFi Kit 32
  • บัดกรีลวดสีเขียวหนึ่งเส้นกับตะกั่วหนึ่งอันของออดแบบเพียโซ
  • บัดกรีลวดสีเขียวที่เหลือกับตะกั่วที่เหลือของออดแบบเพียโซ
  • บัดกรีปลายสายพายโซสีเขียวสายใดเส้นหนึ่งเพื่อตรึง 32 บน WiFi Kit 32
  • บัดกรีปลายสายพายโซสีเขียวที่เหลืออยู่กับพิน GND บน WiFi Kit 32
  • เสียบหัววัดอุณหภูมิเข้ากับช่องเสียบโทรศัพท์

เมื่อเดินสายทั้งหมดเสร็จแล้ว ฉันตรวจสอบงานของฉันอีกครั้ง

ขั้นตอนที่ 3: การติดตั้งซอฟต์แวร์

การติดตั้งซอฟต์แวร์
การติดตั้งซอฟต์แวร์

ไฟล์ "AnalogInput.ino" เป็นไฟล์สภาพแวดล้อม Arduino ที่มีซอฟต์แวร์สำหรับการออกแบบ นอกเหนือจากไฟล์นี้ คุณจะต้องมีไลบรารีกราฟิก "U8g2lib" สำหรับจอแสดงผล WiFi Kit32 OLED (ดู https://github.com/olikraus/u8g2/wiki สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีนี้)

ด้วยไลบรารีกราฟิก U8g2lib ที่ติดตั้งในไดเร็กทอรี Arduino ของคุณและโหลด "AnalogInput.ino" ในสภาพแวดล้อม Arduino ให้คอมไพล์และดาวน์โหลดซอฟต์แวร์ลงใน WiFi Kit 32 เมื่อดาวน์โหลดและใช้งาน บรรทัดบนสุดของจอแสดงผล OLED บน WiFi Kit 32 ควรอ่าน "อุณหภูมิ" โดยแสดงอุณหภูมิปัจจุบันเป็นข้อความขนาดใหญ่ตรงกลางหน้าจอ

แตะปุ่มกลาง (T5) เพื่อแสดงหน้าจอ "ตั้งอุณหภูมิปลุก" ปรับอุณหภูมิการเตือนโดยกดปุ่มซ้าย (T4) หรือปุ่มขวา (T6) ตามที่อธิบายไว้ในบทนำ ในการทดสอบการเตือน ให้ปรับอุณหภูมิการเตือนให้เท่ากับหรือต่ำกว่าอุณหภูมิปัจจุบัน และควรส่งเสียงเตือน เมื่อตั้งค่าอุณหภูมิการเตือนเสร็จแล้ว ให้แตะปุ่มกลางเพื่อกลับไปยังการแสดงอุณหภูมิ

ค่า dProbeA, dProbeB, dProbeC และ dResistor ในซอฟต์แวร์คือค่าที่ฉันกำหนดระหว่างการสอบเทียบหัววัดที่ฉันใช้ในการออกแบบนี้ และควรสร้างการอ่านค่าอุณหภูมิที่แม่นยำภายในไม่กี่องศา หากไม่เป็นเช่นนั้น หรือหากต้องการความแม่นยำสูงขึ้น การสอบเทียบจะดำเนินการต่อไป

ขั้นตอนที่ 4: การปรับเทียบหัววัดอุณหภูมิ NTP

การปรับเทียบหัววัดอุณหภูมิ NTP
การปรับเทียบหัววัดอุณหภูมิ NTP

รายการต่อไปนี้จำเป็นสำหรับการสอบเทียบหัววัดอุณหภูมิ:

  • หนึ่งโอห์มมิเตอร์แบบดิจิตอล
  • เทอร์โมมิเตอร์แบบดิจิตอลที่แม่นยำซึ่งเป็นที่รู้จักซึ่งมีความสามารถตั้งแต่ 0 ถึง 250 องศาฟาเรนไฮต์
  • น้ำน้ำแข็งหนึ่งแก้ว
  • น้ำเดือดหนึ่งหม้อ (ระวังให้มาก!)

เริ่มต้นด้วยการรับค่าตัวต้านทาน 33k จริง:

  • ถอดไฟออกจากบอร์ด WiFi Kit 32
  • ถอดหัววัดอุณหภูมิออกจากขั้วต่อโทรศัพท์ (อาจจำเป็นต้องถอดสายสีดำออกจากชุด WiFi 32 ด้วย ทั้งนี้ขึ้นอยู่กับโอห์มมิเตอร์แบบดิจิตอลของคุณ)
  • เปิดสเปรดชีต Steinhart-Hart
  • วัดค่าของตัวต้านทาน 33k ohm โดยใช้โอห์มมิเตอร์แบบดิจิตอลและป้อนลงในกล่อง "ตัวต้านทาน" สีเหลืองในสเปรดชีตและลงในตัวแปร "dResistor" ในซอฟต์แวร์ แม้ว่าสิ่งนี้อาจดูมากเกินไป แต่ตัวต้านทาน 33k ohm 1% สามารถส่งผลต่อความแม่นยำของการแสดงอุณหภูมิได้อย่างแท้จริง
  • เสียบหัววัดอุณหภูมิเข้ากับช่องเสียบโทรศัพท์

ต่อไป รับค่าสัมประสิทธิ์ Steinhart-Hart:

  • เปิดเครื่องวัดอุณหภูมิดิจิตอลที่แม่นยำซึ่งเป็นที่รู้จัก
  • เสียบแหล่งพลังงาน USB เข้ากับ WiFi Kit 32
  • กดปุ่มซ้าย (T4) และขวา (T6) พร้อมกันค้างไว้จนกระทั่งหน้าจอ "Thermistor Counts" ปรากฏขึ้น
  • อนุญาตให้ทั้งเทอร์โมมิเตอร์แบบดิจิตอลและเทอร์มิสเตอร์นับแสดงให้คงที่
  • ป้อนอุณหภูมิและเทอร์มิสเตอร์นับเป็นคอลัมน์สีเหลือง "องศา F จากเทอร์โมมิเตอร์" และ "จำนวนโฆษณาจาก ESP32" สีเหลืองในแถว "ห้อง"
  • ใส่ทั้งเทอร์โมมิเตอร์แบบดิจิตอลและโพรบเทอร์มิสเตอร์ลงในน้ำน้ำแข็ง และปล่อยให้จอแสดงผลทั้งสองมีเสถียรภาพ
  • ป้อนอุณหภูมิและเทอร์มิสเตอร์นับเป็นคอลัมน์สีเหลือง "Degrees F จากเทอร์โมมิเตอร์" และ "AD Counts from ESP32" ในแถว "น้ำเย็น"
  • ใส่ทั้งเทอร์โมมิเตอร์แบบดิจิตอลและโพรบเทอร์มิสเตอร์ลงในน้ำเดือด และปล่อยให้จอแสดงผลทั้งสองมีเสถียรภาพ
  • ป้อนอุณหภูมิและเทอร์มิสเตอร์นับเป็นคอลัมน์สีเหลือง "Degrees F จากเทอร์โมมิเตอร์" และ "AD Counts from ESP32" ในแถว "Boiling Water"
  • คัดลอกสัมประสิทธิ์ "A:" สีเขียวลงในตัวแปร "dProbeA" ในซอร์สโค้ด
  • คัดลอกสัมประสิทธิ์ "B:" สีเขียวลงในตัวแปร "dProbeB" ในซอร์สโค้ด
  • คัดลอกสัมประสิทธิ์ "C:" สีเขียวลงในตัวแปร "dProbeC" ในซอร์สโค้ด

รวบรวมและดาวน์โหลดซอฟต์แวร์ลงใน WiFi Kit 32

ขั้นตอนที่ 5: การพิมพ์เคสและการประกอบขั้นสุดท้าย 3 มิติ

การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย
การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย
การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย
การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย
การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย
การพิมพ์ 3 มิติเคสและการประกอบขั้นสุดท้าย

ฉันพิมพ์ทั้ง "Case, Top.stl" และ "Case, Bottom.stl" ที่ความสูงของเลเยอร์.1 มม. เติม 50% โดยไม่มีการรองรับ

เมื่อพิมพ์เคสแล้ว ฉันประกอบอุปกรณ์อิเล็กทรอนิกส์และเคสดังนี้:

  • ฉันถอดสายไฟออกจากปลั๊กสามรู กดรูเสียบให้อยู่ในตำแหน่ง "Case, Top.stl" จากนั้นบัดกรีสายไฟอีกครั้งกับปลั๊กรู โดยสังเกตที่ด้านซ้าย (T4) ตรงกลาง (T5) และด้านขวาอย่างระมัดระวัง (T6) สายไฟและปุ่มต่างๆ
  • ยึดขั้วต่อโทรศัพท์เข้ากับรูกลมใน "Case, Bottom.stl" โดยใช้น็อตที่ให้มา
  • วางตำแหน่งเสียง piezo ไว้ในชุดประกอบด้านล่างของเคสถัดจากขั้วต่อโทรศัพท์ และยึดให้แน่นด้วยเทปสองด้าน
  • เลื่อนชุด WiFi 32 เข้าไปในตำแหน่งในชุดประกอบด้านล่างของเคส ตรวจสอบให้แน่ใจว่าพอร์ต USB บนชุด WiFi 32 อยู่ในแนวเดียวกับรูวงรีที่ด้านล่างของเคส (อย่ากดที่จอแสดงผล OLED เพื่อจัดตำแหน่งชุด WiFi 32 ไว้ที่ด้านล่างของเคส แอสเซมบลี เชื่อฉันในอันนี้ อย่าทำ!)
  • กดส่วนประกอบด้านบนของเคสเข้ากับส่วนประกอบด้านล่างของเคสและยึดเข้าที่โดยใช้กาวไซยาโนอะคริเลตหนาจุดเล็กๆ ที่มุม

ขั้นตอนที่ 6: เกี่ยวกับซอฟต์แวร์

เกี่ยวกับซอฟต์แวร์
เกี่ยวกับซอฟต์แวร์

ไฟล์ "AnalogInput.ino" เป็นการแก้ไขไฟล์ "Buttons.ino" จาก "https://www.instructables.com/id/ESP32-Capacitive-Touch-Buttons/" ที่สอนได้ก่อนหน้านี้ของฉัน ฉันได้แก้ไขโค้ดต้นฉบับสามส่วน "setup()", "loop()" และ "InterruptService()" เพื่อรวมซอฟต์แวร์สำหรับโพรบและสัญญาณเตือน และฉันได้เพิ่มส่วนโค้ดเพิ่มเติมอีกสามส่วน "Analog()", "Buttons()" และ "Display()" เพื่อล้าง "loop()" และเพิ่มซอฟต์แวร์ที่จำเป็นสำหรับโพรบและสัญญาณเตือน

"Analog()" มีรหัสที่จำเป็นในการอ่านการนับเทอร์มิสเตอร์ในอาร์เรย์ หาค่าเฉลี่ยอาร์เรย์ของการนับ ใช้ตัวแบ่งแรงดันไฟฟ้าเพื่อสร้างค่าเทอร์มิสเตอร์ และสุดท้ายใช้สมการสไตน์ฮาร์ต-ฮาร์ตและสมการการแปลงอุณหภูมิเพื่อสร้างองศาฟาเรนไฮต์

"Buttons()" มีรหัสที่จำเป็นในการประมวลผลการกดปุ่มและแก้ไขอุณหภูมิการเตือน

"Display()" มีโค้ดที่จำเป็นในการนำเสนอข้อมูลบนจอแสดงผล OLED

หากคุณมีคำถามหรือความคิดเห็นใดๆ เกี่ยวกับโค้ด หรือแง่มุมอื่นๆ ของคำแนะนำนี้ อย่าลังเลที่จะถามและเราจะพยายามอย่างเต็มที่เพื่อตอบคำถามเหล่านั้น

ฉันหวังว่าคุณจะสนุกกับมัน (และยังคงตื่นอยู่)!

ขั้นตอนที่ 7: "โครงการที่จะเกิดขึ้น"

NS
NS

โปรเจ็กต์ที่จะเกิดขึ้น "Intelligrill® Pro" เป็นเครื่องตรวจสอบผู้สูบบุหรี่ที่มีหัววัดอุณหภูมิแบบคู่ซึ่งมี:

  • การคำนวณหัววัดอุณหภูมิ Steinhart-Hart (ตรงข้ามกับตาราง "ค้นหา") เพื่อความแม่นยำที่เพิ่มขึ้นตามที่รวมอยู่ในคำแนะนำนี้
  • เวลาที่คาดการณ์ว่าจะเสร็จสมบูรณ์บนโพรบ 1 ที่รวมความแม่นยำที่เพิ่มขึ้นซึ่งได้มาจากการคำนวณของสไตน์ฮาร์ต-ฮาร์ต
  • หัววัดที่สอง หัววัด 2 สำหรับตรวจสอบอุณหภูมิของผู้สูบบุหรี่ (จำกัดที่ 32 ถึง 399 องศา)
  • การควบคุมอินพุตแบบสัมผัสแบบ Capacitive (เช่นเดียวกับในคำสั่งก่อนหน้า)
  • การตรวจสอบระยะไกลโดยใช้ WIFI (ด้วยที่อยู่ IP คงที่ช่วยให้สามารถตรวจสอบความคืบหน้าของผู้สูบบุหรี่ได้จากทุกที่ที่มีการเชื่อมต่ออินเทอร์เน็ต)
  • ช่วงอุณหภูมิขยาย (32 ถึง 399 องศา)
  • เสียงเตือนเมื่อเสร็จสิ้นทั้งภายในตัวส่งสัญญาณ Intelligrill® และอุปกรณ์ตรวจสอบ WiFi ส่วนใหญ่ได้
  • แสดงอุณหภูมิได้ทั้ง องศา F หรือ องศา C
  • รูปแบบเวลาใน HH:MM:SS หรือ HH:MM แบตเตอรี่แสดงเป็นโวลต์หรือ% ที่ชาร์จ
  • และเอาต์พุต PID สำหรับผู้สูบบุหรี่ที่ใช้สว่าน

"Intelligrill® Pro" ยังคงทำการทดสอบเพื่อให้เป็น Intelligrill® ที่ใช้ HTML ที่มีคุณลักษณะครบถ้วนและเชื่อถือได้มากที่สุด ยังอยู่ในระหว่างการทดสอบ แต่ด้วยอาหารที่ช่วยในการเตรียมระหว่างการทดสอบ ฉันได้รับมากกว่าสองสามปอนด์

อีกครั้งฉันหวังว่าคุณจะสนุกกับมัน!

แนะนำ: