คำอธิบาย
ชุดทดลองตรวจสอบน้ำหนักบนสายพานลำเลียง Automation Conveyor + Load cell Sensor Loadcell
มีอะไรเตรียมไว้ให้ในชุด
- สายพานลำเลียง Mini Conveyor ติดตั้ง
- Weight Sensor (Load Cell) เพื่องานชั่งน้ำหนักแบบดิจิตอล ติดตั้งด้านล่างสายพานลำเลียง +
- โมดูลขยายสัญญาณ Weight Sensor (Load Cell) HX711
- ชุดผลักชิ้นงาน Rejector แบบใช้ Step motor 1 ชุด
- บอร์ด Arduino Uno
- ชิ้นงานสำหรับทดสอบสี ทดสอบโลหะ ทดสอบอโลหะ ทดสอบน้ำหนัก ทดสอบของเหลว ทรงกระบอก
- เซนเซอร์ Proximity Photoelectric Sensor
- ชุด Counter แสดงผลนับ 7-Segment 4 หลัก
- อะแดปเตอร์จ่ายไฟ
- บอร์ด L298P Module
การใช้ Load cell Sensor เพื่อการคัดแยกชิ้นงานที่น้ำหนักต่างกัน
Load cell กับ HX711 (Load Cell Amplifier)
HX711 ตัวแปลงสัญญาณอนาล็อกเป็นดิจิตอลขนาด 24 บิต (ADC) ออกแบบมาสำหรับเครื่องชั่งน้ำหนักและโปรแกรมควบคุมน้ำหนักในงานอุตสาหกรรม เพื่อเชื่อมต่อโดยตรงกับเซ็นเซอร์จำพวกวิจสโตน บริดจ์ โมดูล HX711 ทำงานที่ 5V การสื่อสารโดยใช้ serial pins DT และ SCK
- Precision Classes C2 (are sufficient for simple building materials scales used to weigh sand, cement or water.)
- วัสดุ: อลูมิเนียม
- แรงดัน output 1.0 +- 0.15mV / V
- แรงดันใช้งานที่แนะนำ 10-15V
- อุณหภูมิใช้งาน -10 ถึง 40 ℃
Load cell กับ HX711 (Load Cell Amplifier)
HX711 ตัวแปลงสัญญาณอนาล็อกเป็นดิจิตอลขนาด 24 บิต (ADC) ออกแบบมาสำหรับเครื่องชั่งน้ำหนักและโปรแกรมควบคุมน้ำหนักในงานอุตสาหกรรม เพื่อเชื่อมต่อโดยตรงกับเซ็นเซอร์จำพวกวิจสโตน บริดจ์ โมดูล HX711 ทำงานที่ 5V การสื่อสารโดยใช้ serial pins DT และ SCK
การต่อ Load cell กับ โมดูลขยายสัญญาณ HX711
- Load cell สายสีแดง Power ต่อ HX711 E +
- Load cell สายสีดำ GND ต่อ HX711 E-
- Load cell สายสีเขียว Signal + ต่อ HX711 A+
- Load cell สายสีขาว Signal – ต่อ HX711 A –
โค้ด Arduino
ตัวอย่างโปรแกรมด้านล่างแสดง
- การตรวจจับชิ้นงานที่มีน้ำหนักต่างกัน และตรวจสอบน้ำหนักอยู่ในช่วงที่ต้องการ
- เมื่อ ชิ้นงานมีน้ำหนักน้อยกว่า หรือ มากว่า ค่าที่ต้องการ รอเวลาให้ชิ้นงานวิ่งไปใกล้ Rejector และผลักออก
ไลบรารี่ Load cell กับ HX711 (Load Cell Amplifier) https://github.com/bogde/HX711
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 |
// A2 VCC HX711 // A3 SCK HX711 // A4 DT HX711 // A5 GND HX711 #include "HX711.h" #include <Wire.h> #define SCK A3 #define DT A4 HX711 scale(DT, SCK); float calibration_factor =105000.00; //ยิ่งค่ามาก จะทำให้ค่าน้ำหนักจริงลดลง ใช้สำหรับคาริเบตกับชิ้นงานที่รู้น้ำหนักแน่นอน ปรับเพิ่มลดค่านี้เพื่อให้ค่าน้ำหนักตรงกับของจริง #define zero_factor 130000.00 #define DEC_POINT 3 float offset=0; // << calibrate and set the weight to zero 0.00 float get_units_kg(); //************************************************************ #define in1 9 //ขาควบคุม L298 #define in2 10 //ขาควบคุม L298 #define enA 8 //ขาควบคุม L298 #define in3 11 //ขาควบคุม L298 #define in4 12 //ขาควบคุม L298 #define enB 13 //ขาควบคุม L298 #define CntPin 3 // ขาเอาต์พุตส่งสัญญาณไปยังตัวเคาเตอร์ #define sensor_A A0 // เซนเซอร์ตรวจจับชิ้นงานบนสายพานชั่งน้ำหนัก #define Rejector 2 // Uno Digital Pin 2 for Rejector int SensorValue_A = 0; int flag_count = 0; int Speed = 255; // กำหนด Speed 0-255 ความเร็วสายพาน int delay_injector= 1200; //หน่วงเวลาหลังจากเจอชิ้นงาน ค่อยผลัก float read_weight_zero=0; int rotDirection = 0; //ตัวแปรกำหนดทิศทางการหมุนสายพาน float TargetWeight = 0.026; //ค่าน้ำหนักที่ต้องการ //************************************************************ void setup() { pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(enB, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(CntPin, OUTPUT); pinMode(Rejector, OUTPUT); pinMode(16,OUTPUT); // (VCC) D17(A2) digitalWrite(16,HIGH); pinMode(19,OUTPUT); // (GND) D19(A5) digitalWrite(19,LOW); pinMode(A1,INPUT); // A1 โฟโตเซนเซอร์ digitalWrite(A1,HIGH); // pullup input pinMode(A0,INPUT); // A0 อินพุตสำหรับกดรีเซตน้ำหนัก digitalWrite(A0,HIGH); // pullup input Serial.begin(9600); Serial.println("Load Cell"); scale.set_scale(calibration_factor); scale.set_offset(zero_factor); delay(200); read_weight_zero = get_units_kg(); //อ่านค่าน้ำหนักเฉพาะสายพานเก็บไว้ digitalWrite(Rejector, HIGH); digitalWrite(CntPin, LOW); } void loop() { Serial.print("Reading: "); if( digitalRead(A1)==0){ // ถ้ากดสวิตช์ A0 ให้อ่านค่าน้ำหนักเก็บไว้ read_weight_zero = get_units_kg(); //อ่านค่าน้ำหนักเฉพาะสายพานเก็บไว้ } float read_weight = get_units_kg(); //อ่านค่าจากตาชั่ง read_weight = read_weight-read_weight_zero; // หักลบน้ำหนักให้เหลือเฉพาะน้ำหนักชิ้นงาน String data = String(read_weight, DEC_POINT); Serial.print(data); Serial.println(" kg"); delay(100); int pwmOutput = 255; //set speed conveyor analogWrite(enB, pwmOutput); // ส่งสัญญาณ PWM 0-255 = 0-100% เพื่อควบคุมความเร็วสายพานตัวที่1 analogWrite(enA, pwmOutput); // ส่งสัญญาณ PWM 0-255 = 0-100% เพื่อควบคุมความเร็วสายพานตัวที่2 อยู่บนโหลดเซลล์ rotDirection = 1; // 1 = สายพานเคลื่อนไปทางซ้าย 0=สายพานเคลื่อนไปทางขวา if (rotDirection == 0) // สายพานเคลื่อนไปทางซ้าย { digitalWrite(in1, HIGH);//สำหรับสายพานตัวที่อยู่บนโหลดเซลล์ digitalWrite(in2, LOW);//สำหรับสายพานตัวที่อยู่บนโหลดเซลล์ digitalWrite(in3, HIGH);//สำหรับสายพานตัวที่1 digitalWrite(in4, LOW);//สำหรับสายพานตัวที่1 } if (rotDirection == 1) // สายพานเคลื่อนไปทางขวา { digitalWrite(in1, HIGH);//สำหรับสายพานตัวที่อยู่บนโหลดเซลล์ digitalWrite(in2, LOW);//สำหรับสายพานตัวที่อยู่บนโหลดเซลล์ digitalWrite(in3, LOW);//สำหรับสายพานตัวที่1 digitalWrite(in4, HIGH);//สำหรับสายพานตัวที่1 } SensorValue_A = digitalRead(sensor_A);//อ่านค่าจากโฟโตเซนเซอร์ ว่ามีชิ้นงานบนสายพานชั่งน้ำหนักหรือไม่ if(SensorValue_A == 0) { // โฟโตเซนเซอร์ เจอชิ้นงานแล้ว สัญญาณจะเป็น 0 if((read_weight > (TargetWeight-0.015))&&(read_weight < (TargetWeight+0.015))) { // มีชิ้นงาน Good น้ำหนักอยู่ในช่วงที่ต้องการ +/-0.015 กรัม digitalWrite(CntPin, HIGH);// ส่งสัญญาณไปยังวงจรเคาท์เตอร์ delay(1500); //หน่วงเวลาขาลง นาน 100 มิลลิเซค digitalWrite(CntPin, LOW); } else { // ชิ้นงานมีน้ำหนักน้อยกว่า หรือ มากว่า ค่าที่ต้องการ ให้ผลักออก delay(delay_injector); // รอเวลาให้ชิ้นงานวิ่งไปใกล้ Rejector สามารถเปลี่ยนแปลงค่าให้เหมาะสมกับความเร็วสายพาน Serial.println(" Reject"); digitalWrite(Rejector, LOW);// ส่ง Logic 0 เพื่อให้ Rejector ทำงาน เปรียบเสมือน การ กดสวิตช์ delay(100); //หน่วงเวลาขาลง นาน 100 มิลลิเซค digitalWrite(Rejector, HIGH); } } } float get_units_kg(){ return(scale.get_units()*0.453592); } |
ดาวน์โหลด
- คู่มือการใช้งานชุดทดลอง Automation Conveyor
- https://www.dropbox.com/sh/65s1bco53zf2zii/AACtUNL04D5q8IjNrlkuwFP5a?dl=0
- https://www.dropbox.com/sh/125h1rywzbicczl/AAA9kOqgjyV-gbKzEt3AkcCHa?dl=0
รีวิว
ยังไม่มีบทวิจารณ์