b. Infrared
Sensor
c. Touch Sensor
d. Loadcell
e. Magnetic
sensor
f.
Breadboard
g. Motor DC
h. Arduino
i.
Liquid Crystal Display
Sensor ultrasonik HC-SR04 adalah suatu sensor yang fungsinya mengubah besaran fisis bunyi menjadi besaran listrik maupun sebaliknya. Fungsi sensor ultrasonik HC-SR04 biasa digunakan untuk mendeteksi objek yang ada di depannya dengan memanfaatkan gelombang ultrasonik.
Sensor ultrasonik HC SR04 memiliki sepasang transduser ultrasonik yang berfungsi sebagai transmitter (memancarkan gelombang) dan receiver (menerima pantulan gelombang). Cara kerja sensor HC SR04 berawal dari gelombang ultrasonik berfrekuensi 40 kHz (sesuai osilator) yang dibangkitkan oleh piezoelektrik sebagai transmitter-nya. Kemudian gelombang yang terbentuk dipancarkan mengenai target. Hasil pantulan gelombang tersebut nantinya akan diterima oleh receiver piezoelektrik untuk dikalkulasikan waktu pengiriman dan waktu diterimanya gelombang pantul tersebut.
Hasil pengalkulasian itulah nanti yang akan kita peroleh sebagai nilai jarak.Prinsip kerja sensor ultrasonik HC-SR04 kurang lebih hampir sama dengan contoh gambar kelelawar yang mendeteksi buah di depannya. Kira-kira bentuk ilustrasi cara kerja HC SR04 seperti ini.
Rumus sensor ultrasonik diambil dari rumus kecepatan. Karena sudah diketahui kecepatan rambat bunyi berada di kisaran 340 m/s, maka rumus menghitung jarak sensor ultrasonik adalah:
S = 340.t / 2
Keterangan :
S= Jarak objek
t= Selisih waktu dipancarkan dan diterimanya gelombang
- Pin Trig (Trigger), trigpin Arduino berfungsi untuk memicu pemancaran gelombang ultrasonik. Gelombang akan terpancarkan saat pin ini diberikan logika HIGH.
- Pin Echo, berfungsi untuk mendeteksi pantulan gelombang ultrasonik apakah sudah diterima atau belum. Pin Echo bernilai HIGH jika gelombang pantulan belum diterima dan bernilai LOW jika pantulan sudah diterima.
- Pin VCC, berfungsi untuk mengoneksikan sensor ke power supply 5 volt Arduino. Jadi kamu bisa langsung mengoneksikan pin VCC ke pin 5V di Arduino.
- Pin GND, berfungsi untuk mengoneksikan sensor ke power supply ground. Sama dengan pin VCC, kamu juga bisa langsung menghubungkan pin GND ini ke pin GND Arduino
- Piezoelektrik, fungsi dari komponen ini adalah mengubah energi listrik menjadi energi mekanik yang menghasilkan gelombang ultrasonik maupun sebaliknya.
- Transmitter, yaitu komponen yang berfungsi untuk memancarkan gelombang ultrasonik yang dihasilkan oleh piezoelektrik ke objek yang ingin diukur jaraknya.
- Receiver, berfungsi untuk menerima pantulan gelombang ultrasonik dari objek yang ingin diukur jaraknya.
- Dekat IR – 0,75µm hingga 3 µm
- Pertengahan IR – 3 µm hingga 6 µm
- IR Jauh – > 6 µm
Elemen kunci dari Sistem Deteksi Inframerah adalah:
IR Transmitter bertindak sebagai sumber radiasi IR. Menurut Hukum Radiasi Plank, setiap benda merupakan sumber radiasi IR pada suhu T di atas 0 Kelvin. Dalam kebanyakan kasus, radiator benda hitam, lampu tungsten, silikon karbida, laser inframerah, LED panjang gelombang inframerah digunakan sebagai sumber.
b. Media Tranmisi
Seperti namanya, Media Transmisi menyediakan jalur untuk mencapai radiasi dari Pemancar IR ke Penerima IR. Vakum, atmosfer, dan serat optik digunakan sebagai media.
c. Penerima IR
Umumnya penerima IR adalah dioda foto dan transistor foto. Mereka mampu mendeteksi radiasi infra merah. Oleh karena itu penerima IR juga disebut sebagai detektor IR. Berbagai penerima tersedia berdasarkan panjang gelombang, voltase dan paket. Pemancar dan Penerima IR dipilih dengan parameter yang cocok. Beberapa spesifikasi penerima yang menentukan adalah fotosensitifitas atau responsivitas, daya setara kebisingan dan deteksi.
- Sumber IR (pemancar) digunakan untuk memancarkan radiasi dengan panjang gelombang yang dibutuhkan.
- Radiasi ini mencapai objek dan dipantulkan kembali.
- Radiasi yang dipantulkan terdeteksi oleh penerima IR.
- Radiasi yang terdeteksi Penerima IR kemudian diproses lebih lanjut berdasarkan intensitasnya. Umumnya, output Penerima IR kecil dan amplifier digunakan untuk memperkuat sinyal yang terdeteksi.
Sensor kapasitif adalah sensor sentuh yang sangat populer saat ini, hal ini dikarenakan sensor kapasitif lebih kuat, tahan lama serta mudah digunakan dan harganya pun yang relatif lebih murah dari sensor resistif. Smartphone saat ini sudah banyak yang menggunakan teknologi ini karena juga menghasilkan respon yang lebih akurat.
Sensor kapasitif ini memanfaatkan sifat konduktif alami pada tubuh manusia untuk mendeteksi perubahan layar sentuhnya. Layar sentuh sensor kapasitif ini terbuat dari bahan konduktif biasanya Indium Tin Oxide (ITO) yang dilapisi oleh kaca tipis dan hanya bisa disentuh oleh jari manusia atau stylus khusus atau sarung khusus yang mempunyai sifat konduktif.
Pada saat jari menyentuh layar, akan terjadi perubahan medan listrik pada layar sentuh tersebut dan lalu direspon oleh processor untuk membaca pergerakan jari tangan tersebut. Jadi perlu diperhatikan bahwa sentuhan kita tidak akan direspon oleh layar sensor kapasitif apabila menggunakan bahan non-konduktif sebagai pelantara jari tangan dan layar sentuh tersebut.
4. Surface Acoustic Wave
D.Sensor 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 dan dapat diaplikasikan
pada jembatan timbangan yang berfungsi untuk menimbang berat dari truk
pengangkut bahan baku, pengukuran yang dilakukan oleh Load Cell menggunakan
prinsip tekanan.
Prinsip kerja load cell ketika mendapat tekanan
beban.Ketika bagian lain yang lebih elastic mendapat tekanan, maka pada sisi
lain akan mengalami perubahan regangan yang sesuai dengan yang dihasilkan oleh
strain gauge, hal ini terjadi karena ada gaya yang seakan melawan pada sisi
lainnya. Perubahan nilai resistansi yang diakibatkan oleh perubahan gaya diubah
menjadi nilai tegangan oleh rangkaian IC HX711. Dan berat dari objek yang
diukur dapat diketahui dengan mengukur besarnya nilai tegangan yang timbul.
Beberapa karakteristik yang terdapat pada load cell
sensor antara lain adalah:
- Tegangan Operasi: 5V DC (umum untuk load cell kecil)
- Rentang Kapasitas: Bervariasi (misalnya, 1kg, 5kg,
10kg, hingga beberapa ton)
- Tegangan Output: 1 mV/V hingga 3 mV/V (bergantung
pada beban penuh)
- Non-linearitas: ±0.03% hingga ±0.1% dari kapasitas
penuh
- Histeresis: ±0.02% hingga ±0.05% dari kapasitas
penuh
- Suhu Operasi: -10°C hingga 40°C (umum untuk load
cell kecil)
Macam-macam loadcell
1. Loadcell Single Point Load cell bench scale.
Loadcell ini dipasang pada bagian tengah platform timbangan.
2. Loadcell Shear Beam Load cell ini dipakai
untuk floor scale.
3. Loadcell Compress Cara penggunaan Load cell
ini adalah dengan menekan bagian atasnya. Biasanya load cell jenis ini di pakai
untuk timbangan truck.
4. Loadcell Model S 3 Dinamakan Loadcell S karena
bentuknya menyerupai huruf "S". cara kerja dari Load cell ini tidak
di tekan melainkan ditarik sisi atas dan bawahnya. Sisi atas dikaitkan dengan
gantungan sedangkan bagian bawahnya dikaitkan dengan barang yang akan
ditimbang.
5. Loadcell Double Ended Load cell ini bekerja
dengan menekan sisi tengahnya. Loadcell ini dipakai untuk timbangan truck.
Grafik Respon Sensor Load Cell
Fungsi Breadboard :
Kegunaan breadboard yaitu sebagai media penghantar (konduktor listrik) sekaligus tempat kabel jumper dilekatkan. Sehingga arus dari satu komponen bisa terdistribusi dengan baik sesuai keinginan ke komponen lain tanpa harus merepotkan pengguna untuk melakukan penyolderan atau melakukan bongkar pasang.Salah satu kelebihan tersendiri dari penggunaan breadboard adalah komponen-komponen yang telah dirakit tak akan rusak dan mudah untuk dibongkar pasang. Ini karena papan breadboard merupakan papan tanpa solder (solderless).
Cara Kerja Breadboard :
Breadboard bisa dideskripsikan sebagai papan yang memiliki lubang koneksi berdasarkan pola tertentu. Untuk menghubungkan antara satu lubang dengan lubang yang lain, maka di bagian bawah lubang tersebut terdapat logam konduktor listrik yang diposisikan secara khusus. Ini berguna untuk memudahkan pengguna dalam membuat rangkaian. Logam konduktor yang ada di dalam breadboard umumnya seperti ini:Kira-kira posisi logam jalur breadboard bisa digambarkan sebagai berikut:
Berdasarkan gambar di atas, fungsi dari masing-masing jalur koneksi pada breadboard dengan keterangan warnanya yaitu sebagai berikut:
- Jalur warna merah, digunakan untuk menempatkan pin 5V atau kutub positif dari arduino untuk dihubungkan ke kutub positif komponen lain.
- Jalur warna biru, digunakan untuk menempatkan pin GND atau kutub negatif dari arduino untuk dihubungkan ke kutub negatif komponen lain.
- Jalur warna hijau, digunakan untuk menempatkan pin digital dari Arduino untuk dihubungkan ke komponen lain.
Jenis-jenis Breadboard
Beberapa ukuran breadboard yang tersedia di pasaran antara lain:- Mini Breadboard, yaitu jenis yang paling kecil diantara semua breadboard dan memiliki sekitar 170 titik koneksi.
- Medium Breadboard, yaitu jenis breadboard ukuran sedang yang kadang juga disebut half breadboard karena memiliki ukuran dan jumlah titik koneksinya setengah dari jumlah titik koneksi breadboard ukuran besar. Yaitu 400 titik koneksi.
- Large Breadboard, yaitu jenis yang ukurannya paling besar diantara semua jenis breadboard dan memiliki sekitar 830 titik koneksi.
Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :
Bagian-bagian arduino uno:
Bagian - bagian pendukung:
Block Diagram Mikrokontroler ATMega 328P pada Arduino UNO
Adapun block diagram mikrokontroler ATMega 328P dapat dilihat pada gambar berikut:
Baterai (Battery) adalah sebuah alat yang dapat merubah energi kimia yang disimpannya menjadi energi Listrik yang dapat digunakan oleh suatu perangkat Elektronik. Hampir semua perangkat elektronik yang portabel seperti Handphone, Laptop, Senter, ataupun Remote Control menggunakan Baterai sebagai sumber listriknya. Dengan adanya Baterai, kita tidak perlu menyambungkan kabel listrik untuk dapat mengaktifkan perangkat elektronik kita sehingga dapat dengan mudah dibawa kemana-mana. Dalam kehidupan kita sehari-hari, kita dapat menemui dua jenis Baterai yaitu Baterai yang hanya dapat dipakai sekali saja (Single Use) dan Baterai yang dapat di isi ulang (Rechargeable).
#include
<LiquidCrystal_I2C.h>
#include
<Wire.h>
#include
"HX711.h"
//
Define HX711 pins
#define
LOADCELL_DOUT_PIN A1
#define
LOADCELL_SCK_PIN A2
//
Define motor control pins
int
enA = 10;
int
in1 = 13;
int
in2 = A0;
int
incomingByte = 0;
//
Define ultrasonic sensor pins
#define
trigPin 8
#define
echoPin 9
//
Create an LCD object with I2C address 0x27 and size 16x2
LiquidCrystal_I2C
lcd(0x27, 16, 2);
//
Initialize HX711 object
HX711
scale;
//
Initialize variables
float
calibration_factor = -7050; // You need to set this calibration factor properly
float
weight = 0;
int
itemCount = 0; // Initialize item count
char
command;
void
setup() {
Serial.begin(9600); // Initialize UART
communication
// Initialize motor control pins
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
// Turn off motors - Initial state
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
// Initialize ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Initialize LCD
lcd.init();
lcd.backlight();
// Initialize HX711
scale.begin(LOADCELL_DOUT_PIN,
LOADCELL_SCK_PIN);
scale.set_scale();
scale.tare(); // Reset the scale to zero
// Calibrate the scale
calibrate();
}
void
directionControl() {
analogWrite(enA, 255); // Set motor to
maximum speed
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
delay(2000);
}
void
speedControl() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// Accelerate from zero to maximum speed
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
delay(20);
}
// Decelerate from maximum speed to zero
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
delay(20);
}
// Turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
void
calibrate() {
lcd.clear();
lcd.print("Calibrating...");
lcd.setCursor(0, 1);
lcd.print("Please Wait...");
delay(5000); // Wait for a while to place the
calibration weight
// After placing the weight, set the
calibration factor
scale.set_scale(calibration_factor);
scale.tare(); // Reset the scale to zero
after calibration
lcd.clear();
lcd.print("Calibration Done");
delay(2000);
lcd.clear();
}
void
loop() {
weight = scale.get_units(10); // Get weight
with average of 10 readings
// Check if weight exceeds 30 grams and
update item count
if (weight > 30) {
itemCount++;
}
// Display weight on LCD
lcd.setCursor(0, 1);
lcd.print(" "); // Clear previous
value
lcd.setCursor(0, 1);
lcd.print("Berat = ");
lcd.print(weight);
lcd.print(" g");
// Measure distance using ultrasonic sensor
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
// If the distance is less than 10 cm,
activate the motor
if (distance < 10) {
directionControl();
delay(1000);
lcd.clear();
delay(400);
lcd.clear();
delay(200);
}
// Display distance and item count on LCD
lcd.setCursor(0, 0);
lcd.print("J = ");
lcd.print(itemCount);
lcd.print(" D= ");
lcd.print(distance);
lcd.print(" cm");
// Print distance and item count to serial
monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.print(" cm, Item Count: ");
Serial.println(itemCount);
// Check for reset command from slave
if (Serial.available()) {
incomingByte = Serial.read();
if (incomingByte == 'R') {
itemCount = 0;
lcd.clear(); // Membersihkan LCD
lcd.setCursor(0, 0);
lcd.print("J = ");
}
}
delay(100);
}
#include
<LiquidCrystal_I2C.h>
#include
<Wire.h>
//
Alamat I2C dan ukuran LCD (16x2)
LiquidCrystal_I2C
lcd(0x27, 16, 2);
const
int sensorInduktifPin = 2;
const
int sensorInfraredPin = 3;
const
int sensorSentuhPin = 4;
int
jumlahProduk = 0;
int
jumlahBesi = 0;
void
setup() {
Serial.begin(9600); // Initialize primary
UART communication
pinMode(sensorInduktifPin, INPUT_PULLUP);
pinMode(sensorInfraredPin, INPUT_PULLUP);
pinMode(sensorSentuhPin, INPUT_PULLUP);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Menampilkan jumlah produk awal
lcd.setCursor(0, 0);
lcd.print("Jumlah Produk: ");
lcd.setCursor(0, 1);
lcd.print("Jumlah Besi: ");
}
void
loop() {
bool deteksiLogam =
digitalRead(sensorInduktifPin);
bool deteksiInfrared =
digitalRead(sensorInfraredPin);
bool deteksiSentuh =
digitalRead(sensorSentuhPin);
if (deteksiInfrared == LOW) {
jumlahProduk++;
lcd.setCursor(14, 0);
lcd.print(" "); // Menghapus nilai sebelumnya
lcd.setCursor(14, 0);
lcd.print(jumlahProduk);
delay(500); // Debouncing dan mencegah
penghitungan ganda
}
if (deteksiLogam == LOW) {
jumlahBesi++;
lcd.setCursor(12, 1);
lcd.print(" "); // Menghapus nilai sebelumnya
lcd.setCursor(12, 1);
lcd.print(jumlahBesi);
delay(500); // Debouncing dan mencegah
penghitungan ganda
}
if (deteksiSentuh == HIGH) {
jumlahProduk = 0;
jumlahBesi = 0;
lcd.clear(); // Membersihkan LCD
lcd.setCursor(0, 0);
lcd.print("Jumlah Produk: ");
lcd.setCursor(14, 0);
lcd.print(" "); // Menghapus nilai sebelumnya
lcd.setCursor(0, 1);
lcd.print("Jumlah Besi: ");
lcd.setCursor(12, 1);
lcd.print(" "); // Menghapus nilai sebelumnya
// Send reset command to master via Serial1
Serial.write('R');
}
delay(100); // Sedikit penundaan untuk
stabilitas
}
Download HMTL klik disini
Download listing program klik disini
Download video simulasi rangkaian klik disini
- Download datasheet