Anda di halaman 1dari 20

LAPORAN PRAKTIKUM

LABORATORIUM SENSOR DAN TRANSDUSER


SENSOR BERAT BERAT LOAD CELL HX711
EK-2C

Dosen Pengampu :

Achmad Fahrul Aji, S.ST., M.T.

Disusun Oleh :
1. Ahmat Japar Sodiq (3.32.22.2.01)
2. Azra Tiarani (3.32.22.2.03)
3. Firda Pramesthi (3.32.22.2.06)

PROGRAM STUDI D3-TEKNIK ELEKTRONIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2023
I. TUJUAN
1. Mahasiswa dapat mengetahui prinsip kerja dari Sensor Berat HX711.
2. Mahasiswa dapat mengetahui cara mengukur dan mengidentifikasi berat menggunakan
sensor berat HX711 serta menampilkannya pada LCD.
3. Mahasiswa dapat mengetahui pemahaman tentang potensi aplikasi Sensor Berat HX711
dalam berbagai bidang, seperti industri, robotika, pengenalan warna otomatis, dan
sebagainya.
4. Mahasiswa dapat mengetahui karakteristik dari Sensor Berat HX711.

II. DASAR TEORI


1. Sensor Berat (load cell)
Sensor load cell merupakan sensor yang dirancang untuk mendeteksi tekanan atau
berat sebuah beban. Sensor load cell umumnya digunakan sebagai komponen utama pada
sistem timbangan digital. Pengukuran yang dilakukan oleh sensor load cell menggunakan
prinsip tekanan. Selama proses penimbangan akan terjadi reaksi terhadap elemen logam
pada load cell yang mengakibatkan gaya secara elastis. Gaya yang ditimbulkan oleh
regangan ini dikonversikan kedalam sinyal elektrik oleh strain gauge (pengukur regangan)
yang terpasang pada load cell. Prinsip kerja load cell akan ada kaitannya dengan rangkaian
Jembatan Wheatstone dan prinsip kerja dari strain gauge itu sendiri dapat dilihat seperti
pada gambar 1.

Gambar 1. Prinsip Kerja Load cell

Strain Gauge merupakan komponen elektronika yang diapat dipakai untuk mengukur
tekanan (deformasi atau strain). Alat ini berbentuk foil logam atau kawat logam yang
bersifat insulative (isolasi) yang ditempel pada benda yang akan diukur tekanannya,
dan tekanan berasal dari pembebanan. Jika terdapat tekanan atau suatu gaya F yang
menekan strain gauge yang ada pada loadcell, maka foil atau kawat akan terdeformasi,
dan tahanan listrik alat ini akan berubah.
Perubahan tahanan listrik ini akan dimasukkan ke dalam rangkaian jembatan
wheatstone yang kemudian akan diketahui berapa besar tahanan pada strain gauge.
Tegangan keluaran dari jembatan wheatstone merupakan sebuah ukuran regangan
yang terjadi akibat tekanan dari setiap elemen pengindera strain gauge. Tekanan itu
kemudian dihubungkan dengan regangan sesuai dengan Hukum Hook yang berbunyi
“Modulus elastisitas adalah rasio antara tekanan dan regangan.” Dengan demikian,
jika modulus elastisitas pada sebuah permukaan benda dan regangan telah diketahui,
maka tekanan bisa ditentukan dengan rumus sebagai berikut.

2. Arduino UNO
Arduino adalah suatu jenis mikrokontroler dengan platform open source hardware
yang berdasarkan pada perangkat keras dan perangkat lunak fleksibel dan mudah
digunakan. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi ia adalah
kombinasi dari hardware, bahasa pemrograman dan Integrated Development Environment
(IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis
program, mengkompilasi menjadi kode biner serta mengirim dan menyimpan ke dalam
memori mikrokontroler Arduino. Arduino UNO terdiri dari sebuah papan mikrokontroler
yang mempunyai 14 pin digital input-output (6 di antaranya dapat digunakan sebagai
output PWM), 6 input analog, sebuah osilator kristal 16 MHz, sebuah koneksi USB,
sebuah power jack, sebuah ICSP header dan sebuah tombol reset.
Pin digital pada Arduino UNO yang berjumlah 14 buah dapat digunakan sebagai
input dan juga sebagai output dengan menggunakan fungsi pinMode(), digitalWrite() dan
digitalRead(). Fungsi-fungsi tersebut beroperasi di tegangan 5V. Setiap pin dapat
memberikan atau menerima arus maksimum 40mA dan mempunyai sebuah resistor pullup
(terputus secara default) sekitar 20 hingga 50kΩ.

3. LCD (Liquid Crystal Display) 16x2 dengan I2C


LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang
menggunakan kristal cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa
menampilkan suatu gambar/karakter dikarenakan terdapat banyak sekali titik cahaya
(piksel) yang terdiri dari satu buah kristal cair sebagai titik cahaya. Walau disebut sebagai
titik cahaya, namun Kristal cair ini tidak memancarkan cahaya sendiri. LCD 16x2 dapat
menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat
menampilkan 16 karakter. Pada LCD 16×2 pada umumnya menggunakan 16 pin sebagai
kontrolnya, tentunya akan sangat boros apabila menggunakan 16 pin tersebut.
Karena itu, digunakan driver khusus sehingga LCD dapat dikontrol dengan modul
I2C atau Inter-Integrated Circuit. Dengan modul I2C, maka LCD 16x2 hanya memerlukan
dua pin untuk mengirimkan data dan dua pin untuk pemasok tegangan. Sehingga hanya
memerlukan empat pin yang perlu dihubungkan ke NodeMCU yaitu :

GND : Terhubung ke ground


VCC : Terhubung dengan 5V
SDA : Sebagai I2C data dan terhubung ke pin A4
SCL : Sebagai I2C data dan terhubung ke pin A5
III. ALAT DAN BAHAN
1. Software Arduino IDE
2. Arduino Uno 1 buah
3. Kabel LAN 1 buah
4. Sensor Warna TCS230 1 buah
5. Liquid Crystal Display + I2C 1 buah
6. Kabel Jumper secukupnya

IV. LANGKAH PERCOBAAN


a. Percobaan 1
Mengukur Kalibrasi Warna pada Warna Terang dan Gelap dengan sesnsor warna TCS230.
1. Hubungkan sensor warna TCS230 ke arduino dengan kabel jumper. Pastikan telah
terhubung pin output sensor (misalnya, S0, S1, OUT, dll.) dengan pin arduino yang
sesuai
2. Buatlah program yang sesuai dengan pengukuran Kalibrasi Warna pada Warna Terang
dan Gelap dengan sesnsor warna TCS230.
3. Untuk kalibrasi warna terang Tempatkan objek dengan warna terang (misalnya, putih
atau kuning) di depan sensor. Baca data keluaran dari sensor warna TCS230 dan catat
hasilnya. Ini akan menjadi referensi warna terang
4. Untuk kalibrasi warna gelap gantilah objek dengan warna yang lebih gelap (misalnya,
hitam atau biru gelap). Baca data keluaran dari sensor warna TCS230 dan catat
hasilnya. Ini akan menjadi referensi warna gelap.
b. Percobaan 2
Mengukur RGB dari setiap Warna yang ditentukan dengan jarak 0-2 cm menggunakan
Sensor warna TCS230
1. Pastikan sensor TCS230 masih terhubung ke Arduino Uno dengan benar, seperti yang
telah dilakukan pada percobaan pertama. Siapkan objek yang akan diukur, misalnya,
benda berwarna merah, hijau, dan biru. Pastikan objek tersebut telah dikalibrasi sesuai
dengan langkah-langkah percobaan pertama.
2. Buatlah program yang sesuai dengan pengukuran RGB dari setiap Warna yang
ditentukan dengan jarak 0-2 cm menggunakan Sensor TCS230.
3. Tentukan jarak antara sensor dan objek yang akan diukur. Jika ingin mengukur RGB
dari objek pada jarak 0-2 cm dapat menggunakan alat seperti penggaris untuk
mengukur jarak ini.
4. Pada setiap jarak yang diatur, aktifkan pemancar cahaya pada sensor dan baca nilai
PWM (Pulse Width Modulation) yang dihasilkan oleh komponen warna merah, hijau,
dan biru (R, G, B). Catat nilai-nilai ini untuk setiap komponen warna pada setiap jarak
yang diukur.
5. Setelah selesai mengukur nilai RGB pada berbagai jarak, dapat menganalisis data
yang telah terkumpul. Hal ini dapat membuat grafik atau plot untuk melihat
bagaimana nilai RGB berubah seiring dengan jarak dari objek. Analisis data ini dapat
membantu memahami bagaimana sensor merespons warna pada jarak tertentu
6. Selain merah, hijau, dan biru, juga dapat mengulangi percobaan ini dengan warna lain
yang relevan. Pastikan objek yang digunakan telah dikalibrasi sebelumnya.

c. TUGAS 1
Membuat Program pada Arduino untuk menebak Warna yang sesuai menggunakan Sensor
warna TCS230
1. Pastikan sensor TCS230 masih terhubung ke Arduino Uno dengan benar, seperti yang
telah dilakukan pada percobaan sebelumnya. Pastikan telah melakukan kalibrasi
sensor TCS230 sesuai dengan percobaan sebelumnya.
2. Buatlah program yang sesuai dengan percobaan pengukuran menebak warna yang
sesuai menggunakan sensor warna TCS230
3. Program harus melakukan pengukuran warna menggunakan sensor TCS230. Ini dapat
dilakukan dengan cara mengukur nilai PWM (Pulse Width Modulation) yang
dihasilkan oleh sensor untuk komponen warna merah, hijau, dan biru (R, G, B).
4. Berdasarkan hasil pengukuran warna, program harus memiliki logika untuk
menentukan warna yang sesuai. Juga dapat menggunakan aturan berdasarkan nilai-
nilai R, G, dan B yang sesuai dengan warna tertentu. Misalnya, jika R > G dan R > B,
maka warna adalah merah.
5. Hasil penentuan warna harus ditampilkan kepada pengguna. Jika menggunakan LCD,
dapat menampilkan warna yang terdeteksi pada layar. Jika tidak menggunakan
tampilan fisik, dapat mengirimkan hasil ke Serial Monitor pada Arduino IDE.
6. Program harus terus berjalan dalam loop dan mampu mendeteksi warna berulang kali
sesuai dengan perubahan objek yang ditempatkan di bawah sensor. Dapat
menambahkan interaksi pengguna, misalnya, meminta pengguna untuk meletakkan
objek berwarna di bawah sensor.

V. SKEMATIK RANGKAIAN

VI. DATA PERCOBAAN


A. Percobaan 1
Mengukur Kalibrasi Warna pada Warna Terang dan Gelap dengan sesnsor warna
TCS230.
1. Program
// Program Untuk Mencari Nilai R, G, dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 2
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD


(16x2)
// max = gelap, min = terang
int redMin = 22;
// nilai diperoleh dari kalibrasi
int redMax = 353;
// nilai diperoleh dari kalibrasi
int greenMin = 26;
// nilai diperoleh dari kalibrasi
int greenMax = 506;
// nilai diperoleh dari kalibrasi
int blueMin = 22;
// nilai diperoleh dari kalibrasi
int blueMax = 425;
// nilai diperoleh dari kalibrasi
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;

void setup()
{
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
Serial.begin(9600);
}

void loop()
{

redPW = getRedPW();
redValue = map(redPW, redMin, redMax, 255, 0);
delay(200);
greenPW = getGreenPw();
greenValue = map(greenPW, greenMin, greenMax, 255, 0);
delay(200);
bluePW = getBluePw();
blueValue = map(bluePW, blueMin, blueMax, 255, 0);
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R:");
lcd.setCursor(2, 0);
lcd.print(redValue);
lcd.setCursor(5, 0);
lcd.print("G:");
lcd.setCursor(7, 0);
lcd.print(greenValue);
lcd.setCursor(10, 0);
lcd.print("B:");
lcd.setCursor(12, 0);
lcd.print(blueValue);

lcd.setCursor(0, 1);
lcd.print("Warna:");
lcd.setCursor(6, 1);
if (redValue>=200 && redValue
<=255&&greenValue>=140&&greenValue<=170&&blueValue>=150&&blueValue<=1
90)
{
lcd.println("Merah");
}
else if (redValue>=130 && redValue
<=190&&greenValue>=160&&greenValue<=255&&blueValue>=150&&blueValue<=2
00)
{
lcd.println("Hijau");
}
else if (redValue>=110 && redValue
<=190&&greenValue>=180&&greenValue<=240&&blueValue>=190&&blueValue<=2
55)
{
lcd.println("Biru");
}

int getRedPW()

{
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int PW;
PW = pulseIn(sensorOut, LOW);
return PW;
}

int getGreenPw()
{
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
int PW;
PW = pulseIn(sensorOut, LOW);
return PW;
}

int getBluePw()
{
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
int PW;
PW = pulseIn(sensorOut, LOW);
return PW;
}

2. Hasil Percobaan
Warna Gelap Terang
R 304 18
G 350 21
B 292 22

B. Percobaan 2
Mengukur RGB dari setiap Warna yang ditentukan dengan jarak 0-2 cm menggunakan
Sensor warna TCS230
1. Program
#include <LiquidCrystal_I2C.h> //memasukan library LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); //Setting alamat I2C dan
ukuran LCD
//Program Untuk Mencari Nilai R, G dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int redMin = 23;


int redMax = 278;
int greenMin = 31;
int greenMax = 378;
int blueMin = 30;
int blueMax = 411;
//nilai diperoleh dari kalibrasi int redPW = 0;
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;

void setup() {
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
Serial.begin(9600);
}

void loop() {
redPW = getRedPW();
redValue = map(redPW, redMin, redMax, 255, 0);
delay(200);
greenPW = getGreenPw();
greenValue = map(greenPW, greenMin, greenMax, 255, 0);
delay(200);
bluePW = getBluePw();
blueValue = map(bluePW, blueMin, blueMax, 255, 0);
delay(200);
Serial.print("Red : ");

if(redValue > greenValue && redValue > blueValue){


lcd.setCursor(0,1);
lcd.print("MERAH");

}
if(greenValue > redValue && greenValue > blueValue){
lcd.setCursor(0,1);
lcd.print("HIJAU");
}

if(blueValue > redValue && blueValue > greenValue) {


lcd.setCursor(0,1);
lcd.print("BIRUU");
}
if(blueValue <= 208 && blueValue > 175 && redValue <= 225 &&
redValue > 192 && greenValue <= 216 && greenValue > 178 ){
lcd.setCursor(0,1);
lcd.print("COKLAT");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
}

int getRedPW() {
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int PW; PW = pulseIn(sensorOut, LOW); return PW;
}

int getGreenPw() {
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
int PW; PW = pulseIn(sensorOut, LOW); return PW;
}

int getBluePw() {
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
int PW; PW = pulseIn(sensorOut, LOW); return PW;

lcd.clear();
}

2. Hasil Percobaan
Jarak (cm)
Warna Pengukuran
0 1 2
R 238 231 206
MERAH G 149 166 144
B 169 180 149
R 254 247 248
KUNING G 249 250 238
B 248 240 232
R 222 198 177
HIJAU G 232 214 189
B 213 191 166
R 207 183 168
BIRU G 239 224 209
B 242 228 207
R 255 241 230
COKELAT G 239 224 208
B 226 205 193

C. TUGAS 1
1. Program
#include <LiquidCrystal_I2C.h> //memasukan library LCD I2C

LiquidCrystal_I2C lcd(0x27, 16, 2); //Setting alamat I2C dan


ukuran LCD
//Program Untuk Mencari Nilai R, G dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
#include <Wire.h>

int redMin = 23;


int redMax = 278;
int greenMin = 31;
int greenMax = 378;
int blueMin = 30;
int blueMax = 411;
//nilai diperoleh dari kalibrasi int redPW = 0;
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;
void setup() {
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
Serial.begin(9600);
}

void loop() {
redPW = getRedPW();
redValue = map(redPW, redMin, redMax, 255, 0);
delay(200);
greenPW = getGreenPw();
greenValue = map(greenPW, greenMin, greenMax, 255, 0);
delay(200);
bluePW = getBluePw();
blueValue = map(bluePW, blueMin, blueMax, 255, 0);
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R:");
lcd.setCursor(2, 0);
lcd.print(redValue);
lcd.setCursor(5, 0);
lcd.print("G:");
lcd.setCursor(7, 0);
lcd.print(greenValue);
lcd.setCursor(10, 0);
lcd.print("B:");
lcd.setCursor(12, 0);
lcd.print(blueValue);

lcd.setCursor(0, 1);
lcd.print("Warna:");
lcd.setCursor(6, 1);

if(redValue > greenValue && redValue > blueValue){


lcd.setCursor(0,1);
lcd.print("MERAH");

}
if(greenValue > redValue && greenValue > blueValue){
lcd.setCursor(0,1);
lcd.print("HIJAU");
}

if(blueValue > redValue && blueValue > greenValue) {


lcd.setCursor(0,1);
lcd.print("BIRUU");
}
if(blueValue <= 208 && blueValue > 175 && redValue <= 225 &&
redValue > 192 && greenValue <= 216 && greenValue > 178 ){
lcd.setCursor(0,1);
lcd.print("COKLAT");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
}

int getRedPW() {
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int PW; PW = pulseIn(sensorOut, LOW); return PW;
}

int getGreenPw() {
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
int PW; PW = pulseIn(sensorOut, LOW); return PW;
}

int getBluePw() {
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
int PW; PW = pulseIn(sensorOut, LOW); return PW;

lcd.clear();
}

2. Hasil Percobaan
Pada tugas 1, kita diminta untuk membuat program yang dapat menebak warna
berdasarkan pembacaan sensor TCS230. Program ini harus mampu mengenali
beberapa warna seperti merah, hijau, biru, coklat, hitam, putih, dan kuning.

VII.PEMBAHASAN
Pertama, melakukan kalibrasi pada sensor warna TCS320 menggunakan warna yang
beerbeda-beda serta menguji pembacaan nilai RGB pada variasi warna yang berbeda.
Putih untuk nilai minimum dan hitam untuk nilai maksimal, seperti pada tabel berikut:
Warna Gelap Terang
R 304 18
G 350 21
B 292 22
Pada percobaan selanjutnya, tuliskan nilai minimum dan maksimum yang sudah
terkalibrasi pada program berikutnya. Kemudian pada percobaan ini akan menampilkan
nilai variasi warna yang berbeda pada serial monitor. Kemudian saat kita memberikan
jarak yang berbeda sekitar 1-5 cm pada objek warna, dapat kita lihat pada tabel hasil
percobaandi atas, pembacaan nilai RGB akan mengalami perbedaan dan cenderung
menurun, jika jarak objek semakin jauh. Meskipun ada beberapa warna yang stabil.

VIII. KESIMPULAN
Akhirnya dari percobaan sensor warna TCS230 merupakan nilai pembacaan yang
cukup baik. Semakin jauh sensor terhadap warna objek, maka nilainya semakin turun.
Namun ada juga yang stabil terhadap jarak.

IX. LAMPIRAN
Percobaan 1
GELAP

TERANG
Percobaan 2
RED

KUNING
Biru

Anda mungkin juga menyukai