Tutorial Lengkap Load Cell Arduino & ESP32: Rangkaian, Program, dan Kalibrasi

Sistem timbangan digital ini merupakan suatu perangkat elektronik yang dirancang untuk mengukur berat suatu objek secara akurat dengan memanfaatkan sensor load cell berbasis strain gauge. Sistem ini bekerja dengan cara mengubah gaya tekan (beban) menjadi sinyal listrik, kemudian memproses sinyal tersebut menggunakan mikrokontroler sehingga dapat ditampilkan dalam bentuk nilai berat pada LCD 16×4.

Pada sistem ini, load cell tidak bekerja secara langsung dengan mikrokontroler karena sinyal yang dihasilkan sangat kecil (dalam satuan milivolt). Oleh sebab itu digunakan modul HX711 sebagai penguat sinyal sekaligus konverter analog ke digital (ADC) dengan resolusi tinggi hingga 24-bit. Data digital yang dihasilkan HX711 kemudian dibaca oleh Arduino UNO atau ESP32, diolah, dikalibrasi, dan ditampilkan secara real-time pada LCD.

Sistem ini dirancang agar:

  • Mudah dirakit
  • Mudah dikalibrasi
  • Stabil dalam pembacaan
  • Fleksibel untuk dikembangkan

Dengan menggunakan LCD 16×4 berbasis I2C, informasi yang ditampilkan menjadi lebih jelas dan rapi, serta menghemat penggunaan pin mikrokontroler.

KEGUNAAN LOAD CELL

1. Pengertian Umum

Load cell adalah sensor elektronik yang digunakan untuk mengukur gaya tekan atau berat suatu objek. Load cell bekerja dengan mengubah gaya mekanik menjadi sinyal listrik yang kemudian dapat diproses oleh sistem elektronik atau mikrokontroler.

Dalam dunia elektronika dan instrumentasi, load cell menjadi komponen utama dalam sistem penimbangan digital karena memiliki tingkat akurasi dan kestabilan yang tinggi.


2. Fungsi Utama Load Cell

2.1 Mengukur Berat Suatu Objek

Fungsi utama load cell adalah mengukur berat benda dengan cara mendeteksi gaya tekan akibat gravitasi. Ketika sebuah objek diletakkan di atas load cell, sensor akan mengalami deformasi kecil yang sebanding dengan berat objek tersebut.

Perubahan deformasi ini kemudian diubah menjadi sinyal listrik yang nilainya proporsional terhadap berat benda.


2.2 Mengubah Gaya Mekanik Menjadi Sinyal Listrik

Load cell bekerja berdasarkan prinsip strain gauge, yaitu perubahan nilai resistansi ketika terjadi tekanan atau tarikan.

Proses ini memungkinkan sistem elektronik membaca besaran fisik (gaya) dalam bentuk data listrik, sehingga dapat diolah lebih lanjut oleh mikrokontroler.


2.3 Menjadi Sensor Utama pada Timbangan Digital

Load cell merupakan komponen inti pada:

  • Timbangan digital
  • Timbangan industri
  • Timbangan laboratorium
  • Timbangan UMKM

Tanpa load cell, sistem timbangan digital tidak dapat bekerja dengan baik karena tidak ada sensor yang mendeteksi berat secara langsung.


3. Kegunaan Load Cell Berdasarkan Aplikasi

3.1 Timbangan Digital Rumah Tangga

Digunakan pada:

  • Timbangan dapur
  • Timbangan badan
  • Timbangan paket

Load cell memungkinkan pengukuran berat yang cepat, akurat, dan mudah dibaca melalui layar digital.


3.2 Industri dan Manufaktur

Dalam dunia industri, load cell digunakan untuk:

  • Penimbangan bahan baku
  • Kontrol berat produk
  • Pengisian otomatis (filling system)
  • Conveyor timbang

Load cell membantu menjaga konsistensi kualitas produk dan mengurangi kesalahan manusia.


3.3 Sistem Otomasi dan Kontrol

Load cell sering digunakan sebagai input sensor pada sistem otomatis, seperti:

  • Mesin pengemas otomatis
  • Mesin pencampur bahan
  • Sistem kontrol beban motor
  • Monitoring beban tangki

Data dari load cell digunakan sebagai dasar pengambilan keputusan oleh sistem kontrol.


3.4 Laboratorium dan Penelitian

Dalam penelitian, load cell digunakan untuk:

  • Pengujian material
  • Analisis gaya tekan dan tarik
  • Eksperimen fisika dan teknik

Akurasi tinggi load cell sangat dibutuhkan dalam pengukuran ilmiah.


3.5 Aplikasi IoT dan Smart System

Dengan bantuan mikrokontroler seperti ESP32, load cell dapat digunakan pada:

  • Timbangan IoT
  • Monitoring stok otomatis
  • Sistem logistik pintar
  • Smart farming (penimbangan pakan, hasil panen)

4. Kegunaan Load Cell dalam Sistem Arduino & ESP32

Dalam sistem berbasis Arduino atau ESP32, load cell digunakan untuk:

  • Mengukur berat secara real-time
  • Menyediakan data sensor ke mikrokontroler
  • Menjadi input utama dalam sistem pengambilan keputusan
  • Menampilkan hasil pengukuran pada LCD atau aplikasi

Load cell memungkinkan mikrokontroler membaca data fisik yang sebelumnya tidak bisa diukur secara langsung.


5. Kelebihan Penggunaan Load Cell

✔ Akurasi tinggi
✔ Respon cepat
✔ Stabil untuk penggunaan jangka panjang
✔ Mudah diintegrasikan dengan mikrokontroler
✔ Cocok untuk berbagai skala pengukuran


6. Keterbatasan Load Cell

Membutuhkan kalibrasi
Sensitif terhadap getaran
Pemasangan mekanik harus presisi


7. Contoh Implementasi Nyata Load Cell

  • Timbangan digital toko
  • Timbangan buah dan sayur
  • Mesin packing otomatis
  • Sistem hitung harga per kilogram
  • Timbangan berbasis IoT

PRINSIP KERJA LOAD CELL

1. Pengertian Umum

Load cell adalah sensor yang bekerja berdasarkan prinsip perubahan resistansi listrik akibat deformasi mekanik. Sensor ini digunakan untuk mengukur gaya atau berat dengan cara mengubah gaya mekanik menjadi sinyal listrik yang dapat diproses oleh sistem elektronik.

Prinsip kerja load cell memanfaatkan strain gauge, yaitu elemen sensor yang akan berubah nilai resistansinya ketika mengalami tekanan atau tarikan.


2. Komponen Utama Load Cell

Sebuah load cell terdiri dari:

  1. Elemen elastis (logam)
    Berfungsi sebagai struktur yang akan mengalami deformasi saat diberi beban.
  2. Strain gauge
    Sensor resistif yang ditempel pada elemen elastis.
  3. Jembatan Wheatstone
    Rangkaian listrik untuk mendeteksi perubahan resistansi kecil.
  4. Kabel output
    Menghubungkan load cell ke modul penguat (HX711).

3. Proses Kerja Load Cell Secara Bertahap

3.1 Pemberian Beban

Ketika suatu benda diletakkan di atas load cell, gaya berat akibat gravitasi akan bekerja pada elemen elastis load cell.


3.2 Terjadinya Deformasi

Elemen elastis load cell akan mengalami deformasi sangat kecil (mikroskopis).
Deformasi ini:

  • Tidak merusak struktur
  • Bersifat elastis (kembali ke bentuk semula)

3.3 Perubahan Resistansi Strain Gauge

Strain gauge yang menempel pada elemen elastis akan ikut meregang atau menekan.
Akibatnya:

  • Panjang kawat strain gauge berubah
  • Nilai resistansi listrik berubah

📌 Semakin besar beban → semakin besar perubahan resistansi


3.4 Jembatan Wheatstone

Strain gauge disusun dalam rangkaian Wheatstone Bridge.
Rangkaian ini berfungsi untuk:

  • Mengubah perubahan resistansi kecil menjadi perubahan tegangan
  • Meningkatkan sensitivitas pengukuran

Tanpa jembatan Wheatstone, perubahan resistansi sulit dideteksi.


3.5 Sinyal Tegangan Kecil (mV)

Perubahan resistansi menghasilkan tegangan keluaran sangat kecil (dalam satuan millivolt).

📌 Tegangan ini belum bisa langsung dibaca oleh mikrokontroler.


3.6 Penguatan dan Konversi (HX711)

Sinyal mV dari load cell masuk ke HX711, yang berfungsi untuk:

  • Menguatkan sinyal
  • Menghilangkan noise
  • Mengonversi sinyal analog ke digital (ADC 24-bit)

3.7 Pemrosesan oleh Mikrokontroler

Data digital dari HX711 dibaca oleh:

  • Arduino atau
  • ESP32

Data ini kemudian:

  • Dikalkulasi
  • Dikalibrasi
  • Dikonversi ke satuan berat (gram atau kilogram)

3.8 Penampilan Data

Hasil akhir ditampilkan pada:

  • LCD 16×4
  • Serial Monitor
  • Aplikasi atau sistem IoT

4. Prinsip Fisika yang Digunakan

4.1 Hukum Hooke

Load cell bekerja dalam batas elastis sesuai Hukum Hooke:F=kxF = k \cdot xF=k⋅x

Dimana:

  • F = gaya (N)
  • k = konstanta pegas
  • x = perubahan panjang

Selama bekerja di zona elastis, hasil pengukuran akan linier.


4.2 Hubungan Gaya dan Berat

Berat dihitung dari gaya:W=mgW = m \cdot gW=m⋅g

Dimana:

  • W = berat
  • m = massa
  • g = percepatan gravitasi

5. Diagram Alur Prinsip Kerja (Narasi)

Beban → Deformasi Logam → Perubahan Resistansi → Tegangan mV → HX711 → Data Digital → Arduino/ESP32 → LCD


6. Faktor yang Mempengaruhi Prinsip Kerja

  • Pemasangan mekanik
  • Suhu lingkungan
  • Getaran
  • Tegangan catu daya
  • Kualitas kalibrasi

Contoh Program menggunakan arduino uno

PinDigunakan untuk
5VHX711 & LCD
GNDHX711 & LCD
D2HX711 SCK
D3HX711 DT
A4LCD SDA
A5LCD SCL
#include <HX711.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define DT  3
#define SCK 2

HX711 scale;
LiquidCrystal_I2C lcd(0x27, 16, 2);

// GANTI SESUAI HASIL KALIBRASI KAMU
float calibration_factor = -7050;

void setup() {
  Serial.begin(9600);

  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Timbangan");
  lcd.setCursor(0,1);
  lcd.print("Init...");
  delay(1500);
  lcd.clear();

  scale.begin(DT, SCK);
  scale.set_scale(calibration_factor);
  scale.tare(); // nolkan timbangan

  lcd.setCursor(0,0);
  lcd.print("Siap Digunakan");
  delay(1000);
  lcd.clear();
}

void loop() {
  float berat = scale.get_units(10);

  if (berat < 0) berat = 0;

  lcd.setCursor(0,0);
  lcd.print("Berat:        ");
  lcd.setCursor(0,1);
  lcd.print(berat, 1);
  lcd.print(" gram     ");

  Serial.print("Berat: ");
  Serial.print(berat, 1);
  Serial.println(" gram");

  delay(300);
}

PERHATIAN SEBELUM MENGGUNAKAN PROGRAM UTAMA

(KHUSUS ARDUINO UNO)

Sebelum sistem timbangan digital dijalankan menggunakan Arduino UNO, load cell WAJIB dikalibrasi terlebih dahulu.
Kalibrasi bertujuan untuk menyesuaikan pembacaan sensor load cell dengan berat sebenarnya. Setiap load cell memiliki karakteristik yang berbeda, sehingga nilai kalibrasi tidak boleh disamakan, meskipun kapasitas dan tipe sensornya sama.

Jika proses kalibrasi tidak dilakukan, maka:

  • Nilai berat yang ditampilkan tidak akurat
  • Pembacaan dapat melenceng jauh dari nilai sebenarnya
  • Sistem timbangan tidak dapat digunakan secara valid

Oleh karena itu, program kalibrasi harus dijalankan terlebih dahulu, dan nilai calibration_factor yang dihasilkan WAJIB dimasukkan ke dalam program utama timbangan.

Kesimpulan penting:

Jangan lanjut ke program utama sebelum kalibrasi selesai dan hasilnya benar.


PROGRAM KALIBRASI LOAD CELL

Arduino UNO + HX711

Konfigurasi Pin Arduino UNO

HX711Arduino UNO
VCC5V
GNDGND
DTD3
SCKD2

Cara Menggunakan Program Kalibrasi

  1. Upload program kalibrasi ke Arduino UNO
  2. Buka Serial Monitor
  3. Atur baud rate ke 9600
  4. Pastikan timbangan kosong
  5. Tekan:
    • t + Enter → TARE (nol)
    • + → menambah nilai kalibrasi
    • - → mengurangi nilai kalibrasi
  6. Letakkan beban yang diketahui (contoh: 500 gram)
  7. Atur sampai nilai terbaca sesuai
  8. Catat nilai calibration_factor

CODING PROGRAM KALIBRASI (ARDUINO UNO)

#include <HX711.h>

// PIN HX711 ke Arduino UNO
#define DT  3
#define SCK 2

HX711 scale;

// nilai awal (akan disesuaikan)
float calibration_factor = -100.0;

void setup() {
  Serial.begin(9600);

  Serial.println("================================");
  Serial.println(" PROGRAM KALIBRASI LOAD CELL ");
  Serial.println(" ARDUINO UNO + HX711 ");
  Serial.println("================================");
  Serial.println("Pastikan TIMBANGAN KOSONG");
  Serial.println("Ketik 't' lalu ENTER untuk TARE");
  Serial.println("Gunakan '+' atau '-' untuk kalibrasi");
  Serial.println();

  scale.begin(DT, SCK);
  scale.set_scale();   // tanpa faktor dulu
  scale.tare();        // nol awal
}

void loop() {
  if (Serial.available()) {
    char data = Serial.read();

    if (data == 't') {
      scale.tare();
      Serial.println(">> TARE SELESAI");
    }
    else if (data == '+') {
      calibration_factor += 1;
    }
    else if (data == '-') {
      calibration_factor -= 1;
    }

    scale.set_scale(calibration_factor);
  }

  float berat = scale.get_units(5);

  Serial.print("Calibration Factor: ");
  Serial.print(calibration_factor);
  Serial.print(" | Berat Terbaca: ");
  Serial.print(berat);
  Serial.println(" gram");

  delay(500);
}

Cara Menentukan Nilai yang BENAR

  • Beban asli 500 gram
  • Jika terbaca 450 gram → tekan +
  • Jika terbaca 550 gram → tekan -
  • Lakukan sampai terbaca ±500 gram

Lakukan beberapa kali angkat–taruh untuk memastikan stabil.


SETELAH KALIBRASI SELESAI

Misalnya nilai akhir:

float calibration_factor = -106.3;

Nilai ini yang dipakai di program utama timbangan, bukan program kalibrasi lagi.

Contoh Program menggunakan ESP32

Pin ESP32Digunakan untuk
3.3VHX711
5VLCD
GNDSemua
GPIO 32HX711 DT
GPIO 33HX711 SCK
GPIO 21LCD SDA
GPIO 22LCD SCL

PERHATIAN SEBELUM MASUK KE PROGRAM UTAMA

(WAJIB DIBACA & DILAKUKAN)

Sebelum sistem timbangan digital digunakan, load cell WAJIB dikalibrasi terlebih dahulu.
Kalibrasi bertujuan untuk menyesuaikan nilai pembacaan sensor dengan berat sebenarnya. Setiap load cell memiliki karakteristik yang berbeda, sehingga nilai kalibrasi tidak bisa disamakan, meskipun tipe dan kapasitasnya sama.

Jika kalibrasi tidak dilakukan, maka:

  • Nilai berat akan melenceng
  • Hasil tidak konsisten
  • Timbangan tidak akurat
  • Program utama menjadi tidak valid

Oleh karena itu, jalankan program kalibrasi terlebih dahulu, catat nilai calibration_factor yang dihasilkan, baru setelah itu nilai tersebut dimasukkan ke dalam program utama timbangan.

Ingat:

Program utama TIDAK AKAN AKURAT tanpa proses kalibrasi.


PROGRAM KALIBRASI LOAD CELL

(Arduino UNO & ESP32)

Fungsi Program Ini:

  • Membaca nilai mentah HX711
  • Menyesuaikan faktor kalibrasi
  • Menampilkan hasil di Serial Monitor
  • Menentukan nilai calibration_factor yang tepat

Pin yang Digunakan

  • Arduino UNO
    • DT → D3
    • SCK → D2
  • ESP32
    • DT → GPIO 32
    • SCK → GPIO 33

LANGKAH KALIBRASI (SINGKAT & JELAS)

  1. Upload program kalibrasi
  2. Buka Serial Monitor (9600 baud)
  3. Pastikan timbangan tanpa beban
  4. Tekan t lalu Enter → tare
  5. Letakkan beban yang diketahui (misal 500 gram)
  6. Ubah nilai kalibrasi sampai hasil sesuai
  7. Catat nilai calibration_factor
  8. Masukkan ke program utama

CODING PROGRAM KALIBRASI

#include <HX711.h>

#define DT  32   // ESP32: 32 | Arduino UNO: 3
#define SCK 33   // ESP32: 33 | Arduino UNO: 2

HX711 scale;

float calibration_factor = -100.0; // nilai awal (akan diubah)

void setup() {
  Serial.begin(9600);
  Serial.println("=== PROGRAM KALIBRASI LOAD CELL ===");
  Serial.println("Pastikan TIMBANGAN KOSONG");
  Serial.println("Ketik 't' lalu ENTER untuk TARE");
  Serial.println("Gunakan '+' atau '-' untuk kalibrasi");

  scale.begin(DT, SCK);
  scale.set_scale();
  scale.tare(); // tare awal
}

void loop() {
  if (Serial.available()) {
    char input = Serial.read();

    if (input == 't') {
      scale.tare();
      Serial.println(">> TARE SELESAI");
    }
    else if (input == '+') {
      calibration_factor += 1;
    }
    else if (input == '-') {
      calibration_factor -= 1;
    }

    scale.set_scale(calibration_factor);
  }

  float berat = scale.get_units(5);

  Serial.print("Calibration Factor: ");
  Serial.print(calibration_factor);
  Serial.print(" | Berat Terbaca: ");
  Serial.print(berat);
  Serial.println(" gram");

  delay(500);
}

CARA MENENTUKAN NILAI KALIBRASI YANG BENAR

  • Jika berat terbaca lebih kecil dari beban asli
    tekan +
  • Jika berat terbaca lebih besar dari beban asli
    tekan -
  • Ulangi sampai hasil sesuai dengan berat referensi

Contoh:

  • Beban asli: 500 gram
  • Terbaca: 480 gram → tekan +
  • Terbaca: 520 gram → tekan -
  • Sampai mendekati 500 gram

SETELAH KALIBRASI SELESAI

Catat nilai terakhir, contoh:

float calibration_factor = -106.3;

Nilai inilah yang WAJIB dimasukkan ke program utama timbangan.

Leave a Reply

Your email address will not be published. Required fields are marked *