กลับไปหน้ารวมไฟล์
rims-arduino-library-e2251a.md

ไลบรารีตัวนี้เอาไว้ควบคุมระบบ RIMS สำหรับนักชงเบียร์โฮมเมดทั้งหลาย ถ้ายังไม่รู้ว่า RIMS คืออะไร ก็ลองไปหาอ่านดูได้ตามเว็บทั่วไปเลย

สำหรับพี่แล้ว การใช้บอร์ด Arduino ร่วมกับจอ LCD Keypad Shield มันถูกกว่าและปรับแต่งได้ลึกกว่าพวกคอนโทรลเลอร์ PID แบบสำเร็จรูปตั้งเยอะ! ด้วยไลบรารีตัวนี้ เราก็ไม่ต้องไปซื้อ PID แพงๆ อีกแล้ว แถมมันยังมีชุดเครื่องมือสำหรับปรับค่า PID อัตโนมัติให้ด้วยนะ อ่านอุณหภูมิได้ทั้งจากเทอร์มิสเตอร์, RTD หรือเซ็นเซอร์แบบอื่นที่เราออกแบบเอง ส่วนการควบคุมฮีตเตอร์ก็ใช้วิธี PWM ผ่าน Solid-State Relay (SSR) งานนี้จัดไปวัยรุ่น!

ด้านเทคนิค: FSM และ Logic

โปรเจคนี้เป็นการลงลึกเรื่องซอฟต์แวร์และระบบฝังตัวสมรรถนะสูงเลยทีเดียว มันใช้ Finite State Machine (FSM) เฟรมเวิร์กเฉพาะทาง เพื่อจัดโครงสร้างโค้ดสำหรับโปรเจคที่ซับซ้อน มีหลายสถานะ พร้อมกับตรรกะซอฟต์แวร์ที่แข็งแรง

  • เลเยอร์ Software Architecture: ไลบรารี RIMS (Recursive Implementation of State-machines) ให้วิธีที่เป็นทางการในการนิยาม "สถานะ" (เช่น IDLE, RUNNING, ERROR) และ "การเปลี่ยนสถานะ" ระหว่างพวกมัน โดยอิงจากอินพุตเซ็นเซอร์
  • เลเยอร์ Timing Logic: ใช้ฟังก์ชัน millis() ในการจัดการการเปลี่ยนสถานะตามเวลา โดยไม่บล็อกลูปหลักของการทำงาน
  • เลเยอร์ Input: ปุ่มกดหลายๆ ปุ่มทำหน้าที่เป็นตัวกระตุ้นเปลี่ยนสถานะ พาระบบไปยังพฤติกรรมต่างๆ ที่โปรแกรมไว้
  • เลเยอร์ Display: จอ LCD เป็นทางเลือกที่ชัดเจนและปรับใช้ได้หลากหลายในการแสดง "สถานะปัจจุบัน" และข้อมูลเทเลเมทรีที่เกี่ยวข้องแบบเรียลไทม์

อุปกรณ์ฮาร์ดแวร์

  • Arduino Uno: โฮสต์หลักสำหรับไลบรารี RIMS และตรรกะ FSM พร้อมการเปลี่ยนสถานะทั้งหมด
  • LCD Keypad Shield (หรือแบบอื่นที่คล้ายกัน): ให้ส่วนติดต่อผู้ใช้, จอแสดงผล และการควบคุมอินพุต ภาพด้านล่างแสดงหน้าจออินเตอร์เฟซต่างๆ
  • Solid-State Relay (SSR): ควบคุมฮีตเตอร์ผ่าน PWM
  • Temperature Sensor: เป็นเทอร์มิสเตอร์, RTD หรือโพรบแบบอื่นก็ได้
  • Hall Effect Flow Sensor: ตรวจสอบการไหลของของเหลวเพื่อความปลอดภัย
  • External Speaker: สำหรับสัญญาณเตือนเสียง
  • Jumper Wires & Power Supply: สำหรับเชื่อมต่ออุปกรณ์ทั้งหมด

ฟีเจอร์และหน้าจอผู้ใช้

  • หน้าจอผู้ใช้ สร้างด้วย DFRobot LCD Keypad Shield for Arduino หรือของที่คล้ายกัน (ปรับแต่งเองได้นะจ๊ะ)
  • การทำงานของฮีตเตอร์: ควบคุมแบบสัดส่วนเวลา (Time Proportioning) ด้วยรีเลย์สถานะแข็ง (SSR) หรือแบบ PWM, มีไฟ LED แสดง Duty Cycle ให้ดู
  • เซ็นเซอร์วัดอุณหภูมิ: อ่านค่า RTD ด้วยเครื่องขยายสัญญาณและคำนวณแบบ Cubic Fitting, อ่านค่าธอร์มิสเตอร์ด้วยวงจรแบ่งแรงดัน, รองรับโพรบวัดอุณหภูมิแบบกำหนดเอง, มีการกรองสัญญาณก่อนส่งเข้า PID
  • ระบบควบคุมอุณหภูมิ PID แบบอัพเกรด: มีตัวกรองอนุพันธ์ (Derivative Filter), ระบบป้องกัน Windup แบบ Smart Integration Clamping, รองรับหลายคอนโทรลเลอร์ (สูงสุด 4 ตัว, เลือกได้) สำหรับปริมาณน้ำที่แตกต่างกัน
  • ปรับค่า PID อัตโนมัติ: Autotuner ใช้วิธี Relay Identification, Fourier Analysis และ Ziegler-Nichols
  • ปรับค่า PID แบบมือ: มีเครื่องมือสำหรับหาโมเดลของกระบวนการ (Process Model Identification)
  • ตรวจจับเบรกเกอร์ฮีตเตอร์ดับ: ใช้กับแหล่งจ่ายไฟ DC 5V ใดก็ได้
  • ตัวจับเวลานับถอยหลัง ที่จะเริ่มทำงานก็ต่อเมื่ออุณหภูมิถึงจุดที่ตั้งไว้แล้วเท่านั้น
  • บันทึกข้อมูล: สื่อสารผ่านพอร์ตอนุกรมง่ายๆ (พอร์ต USB), หน่วยความจำแฟลช SPI (Winbond 1 Mbytes), เมนู USB สำหรับเข้าถึงข้อมูลการต้มบนแฟลช SPI (โดยกดปุ่ม <OK> ค้างไว้ตอนเปิดเครื่อง)
  • เซ็นเซอร์วัดการไหลแบบ Hall Effect: ปิดฮีตเตอร์อัตโนมัติถ้าอัตราการไหลต่ำเกินไป
  • ระบบเตือนด้วยลำโพงภายนอก: สำหรับข้อผิดพลาดต่างๆ เช่น การไหลผิดปกติ/โพรบวัดอุณหภูมิหลุด, ตัวจับเวลาหมด, ไม่มีแรงดันที่ฮีตเตอร์ โดยแต่ละการเตือนจะมีความถี่เสียงต่างกัน (แยกเสียงเตือนได้)

แผนพัฒนาต่อไป

  • รวมแดชบอร์ดแสดงตัวตนด้วย OLED: เพิ่มจอ OLED ขนาดเล็กเพื่อแสดงแถบชีวิต (Life Bar) ที่ใหญ่ขึ้นและแผนผัง "สถานะแบบเรียลไทม์"
  • รองรับการเชื่อมต่อเซ็นเซอร์ไบโอ-ซีเคียวริตี้หลายตัว: เชื่อมต่อเซ็นเซอร์หลายชนิด (เช่น อัลตราโซนิกหรืออินฟราเรด) เพื่อให้ระบบเปลี่ยนสถานะได้เองโดยอัตโนมัติโดยไม่ต้องรอคำสั่งจากผู้ใช้
  • ซิงค์ข้อมูลลงทะเบียนกับอินเทอร์เฟซคลาวด์: เพิ่มโมดูล WiFi (ESP8266/ESP32) และเชื่อมต่อกับแดชบอร์ดบนคลาวด์เพื่อควบคุมและติดตามข้อมูลสถานะจากสมาร์ทโฟนของคุณได้อย่างแม่นยำ
  • รองรับการปรับแต่งโปรไฟล์ความเร็วขั้นสูง: เพิ่มสไลด์หรือโพเทนชิออมิเตอร์เล็กๆ สำหรับปรับค่า "ขีดจำกัดเวลา" ภายในแต่ละการเปลี่ยนสถานะด้วยมือ

RIMS Arduino Library เป็นโปรเจกต์ที่เหมาะมากสำหรับใครก็ตามที่ชอบโค้ดและกำลังมองหาเครื่องมือสำหรับการเขียนโปรแกรมแบบมีโครงสร้างที่สนุกและมีส่วนร่วม!

ลิงก์โปรเจกต์: ไปหาดูกันได้ที่แหล่งเก็บโค้ดหลักเลยจ้า

ข้อมูล Frontmatter ดั้งเดิม

title: "RIMS Library ตึงๆ สำหรับ Arduino วัยรุ่นสายชง"
description: "Library เทพๆ สำหรับควบคุมระบบ RIMS (Re-circulation Infusion Mash System) งานง่ายแต่หล่อ เอาไว้จัดการเซนเซอร์ มอเตอร์ และ Interrupt ทั้งหลายให้รันได้ฉลุยบน Arduino"
author: "francisgagnon9"
category: "Lab Stuff"
tags:
  - "beer"
  - "autotuner"
  - "homebrew"
views: 6797
likes: 2
price: 1499
difficulty: "Intermediate"
components:
  - "1x Any 5V DC power supply"
  - "1x Arduino UNO"
  - "1x Windbond W25Q80BV - 1 MByte SPI Flash"
  - "1x Any old PC speaker (or buzzer)"
  - "1x LCD Keypad Shield For Arduino"
  - "1x Hall effect flow sensor"
  - "1x Temperature probe : any PT-100 RTD"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "f569e26453f5ee757fcc115754bf8ba1c6405560244f34f77e2e8112ea4e59a1"
encryptedPayload: "U2FsdGVkX1+cThYWlCh6LYr5j1tfhClYOIkflnUHPUv/odfOREOgb3jFsCzDjkOiWRPNTyP82/Mmu69lhd9MN6ebsYoUqCb3OtsC3aKPRFw="
seoDescription: "RIMS Arduino Library for Re-circulation infusion mash systems. Automate and control mash temperature with Arduino."
videoLinks:
  - "https://www.youtube.com/embed/BcqXruYyhZ8"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rims-arduino-library-e2251a_cover.png"
lang: "en"