Cara Memprogram Sensor Berat Loadcell Pada ESP32

Cara Memprogram Sensor Berat Loadcell Pada ESP32

Sensor berat Load cell adalah jenis transduser (sensor) yang digunakan untuk mengukur gaya atau beban.Berikut ini adalah code untuk memprogramnya :

#include <Arduino.h>

#include "HX711.h"

const int pinDT_loadcell = 16;
const int pinSCK_loadcell = 4;
HX711 scale_loadcell;


float baca_loadcell() {
return scale_loadcell.get_units(1);
}


void setup()
{
Serial.begin(9600);
scale_loadcell.begin(pinDT_loadcell, pinSCK_loadcell);
scale_loadcell.set_scale(2280.f);
scale_loadcell.tare();

}
void loop(){
float loadcell = baca_loadcell();
Serial.println("Berat: " + (String)loadcell + " gram");


}


Berikut ini adalah penjelasan dari kode di atas :

1. Inklusi Library dan Deklarasi Objek

C++

#<strong>include</strong> <Arduino.h>
#<strong>include</strong> "HX711.h"

const int pinDT_loadcell = 16;
const int pinSCK_loadcell = 4;
HX711 scale_loadcell;
  • #include <Arduino.h>: Ini adalah library standar yang wajib ada di setiap program Arduino.
  • #include "HX711.h": Ini adalah library khusus yang sangat penting untuk berkomunikasi dengan modul HX711. Modul HX711 berfungsi sebagai Analog-to-Digital Converter (ADC) yang sangat presisi, khusus dirancang untuk membaca perubahan tegangan yang sangat kecil dari load cell.
  • const int pinDT_loadcell = 16;: Mendeklarasikan sebuah konstanta integer bernama pinDT_loadcell dan menetapkannya ke pin digital 16. Pin ini adalah pin Data (DT) dari modul HX711, yang akan terhubung ke pin digital 16 pada mikrokontroler Anda (misalnya ESP32, karena pin 16 dan 4 umum pada ESP32, bukan Arduino Uno standar).
  • const int pinSCK_loadcell = 4;: Mendeklarasikan konstanta integer pinSCK_loadcell dan menetapkannya ke pin digital 4. Pin ini adalah pin Clock (SCK) dari modul HX711.
  • HX711 scale_loadcell;: Ini membuat sebuah objek (instance) dari kelas HX711 yang diberi nama scale_loadcell. Objek inilah yang akan kita gunakan untuk memanggil semua fungsi yang berhubungan dengan modul HX711 dan load cell.

2. Fungsi baca_loadcell()

C++

float baca_loadcell() {
  return scale_loadcell.get_units(1);
}
  • float baca_loadcell(): Ini adalah fungsi kustom yang Anda buat untuk membaca berat dari load cell. Fungsi ini akan mengembalikan nilai berat dalam format floating-point.
  • return scale_loadcell.get_units(1);: Ini adalah baris kunci dalam fungsi ini.
    • scale_loadcell.get_units(1): Memanggil metode get_units() dari objek scale_loadcell. Metode ini akan membaca nilai mentah dari HX711, mengaplikasikan faktor kalibrasi (yang akan kita atur di setup), dan mengembalikan nilai berat dalam satuan yang telah dikalibrasi. Argumen 1 berarti fungsi akan mengambil satu pembacaan dan mengembalikan nilainya. Anda bisa menggunakan angka yang lebih besar (misalnya 10) untuk merata-ratakan beberapa pembacaan guna mendapatkan hasil yang lebih stabil.

3. Fungsi setup()

C++

void setup()
{
  Serial.begin(9600);
  scale_loadcell.begin(pinDT_loadcell, pinSCK_loadcell);
  scale_loadcell.set_scale(2280.f);
  scale_loadcell.tare();
}
  • Serial.begin(9600);: Menginisialisasi komunikasi serial pada baud rate 9600. Ini memungkinkan Anda untuk melihat data berat yang dibaca di Serial Monitor.
  • scale_loadcell.begin(pinDT_loadcell, pinSCK_loadcell);: Ini adalah langkah inisialisasi modul HX711. Fungsi ini memberi tahu library pin digital mana yang terhubung ke pin DT dan SCK pada modul HX711 Anda.
  • scale_loadcell.set_scale(2280.f);: Ini adalah bagian kalibrasi yang sangat penting.
    • set_scale(): Fungsi ini mengatur “faktor skala” atau “faktor kalibrasi” yang digunakan HX711 untuk mengubah nilai mentah menjadi satuan berat yang bermakna (misalnya, gram, kilogram).
    • Nilai 2280.f adalah contoh faktor kalibrasi. Nilai ini harus ditentukan melalui proses kalibrasi aktual dengan load cell Anda. Untuk mencari nilai ini, Anda biasanya akan:
      1. Memulai tanpa kalibrasi (atau dengan nilai 1.0f).
      2. Mencetak nilai mentah.
      3. Meletakkan beban yang diketahui (misalnya 100 gram) di atas load cell.
      4. Mencatat selisih nilai mentah dari nilai tare() dengan nilai mentah saat ada beban.
      5. Faktor skala = (nilai mentah beban diketahui) / (berat beban diketahui).
      6. Misalnya, jika beban 100 gram menghasilkan 228000 unit mentah, maka faktor skala adalah 228000/100=2280. (Angka f setelah 2280 menunjukkan bahwa ini adalah angka floating-point).
  • scale_loadcell.tare();: Fungsi ini melakukan tare (penimbangan nol) pada load cell. Ini berarti sensor akan mengabaikan berat benda yang ada di atasnya saat ini (misalnya, berat wadah kosong) dan mengaturnya sebagai “nol”. Jadi, semua pembacaan berikutnya akan relatif terhadap titik nol ini. Penting untuk memanggil fungsi ini saat load cell kosong.

4. Fungsi loop()

C++

void loop(){
  float loadcell = baca_loadcell();
  Serial.println("Berat: " + (String)loadcell + " gram");
}
  • float loadcell = baca_loadcell();: Memanggil fungsi baca_loadcell() yang telah kita buat untuk mendapatkan nilai berat yang sudah dikalibrasi, dan menyimpannya dalam variabel floating-point loadcell.
  • Serial.println("Berat: " + (String)loadcell + " gram");: Mencetak nilai berat ke Serial Monitor.
    • "Berat: " adalah teks literal.
    • (String)loadcell: Mengkonversi nilai floating-point dari loadcell menjadi tipe data String, sehingga bisa digabungkan dengan teks.
    • " gram": Teks literal untuk satuan berat.
    • Serial.println(): Mencetak seluruh string dan kemudian menambahkan baris baru, sehingga setiap pembacaan akan muncul di baris terpisah di Serial Monitor.

Cara Kerja Keseluruhan

Secara keseluruhan, kode ini akan melakukan hal berikut:

  1. Persiapan (setup): Mengaktifkan komunikasi serial, menginisialisasi modul HX711 dengan pin yang benar, mengatur faktor kalibrasi yang telah ditentukan, dan melakukan penimbangan nol (tare) pada load cell.
  2. Pengulangan (loop): Terus-menerus membaca berat dari load cell menggunakan faktor kalibrasi yang sudah diatur, dan kemudian mencetak nilai berat tersebut (dalam gram) ke Serial Monitor.

Penting:

  • Kalibrasi adalah Kunci: Nilai 2280.f hanyalah contoh. Anda wajib mengkalibrasi load cell Anda sendiri untuk mendapatkan pembacaan berat yang akurat. Proses kalibrasi melibatkan menempatkan beban yang diketahui (misalnya 100 gram, 500 gram) dan menyesuaikan faktor skala hingga HX711 menghasilkan nilai yang benar.
  • Koneksi: Pastikan Anda menghubungkan pin DT dan SCK dari modul HX711 ke pin yang benar di mikrokontroler Anda (pin 16 dan 4 seperti yang didefinisikan dalam kode). Pin VCC dan GND modul HX711 harus dihubungkan ke sumber daya yang sesuai.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?