KUNJUNGI KAMI

KUNJUNGI KITA DI BUKALAPAK, TOKOPEDIA DAN SHOPEE

Arduino dengan Load Cell dan Penguat HX711 (Skala Digital)

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 HX711

3. 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.

Contoh #include "HX711.h"
        
            #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()
          Dalam fungsi loop(), contoh tersebut memanggil metode get_units() dengan dua cara berbeda: untuk mendapatkan satu pembacaan tunggal (tanpa parameter apa pun) dan untuk mendapatkan rata-rata dari 10 pembacaan terakhir.

                  
          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. 

          Biarkan kode berjalan beberapa detik agar memiliki waktu untuk mengatur skala (Anda akan melihat pesan di Monitor Serial). Setelah itu, letakkan objek apa pun di atas skala untuk diukur, dan Anda akan mendapatkan hasilnya di Monitor Serial.


          Saya bereksperimen dengan beberapa objek dan membandingkannya dengan nilai pada timbangan dapur saya, dan hasilnya sama. Jadi, bisa saya katakan bahwa skala Arduino saya setidaknya sama akuratnya dengan skala dapur saya.

          Skala Digital dengan Arduino


          Pada bagian ini, kita akan membuat skala digital sederhana dengan Arduino. Kita akan menambahkan layar OLED untuk menampilkan hasilnya dan sebuah tombol tekan (pushbutton) untuk menetapkan berat taranya (tare) pada skala.

          Daftar Bagian yang Diperlukan

          Berikut adalah daftar bagian yang diperlukan untuk proyek ini:

          1. Arduino UNO (lihat kit pemula Arduino terbaik)
          2. Load Cell dengan HX711 Amplifier
          3. Layar OLED I2C SSD1306
          4. Tombol tekan (pushbutton)
          5. Resistor 10K Ohm
          6. Breadboard
          7. Kabel Jumper

          Diagram Skematik

          Load Cell HX711
          Merah (E+) E+
          Hitam (E-) E-
          Putih (A-) A-
          Hijau (A+) A+

          Tambahkan layar OLED dan tombol tekan ke rangkaian sebelumnya pada pin-pin berikut:"

          "Hubungkan ke 3.3V atau 5V tergantung pada modelnya."

          Hubungkan tombol tekan melalui resistor tarik 10kOhm ke Pin 4. Ujung lain dari tombol tekan harus dihubungkan ke 5V. Anda dapat menggunakan pin digital Arduino lainnya.

          Anda dapat mengikuti diagram skematik berikut untuk menghubungkan bagian-bagian Anda.

          Arduino Digital Scale - Kode


          Untuk kesederhanaan, kita akan menangani tombol tekan menggunakan library sederhana yang mendeteksi tekanan tombol dengan debouncing (sehingga kita tidak perlu khawatir tentang itu dalam kode kita). Untuk menulis ke layar OLED, kita akan menggunakan library Adafruit SSD1306 dan Adafruit GFX.

          Pushbutton Library

          Terdapat banyak library dengan berbagai fungsionalitas untuk menghandle tombol tekan. Kita akan menggunakan library tombol tekan dari Pololu. Ini adalah library sederhana tetapi dilengkapi dengan semua yang kita butuhkan untuk proyek ini. Di Arduino IDE Anda, pergi ke Sketch > Include Library > Manage Libraries dan cari "pushbutton". Pasang library tombol tekan dari Pololu.

          Sebagai alternatif, jika Anda tidak ingin menggunakan library, Anda dapat menambahkan kode debounce sendiri (yang tidak sulit). Untuk contoh kode debounce, di dalam Arduino IDE Anda, Anda dapat pergi ke File > Examples > Digital > Debounce.

          Library OLED

          Kita akan menggunakan library berikut untuk mengendalikan layar OLED. Pastikan Anda telah menginstal library berikut:


          Anda dapat menginstal library menggunakan Arduino Library Manager. Pergi ke Sketch > Include Library > Manage Libraries dan cari nama library.

          Kode
          Salin kode berikut ke Arduino IDE Anda. Sebelum mengunggahnya ke  board Arduino, Anda perlu memasukkan faktor kalibrasi Anda (yang telah diperoleh sebelumnya).


          Demonstrasi 


          Setelah mengunggah kode ke board Anda, Anda dapat mulai menimbang objek dengan load cell Anda. Pembacaan akan ditampilkan pada layar OLED. Anda dapat menetapkan berat taranya dengan menekan tombol tekan.\


          Sekali lagi, pembacaan pada skala digital Arduino saya sesuai dengan pembacaan pada skala dapur saya.


          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.


          Secara ringkas, Anda telah belajar cara mengkalibrasi skala dan cara mendapatkan berat objek. Anda juga telah belajar cara membuat skala digital sederhana dengan Arduino menggunakan layar OLED untuk menampilkan pengukuran dan tombol tekan untuk menetapkan berat taranya.

          Kami berharap Anda menemukan tutorial ini berguna untuk memulai dengan load cell. Selain berguna untuk mengukur berat objek, load cell juga dapat berguna dalam banyak aplikasi lain seperti mendeteksi kehadiran objek, mengestimasi tingkat cairan dalam tangki, menghitung laju penguapan air, memeriksa apakah ada makanan di mangkuk hewan peliharaan Anda, dan lain sebagainya.

          Tidak ada komentar:

          Posting Komentar