Sebelum digunakan, timbangan wajib ditera atau di kalibrasi. Proses kalibrasi timbangan dilakukan dengan membandingkan hasil terukurnya dengan berat diketahui sebuah beban pengkalibrasinya.
Loadcell digunakan sebagai sensor berat digital. Proses kalibrasi loadcell dengan arduino menggunakan metode dua beban menggunakan formula :
cara mengkalibrasi loadcell dengan metode dua beban ini menghasilkan dua variabel yaitu skala dan ofset.
Timbangan digital dengan sensor loadcell memiliki karakteristik akurasi berikut :
- Skala
- Ofset
- Linearitas
- Diferensial linearitas
- Kuantisasi
- Transisi akurasi
Setiap loadcell memiliki karakteristik yang berbeda-beda. cara memperoleh nilai skala dan offset yang baik adalah dengan menetapkan nilai beban pengkalibrasi antara 25% – 75% dari kapasitas loadcell.
skema / rangkaian kalibrasi loadcell arduino:
Setting kalibrasi ini akan disimpan di EEPROM, dan akan diambil kembali saat perangkat mulai dihidupkan.
koding /program kalibrasi loadcell menggunakan arduino:
#include "HX711.h" #include <EEPROM.h> #define alamatKalibrasiM 0 #define alamatKalibrasiC 4 //pin HX711 scale(A0, A1); // (DT, SCK) byte modeKalibrasi = 0; uint16_t beratKalibrasi1Tera; uint16_t beratKalibrasi2Tera; long beratKalibrasi1; long beratKalibrasi2; long lastMillis; void setup() { Serial.begin(9600); Serial.println("Kalibrasi Loadcell"); Serial.println("https://www.project.semesin.com/"); Serial.println(); float m,c; EEPROM.get(alamatKalibrasiM, m); EEPROM.get(alamatKalibrasiC, c); scale.power_up(); scale.set_scale(m); scale.set_offset(c); scale.power_down(); lastMillis = millis(); } void loop() { if(Serial.available()) { if(modeKalibrasi == 0) { if(toupper(Serial.read()) == 'K') { Serial.println("Masukkan beban kalibrasi pertama (gram) :"); modeKalibrasi = 1; } } else if (modeKalibrasi == 1) { scale.power_up(); delay(100); beratKalibrasi1Tera = Serial.parseInt(); beratKalibrasi1 = scale.read_average(10); Serial.println("Beban = " + String(beratKalibrasi1Tera) + " gram, terukur = " + String(beratKalibrasi1) + " unit"); Serial.println("Masukkan beban kalibrasi kedua yang lebih besar (gram) :"); modeKalibrasi = 2; scale.power_down(); } else if (modeKalibrasi == 2) { scale.power_up(); delay(100); beratKalibrasi2Tera = Serial.parseInt(); beratKalibrasi2 = scale.read_average(10); Serial.println("Beban = " + String(beratKalibrasi2Tera) + " gram, terukur = " + String(beratKalibrasi2) + " unit"); float m = 1.0 * (beratKalibrasi2 - beratKalibrasi1) / ( beratKalibrasi2Tera - beratKalibrasi1Tera); float c = beratKalibrasi2 - (1.0 * m * beratKalibrasi2Tera); scale.set_scale(m); scale.set_offset(c); EEPROM.put(alamatKalibrasiM, m); EEPROM.put(alamatKalibrasiC, c); Serial.print("Skala = "); Serial.println(m); Serial.print("Ofset = "); Serial.println(c); scale.power_down(); Serial.println("Kalibrasi berhasil."); modeKalibrasi = 0; } } if(!modeKalibrasi) { if(millis() - lastMillis > 100) { scale.power_up(); delay(10); float berat = scale.get_units(10); scale.power_down(); Serial.print("Berat : "); Serial.println(berat); lastMillis = millis(); } } }
Cara kalibrasi loadcell melalui serial monitor:
Prosedur kalibrasi loadcell dengan arduino melalui serial monitor:
- Input ‘K’ atau ‘k’ untuk masuk mode kalibrasi.
- Naikkan beban pengkalibrasi pertama
- Inputkan berat tera beban pengkalibrasi pertama – Enter
- Naikkan beban pengkalibrasi kedua
- Inputkan berat tera beban pengkalibrasi kedua – Enter
- Selesai
Library : HX711.zip
bang jenaoa beratnya tetep 0 ya? saya pake node mcu
pastikan sesuai spesifikasi (tegangan exitasi 5-10 volt untuk hx711)
biasanya hx711 asal terhubung pasti ada keluaran nilainya
coba re-cek lagi rangkaiannya
beratKalibrasi1Tera = Serial.parseInt();
Dapet nilai beratkalibrasi1tera dari mana ya? Bisa tolong dijelaskan
fungsi
Serial.parseInt();
dari nilai int yang diketik di serial
apakah kalo direstart harus kalibrasi lagi?
Data kalibrasi tersimpan di EEPROM di alamat alamatKalibrasiM dan alamatKalibrasiC
jadi data tersebut tersimpan walau di restart/reset/dimatikan
bang, cara kalibrasi kaya itu sumbernya apa gan?
Serial monitor
Bang kok udah di masukin kodenya pas l
Di liat beban nya tetap 0 ya padahal udah di kasi beban
cek rangkaian, kemungkinan dt dan clk kebalik pemasangannya
Bang kalau pakai ina 125 programnya gimana?
bang kok data yang terbaca tu
berat : nan
berat : nan
berat : nan
berat : nan
mungkin gak kalau load cell nya rusak ?
pembacaan data dari hx711 belum betul, bisa jadi kerusakan atau tidak terhubung
bang gua kalibrasi loadcell 10kg pake beban hp sama powerbank yang beratnya ga sampe 25%-75%. kok default (posisi tanpa beban) nya 20 gram ya, ga sampe 0? tolong pencerahannya
rata-rata memang agak susah menstabilkan loadcell+hx711, beri toleransi saja misalnya < 100gr itu dianggap 0gr, dsb
bang mau tanya klo load cell di sambungin bukan di arduino, melainkan ke nodemcu itu gimana ya, mohon jawabannya terimakasih
sama saja (programnya), untuk nomer pinnya disesuaikan dengan rangkaian
bang saya melakukan pengujian tegangan pada hx711, seharusnya nilai tegangan akan berubah jika beratnya berbeda, tp punya saya tidak berubah gimana yah ?
tegangan disisi mana?
* loadcell-hx711 : perubahan tegangan terhadap berat sangat kecil
* hx711-arduino : bentuk digital, tidak relevan mengukur tegangannya
Bang, cara ubah ke Kg gmana ya ?
pembacaan beratnya di bagi 1000
float berat = scale.get_units(10) / 1000;
bang mau nanya pas keluar di beratnya tuh inf bang
bukan nan
cek settingan scale, set_scale(x) : x mesti > 0
(jika menggunakan sketch ini, lakukan kalibrasi dengan benar sesuai petunjuk)
kk klw muncul berat : inf itu kenapa?? rangkaian nya yg salah??
kemungkinan belum kalibrasi, lakukan kalibrasi sesuai petunjuk.
inf muncul jika saya coba
scale.set_scale(0);
hasilnya
HX711 Demo
Before setting up the scale:
read: -91915
read average: -91133
get value: -91654.00
get units: inf
After setting up the scale:
read: -92335
read average: -91487
get value: 142.00
get units: inf
Readings:
one reading: inf | average: inf
one reading: inf | average: inf
one reading: inf | average: inf
one reading: inf | average: inf
one reading: inf | average: inf
one reading: inf | average: inf
one reading: inf | average: inf
jadi kemungkinannya:
1. scale di set 0, jika menggunakan sketch ini, lakukan kalibrasi dengan benar sesuai petunjuk, atau solusinya ganti dengan nilai kalibrasi nya (nilai kalibrasi != 0)
2. modul hx711 tidak mengeluarkan data yang benar (cek rangkaian dan kemungkinan terbalik)
tanya bang gimana caranya supaya hasil pembacaan loadcell dihitung rata-ratanya dulu baru ditampilkan hasil pembacaan nilainya, supaya nilainya gak gampang ubah ubah..
gunakan fungsi :
Berat = scale.get_units(10);
hasinya sudah merupakan rata-rata dari 10 kali pembacaan
ada video tutorial dari mulai kalibrasi hingga full programnya Pak?
belum ada
Bang saya kan menggunakan 4 loadcell, dan nanti hasil pembacaannya rata2 dari keempat loadcell itu. Gimana ya bang cara kalibrasi langsung 4 loadcell. Mohon pencerahannya🙏🏻 . Soalnya saya sudah coba kalibrasi 1 1 loadcell hasilnya bagus tapi setelah digabung 4 hasilnya ga bagus
parameter atau variabel kalibrasi masing-masing loadcell yang diperoleh harus dipisah dan sesuai pasangannya
Bang apakah ketika sensor load cell 50kg × 4 itu kodenya sama?
persis sama, tetapi tetap di kalibrasi dalam keadaan terpasang dan running