Arduino โหลดเซลล์ / สเกล: 4 ขั้นตอน

Arduino โหลดเซลล์ / สเกล: 4 ขั้นตอน

สารบัญ:

Anonim

จากใจที่

การปรับปรุงที่สำคัญ!

เนื่องจากผู้คนจำนวนมากกำลังมีปัญหากับ 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