คำอธิบาย
ตรวจจับ นับชิ้นงาน และคัดแยก โลหะบนสายพานลำเลียง Automation Metal Detector + Counter + Rejector + LED Towler Light
ระบบอัตโนมัติ หรือ Automation ประกอบด้วย Hardware และ Software ที่ทำงานร่วมกัน ให้สามารถควบคุมการทำงาน ของระบบเป็นไปแบบอัตโนมัติ ระบบอัตโนมัติ นั้นจะเกี่ยวข้องกับ ระบบควบคุม Control System รวมถึงวิศวกรรมแมคคาทรอนิกส์และหุ่นยนต์พื้นฐานของระบบอัตโนมัติประกอบด้วยส่วนหลักๆคือ
- อินพุทจากเซนเซอร์ต่างๆ เซ็นเซอร์วัดความดัน Pressure sensor, เซ็นเซอร์อุลตราโซนิค Ultrasonic sensor , เซ็นเซอร์ความชื้น Humidity sensor, เซ็นเซอร์วัดก๊าซ Gas sensor, เซ็นเซอร์ตรวจจับการเคลื่อนไหวแบบพีไออาร์ PIR motion sensor, เซ็นเซอร์วัดความเร่ง Acceleration sensor, เซ็นเซอร์วัดแรง Force sensor, เซ็นเซอร์สี color sensor, เซ็นเซอร์เซ็นเซอร์วัดมุมและการหมุน gyro sensor, เซ็นเซอร์อัลตราโซนิก Ultrasonic Sensor และอื่นๆเช่น เทอร์โมไพล์
- การสื่อสาร – สายเคเบิล USB, RS485, Wi-Fi และอื่นๆ
- ตัวควบคุม เช่น MCU และอื่นๆ
- เอาท์พุท – เช่นวาล์ว, มอเตอร์, หลอดไฟ, ลำโพง และอื่นๆ
มีอะไรเตรียมไว้ให้ในชุด
- 1pcs x สายพานลำเลียง CONV-30×06-DC24
- 1pcs x BDMC04 บอร์ดอาดุยโน่ Arduino Uno R3 Compatible DIP IC CH340+USB Cable
- 1pcs x SP8001 เซนเซอร์ตรวจจับวัตถุโฟโตอิเล็กทริกแบบอินฟราเรด Infrared Photoelectric Sensor M18 NPN-NO
- 1pcs x SI0809 เซนเซอร์ตรวจจับโลหะ Inductive Proximity Sensor Detection 08mm NPN NO M18 Tube LJ18A3-8-Z/BX BLUE/YELLOW
- 2pcs x BKBP08 อุปกรณ์ติดตั้งฐานยึด ขายึด ที่ยึด Sensor Bracket Mounting Proximity M18 Aluminum 2mm
- 1pcs x RJ0001 ชุดผลักชิ้นงานไฟฟ้าสเตปมอเตอร์ Electric Pusher Rejector 12VDC
- 1pcs x RY0518 บอร์ดรีเลย์ 8CH Active H/L Contact AC250V/10A
- 1set x ชิ้นงานทรงสี่เหลี่ยมลูกบาศก์ขนาด 3 เซนติเมตร โลหะสำหรับทดสอบ 1 เซต
- 1pcs x สกรูเทอร์มินอล Screw Terminal สำหรับ Wiring สายไฟ
- 1pcs x สวิตชิ่งพาวเวอร์ซัพพลาย + สายไฟ AC Power Cord
- 1pcs x CTPD04 เครื่องนับจำนวน ดิจิตอลเคาท์เตอร์ Preset Digital Counter 6DGT9C1PRS485
- 1pcs x LTDU01 ไฟสัญญาณเตือนแสดงสถานะทาวเวอร์ไลท์ LED Tower Light Lamp BEM-X-50-3T-D DC12-24V LED Red, Yellow, Green
- อุปกรณ์ติดตั้งฐาน Plastwood-T20mm + ฉากยึด + สายไฟ
- กล่องกระบะพลาสติก
หลักการทำงาน
- ชุดทดลองคัดแยกโลหะบนสายพานลำเลียง เพื่อแยกชิ้นงานที่ เป็นโลหะ ออกจาก ชิ้นงานที่ไม่ใช่โลหะ โดยผู้เล่นจะเข้าใจถึงการทำงาน การควบคุมแบบ Manual และการควบคุมแบบ Automation เพื่อเป็นพื้นฐานไปสู่การเข้าใจ ระบบควบคุมอุตสาหกรรม Industrial Control System อีกทั้งยังก่อให้เกิดทักษะ กระตุ้นความคิด การคิดอย่างมีระบบ (System Thinking) ช่วยในการออกแบบและประยุกต์ใช้ วัสดุ, โครงสร้าง, เครื่องจักร, เครื่องมือ, ระบบ และ กระบวนการ
เงื่อนไข
- กำหนดค่าที่ต้องการนับ เพื่อให้สายพานหยุด
- เมื่อ พร็อกซิมิตี้เซนเซอร์แบบ Inductive ตรวจจับชิ้นงานที่เป็นโลหะ (สามารถเลือกเปลี่ยนเป็นโฟโต้เซนเซอร์ด้วยการเปิดคอมเม้นในโค้ด)
- Arduino จะสั่งให้ชุดเคาเตอร์ Counter นับชิ้นงาน นับขึ้น
- Arduino จะสั่งให้อุปกรณ์ผลักชิ้นงาน Rejector ผลักชิ้นงานออก เพื่อการคัดแยก
- หากตรวจจับชิ้นงานได้ แต่ไม่ใช่โลหะ ชิ้นงาน จะไหลผ่านไปยังปลายสายพาน โดยจะไม่นับ
- เมื่อนับถึงค่าทึ่ตั้งไว้ในโปรแกรม ในที่นี้คือ 10 โปรแกรมจะหยุดรอ จนกว่าจะกดรีเซตบนบอร์ดอาดูโน่ สายพานจะกลับมาทำงานอีกครั้ง
อินพุทจากเซนเซอร์
- ในชุดสำเร็จได้ติดตั้งพร็อกซิมิตี้เซนเซอร์แบบ Inductive อาศัยหลักการเปลี่ยนแปลงค่าความเหนี่ยวนำ ใช้เพื่อตรวจจับวัตถุที่เป็นโลหะ
- ผู้ใช้สามารถเลือกเปลี่ยนเป็นโฟโต้เซนเซอร์ด้วยการเปิดคอมเม้นในโค้ด โดยจะทำให้เซนเซอร์นับชิ้นงานทุกอย่างที่เคลื่อนผ่าน
เอาท์พุทเพื่อการนับการคัดแยกและการแสดงผล
- อุปกรณ์ผลักชิ้นงาน Rejector
- ชุด Counter แสดงผลนับ 7-Segment
- เสาไฟทาวเวอร์แลมป์
Wiring Diagram
- Wiring Diagram V2013 https://oshwlab.com/s2insupply/480automationconveyor50-tower
- Wiring Diagram V2014 https://oshwlab.com/s2insupply/at480-automationconveyor50-towerlight2024
Arduino Source Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
const int Sensor1 = 2; // ต่อเซนเซอร์ตัวที่ 1 ตรวจจับโลหะ const int Sensor2 = 3; // ต่อเซนเซอร์ตัวที่ 2 โฟโต้เซนเซอร์ const int Reject = 8; // สั่งตัวผลักชิ้นงาน const int Counter = 9; // สั่งเคาท์เตอร์นับ const int LEDY = 10; // สั่งไฟสี เหลือง const int LEDG = 11; // สั่งไฟสี เขียว const int LEDR = 12; // สั่งไฟสี แดง const int Conveyor = 13; // สั่งสายพาน //เมื่อเซนเซอร์เจอชิ้นงาน จะหน่วงเวลาให้ชิ้นงานเคลื่อนที่ถึงตัวผลัก แล้วสั่งให้ตัวผลักทำงาน int Sensor1_State; // the current reading from the input pin int Sensor2_State; // the current reading from the input pin int lastButton_State = LOW; // the previous reading from the input pin int lastButton_State2 = LOW; // the previous reading from the input pin int State_Reject =0; int count_delay =0; unsigned long lastDebounceTime = 0; // the last time the output pin was toggled unsigned long lastDebounceTime2 = 0; unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers int Number = 0; int Target_Number = 5; // ตั้งค่าจำนวนการนับชิ้นงาน void setup() { pinMode(Sensor1, INPUT_PULLUP); pinMode(Sensor2, INPUT_PULLUP); pinMode(Reject, OUTPUT); pinMode(Conveyor, OUTPUT); pinMode(Counter, OUTPUT); pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDY, OUTPUT); // set initial state digitalWrite(Reject, HIGH); // High คือไม่ผลัก digitalWrite(Conveyor, HIGH);// High คือสายพานหยุด digitalWrite(Counter, HIGH);// High คือไม่นับ digitalWrite(LEDR, HIGH); // เสาไฟ หลอดสีแดง ดับ digitalWrite(LEDG, HIGH);// เสาไฟ หลอดสีเขียว ดับ digitalWrite(LEDY, HIGH);// เสาไฟ หลอดสีเหลือง ดับ Serial.begin(9600); digitalWrite(Conveyor, LOW); // ส่ง Low สั่งให้รีเลย์ทำงานจ่ายไฟให้สายไฟหมุน } void loop() { // ***************************************************************************************************************************************************************** digitalWrite(LEDG, LOW);// เสาไฟ หลอดสีเขียว ติดสว่าง // ********************************************************* 2 ******************************************************************************************************** int reading1 = digitalRead(Sensor1); // อ่านค่าจากเซนเซอร์ตรวจจับโลหะ if (reading1 != lastButton_State) { // reset the debouncing timer lastDebounceTime = millis(); Serial.println(reading1); } if ((millis() - lastDebounceTime) > debounceDelay) //หน่วงเวลาป้องกันสัญญาณรบกวน คือต้องมีค่าเวลามากกว่าตัวแปร debounceDelay เพื่อให้แน่ใจว่ามีชิ้นงานจริงๆ ไม่ใช่สัญญาณรบกวน { if (reading1 != Sensor1_State) { Sensor1_State = reading1; if (Sensor1_State == LOW) // ยืนยันว่าเซนเซอร์ตรวจจับชิ้นงานได้จริงๆ เป็นคือสัญญาณเป็นลอจิก Low { State_Reject =1; digitalWrite(LEDR, LOW); // เสาไฟ หลอดสีแดง ติดสว่าง } } } lastButton_State = reading1; //***************************************************************************************************************************************************************** //********************************************************** 3 ******************************************************************************************************* int reading2 = digitalRead(Sensor2); // อ่านค่าจากโฟโต้เซนเซอร์ ตรวจจับวัตถุ เพื่อนับชิ้นงาน if (reading2 != lastButton_State2) { // reset the debouncing timer lastDebounceTime2 = millis(); Serial.println(reading2); } if ((millis() - lastDebounceTime2) > debounceDelay) //หน่วงเวลาป้องกันสัญญาณรบกวน คือต้องมีค่าเวลามากกว่าตัวแปร debounceDelay เพื่อให้แน่ใจว่ามีชิ้นงานจริงๆ ไม่ใช่สัญญาณรบกวน { if (reading2 != Sensor2_State) { Sensor2_State = reading2; if (Sensor2_State == LOW) // ยืนยันว่าเซนเซอร์ตรวจจับชิ้นงานได้จริงๆ เป็นคือสัญญาณเป็นลอจิก Low { digitalWrite(Counter, LOW); // สั่งให้ตัวเคาท์เตอร์นับขึ้น 1 Number = Number +1; delay(120); // หน่วงเวลาสักครู่ digitalWrite(Counter, HIGH); // กลับมาสถานะเดิม } } } lastButton_State2 = reading2; //***************************************************************************************************************************************************************** if(State_Reject == 1) { delay(10); count_delay++; if(count_delay>250) { count_delay=0; State_Reject = 2; digitalWrite(LEDR, HIGH); // เสาไฟ หลอดสีแดง ดับ } } else if(State_Reject == 2) { delay(10); digitalWrite(Reject, LOW); // สั่งให้ตัวผลักชิ้นงานทำงาน digitalWrite(LEDY, LOW);// เสาไฟ หลอดสีเหลือง ติดสว่าง count_delay++; if(count_delay>50) { count_delay=0; State_Reject = 3; } } else if(State_Reject == 3) { delay(10); digitalWrite(Reject, HIGH); // กลับมาสถานะเดิม count_delay++; if(count_delay>5) { count_delay=0; State_Reject = 0; digitalWrite(LEDY, HIGH);// เสาไฟ หลอดสีเหลือง ดับ } } //******************************************************************************************* if (Number >= Target_Number) { digitalWrite(Conveyor, HIGH);// High คือสายพานหยุด } // else // { // digitalWrite(Conveyor, LOW); // ส่ง Low สั่งให้รีเลย์ทำงานจ่ายไฟให้สายไฟหมุน // } //************************************************************************************************ } |
1 |
รีวิว
ยังไม่มีบทวิจารณ์