คำอธิบาย
ชุดเรียนรู้+ชุดทดลอง ตรวจจับและคัดแยกชิ้นงาน Mini Automation Conveyor Counter+Lamp
- การทดลองเรียนรู้การเขียนโปรแกรมควบคุมสายพานลำเลียงทำงานแบบอัตโนมัติ
- สามารถเปลี่ยน เซนเซอร์ และวายริ่งสาย เพื่อสร้างระบบอัตโนมัติของตัวเอง เช่น Inductive Proximity Sensor เพื่อการตรวจจับโลหะ, Color Sensor เพื่อการคัดแยกสี
มีอะไรเตรียมไว้ให้ในชุด (อุปกรณ์ในชุดติดตั้งบนแผ่นพลาสวูด)
- 1pcs สายพานลำเลียง CONV-DC12V
- บอร์ด Arduino
- เคาเตอร์นับชิ้นงาน
- พร็อกซิมิตี้เซนเซอร์แบบ Inductive
- พร็อกซิมิตี้เซนเซอร์แบบ Photoelectric
- ไฟแสดงผล Tower Lamp LED พร้อมบัซเซอร์
- บอร์ดขับมอเตอร์ DC-L298
- บอร์ดรีเลย์โมดูล 4ช่อง Low Logic
- แหล่างจ่ายไฟ 12VDC
พื้นฐานระบบอัตโนมัติ
ระบบอัตโนมัติ หรือ 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 และอื่นๆ
- เอาท์พุท – เช่นวาล์ว, มอเตอร์, หลอดไฟ, ลำโพง และอื่นๆ
Wiring Diagram
https://oshwlab.com/s2insupply/at101-automation
โค้ด Arduino * ใช้สำหรับ Relay Module แบบ Active Low
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 |
#define enA 6 //ขาควบคุม L298 #define in1 7 //ขาควบคุม L298 #define in2 8 //ขาควบคุม L298 #define Lamp_RED 10 //หลอดไฟสีแดง #define Lamp_GREEN 11 //หลอดไฟสีเขียว #define Lamp_Yel 12 //หลอดไฟสีเขียว int Sensor_Photo = 2; //Analog Pin for Photo Sensor int Sensor_Inductive = 3; //Analog Pin for Inductive Sensor int CounterUp = 4; //Output for Counter Up int Reset_Counter = 9; //Digital Pin 9 for Reset Counter int SensorValue_1 = 0; int Output_Value = 0; int Count_Value = 0; int Flag_count = 1; int rotDirection = 0; //ตัวแปรกำหนดทิศทางการหมุนสายพาน int Counter_Target = 10; // ตั้งค่าที่จะนับชิ้นงาน เมื่อครบแล้วสั่งให้สายพานหยุด จนกว่าจะกดรีเซตที่บอร์ดอาดูโน่ void setup() { pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(Lamp_RED, OUTPUT); pinMode(Lamp_GREEN, OUTPUT); pinMode(Reset_Counter, OUTPUT); pinMode(CounterUp, OUTPUT); pinMode(Sensor_Photo, INPUT_PULLUP); pinMode(Sensor_Inductive, INPUT_PULLUP); digitalWrite(Reset_Counter, HIGH); digitalWrite(CounterUp, HIGH); // Set initial rotation direction digitalWrite(in1, LOW); digitalWrite(in2, HIGH); Serial.begin(9600); digitalWrite(Reset_Counter, HIGH); delay(100); digitalWrite(Reset_Counter, LOW); digitalWrite(Lamp_RED, HIGH); // สั่งให้ไฟแดงดับ digitalWrite(Lamp_GREEN, LOW);// relay active low ON สั่งให้ไฟเชียวติด } void loop() { //*************************************************************************************************** int pwmOutput = 255; //set speed conveyor analogWrite(enA, pwmOutput); // ส่งสัญญาณ PWM 0-255 = 0-100% เพื่อควบคุมความเร็วสายพาน rotDirection = 1; // 0 = สายพานเคลื่อนไปทางซ้าย 1=สายพานเคลื่อนไปทางขวา if (rotDirection == 0) // สายพานเคลื่อนไปทางซ้าย { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } if (rotDirection == 1) // สายพานเคลื่อนไปทางขวา { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } //************************************************************************************************** // เลือกอินพุตเซนเซอร์ ต้องเลือกอันใดอันหนึ่ง ห้ามเลือกสองชนิดพร้อมกัน SensorValue_1 = digitalRead(Sensor_Photo);// ถ้าใช้โฟโต้เซนเซอร์ เปิดคอมเม้นบรรทัดนี้ (เปิดคอมเม้นหมายถึงลบเครื่องหมาย // หน้าบรรทัดออก) // SensorValue_1 = digitalRead(Sensor_Inductive);//ถ้าใช้เซนเซอร์ตรวจจับโลหะ เปิดคอมเม้นบรรทัดนี้ if(SensorValue_1 == 1) // sensor_1 ไม่เจอชิ้นงาน { if(Flag_count==0) { Flag_count=1; Count_Value++; Serial.print("Count_Value = "); Serial.println(Count_Value); delay(100); } } else // sensor_1 เจอชิ้นงานแล้ว { digitalWrite(CounterUp, LOW);// ส่ง Logic 0 ไปยัง เคาท์เตอร์ เพื่อให้นับ delay(10); //หน่วงเวลาขาลง 100 Millisec digitalWrite(CounterUp, HIGH); digitalWrite(Lamp_GREEN, LOW); Flag_count=0; } resetcounter(); } void resetcounter() { if (Count_Value >= Counter_Target ) // แก้ไขจำนวนนับได้ที่จะให้ Reset { digitalWrite(Reset_Counter, LOW);// ส่ง Logic 0 เพื่อให้ Reset Counter เปรียบเสมือนการกดสวิตช์ digitalWrite(Lamp_RED, LOW); digitalWrite(Lamp_GREEN, HIGH); analogWrite(enA, 0); // หยุดสายพาน delay(500); //หน่วงเวลาขาลง 100 Millisec digitalWrite(Reset_Counter, HIGH); //Count_Value =0; Serial.print("Count_Value = "); Serial.println(Count_Value); } } |
รีวิว
ยังไม่มีบทวิจารณ์