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.
1. Skala
2. Ofset
3. Linearitas
4. Diferensial linearitas
5. Kuantisasi
6. Transisi akurasi
1 #include "HX711.h"
2 #include <EEPROM.h>
4 #define alamatKalibrasiM 0
5 #define alamatKalibrasiC 4
7 //pin
10 byte modeKalibrasi = 0;
11 uint16_t beratKalibrasi1Tera;
12 uint16_t beratKalibrasi2Tera;
13 long beratKalibrasi1;
14 long beratKalibrasi2;
15
16 long lastMillis;
17
18 void setup() {
19 Serial.begin(9600);
20 Serial.println("Kalibrasi Loadcell");
21 Serial.println("http://www.semesin.com/project/");
22 Serial.println();
23
24 float m,c;
25 EEPROM.get(alamatKalibrasiM, m);
26 EEPROM.get(alamatKalibrasiC, c);
27 scale.power_up();
28 scale.set_scale(m);
29 scale.set_offset(c);
30 scale.power_down();
31
32 lastMillis = millis();
33 }
34
35 void loop() {
36 if(Serial.available())
37 {
38 if(modeKalibrasi == 0)
39 {
40 if(toupper(Serial.read()) == 'K')
41 {
43 modeKalibrasi = 1;
44 }
45 }
46 else if (modeKalibrasi == 1)
47 {
48 scale.power_up();
49 delay(100);
50 beratKalibrasi1Tera = Serial.parseInt();
51 beratKalibrasi1 = scale.read_average(10);
55 modeKalibrasi = 2;
56 scale.power_down();
57 }
58 else if (modeKalibrasi == 2)
59 {
60 scale.power_up();
61 delay(100);
62 beratKalibrasi2Tera = Serial.parseInt();
63 beratKalibrasi2 = scale.read_average(10);
66
float m = 1.0 * (beratKalibrasi2 - beratKalibrasi1) / (
beratKalibrasi2Tera - beratKalibrasi1Tera);
67
float c = beratKalibrasi2 - (1.0 * m * beratKalibrasi2Tera);
68
69
scale.set_scale(m);
70
scale.set_offset(c);
71 EEPROM.put(alamatKalibrasiM, m);
72 EEPROM.put(alamatKalibrasiC, c);
73
74 Serial.print("Skala = ");
75 Serial.println(m);
76 Serial.print("Ofset = ");
77 Serial.println(c);
78
79 scale.power_down();
80 Serial.println("Kalibrasi berhasil.");
81
82 modeKalibrasi = 0;
83 }
84 }
85
86 if(!modeKalibrasi)
87 {
89 {
90 scale.power_up();
91 delay(10);
93 scale.power_down();
94 Serial.print("Berat : ");
95 Serial.println(berat);
96 lastMillis = millis();
97 }
98 }