วันศุกร์ที่ 13 พฤษภาคม พ.ศ. 2559

การทำ PID Control ใช้ควบคุม Relay แบบ DIY


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

       ในงานชุดนี้เราจะทำ PID control ใช้ร่วมกับ sensor SHT15 ที่ใช้วัดได้ทั้งอุณหภูมิและความชื้นสัมพัทธ์ ในส่วน sensor ผู้อ่านสามารถเปลี่ยนเป็น sensor ใดๆ ก็ได้ แต่ต้องทราบวิธีต่อใช้งานและต้องแก้ code เพื่อใช้ร่วมกับ sensor เบอร์อื่นๆ แต่ในบทความนี้จะกล่าวแค่วิธีการต่อกับ SHT15 เท่านั้น ไปดูกันเลยว่าเราต้องใช้อุปกรณ์อะไรบ้าง

ภาพอุปกรณ์ที่ต้องใช้ในการทำ PID ควบคุม Relay แบบ DIY
1. สาย usb สำหรับบอร์ด Arduino mega 2560 r3
2. บอร์ด Arduino mega 2560 r3
3. LCD keypad shield V1.1
4. SSR (Solid State Relay)
5. SHT15
6. แผ่น PCB แบบไข่ปลา (ตั้งชื่อเอง ไม่รู้เรียกกันว่าอะไร)
7. Connector ขาว 4 pin
8. Pin header single row ต้องการ 6 pin (รูปอยู่ด้านล่าง)
ภาพ pin header single row
เครื่องมือที่ต้องใช้
       1. Computer
       2. หัวแร้ง
       3. ตะกั่ว

       เมื่อพร้อมแล้วก็ไปโหลดโปรแกรม Arduino IDE ใน www.arduino.org เมื่อดาวน์โหลดและทำการติดตั้งเรียบร้อย ให้ทำการติดตั้ง library อีก 2 ตัวดังนี้

       1. Sensirion สำหรับ การใช้อ่านค่าจาก SHT15 ดาวน์โหลดได้ที่ http://playground.arduino.cc/Code/Sensirion เมื่อดาวน์โหลดมาให้ทำการติดตั้ง และตัวนี้พิเศษนิดหน่อยหากตัวที่ดาวน์โหลดเป็นเวอร์ชั่น Sensirion_10Dec2010.zip
ต้องทำการแก้ไขในไฟล์ Sensirion.cpp 3 ขั้นตอน ดังนี้
1. เพิ่ม // หน้าบรรทัดที่มีข้อความว่า #include "WConstants.h"
2. เพิ่มบรรทัดที่มีข้อความดังนี้ #include "Arduino.h" หลังจากส่วนของ extern "C" { ... }" โดยต้องเพิ่มก่อนบรรทัด #include “Sensirion.h”
3. Save ไฟล์ Sensirion.cpp เป็นอันเรียบร้อยสำหรับ library นี้ 

**ปกติไฟล์ Sensirion.cpp จะอยู่ที่ \Documents\Arduino\libraries\Sensirion

       2. PID ดาวน์โหลดไฟล์ได้ที่ http://playground.arduino.cc/Code/PIDLibrary ตัวนี้เมื่อติดตั้งแล้วก็พร้อมใช้เลย

       สำหรับวิธีการติดตั้ง library ให้ทำการค้นหาใน internet ได้เองเลยมีหลายเว็บไซต์ได้ทำการอธิบายไว้อย่างละเอียดแล้ว ในบทความนี้ขอข้ามขั้นตอนนี้ไปเลย

       เมื่อ Arduino IDE ได้ทำการติดตั้ง library ไว้เรียบร้อยพร้อมใช้งานแล้วให้ดาวน์โหลดตัวโปรแกรมที่ทาง Hughed ได้ทำแจก โดยโปรแกรมที่เขียนตัวนี้มีชื่อว่า PID_For_free.ino โดยไม่สงวนลิขสิทธิ์ใดๆ ทั้งสิ้น ใครจะปรับแต่งอย่างไร อาจจะดีกว่าที่ทาง Hughed เขียนก็ไม่ผิดกฎแต่ประการใดใช้กันได้เต็มที่เลยครับ ดาวน์โหลดที่นี้


ภาพบล็อคไดอะแกรม

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

       ขั้นตอนต่อไปให้ ประกอบ Mega 2560 r3 กับ lcd keypad shield เข้าด้วยกันจะได้เหมือนในภาพต่อไปนี้
ภาพการประกอบ LCD Keypad Shield V1.1 เข้ากับ Arduino Mega 2560 r3
       เมื่อประกอบได้ตามภาพแล้วก็สามารถ burn โปรแกรมที่ทาง Hughed แจกไปได้เลย เมื่อ burn โปรแกรมลงไปแล้วก็จะได้ดังภาพต่อไปนี้

ภาพแสดงหน้าจอ LCD หลังจาก burn โปรแกรม PID_for_free.ino ลงไปแล้ว
       เมื่อได้ดังภาพด้านบนแล้วก็เข้าสู่ขั้นตอนการประกอบ sensor และ SSR (Solid State Relay) ในขั้นตอนนี้เราจะทำ connector ของ sensor, ssr เข้ากับบอร์ด mega ไม่รู้จะอธิบายอย่างไร ทำตามภาพเลยละกัน ไม่ยากครับ

ภาพแสดงมุมต่าง ๆ ของ connector

ภาพแสดงมุมต่าง ๆ ของ connector

ภาพแสดงมุมต่าง ๆ ของ connector

ภาพแสดงมุมต่าง ๆ ของ connector

       หางยาวของ pcb ที่ไม่ได้ใช้นั้นตัดทิ้งก็ได้นะครับ เมื่อประกอบเสร็จแล้วก็ต่อเข้ากับ sensor , ssr และ mega 2560 เป็นอันพร้อมใช้ ต่อไปเราก็จะตั้งค่า pid โดยในทางทฤษฏีและการทำงานจะไม่ขอกล่าวถึงตามที่เคยแจ้งไว้ในเพจ แต่จะสอนการตั้งค่า parameter หลักๆ 4 ตัว
       1. Status ; มี 2 ค่าที่ตั้งได้ คือ
           Enable เปิดการใช้งานการควบคุม Relay 
           Disable ปิดการใช้งานการควบคุม Relay
ภาพแสดงเมนู Status Relay
       2. Input ; เลือกว่าต้องการควบคุม ค่าใดระหว่าง by temp(อุณหภูมิ) หรือ by humid(ความชื้นสัมพัทธ์) 

ภาพแสดงเมนู Select Input
       3. setpoint ; ถ้าต้องการควบคุมอุณหภูมิ setpoint ก็คือค่าอุณหภูมิที่ต้องการ, ถ้าควบคุมความชื้น setpoint ก็คือ ค่าความชื้นสัมพัทธ์ที่ต้องการ ตั้งค่าได้ตั้งแต่ 0-99

ภาพแสดงเมนู Setpoint
       4. direction ; มี 2 ค่าคือ 
        direct กล่าวคือ หากอุปกรณ์ที่ควบคุม เมื่อทำงานแล้วทำให้ input มีค่าเพิ่ม เช่น heater(อุณหภูมิเพิ่ม) , เครื่องเพิ่มความชื้น(ความชื้นเพิ่ม)
       reverse กล่าวคือ หากอุปกรณ์ที่ควบคุม เมื่อทำงานแล้วทำให้ input มีค่าลดลง เช่น แอร์(อุณหภูมิลดลง) , ระบบ EVAP(อุณหภูมิลดลงถ้าเลือกควบคุมอุณหภูมิ) 
ภาพแสดงเมนู Direction
       การตั้งค่าโปรแกรมทำได้โดยกดปุ่ม select ของ lcd keypad shield ค้างไว้ 3 วินาทีจะเข้าสู่หน้าการตั้งค่า จะปรากฏหน้า เมนูการตั้งค่าดังภาพด้านล่างนี้
ภาพ Setup Mode เข้าได้โดยกดปุ่ม Select ค้างไว้ 3 วินาที ในขณะเครื่องทำงาน
       กดปุ่ม select อีกครั้งเพื่อเข้าสู่การตั้งค่า Relay 

ภาพหลังจากเข้ามาเพื่อตั้งค่า Relay 
       กดปุ่ม select อีกครั้งเพื่อเป็นการตกลง เข้าไปตั้งค่า 3 ค่า คือ status, input, setpoint และ direction เมื่อตั้งค่าเสร็จแล้วกด reset 1 ครั้ง เพื่อเป็นการเริ่มโปรแกรมใหม่เป็นอันเรียบร้อย 
      
       สงสัยหรือติดปัญหาสามารถสอบถามได้บน fb ของทาง hughed คลิ๊กที่นี้


12 ความคิดเห็น:

  1. ขอโค๊ดมาศึกษาต่อได้ไม่คับ

    ตอบลบ
    คำตอบ
    1. ทั้งหมด แจกอยู่ในบทความอยู่แล้วนะครับ

      ลบ
  2. แล้วเชื่อมต่อกับแอปอย่างไงครับ

    ตอบลบ
    คำตอบ
    1. ตัวที่แจกฟรีโค้ดฟรีตัวนี้ไม่สามารถเชื่อมต่อแอปได้นะครับ ส่วนตัวที่เป็นข่าวอยู่ในระหว่างการจัดเตรียมโครงการเพื่อให้ได้ใช้งานกันครับ

      ลบ
  3. มีขายสำเร็จเลยมั๊ยล่ะ ทำไม่เป็น 0818331870,0655039544

    ตอบลบ
    คำตอบ
    1. ตัวนี้ไม่ได้ทำขายครับเนื่องจากอยากให้ได้ใช้งานกันในราคาไม่แพงในส่วนของ PID Control ครับผม ส่วนตัวที่เป็นข่าวนั้นอยู่ในระหว่างการจัดเตรียมโครงการเพื่อให้ได้ใช้งานกันครับ ถ้ามีอะไรคืบหน้าจะแจ้งให้ทราบที่หน้าเพจของเรานะครับ

      ลบ
  4. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
    คำตอบ

    1. อยากทราบว่าหากต้องการควบคุม ได้ 2 Relay ทั้ง อุณหภูมิ และความชื้น ต้องทำอย่างไรบ้างครับ

      ปล. ตอนนี้กำลังทำโรงเรือนเพาะเห็ดอยู่นะครับ มาเจอบทความนี้พอดีเลย ......ขอบคุณมากครับผม

      ลบ
    2. ต้องปรับแก้โค๊ดให้มี 2 channel ครับ code ภายในลองศึกษาเพิ่มเติมนิดเดียวครับ admin เขียนไว้ให้ปรับแก้ได้ง่ายอยู่แล้วครับผม

      ลบ
  5. สงสัยว่าการความคุมแบบ pid คุมความชื้นได้อยู่ใช่ไหมครับ?? เห็นแต่ความแบบpidกับอุณหภูมิ??

    ตอบลบ
    คำตอบ
    1. สามารถควบคุมความชื้นได้ครับ ทั้งนี้ขึ้นอยู่กับแบบโรงเรือน และเราต้องเปลี่ยนในส่วนของ sensor และโค๊ดของ sensor ด้วยครับ แต่ตัวที่ขายอยู่ตามท้องตลาดทั่วไปก็มีนะครับ ที่สามารถควบคุม ได้ทั้งอุณหภูมิและความชื้นครับ

      ลบ
  6. ส่วนตัวที่เป็นข่าวนั้นอยู่ในระหว่างการจัดเตรียมโครงการเพื่อให้ได้ใช้งานกันครับ
    ขอ link ด้วยคับ

    ตอบลบ

พบกับพวกเราบน facebook