ماژول HX711 و ساخت ترازوی دیجیتال دقیق


Warning: Undefined array key "tie_hide_meta" in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

Warning: Trying to access array offset on value of type null in /home/cttfir/domains/cttf.ir/public_html/wp-content/themes/sahifa/framework/parts/meta-post.php on line 3

معرفی ماژول HX711

تراشه HX711 یک مبدل انالوگ به دیجیتال ۲۴ بیت می باشد که مخصوص درایو لودسل ها و سنسورهای صنعتی که خروجی هایی به صورت پل وتستون دارن طراحی شده.

HX711 دارای ۲ کانال ورودی تفاضلی مالتی پلکس هستش و کانال ها با اسم A و B نامگذاری شده اند. کانال A دارای گین قایل تنظیم به صورت ۱۲۸ و ۶۴ هستش که به ترتیب برای ولتاژهای +-۲۰ و +-۴۰ میلی ولت می باشد. و همچنین کانال B دارای گین ثابت ۳۲ هستش.

برای راه اندازی تراشه HX711 قطعات بسیار کمی لازمه که همه اونها بر روی ماژول های اماده بازار قرار داده شده است.

یک سری از ویژگی های این تراشه رو براتون می نویسم:

  • دارای دو ورودی تفاضلی قابل انتخاب توسط کاربر
  • گین قابل تنظیم
  • ولتاژ کاری ۲٫۷ تا ۵٫۵ ولت
  • پکیج SOP16
  • پروتکل ارتباطی سریال و عملکرد راحت(منظور ارتباط های سریال اسناندارد نیست!)
  • حذف فرکانس های ۵۰ و ۶۰ هرتز تغذیه

در مورد پروتکل ارتباطی و یک سری ریز نکات مربوط به تراشه مواردی رو خدمتتون عرض کنم.

در دیتاشیت در مورد سرعت دیتای خروجی صحبت شده که دو مقدار ۱۰ هرتز و ۸۰ هرتز رو می تونه داشته باشه. دقت کنید که ماژول های فعلی در مد ۱۰ هرتز قرار دارن.

در مورد عملکرد تراشه به صورت نرمال یا مد Power Down به این نکته دقت کنید که اگر پین SCK مقدار صفر داشته باشه تراشه به صورت نرمال کار می کنه و در صورتی که از مقدار صفر به یک تغییر وضعیت بده و بیشتر از ۶۰ میکروثانیه در این وضعیت بمونه تراشه وارد مد Power Down میشه.

و در نهایت در مورد خروجی گرفتن از HX711 باید خدمتتون عرض کنم که دوتا پین داره یکی SCK و دیگری DT یا Data Out و فقط کافیه ما این دوتا ین رو به میکروکنترلرمون وصل کنیم. پینی که SCK بهش وصل میشه باید به صورت خروجی تعریف بشه و پین متصل شده به DT به صورت ورودی تعریف میشه.

حالا برای گرفتن دیتا به صورت زیر عمل می کنیم.

حالا همین شکل رو به صورت خطوط کد براتون قرار میدم.

و اما بریم سراغ انجام یک پروژه کاملا عملی و ساخت یک ترازو دقیق با استفاده از این تراشه.

ترازو وسیله ای هست که برای اندازه گیری وزن اجسام و یا مایعات مورد استفاده قرار می گیرد که امروزه تقریبا در هر صنعتی کاربرد دارد.  در گذشته نیز انواع مختلفی از ترازوها وجود داشته و مورد استفاده قرار می گرفته است. تعدادی از آن ها عبارتند از: ترازو ۲ کفه ای – قپان – ترازوی عقربه ای – ترازوی آبی – ترازوی حکمت – ترازو ترکیبی  و …

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

قطعا برای ساخت هر وسیله ای احتیاج یه یک سری وسایل داریم تا کار را شروع کنیم.
ساخت ترازو هم از این امر مستثنا نخواهد بود و برای شروع به کار ابتدا قطعات مورد نیاز رو معرفی می کنم و سپس توضیحات مربوط به هر قطعه ارائه داده خواهد شد.

قطعات مورد نیاز:

  • لودسل
  • ماژول HX711
  • پردازنده (میکروکنترلر Atmega32a)
  • نمایشگر (LCD کاراکتری ۱۶×۲)
  • پایه ترازو
  • کفی ترازو
  • اداپتور جهت تغذیه دستگاه (آداپتور ۵ ولت ۱ آمپرلودسل

 

لودسل

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

هر لودسل چهار تا سیم داره که قرمز برای اعمال ولتاژ مثبت، سیاه اعمال ولتاژ منفی(اتصال زمین)، سبز و سفید هم دیتا خواهند بود. فراموش نکنید ساختار داخلی لودسل به صورت زیر است:

مورد دوم که مربوط به ماژول HX711 هست رو در بالا توضیح دادم و موارد ۳ و ۴ و ۷ هم کاملا مشخصه اما موارد ۵ و ۶ رو بگم که چی به چیه.

پایه ترازو

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

کفی ترازو

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

و قسمت دوم هم در این تصویر متاسفانه به صورت جرئی می بینید.

 

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

شماتیک مدار به صورت زیر هستش:

۱- این قسمت مربوط به تغذیه میشه که P1 ورودی مدار و یک ترانس ۹ تا ۱۲ ولت بهش وصل میشه. این ولتاژ AC به یک پل دیود داده میشه تا یکسوسازی بشه و بعد ازان خروجی یکسو شده را میدیم به یه رگولاتور که در اینجا من LM2596 رو انتخاب کردم. دلیل خاصی نداره در دسترس بوده و استفاده کردم. پس اگر شما ۷۸۰۵ هم داشته باشین مشکلی نیس.
قطعاتی که در کنار رگولاتور می بینید خازن های نویزگیر، مقاومت های فیدبک، دیود و سلف حذف نویز و اینا هستن که در دیتاشیت ذکر شده و قطعات جانبی رگولاتور محسوب میشن.
۲- پردازنده Atmega32 که جهت خواندن اطلاعات مبدل و نمایش بر روی نمایشگر مورد استفاده قرار می گیره. مقاومت R5 مقاومت پول آپ ریست هست و L2 و C9 هم فیلتر تغذیه میکروکنترلر هستند.
۳- پورت ISP برای پروگرام کردن میکروکنترلر روی برد به صورت استاندارد
۴- پین هدر مربوط به اتصال نمایشگر که در اینجا از LCD 16*2 استفاده شده است. پتانسیومتر موجود برای تنظیم کنتراست است.
۵- قسمت مربوط به اتصالات HX711 می باشد. دو خازن موجود ئر کنار مبدل جهت حذف نویز استفاده شده است.
۶- چهار عدد پیچ برای قرار دادن فیبرمدارچاپی بر روی شاسی مناسب.

فایل های شماتیک و استثنائا PCB رو به صورت کامل در این فایل می تونید دانلود کنید.

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

توضیح توابع برنامه:

تابع long HX711_Read
کار این تابع انتخاب گین و کانال انتخاب شده جهت خواندن دیتا می باشد.

 

تابع get_offset
ما باید مبنایی رو در نظر بگیریم تا تغییراتی که به واسطه قرار دادن وزنه روی لودسل در خروجی ایجاد می شود رو با اون مبنا مقایسه کنیم. این تابع کارش ثبت ولتاژی به عنوان رفرنس هستش.

void get_offset(void)
{
    int i=0;
 
    HX711_Buffer = 0;
 
       for( i = 0 ; i < 10 ; i++)
    {
        HX711_Buffer = HX711_Buffer + HX711_Read();
        delay_us(500);
    }
    <span style="font-size: 10pt;">HX711_Buffer</span> = HX711_Buffer /10;
    Weight_Maopi = HX711_Buffer/100;
}//get_offset

 

تابع get_scale
این تابع هر بار که فراخوانی میشه اطلاعات رو از HX711 می خونه و با رفرنس مطابقت میده که اگر این مقدار از مقدار رفرنس بیشتر یا مساوی بود با استفاده از فرمول های نوشته شده وزن رو محاسبه می کنه.

کالیبره کردن دستگاه به این شکل خواهد بود که شما ابتدا باید در حلقه اصلی خط مربوط به دستور sprint رو به این صورت تغییر بدین:

sprintf(buffer,” %ld “,Weight_Shiw);

نکته: توجه کنید باید از قسمت تنظیمات کامپایلر هم تغییر حالت float به long مربوط به دستور sprint اعمال شود.
بعد از ایجاد تغییر برنامه را کامپایل کرده و میکروکنترلر را پروگرام کنید.

بدون اینکه وزنه ای روی کفه ترازو باشه دستگاه رو خاموش و روشن کنید. الان باید عدد صفر روی نمایشگر ظاهر بشه.
حالا یک وزنه دقیق ۱ تا ۴ کیلو را بر روی کفه ترازو قرار بدین. عدد به دست اومده رو تقسیم بر وزنه ای که بر روی کفه گذاشتین بکنید. حالا اون عدد رو در قسمت HX_REF بنویسید و خط مربوط به دستور sprintf رو به حالت اول برگردانده و تنیمات را در حالت قبل قرار دهید.
ترازوی شما آماده استفاده است.

نمونه ساخته شده دستگاه

موفق باشید

33 نظر

  1. سلام
    ویدئو از کار کرد این ترازو دارید؟

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

  3. سلام
    من هم این ماژول رو تهیه کردم و برنامش را روی میکرو نوشتم ولی جوابی که میگیرم اینه که همه 24 بیت عدد یک هست و خوانده میشه. برنامه رو همه جوره تست کردم و پایه هم pull-down َشده هست. یعنی مطمئنا با هر پالس داره یک میخونه مگر اینکه شیف رجیستر داخلی درست کار نکنه. شما با این مشکل برنخوردید یا پیشنهادی ندارید؟

  4. سلام ممکنه با میکرو lpc1768 مخصوصا انتخاب پین

    سلام عالی بود
    من با میکرو lpc1768 کار می کنم
    انتخاب پین مثلا p0.21 و p0.22 برای sck و Dout
    Lpc _Pinion -> pinsell1=?
    U

    • سلام
      متوجه نشدم این خط اخر ایا منظورتون تغییر وضعیت پین هاست؟
      اگر با رجیسترها کار بکنید اشتباه نکنم باید دنبال IOxDIR و IOxSET و CLR بگردین و در اونها تغییر بدین.

  5. ببخشید این مدار میتونه دقت هزارم گرم یا صدم گرم رو داشته باشه؟؟؟

    • بستگی به حداکثر مقدار لودسل داره. مثلا شما قطعا اگر یک لودسل 2 تن رو راه اندازی کنید دقت در حد کیلوگرم خواهد بود اما برای یک لودسل 5 کیلوگرم بله می تونید دقت های خیلی بالا رو داشته باشید.

      • خب من لودسلم 5 کیلویی هستش چطور میتونم با این مدار دقت هزارم گرمی رو داشته باشم؟ … مثلا 2.357 گرم … چون من که مدارو بستم ..متوجه شدم که تا هزارم گرم نشون میده ..منتها اصلا صحیح نشون نمیداد مثلا یه جسم 150 گرمی رو 0.135 نشون میداد … این دلیلش چیه؟؟؟؟

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

  6. داود ده جوریان

    سلام : برنامه نویسی این مطلب آردینو هست؟
    من سخت افزار مورد استفاده ام مگا 2560 هست . لودسلم هم 40 کیلوییه . اما دو تا مشکل دارم
    1- عدد نشان داده شده ثابت نیست و دائم تغییر میکنه
    2- دقت لازم رو نداره من دقت 2 گرم رو می خوام ولی لودسل دقت 5 گرم به بالا رو نشون میده .
    باید چیکار کنم.

    • سلام
      خیر این مطلب بر اساس میکروکنترلرهای AVR نوشته شده هر چند که با تغییرات جزئی در آردوینو هم می تونه مورد استفاده قرار بگیره.
      برای این دقت نیاز به طراحی سخت افزار خوبی دارین و در نهایت کالیبراسیون هم باید با نهایت دقت انجام بشه.

      • داود ده جوریان

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

  7. داود ده جوریان

    سلام جناب آراسته : تمام پروژه من وابسته به همین لودسل شده است . اگر امکانش هست کمکم کنید . ممنون

  8. ممنون عالی بود . با تغییراتی در برنامه یک نمونه 200 kg با نمایش در سون سگمنت چهار رقمی ساختم خیلی خوب کار میکرد .

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

  9. سلام
    ایا میشه این پروژه همین کد با لودسل 200 گرمی راه اندازی کرد.
    باتشکر

  10. سلام ماژول رو راه انداختم اما عدد هم خیلی نوسان داره چکارش کنم پرش داره

  11. سلام خسته نباشید ممنون از پروژه خیلی خوبی که گذاشتین خواستم بدونم شما کتابخانه پروتئوس hx711 رو دارین یا سایتی رو سراغ دارین که داشته باشه تا اونجایی که من فهمیدم هست ولی من پیدا نکردم .

  12. سلام میشه از این ماژل HX711 برای سنسورهای غیر از لوسل استفاده کرد مثل دما . رطوبت . ولت متر و آمپرمتر و … ؟؟؟؟؟

    • سلام. اگر دقت کنید ورودی این ماژول تفاضلی هست و باید سنسورهایی با این مدل خروجی رو بهش متصل کنید. البته قطعا با یک سری ترفند میشه موارد دیگه رو هم باهاش خوند.

  13. سلام .ایا میشه همین مدارو به سون سگمنت وصل کنیم .اگه نمیشه چه تغیراتی باید بدیم . میخوام به به سون سگمنتهای ده سانتی بزرگ وصل بشه و فقط وزن را نمایش بده با یک کارکتر

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

  15. با عرض سلام
    یه چند تا سوال داشتم
    1) با توجه به برنامه نوشته شده برای این ماژول تا زمانی که جسمی رو ترازو نباشد چیزی در lcd نمایش داده نمی شود؟ برای رفع این مشکل جه کاری می توان کرد؟
    2) در صورت امکان فایل التیوم (فوت پرینت و شماتیک) ماژول را برای دانلود در سایت قرار دهید .
    با تشکر

پاسخ دادن به سلام ممکنه با میکرو lpc1768 مخصوصا انتخاب پین لغو پاسخ

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