Dalam panduan ini, Anda akan belajar bagaimana membuat timbangan digital dengan Arduino menggunakan load cell dan amplifier HX711. Pertama, Anda akan belajar cara menghubungkan load cell dan amplifier HX711 ke Arduino untuk membangun timbangan. Kemudian, kami akan menunjukkan kepada Anda cara mengkalibrasi timbangan tersebut, serta memberikan contoh sederhana untuk mendapatkan berat objek. Selanjutnya, kami juga akan menambahkan sebuah layar untuk menampilkan pengukuran dan sebuah tombol untuk mengatur ulang timbangan ("tare").
Berikut adalah Daftar Isi dari tutorial ini:
1. Memperkenalkan Load Cell (Strain Gauges)l
2. Amplifier HX711
2. Amplifier HX7113. Menyiapkan Load Cell
4. Menghubungkan Load Cell dan Amplifier HX711 ke Arduino
5. Memasang Library HX711
6. Mengkalibrasi Timbangan
7. Menimbang Benda - Kode Program
8. Timbangan Digital dengan Arduino
Memperkenalkan Load Cell
Sebuah load cell mengubah gaya menjadi sinyal listrik yang dapat diukur. Sinyal listrik tersebut berubah secara proporsional terhadap gaya yang diterapkan. Terdapat beberapa jenis load cell: strain gauge, pneumatik, dan hidrolik. Dalam tutorial ini, kami akan membahas tentang load cell berbasis strain gauge.
Load cell berbasis strain gauge terdiri dari batang logam yang dilengkapi dengan strain gauge (berada di bawah lem putih pada gambar di atas). Strain gauge adalah sensor elektrik yang mengukur gaya atau regangan pada suatu objek. Ketika gaya eksternal diterapkan pada objek, resistansi strain gauge berubah, menyebabkan deformasi pada bentuk objek (dalam kasus ini, batang logam). Resistansi strain gauge berbanding lurus dengan beban yang diterapkan, sehingga memungkinkan kita untuk menghitung berat objek.
Biasanya, load cell memiliki empat strain gauge yang dihubungkan dalam jembatan Wheatstone (seperti yang ditunjukkan di bawah) yang memungkinkan kita untuk mendapatkan pengukuran resistansi yang akurat. Untuk penjelasan lebih detail tentang cara kerja strain gauge, bacalah artikel ini.
Kabel yang berasal dari load cell biasanya memiliki warna-warna berikut:
Merah: VCC (E+)
Hitam: GND (E-)
Putih: Output – (A-)
Hijau: Output + (A+)
Aplikasi Load Cell Berbasis Strain Gauge dapat digunakan dalam berbagai macam aplikasi, contohnya:
1. Memeriksa apakah berat suatu objek berubah dari waktu ke waktu.
2. Mengukur berat suatu objek.
3. Mendeteksi keberadaan suatu objek.
4. Mengestimasi level cairan dalam suatu wadah.
5. Dan lain sebagainya.
Karena perubahan regangan saat menimbang objek sangat kecil, kita membutuhkan sebuah amplifier. Load cell yang kami gunakan biasanya dijual bersama dengan amplifier HX711. Oleh karena itu, amplifier tersebut yang akan kita gunakan.
Amplifier HX711
Amplifier HX711 adalah board perluasan yang memungkinkan Anda dengan mudah membaca load cell untuk mengukur berat. Anda menghubungkan kabel-kabel load cell di satu sisi, dan mikrokontroler di sisi lain. HX711 berkomunikasi dengan mikrokontroler menggunakan antarmuka dua kabel (Clock dan Data).
Anda perlu menyolder header pin pada pin GND, DT, SCK, dan VCC untuk menghubungkannya ke Arduino. Saya menyolder kabel-kabel load cell langsung ke pin E+, E-, A-, dan A+. Kabel-kabel load cell sangat tipis dan rapuh, hati-hati saat menyolder agar tidak merusak kabelnya.
Untuk informasi lebih lanjut tentang amplifier HX711, Anda dapat merujuk ke datasheet HX711.
Menyiapkan Load Cell
Kit load cell kami dilengkapi dengan dua lempengan akrilik dan beberapa sekrup untuk menyusun load cell sebagai timbangan. Anda juga dapat menggunakan lempengan kayu atau mencetak lempengan sendiri dengan printer 3D.
Anda harus mengikat lempengan-lempengan pada load cell sedemikian rupa sehingga menciptakan regangan di antara ujung-ujung berlawanan dari batang logam. Lempengan bagian bawah menahan load cell, dan lempengan bagian atas adalah tempat Anda menaruh objek-objek.
Berikut adalah gambaran mengenai tampilan load cell saya dengan lempengan akrilik.
Dimana Membeli Load Cell dengan Amplifier HX711?
Anda dapat memeriksa load cell dengan HX711 di Maker Advisor untuk mencari harga terbaik (dengan atau tanpa lempengan akrilik termasuk). Terdapat load cell dengan berbagai rentang pengukuran. Beberapa berat maksimum yang umum adalah 1kg, 5kg, 10kg, dan 20kg.
Anda dapat menggunakan tautan sebelumnya atau langsung mengunjungi MakerAdvisor.com/tools untuk menemukan semua komponen yang Anda butuhkan untuk proyek Anda dengan harga terbaik!
Menghubungkan Load Cell dan Amplifier HX711 ke Arduino
Amplifier HX711 berkomunikasi melalui antarmuka dua kabel. Anda dapat menghubungkannya ke pin digital mana pun pada board Arduino Anda. Kami akan menghubungkan pin data (DT) ke Pin 2 dan pin clock (CLK) ke Pin 3.
Ikuti tabel berikut atau skema diagram untuk menghubungkan load cell ke board Arduino Anda.
Load Cell | HX711 | HX711 | Arduino |
---|---|---|---|
Merah (E+) | E+ | GND | GND |
Hitam (E-) | E- | DT | Pin 2 |
Putih (A-) | A- | SCK | Pin 3 |
Hijau (A+) | A+ | VCC | 5V |
Memasang Library HX711
Terdapat beberapa library yang berbeda untuk mendapatkan pengukuran dari load cell menggunakan amplifier HX711. Kami akan menggunakan pustaka HX711 yang dibuat oleh bodge. Library ini kompatibel dengan ESP32, ESP8266, dan Arduino.
Untuk Arduino IDE:
Ikuti petunjuk berikut untuk memasang pustaka jika Anda menggunakan Arduino IDE.
1. Buka Arduino IDE dan pergi ke Sketch > Include Library > Manage Libraries.
2. Cari "HX711 Arduino Library" dan pasang pustaka yang dibuat oleh Bogdan Necula.
Mengkalibrasi Timbangan (Arduino dengan Load Cell)
Pada saat ini, kami anggap Anda telah menghubungkan load cell ke amplifier HX711 dan amplifier tersebut ke board Arduino. Anda juga sudah menyiapkan timbangan Anda (dua lempengan dihubungkan pada ujung-ujung berlawanan pada load cell), dan telah memasang pustaka HX711.
Sebelum mendapatkan berat objek, Anda perlu mengkalibrasi load cell Anda terlebih dahulu dengan mendapatkan faktor kalibrasi. Faktor kalibrasi Anda akan berbeda dengan milik saya, jadi Anda sebaiknya tidak melewatkan bagian ini.
1) Siapkan objek dengan berat yang diketahui. Saya menggunakan timbangan dapur saya dan menimbang sebuah gelas berisi air (107g).
2) Unggah kode berikut ke board Arduino Anda. Kami telah menulis kode berikut dengan memperhatikan instruksi untuk mengkalibrasi load cell yang disediakan dalam dokumentasi pustaka.
/*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) Setelah mengunggah, buka Serial Monitor pada baud rate 57600 dan kemudian tekan tombol RESET pada board Arduino.
4) Ikuti instruksi pada Serial Monitor: hilangkan semua beban dari timbangan (timbangan akan dikalibrasi secara otomatis). Selanjutnya, letakkan objek dengan berat yang diketahui di atas timbangan dan tunggu hingga Anda mendapatkan nilai.
5) Hitung faktor kalibrasi Anda menggunakan rumus berikut:
Calibration Factor = (Reading) / (Known Weight)
Dalam kasus kita, pembacaan yang didapatkan adalah -49171. Berat yang diketahui adalah 107g, sehingga faktor kalibrasi kita akan menjadi: -49171/107 = -459.542.
Calibration Factor = -49171 / 107 = -459.542
Simpan faktor kalibrasi Anda karena Anda akan membutuhkannya nanti. Faktor kalibrasi Anda akan berbeda dengan milik kami.
Karena keluaran dari sensor ini sebanding dengan gaya yang diterapkan pada load cell, Anda dapat mengkalibrasi timbangan Anda menggunakan satuan apa pun yang masuk akal untuk Anda. Saya menggunakan gram, tetapi Anda dapat menggunakan pound, kilogram, atau bahkan potongan makanan kucing (seperti yang ditunjukkan dalam video Andreas Spiess ini).
Menimbang Objek (Arduino dengan Load Cell)
Sekarang bahwa Anda sudah mengetahui faktor kalibrasi Anda, Anda dapat menggunakan load cell Anda untuk menimbang objek. Mulailah dengan menimbang objek-objek dengan berat yang diketahui, dan ulangi proses kalibrasi jika nilai yang diperoleh tidak akurat.
Salin kode berikut ke Arduino IDE Anda. Sebelum mengunggahnya ke board Anda, jangan lupa untuk memasukkan faktor kalibrasi Anda di baris 43/44 pada kode tersebut. Kode berikut adalah contoh yang disediakan oleh pustaka ini yang menunjukkan penggunaan sebagian besar dari fungsinya.
Bagaimana Kode Berfungsi
/**
* 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
#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);
Mulailah dengan menyertakan pustaka yang diperlukan.
#include "HX711.h"
Baris-baris berikut mendefinisikan pin yang akan Anda gunakan untuk menghubungkan ke penguat HX711. Kami memilih Pin 2 dan Pin 3. Anda dapat menggunakan pin digital lainnya.
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
Selanjutnya, buat sebuah instance dari library HX711 yang disebut 'scale' yang akan Anda gunakan nanti untuk mendapatkan pengukuran.
HX711 scale;
setup(0)
Dalam fungsi setup(), inisialisasi monitor Serial.
Serial.begin(57600);
Inisialisasi load cell dengan memanggil metode begin() pada objek 'scale' dan mengirimkan pin digital sebagai argumen
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
- read(): mendapatkan pembacaan mentah dari sensor.
- read_average(jumlah pembacaan): mendapatkan rata-rata dari sejumlah pembacaan terakhir yang telah ditentukan.
- get_value(jumlah pembacaan): mendapatkan rata-rata dari sejumlah pembacaan terakhir yang telah ditentukan dikurangi dengan berat taranya (tare weight).
- get_units(jumlah pembacaan): mendapatkan rata-rata dari sejumlah pembacaan terakhir yang telah ditentukan dikurangi dengan berat taranya (tare weight) dibagi dengan faktor kalibrasi - ini akan menghasilkan pembacaan dalam unit yang Anda inginkan.
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)
Pada baris berikutnya, jangan lupa untuk memasukkan faktor kalibrasi Anda. Gunakan metode set_scale() untuk ini.
scale.set_scale(INSERT YOUR CALIBRATION FACTOR)
Kemudian, panggil metode tare() untuk menetapkan berat taranya (tare) pada skala.
scale.tare(); // reset the scale to 0
Setelah pengaturan ini, skala seharusnya siap untuk mendapatkan pembacaan yang akurat dalam unit yang Anda inginkan. Contoh tersebut memanggil metode-metode sebelumnya sehingga Anda dapat melihat perbedaan sebelum dan setelah pengaturan skala.
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()
scale.power_down(); // put the ADC in sleep mode
delay(5000);
scale.power_up();
Demontrasi
Unggah kode ke board Arduino Anda. Setelah diunggah, buka Monitor Serial dengan baud rate 115200.Skala Digital dengan Arduino
Daftar Bagian yang Diperlukan
Diagram Skematik
Load Cell | HX711 |
---|---|
Merah (E+) | E+ |
Hitam (E-) | E- |
Putih (A-) | A- |
Hijau (A+) | A+ |
Arduino Digital Scale - Kode
Pushbutton Library
Library OLED
Demonstrasi
Penutup
Dalam tutorial ini, Anda belajar cara menghubungkan load cell strain gauge dengan board Arduino menggunakan penguat HX711. Keluaran dari load cell ini sebanding dengan gaya yang diterapkan. Jadi, Anda dapat mengkalibrasi skala untuk digunakan dalam g, kg, lb, atau unit lain yang relevan untuk proyek Anda.
Tidak ada komentar:
Posting Komentar