คำอธิบาย
ชุดทดลองตรวจจับของเหลวบนสายพานลำเลียง Automation Conveyor + Proximity Sensor + Counter
มีอะไรเตรียมไว้ให้ในชุด (อุปกรณ์ในชุดติดตั้งบนแผ่นพลาสวูด)
- สายพานลำเลียง Mini Conveyor
- ชุดผลักชิ้นงาน Rejector แบบใช้ Step motor 1 ชุด
- บอร์ด L298P Motor Shield 1 บอร์ด
- บอร์ด Arduino Uno 1 บอร์ด
- เซนเซอร์แบบ Capacitance Proximity ติดตั้งบนแผ่นเพลท 1 ตัว
- อะแดปเตอร์จ่ายไฟ 12V 1 เซต
- Counter แสดงผลนับ 7-Segment
- Relay Module
เอาท์พุทเพื่อการนับและการคัดแยก
- อุปกรณ์ผลักชิ้นงาน Rejector
- ชุด Counter แสดงผลนับ 7-Segment
การใช้ Capacitive Proximity sensors เพื่อการคัดแยกชิ้นงานที่เป็นของเหลว
- สายสีน้ำตาล : 6-24VDC
- สายสีน้ำเงิน : GND
- สายสีดำ : DIGITAL OUTPUT / NPN normally open (Active Low) ต่อ DIGITAL OUTPUT เข้ากับขา Analog ของ Arduino Uno
Capacitive Proximity sensors พร็อกซิมิตี้เซนเซอร์ชนิดเก็บประจุ ใช้หลักการเปลี่ยนแปลงของค่าความจุไฟฟ้า (คาปาซิแตนซ์) โดยการสร้างสนามไฟฟ้าสถิตย์ เพื่อตรวจจับ ค่าความจุไฟฟ้าระหว่างวัตถุกับเซนเซอร์ จะเปลี่ยนแปลงตาม ขนาด รูปร่าง และชนิดของวัตถุสามารถตรรวจจับระดับของของเหลวเกือบทุกชนิด นิยมใช้ตรวจจับระดับของเหลวในภาชนะทึบแสง เช่นปริมาณของเครื่องดื่มที่บรรจุในขวด ในเรื่องของระยะทางใช้งานตรวจจับวัตถุได้ในระยะใกล้
Wiring Diagram
https://oshwlab.com/s2insupply/302a-automation-metal-detect-l298-inductive-proximity-sensor
Arduino Code
ตัวอย่างโปรแกรมด้านล่างแสดงการตรวจจับชิ้นงานที่เป็นของเหลว (ขวดน้ำ)ระหว่างขวดน้ำ กับ ขวดเปล่า เมื่อ Capacitive Proximity Sensor เจอขวดน้ำ ระบบจะปล่อยผ่าน แต่เมื่อ Capacitive Proximity Sensor เจอขวดเปล่า ระบบจะรอเวลาให้ชิ้นงานวิ่งไปใกล้ Rejector และผลักขวดเปล่าออก
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 |
int E1 = 10; // Speed control Motor A int E2 = 11; // Speed control Motor B int M1 = 12; // direction control Motor A int M2 = 13; // direction control Motor B int sensor_A = A0; // Uno Analog Pin A0 คาปาซิตีฟเซนเซอร์ int sensor_B = A1; // Uno Analog Pin A1 โฟโต้เซนเซอร์ int Buzzer = 4; // Uno Digital Pin 4 for alarm int Rejector = 9; // Uno Digital Pin 9 for Rejector int SensorValue_A = 0; int SensorValue_B = 0; int outputValue = 0; int Count_Value = 0; int flag_count = 0; int Speed = 255; // กำหนด Speed 0-255 ความเร็วสายพาน int delay_injector= 2500; //หน่วงเวลาหลังจากเจอชิ้นงาน ค่อยผลัก void setup() { pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(Buzzer, OUTPUT); pinMode(Rejector, OUTPUT);//Rejector digitalWrite(Rejector, HIGH); pinMode(A5, OUTPUT); digitalWrite(A5, HIGH); Serial.begin(9600); } void loop() { SensorValue_B = analogRead(sensor_B);// โฟโต้เซนเซอร์ // map it to the range of the analog out: SensorValue_B = map(SensorValue_B, 0, 1023, 0, 255); //Serial.println(SensorValue_B); if(SensorValue_B < 128) //โฟโต้เซนเซอร์ เจอขวด { SensorValue_A = map(SensorValue_A, 0, 1023, 0, 255); //Serial.println(SensorValue_A); delay(100); //หน่วงเวลา SensorValue_A = analogRead(sensor_A);// คาปาซิตีฟเซนเซอร์ if(SensorValue_A > 128) //คาปาซิตีฟเช็คเจอว่า ขวดไม่มีน้ำ { delay(delay_injector); // รอเวลาให้ชิ้นงานวิ่งไปใกล้ Rejector สามารถเปลี่ยนแปลงค่าให้เหมาะสมกับความเร็วสายพาน digitalWrite(Rejector, LOW);// ส่ง Logic 0 เพื่อให้ Rejector ทำงาน เปรียบเสมือน การ กดสวิตช์ digitalWrite(A5, LOW);// ส่งสัญญาณไปยังวงจรเคาท์เตอร์ delay(100); //หน่วงเวลาขาลง นาน 100 มิลลิเซค digitalWrite(Rejector, HIGH); digitalWrite(A5, HIGH); } else // ขวดมีน้ำ ไม่ต้องทำอะไร ปล่อยผ่าน { } } else // โฟโต้เซนเซอร์ ไม่เจอขวด สั่งให้สายพานหมุน { flag_count=0; digitalWrite(M1, HIGH); // direction Motor A digitalWrite(M2, LOW); // direction Motor B analogWrite(E1, Speed); // อ่านค่า Speed ที่กำหนดไว้ เพื่อควบควม Motor A analogWrite(E2, Speed); // อ่านค่า Speed ที่กำหนดไว้ เพื่อควบควม Motor B } } |
รีวิว
ยังไม่มีบทวิจารณ์