![Arduino โหลดเซลล์ / สเกล: 4 ขั้นตอน Arduino โหลดเซลล์ / สเกล: 4 ขั้นตอน](https://img.gwsigeps.com/img/img/blank.jpg)
สารบัญ:
- วัสดุ:
- ขั้นตอนที่ 1: โหลดเซลล์
- ขั้นตอนที่ 2: เครื่องขยายเสียง
- ขั้นตอนที่ 3: รหัส
- ขั้นตอนที่ 4: การสอบเทียบและการใช้งาน
จากใจที่
การปรับปรุงที่สำคัญ!
เนื่องจากผู้คนจำนวนมากกำลังมีปัญหากับ INA125P ตอนนี้เรามีเวอร์ชั่นใหม่และปรับปรุงที่ใช้โมดูลเครื่องขยายเสียง ADC Hx711 24 บิต
เป้าหมายของฉันคือการสร้างสเกลที่ตั้งโปรแกรมได้สำหรับการชั่งน้ำหนักวัตถุนับชิ้นส่วนแม้แต่ควบคุมการไหลของผลิตภัณฑ์บนระบบสายพาน
ฉันต้องการโหลดเซลล์ Arduino และแอมป์
วัสดุ:
ขั้นตอนที่ 1: โหลดเซลล์
บนโหลดเซลล์นี้ (จากเครื่องชั่งไปรษณีย์ Accuteck W-8260-86W) สายไฟ 4 เส้นที่มาจากโหลดเซลล์คือ:
แดง: การกระตุ้น +
สีขาว: สัญญาณ +
เขียว: สัญญาณ -
สีดำ: กระตุ้น -
สิ่งนี้ตรงกับแผนการเดินสาย GSE / NCI / Sensotec
www.controlweigh.com/loadcell_colors.htm
ฉันถอดสาย 4 เส้นออกจากแผงควบคุมในเครื่องชั่งดังนั้นพวกเขาจะพร้อมใช้งานสำหรับขั้นตอนต่อไป
ขั้นตอนที่ 2: เครื่องขยายเสียง
เพื่อเพิ่มเอาต์พุตของโหลดเซลล์เพื่อให้ Arduino สามารถอ่านได้ในอินพุตแบบอะนาล็อกเราจะต้องใช้เครื่องขยายเสียง INA125P และตัวต้านทาน 10 โอห์ม เชื่อมต่อกับ Arduino ตามที่ระบุไว้ในแผนผังที่แนบมา
แผ่นข้อมูล:
ขั้นตอนที่ 3: รหัส
// Arduino เป็นแอมป์โหลดเซลล์
// โดย Christian Liljedahl
// christian.liljedahl.dk
// โหลดเซลล์เป็นเส้นตรง ดังนั้นเมื่อคุณสร้างคู่ข้อมูลสองคู่แล้วคุณสามารถแก้ไขส่วนที่เหลือ
// ขั้นตอนที่ 1: อัพโหลดภาพร่างนี้ไปยังบอร์ด arduino ของคุณ
// คุณต้องการน้ำหนักที่รู้ดีสองอย่าง ในตัวอย่างนี้ A = 10 กก. B = 30 กก
// วางโหลด A
// อ่านค่าอะนาล็อกที่แสดง (นี่คือ analogvalA)
// วางภาระ B
// อ่านค่าอะนาล็อก B
// ป้อนค่าอนาล็อกของคุณเองที่นี่
float loadA = 10; // กิโลกรัม
int analogvalA = 200; // การอ่านแบบอนาล็อกที่ถ่ายด้วยโหลด A บนโหลดเซลล์
float loadB = 30; // กิโลกรัม
int analogvalB = 600; // การอ่านแบบอะนาล็อกที่ถ่ายด้วยโหลด B บนโหลดเซลล์
// อัปโหลดภาพร่างอีกครั้งและยืนยันว่าการอ่านกิโลไบต์จากเอาต์พุตอนุกรมตอนนี้ถูกต้องโดยใช้โหลดที่คุณรู้จัก
float analogValueAverage = 0;
// เราอ่านบ่อยแค่ไหน?
เวลานาน = 0; //
int timeBetweenReadings = 200; // เราต้องการอ่านทุกๆ 200 ms;
การตั้งค่าเป็นโมฆะ () {
Serial.begin (9600);
}
void loop () {
int analogValue = analogRead (0);
// ค่าเฉลี่ยวิ่ง - เราอ่านให้ราบรื่นเล็กน้อย
analogValueAverage = 0.99 * analogValueAverage + 0.01 * analogValue;
// ได้เวลาพิมพ์แล้วหรือยัง?
if (millis ()> time + timeBetweenReadings) {
โหลดลอย = analogToLoad (analogValueAverage);
Serial.print ("analogValue:"); Serial.println (analogValueAverage);
Serial.print ("load:"); Serial.println (load, 5);
เวลา = มิลลิวินาที ();
}
}
float analogToLoad (float analogval) {
// ใช้ฟังก์ชั่นแผนที่ที่กำหนดเองเพราะฟังก์ชั่นแผนที่ arduino มาตรฐานจะใช้ int เท่านั้น
float load = mapfloat (analogval, analogvalA, analogvalB, loadA, loadB);
โหลดกลับมา;
}
float mapfloat (float x, ลอย in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
ขั้นตอนที่ 4: การสอบเทียบและการใช้งาน
ตอนนี้คุณจะเห็นข้อมูลที่แสดงในจอมอนิเตอร์แบบอนุกรม แต่จะไม่สมเหตุสมผลจนกว่าคุณจะทำการสอบเทียบเครื่องชั่ง ทำตามขั้นตอนในรหัสสำหรับการปรับเทียบและตอนนี้คุณก็พร้อมที่จะใช้เครื่องชั่งนี้เพิ่มคุณสมบัติเพิ่มเติมเช่นปุ่มเพื่อลดน้ำหนักค่าศูนย์หรือควบคุมเซอร์โวและรีเลย์สำหรับการควบคุมกระบวนการ
arduinotronics.blogspot.com/2013/01/working-with-sainsmart-5v-relay-board.html