คำอธิบาย
ชุดทดลองตรวจจับของเหลวบนสายพานลำเลียง 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 และผลักขวดเปล่าออก
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
}
}





รีวิว
ยังไม่มีบทวิจารณ์