تحلیل کتابخانه

تحلیل و بررسی کتابخانه HX711.h

hx711-arduino-library-digispark
نوشته شده توسط معین صابری

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

 


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


به منظور استفاده از کتابخانه HX711.h، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.

روش نصب کتابخانه PCF8574.h - دیجی اسپارک

 

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

نصب کتابخانه آردوینو HX711 - دیجی اسپارک

 


الزامات و نکات فنی در راه اندازی کتابخانه


کتابخانه HX711 برای برد های آردوینو توسعه یافته است؛ اما به نظر می رسد که این کتابخانه برای بردهای ESP نیز قابلیت استفاده داشته باشد. در این کتابخانه توابعی جهت اندازه گیری وزن در نظر گرفته شده است. از طرفی دیگر، این کتابخانه دارای توابعی جهت محاسبه قیمت برای وزن است. بدین ترتیب به کمک این کتابخانه شما می توانید به سادگی ترازوی دیجیتال با قابلیت محاسبه قیمت، طراحی و پیاده سازی کنید. در ادامه، دو جدول زیر وضعیت پایه های ماژول HX7411 را در مدل های مختلف، نشان می دهد.

HX711 Pin Color
E+ red
E- black
A- white
A+ green
B- not connected
B+ not connected

 

HX711 Pin Color
E+ red
E- black
A- blue
A+ white
B- not connected
B+ not connected

 

در رابطه با سنسور HX711، توجه داشته باشید که A+ و A- دارای گین ۱۲۸ یا ۶۴ و B+ و B- دارای گین ۳۲ هستند. پس از بررسی نکات فنی، نوبت به شرح و تحلیل توابع کلیدی می رسد. قسمت بعدی مختص این موضوع است.

 


تحلیل توابع کلیدی کتابخانه hx711


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

شرح ورودی ها تابع
به کمک این تابع مبدل ADC راه اندازی می گردد. در ورودی اول پایه sda (دیتا) و ورودی دوم scl (کلاک)ارتباط سریال I2C برقرار می شود. ورودی اول از نوع بدون علامت ۸ بیتی

ورودی دوم از نوع بدون علامت ۸ بیتی

void     begin(uint8_t dataPin, uint8_t clockPin)
این تابع آمادگی سنسور لود سل جهت خواندن داده را کنترل م یکند. در صورت آماده بودن، خروجی true خواهد شد. بدون ورودی   bool     is_ready()
به کمک این تابع مدت زمان انتظار برای آماده شدن سنسور لود سل تعیین می گردد. مقدار پیشفرض(در صورت عدم تعیین ورودی) صفر است. ورودی از نوع بدون علامت ۳۲ بیتی void     wait_ready(uint32_t ms = 0)
به کمک این تابع مدت زمان انتظار و تعداد دفعات جهت انتظار تعیین می گردد. به عنوان مثال در صورتیکه ورودی نخست ۵ و ورودی دوم ۱۰۰۰ تعیین شود، برنامه برای ۵ بار و برای مدت ۱۰۰۰ میلی ثانیه(یک ثانیه) منتظر پاسخ باقی می ماند.

در صورتیکه برای این تابع ورودی تعیین نشود، ورودی نخست ۳ و ورودی دوم ۰ خواهد شد.

ورودی اول از نوع بدون علامت ۸ بیتی

ورودی دوم از نوع بدون علامت ۳۲ بیتی

bool     wait_ready_retry(uint8_t retries = 3, uint32_t ms = 0)
به کمک این تابع مقدار آنالوگ خوانده شده و در خروجی قرار می گیرد. بدون ورودی float    read()
به کمک این تابع می توانیم ورودی آنالوگ را به تعداد مشخص شده در ورودی خوانده و میانگین آن را در خروجی تابع داشته باشیم. تعداد فعالت خواندن در ورودی تعیین می گردد. در صورت عدم تعیین ورودی، مقدار ۱۰ فرض خواهد شد. ورودی از نوع بدون علامت ۸ بیتی   float    read_average(uint8_t times = 10)
خاموش کردن ماژول HX711 و قرار دادن آن در حالت کم مصرف بدون ورودی   void     power_down()
روشن کردن ماژول و قرار دادن در حالت کاری عادی بدون ورودی   void     power_up()
به کمک این تابع می توان مقیاس اندازه گیری را تعیین نمود. مقدار پیشفرض بدون قرار دادن ورودی ۱ خواهد بود. برای سنسور وزن تا ۵ کیلو این مقدار ۴۲۰٫۰۹۸۳ و برای ۲۰ کیلو این مقدار باید ۱۲۷٫۱۵ تعیین گردد. ورودی از نوع float void     set_scale(float scale = 1.0)
به کمک این تابع می توان وزن جسم را اندازه گیری شده را بدست آورد. ورودی این تابع تعداد دفعات جهت خواندن و میانگین گیری از وزن را نشان می دهد. مقدار پیشفرض ورودی ۱ بوده که در صورت عدم تعیین ورودی، این عدد لحاظ خواهد شد. ورودی از نوع بدون علامت ۸ بیتی   float    get_units(uint8_t times = 1)
به کمک این تابع آفست در اندازه گیری صفر خواهد شد. این تابع پس از set_scale فراخوانی می شود. ورودی این تابع تعداد دفعات در خواندن وزن را تعیین می نماید. وردی از نوع ۸ بیتی بدون علامت void     tare(uint8_t times = 10)

پس از مشاهده و تحلیل توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در قسمت بعدی به این موضوع می پردازیم.

 


اجرای یک نمونه برنامه


در این قسمت به اجرای یک نمونه برنامه با کتابخانه HX711 می پردازیم. در این نمونه برنامه  وزن اندازه گیری شده و در سریال مانیتور نمایش داده می شود.

#include "HX711.h"
HX711 scale;  //ایجاد یک شی از کلاس کتابخانه

uint8_t dataPin = 6;    //تعیین  پایه ۶ به عنوان پایه دیتا ارتباط I2C
uint8_t clockPin = 7;  //تعیین پایه ۷ به عنوان پایه کلاک ارتباط I2C
volatile float f;
void setup()
{
  Serial.begin(115200);
  scale.begin(dataPin, clockPin);  //راه اندازی سنسور
  scale.set_scale(420.0983);   //تنظیم  مقیاس
  scale.tare();  //به کمک این تابع 
}

void loop()
{
 
  f = scale.get_units(5);// به کمک این تابع وزن را ۵ بار خوانده و میانگین آن را محاسبه می کنیم.
  Serial.println(f);
  delay(250);
}

 


لوازم مورد نیاز


انواع سنسور وزن

ماژول مبدل ADC

انواع برد آردوینو

 


جمع بندی


در این آموزش به تحلیل و بررسی کتابخانه HX711.h جهت راه اندازی و کار با ماژول مبدل ADC با همین نام پرداختیم. ماژول مبدل آنالوگ به دیجیتال HX711، یک ماژول کاربردی جهت تبدیل سیگنال های آنالوگ به دیجیتال است. از این ماژول به طور خاص در راه اندازی سنسورهای لود سل استفاده می شود، چراکه این ماژول دارای پل واتستون داخلی جهت راه اندزای و کار با این سنسور است. در این آموزش به تحلیل و بررسی کتابخانه این ماژول پرداختیم؛ توابع کلیدی را بررسی کردیم و یک نمونه برنامه جهت آشنایی با توابع، اجرا نمودیم.

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

  • سلام وقت بخیر. بنده پروزه را بسته و وقتی وزن خوانده می‌شود درحد ۲۰ تا ۵۰ گرم خطا و دستور tale خروجی وزن را کاملا صفر نمیکند.