در این راهنما، نحوه ساخت ترازو دیجیتال با آردوینو با استفاده از لودسل و تقویت کننده HX711 را یاد خواهید گرفت. ابتدا یاد خواهید گرفت که چگونه لودسل و آمپلی فایر HX711 را به آردوینو وصل کنید تا یک ترازو بسازید. سپس، نحوه کالیبره کردن ترازو و یک مثال ساده برای بدست آوردن وزن اجسام را به شما نشان خواهیم داد. بعداً یک نمایشگر برای نمایش اندازه‌ها و یک دکمه برای کاهش مقیاس اضافه می‌کنیم.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

معرفی لودسل ها

لودسل نیرو را به یک سیگنال الکتریکی تبدیل می کند که می تواند اندازه گیری شود. سیگنال الکتریکی متناسب با نیروی اعمال شده تغییر می کند. لودسل انواع مختلفی دارد: استرین گیج، پنوماتیک و هیدرولیک. در این آموزش، لودسل های استرین گیج را بررسی میکنیم.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

لودسل های استرین گیج از یک میله فلزی با کرنش سنج های متصل (زیر چسب سفید در تصویر بالا) تشکیل شده است. کرنش سنج یک حسگر الکتریکی است که نیرو یا فشار وارد بر یک جسم را اندازه گیری می کند. مقاومت کرنش سنج ها زمانی که یک نیروی خارجی به یک جسم وارد می شود، تغییر می کند که منجر به تغییر شکل شکل جسم (در این مورد، میله فلزی) می شود. مقاومت کرنش سنج متناسب با بار اعمال شده است که به ما امکان محاسبه وزن اجسام را می دهد.

معمولاً لودسل ها دارای چهار کرنش سنج هستند که به پل وتستون متصل شده اند (همانطور که در زیر نشان داده شده است) که به ما امکان اندازه گیری مقاومت دقیق را می دهد. برای توضیح دقیق تر در مورد نحوه عملکرد کرنش سنج ها، این مقاله را بخوانید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

سیم هایی خروجی لودسل معمولاً دارای رنگ های زیر هستند:

قرمز: VCC (E+)
مشکی: GND (E-)
سفید: خروجی – (A-)
سبز: خروجی + (A+)

کاربردها

لودسل های استرین گیج را می توان در کاربردهای مختلف مورد استفاده قرار داد. مثلا:

  • بررسی کنید که آیا وزن یک جسم در طول زمان تغییر می کند.
  • اندازه گیری وزن یک جسم؛
  • تشخیص وجود یک شی؛
  • تخمین سطح مایع ظرف؛
  • و غیره.

از آنجایی که تغییرات کرنش (خمش لودسل) بسیار کوچک میباشد برای اندازه گیری صحیح وزن، به تقویت کننده نیاز داریم. لودسلی که ما استفاده می کنیم معمولاً همراه با تقویت کننده HX711 فروخته می شود. بنابراین، این تقویت کننده ای است که ما استفاده خواهیم کرد.

آمپلی فایر HX711

برای ساخت ترازو دیجیتال به یک ماژول تقویت کننده برای سیگنال های لودسل نیاز داریم. ماژول HX711 یک برد آماده است که به شما امکان می دهد به راحتی لودسل ها را برای اندازه گیری وزن بخوانید. سیم های لودسل را از یک طرف و میکروکنترلر را از طرف دیگر متصل می کنید. HX711 با استفاده از رابط دو سیم (کلاک و دیتا) با میکروکنترلر ارتباط برقرار می کند.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

برای اتصال به آردوینو باید پین های اتصالات را روی پایه های GND، DT، SCK و VCC ماژول HX711 لحیم کنید همچنین سیم های لودسل را مستقیماً به پایه های E+، E-، A- و A+ لحیم کردم. سیم های لودسل بسیار نازک و شکننده بودند، هنگام لحیم کاری مراقب باشید که به سیم ها آسیب نرسانید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

راه اندازی لودسل برای ساخت ترازو دیجیتال

برای ساخت ترازو دیجیتال با استفاده از لودسل به لحاظ مکانیکی باید شرایط ساخت ترازو دیجیتال را فراهم نماییم. کیت لودسل ما با دو صفحه اکریلیک و چند پیچ برای تنظیم لودسل به عنوان ترازو ارسال شد. می توانید از صفحات چوبی یا چاپ سه بعدی صفحات خود استفاده کنید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

شما باید صفحات را به گونه ای به لودسل متصل کنید که بین ابتدا و انتهای میله فلزی کشش ایجاد شود. در این حالت صفحه پایینی لودسل را نگه می دارد و صفحه بالایی جایی است که اجسام را در آن قرار می دهید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

شکل زیر نمونه لودسل من با استفاده از صفحات پلکسی میباشد.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

سیم کشی لودسل و آمپلی فایر HX711 به آردوینو

تقویت کننده HX711 از طریق رابط دو سیم ارتباط برقرار می کند. می توانید آن را به هر پایه دیجیتال برد آردوینو متصل کنید. پین داده (DT) را به پین 2 و پایه کلاک (CLK) را به پین 3 وصل می کنیم.

برای سیم کشی لودسل به برد آردوینو، جدول یا شماتیک در ادامه را ببینید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)
ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

نصب کتابخانه HX711

چندین کتابخانه مختلف برای اندازه گیری لودسل با استفاده از تقویت کننده HX711 وجود دارد. ما از کتابخانه HX711 توسط bodge استفاده خواهیم کرد. این کتابخانه با ESP32، ESP8266 و Arduino سازگار است.

جهت نصب این کتابخانه در آردوینو مراحل زیر را انجام دهید

Arduino IDE را باز کنید و به Sketch > Include Library > Manage Libraries بروید.
«HX711 Arduino Library» را جستجو کنید و کتابخانه  Bogdan Necula را نصب کنید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

کالیبره کردن وزن (آردوینو با لودسل)

فرض می کنیم که لودسل را به آمپلی فایر HX711 و آمپلی فایر را به برد آردوینو متصل کرده اید. شما همچنین باید ترازو خود را به صفحات جهت اندازه گیری وزنه متصل کرده باشید، و کتابخانه HX711 را نصب کرده باشید.

قبل از گرفتن وزن اجسام، ابتدا باید لودسل خود را با بدست اوردن calibration factor کالیبره کنید. calibration factor شما با من متفاوت خواهد بود، بنابراین نباید این بخش را نادیده بگیرید.

1) جسمی با وزن مشخص آماده کنید. یا میتوانید یک جسم را برداشته و وزن آنرا اندازه گیری کنید(مهم است که وزن دقیق جسم را بدانید) وزن جسم کالیبره ما 107 گرم میباشد.

۲) کد زیر را روی برد آردوینو خود آپلود کنید. ما کد زیر را با در نظر گرفتن دستورالعمل های کالیبره کردن لودسل ارائه شده توسط مستندات کتابخانه نوشتیم.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

// Calibrating the load cell
#include "HX711.h"

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

HX711 scale;

void setup() {
  Serial.begin(57600);
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}

void loop() {

  if (scale.is_ready()) {
    scale.set_scale();    
    Serial.println("Tare... remove any weights from the scale.");
    delay(5000);
    scale.tare();
    Serial.println("Tare done...");
    Serial.print("Place a known weight on the scale...");
    delay(5000);
    long reading = scale.get_units(10);
    Serial.print("Result: ");
    Serial.println(reading);
  } 
  else {
    Serial.println("HX711 not found.");
  }
  delay(1000);
}

//calibration factor will be the (reading)/(known weight)

3) پس از آپلود، مانیتور سریال را با نرخ باود 57600 باز کنید و سپس دکمه RESET آردوینو را فشار دهید.

4) دستورالعمل های روی مانیتور سریال را دنبال کنید: وزنه ها را از ترازو بردارید (به طور خودکار tare می شود). سپس، یک شی با وزن مشخص را روی ترازو قرار دهید و منتظر بمانید تا یک مقدار بدست آورید.

5) فاکتور کالیبراسیون خود را با استفاده از فرمول محاسبه کنید:

calibration factor = (reading)/(known weight)
 
ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

در مورد ما، مقدار نتیجه عدد -49171 است. وزن شناخته شده 107 گرم است، بنابراین فاکتور کالیبراسیون ما خواهد بود:

calibration factor = -49171/107 = -459.542

فاکتور کالیبراسیون خود را ذخیره کنید زیرا بعداً به آن نیاز خواهید داشت. این عدد برای هرکس متفاوت خواهد بود.

از آنجایی که خروجی سنسور متناسب با نیروی اعمال شده به لودسل است، می توانید مقیاس خود را با استفاده از هر واحدی که برای شما منطقی است کالیبره کنید. من از گرم استفاده کردم، اما شما می توانید از پوند، کیلوگرم یا … استفاده کنید.

وزن کردن اجسام (آردوینو با لودسل)

اکنون که فاکتور کالیبراسیون خود را می دانید، می توانید از لودسل خود برای ساخت ترازو دیجیتال جهت وزن کردن اجسام استفاده کنید. با وزن کردن اجسام با وزن مشخص شروع کنید و اگر مقادیر دقیق نیستند، فرآیند کالیبراسیون را تکرار کنید.

کد زیر را در آردوینو IDE خود کپی کنید. قبل از آپلود آن در برد خود، فراموش نکنید که فاکتور کالیبراسیون خود را در خط 43/44 کد وارد کنید. کد زیر نمونه ارائه شده توسط کتابخانه است که استفاده از اکثر توابع آن را نشان می دهد.

/**
 * Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
 *
 * HX711 library for Arduino - example file
 * https://github.com/bogde/HX711
 *
 * MIT License
 * (c) 2018 Bogdan Necula
 *
**/

#include <Arduino.h>
#include "HX711.h"

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

HX711 scale;

void setup() {
  Serial.begin(57600);
  Serial.println("HX711 Demo");
  Serial.println("Initializing the scale");

  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

  Serial.println("Before setting up the scale:");
  Serial.print("read: \t\t");
  Serial.println(scale.read());      // print a raw reading from the ADC

  Serial.print("read average: \t\t");
  Serial.println(scale.read_average(20));   // print the average of 20 readings from the ADC

  Serial.print("get value: \t\t");
  Serial.println(scale.get_value(5));   // print the average of 5 readings from the ADC minus the tare weight (not set yet)

  Serial.print("get units: \t\t");
  Serial.println(scale.get_units(5), 1);  // print the average of 5 readings from the ADC minus tare weight (not set) divided
            // by the SCALE parameter (not set yet)
            
  scale.set_scale(-459.542);
  //scale.set_scale(-471.497);                      // this value is obtained by calibrating the scale with known weights; see the README for details
  scale.tare();               // reset the scale to 0

  Serial.println("After setting up the scale:");

  Serial.print("read: \t\t");
  Serial.println(scale.read());                 // print a raw reading from the ADC

  Serial.print("read average: \t\t");
  Serial.println(scale.read_average(20));       // print the average of 20 readings from the ADC

  Serial.print("get value: \t\t");
  Serial.println(scale.get_value(5));   // print the average of 5 readings from the ADC minus the tare weight, set with tare()

  Serial.print("get units: \t\t");
  Serial.println(scale.get_units(5), 1);        // print the average of 5 readings from the ADC minus tare weight, divided
            // by the SCALE parameter set with set_scale

  Serial.println("Readings:");
}

void loop() {
  Serial.print("one reading:\t");
  Serial.print(scale.get_units(), 1);
  Serial.print("\t| average:\t");
  Serial.println(scale.get_units(10), 5);

  delay(5000);
}
 

نحوه کار کد

ابتدا کتابخانه را include میکنیم

#include "HX711.h"

خطوط زیر پین هایی را که برای اتصال به آمپلی فایر HX711 استفاده می کنید، مشخص می کند. ما پین 2 و پین 3 را انتخاب کردیم. می توانید از هر پین دیجیتال دیگری استفاده کنید.

const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;

سپس یک شی از کتابخانه HX711 به نام scale جهت اندازه گیری ایجاد میکنیم

HX711 scale;

در setup()، مانیتور سریال را مقداردهی اولیه کنید.

Serial.begin(57600);

با فراخوانی متد begin() روی شی scale و ارسال پین های دیجیتال به عنوان آرگومان، لودسل را راه اندازی کنید.

scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

سپس، با استفاده از متدهای زیر می توانید از آنها برای دریافت دیتا با استفاده از کتابخانه استفاده کنید.

read(): یک مقدار خام از حسگر را میخواند.
read_average (تعداد خواندن): میانگین آخرین تعداد خوانده شده تعریف شده (به عنوان ارگومان) را دریافت می کند
get_value (تعداد خوانش ها): میانگین آخرین تعداد مقادیر گرفته شده (به عنوان ارگومان) منهای وزن tare را می گیرد.
get_units (تعداد خوانش ها): میانگین آخرین تعداد قرائت های تعریف شده (به عنوان ارگومان) منهای وزن tare تقسیم بر ضریب کالیبراسیون را دریافت می کند – این عددی است که در واحد مد نظر شما به عنوان خروجی قرار میگیرد.

Serial.println(“Before setting up the scale:”);
Serial.print(“read: \t\t”);
Serial.println(scale.read()); // print a raw reading from the ADC

Serial.print(“read average: \t\t”);
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC

Serial.print(“get value: \t\t”);
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)

Serial.print(“get units: \t\t”);
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)

در خط زیر فراموش نکنید که عدد کالیبراسیون بدست امده در مراحل قبل را وارد کنید.برای اینکار از متد set_scale() استفاده کنید.

scale.set_scale(INSERT YOUR CALIBRATION FACTOR)

سپس، متد tare() را برای مقیاس (صفر کردن) فراخوانی کنید.

scale.tare();               // reset the scale to 0

پس از این تنظیمات، ترازو باید آماده باشد تا مقادیر دقیق را در واحد مورد نظر شما دریافت کند.

Serial.print(“read: \t\t”);
Serial.println(scale.read()); // print a raw reading from the ADC

Serial.print(“read average: \t\t”);
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC

Serial.print(“get value: \t\t”);
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()

Serial.print(“get units: \t\t”);
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale

در حلقه loop() این مثال متد get_units() را به دو روش مختلف فراخوانی می کنیم:

1-به دست آوردن فقط یک مقدار (بدون هیچ پارامتر)

2-به دست آوردن میانگین 10 مقدار آخر

Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 5);

با استفاده از متد power_down() قسمت ADC را که وظیفه خواندن سنسور را دارد خاموش می کنیم. سپس به مدت 5 ثانیه صبر کرده و سپس با استفاده از متد power_up() قسمت ADC را روشن می کنیم و  loop() مجددا تکرار می شود. بنابراین، هر 5 ثانیه یک بار در مانیتور سریال اطلاعات جدید را دریافت خواهید کرد.

scale.power_down(); // put the ADC in sleep mode
delay(5000);
scale.power_up();

نتیجه

کد را روی برد آردوینو خود آپلود کنید. پس از آپلود، مانیتور سریال را با نرخ باود 115200 باز کنید.

چند لحظه صبر کنید تا کد اجرا شود و لودسل مقیاس شود. سپس میتوانید هر جسمی را روی ترازو قرار دهید تا وزن آن را اندازه گیری کند و نتایج را در مانیتور سریال دریافت کنید.

ساخت ترازو دیجیتال با آردوینو، لودسل و تقویت کننده HX711 (راهنمای کامل کد و مکانیک)

این مقاله بزودی اپدیت خواهد شد و بخش های آموزشی جدیدی برای ساخت ترازو دیجیتال اضافه میشود.

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *