Rancang Bangun Kontrol Ikan Mas Koki
1. Pendahuluan[kembali]
Ikan mas koki adalah spesies yang
sensitif terhadap perubahan lingkungan. Kondisi air yang buruk dapat
menyebabkan stres, penyakit, dan kematian pada ikan. Beberapa parameter yang
penting untuk dikendalikan meliputi pH air, suhu, kejernihan air, ketinggian
air, dan pemberian pakan yang tepat waktu. Dengan menggunakan sensor dan
mikrokontroler, pemantauan dan pengendalian parameter-parameter ini dapat
dilakukan secara otomatis dan real-time..
Akuarium ikan mas koki membutuhkan perawatan yang teliti agar ikan dapat hidup dalam kondisi optimal. Pemantauan dan pengendalian parameter lingkungan di akuarium sangat penting untuk menjaga kesehatan ikan. Dalam konteks ini, penggunaan mikrokontroler dan mikroprosesor untuk merancang sistem kontrol otomatis akuarium merupakan solusi yang inovatif dan efisien. Berikut adalah latar belakang mengenai tugas pemodelan mikroprosesor dan mikrokontroler dalam proyek "Rancang Bangun Kontrol Akuarium Ikan Mas Koki" dengan prinsip kerja menggunakan lima sensor diantaranya sensor pH, sensor DHT11, sensor touch, sensor RTD, sensor ultrasonic
Latar belakang di balik desain kontrol ikan mas koki otomatis dapat dilihat dari beberapa aspek, yaitu:
Ketidakpraktisan Pengelolaan Manual Ikan Mas Koki:
- Pengelolaan ikan mas koki secara manual sering kali memerlukan perhatian dan waktu yang banyak dari pemiliknya, seperti memberi makan, memantau kualitas air, dan menjaga kebersihan akuarium.
- Kesalahan dalam perawatan manual, seperti pemberian makan berlebihan atau kurangnya perawatan air, dapat menyebabkan stres dan penyakit pada ikan mas koki.
Kebutuhan Akan Solusi yang Efisien dan Mudah Digunakan:
- Gaya hidup modern yang sibuk membuat banyak pemilik ikan mencari cara yang lebih mudah dan efisien untuk merawat ikan mereka.
- Sistem kontrol otomatis dapat mengurangi beban perawatan harian, memberikan kenyamanan lebih kepada pemilik tanpa mengorbankan kualitas perawatan ikan mas koki.
Peningkatan Kesejahteraan dan Kelangsungan Hidup Ikan:
- Kondisi lingkungan yang stabil dan optimal sangat penting untuk kesehatan dan kesejahteraan ikan mas koki. Ini termasuk parameter seperti suhu, pH air, dan kadar oksigen.
- Sistem kontrol otomatis dapat secara konsisten memantau dan menyesuaikan parameter lingkungan, memastikan ikan mas koki tetap dalam kondisi terbaik dan mengurangi risiko penyakit.
Dengan demikian, pengembangan sistem kontrol ikan mas koki otomatis tidak hanya memudahkan pemilik dalam mengelola akuarium, tetapi juga berkontribusi pada kesehatan dan kesejahteraan ikan mas koki.
Berikut beberapa tujuan dibalik alasan pembuatan rancang bangun kontrol ikan mas koki:
Meningkatkan Efisiensi Pengelolaan Akuarium:
Mengurangi kebutuhan pemantauan dan intervensi manual dari pemilik, sehingga menghemat waktu dan usaha dalam perawatan ikan mas koki.
Menjaga Kesehatan dan Kesejahteraan Ikan
Memastikan kondisi lingkungan akuarium selalu optimal dengan pemantauan dan penyesuaian parameter seperti suhu, pH, dan kadar oksigen secara otomatis
Menyediakan Solusi Praktis dan Mudah Digunakan
Mengembangkan sistem yang mudah dioperasikan oleh pemilik, termasuk mereka yang tidak memiliki banyak pengalaman dalam pemeliharaan ikan mas koki.
Mengurangi Risiko Kesalahan dalam Perawatan:
Meminimalkan kesalahan umum dalam perawatan manual, seperti pemberian makan berlebihan atau kurangnya perawatan air, yang dapat menyebabkan stres dan penyakit pada ikan.
Meningkatkan Kepuasan dan Kenyamanan Pemilik:
Menyediakan solusi yang mempermudah pemilik dalam menjaga ikan mas koki tetap sehat, sehingga memberikan pengalaman yang lebih menyenangkan dan memuaskan dalam memelihara ikan hias.
Mendorong Penggunaan Teknologi dalam Pemeliharaan Ikan:
Memperkenalkan teknologi otomatisasi kepada pemilik ikan hias, mendorong adopsi solusi modern yang dapat meningkatkan kualitas hidup ikan dan efisiensi perawatan.
Spesifikasi dari sensor pH :
- Tegangan Catu Daya: 5VDC
- Rentang Pengukuran: 0 - 14PH
- Suhu pengukuran: 0 - 60 ℃
- Akurasi: ± 0.1pH (25 ℃)
- Waktu Respon: ≤ 1 menit
- Sensor pH dengan Konektor BNC
- Antarmuka : pH2.0 (tambalan 3 kaki)
- Adjustable Potensiometer
- Indikator Daya LED
- Ukuran modul: 43 x 32mm (1.69x1.26 ")
Grafik respon sensor
Sensor sentuh (touch sensor) adalah perangkat yang mendeteksi sentuhan fisik atau tekananpada permukaannya dan mengubahnya menjadi sinyal listrik yang dapat diukur dan diproses oleh sistem elektronik. Ada beberapa jenis sensor sentuh, termasuk resistif, kapasitif, dan piezoelektrik.
Spesifikasi dari
sensor Touch :
·
Konsumsi
daya yang rendah
·
Bisa
menerima tegangan dari 2 ~ 5.5V DC
·
Dapat
menggantikan fungsi saklar tradisional
·
Dilengkapi
4 lobang baut untuk memudahkan pemasangan
·
Tegangan
kerja : 2v s/d 5.5v (optimal 3V)
·
Output
high VOH : 0.8 VCC (typical)
·
Output
low VOL : 0.3 VCC (max)
·
Arus
Output Pin Sink (VCC 3V, VOL 0.6V) : 8 mA
·
Arus
Output pin pull-up (VCC=3V, VOH=2.4V) : 4 mA
·
Waktu
respon (low power mode): max 220 ms
·
Waktu
respon (touch mode): max 60 ms
· Ukuran: 24 mm x 24 mm x 7.2 mm
Grafik respon sensor
4. Sensor TDS
Spesifikasi dari
sensor TDS :
·
Tegangan Input: 3.3 ~ 5.5V
·
Tegangan Output: 0 ~ 2.3V
·
Arus Kerja: 3 ~ 6mA
·
Pengukuran TDS: 0 ~ 1000ppm
·
Akurasi: ± 10% F.S. (25°C)
·
Dimensi Modul: 42 x 32 mm
·
Pajang Probe 83 cm
·
Tipe Output: Tegangan Analog
Spesifikasi dari
sensor ultrasonik :
·
Dimensi
: 45 mm (P) x 20 mm (L) x 15 mm (T)
·
Tegangan
: 5 VDC
·
Arus
pada mode siaga : < 2 mA
·
Arus
pada saat deteksi : 15 mA
·
Frekuensi
suara : 40 kHz
·
Jangkauan
Minimum : 2 cm
·
Jangkauan
Maksimum : 400 cm
Grafik respon sensor
6. Sensor Suhu DSI18B20
Spesifikasi dari
sensor dht11 :
·
Konsumsi
daya yang rendah
·
Bisa
menerima tegangan dari 2 ~ 5.5V DC
·
Dapat
menggantikan fungsi saklar tradisional
·
Dilengkapi
4 lobang baut untuk memudahkan pemasangan
·
Tegangan
kerja : 2v s/d 5.5v (optimal 3V)
·
Output
high VOH : 0.8 VCC (typical)
·
Output
low VOL : 0.3 VCC (max)
·
Arus
Output Pin Sink ( VCC 3V, VOL 0.6V) : 8 mA
·
Arus
Output pin pull-up (VCC 3V, VOH 2.4V) : 4 mA
·
Waktu
respon (low power mode): max 220 ms
·
Waktu
respon (touch mode): max 60 ms
·
Ukuran:
24 mm x 24 mm x 7.2 mm
Grafik respon sensor
LCD (Liquid-Crystal Display) atau Penampil Kristal Cair adalah layar panel datar atau perangkat optik elektronik termodulasi yang menggunakan sifat modulasi cahaya dari kristal cair (liquid crystal) yang dikombinasikan dengan polarizer. Kristal cair tidak memancarkan cahaya secara langsung, melainkan menggunakan lampu latar atau reflektor untuk menghasilkan gambar berwarna atau monokrom.
Spesifikasi :
· Format tampilan : 16 x 2 karakter
·
Pengontrol
bawaan : ST 7066 (atau setara)
·
Siklus kerja : 1/16
·
5 x 8 titik termasuk kursor
·
hjbjscdncabmdbchjbawsdcsahb
Supply + 5 V (juga tersedia
untuk + 3 V)
·
LED dapat
digerakkan oleh pin 1, pin 2,
pin 15, pin 16 atau
A dan K
·
N.V. opsional untuk supply + 3 V
8. Motor Driver
Motor driver adalah sebuah modul yang sering sekali digunakan untuk mengendalikan motor DC. Dengan menggunakan motor driver dapat dengan mudah mengendalikan baik itu kecepatan maupun arah rotasi 2 motor sekaligus. Motor driver dirancang menggunakan IC L298 Dual H-Bridge Motor Driver berisikan gerbang gerbang logika yang sudah sangat populer dalam dunia elektronika sebagai pengendali motor
Spesifikasi :
· Tegangan Input : 3.2V - 40V
·
Driver : Driver Motor L298N Dual H
Bridge DC
·
Supply : 5V
·
Arus puncak : 2A
·
Kisaran operasi
: 0 - 36 mA
·
Konsumsi daya maksimum : 20W (ketika suhu 75 ℃)
·
Suhu penyimpanan : -25 ℃ ~ +130 ℃
·
Keluaran pin 10 (sumber
tegangan IC) jika berfungsi sebagai
pin output : 5V
·
Ukuran : 3.4cm
x 4.3cm x 2.7cm
9. Motor Pump
Motor pump / pompa air adalah alat untuk menggerakan air dari tempat bertekanan rendah ke tempat bertekanan yang lebih tinggi. Pada dasarnya motor pump sama dengan motor DC pada umumnya, hanya saja sudah di-packing sedemikian rupa sehingga dapat digunakan di dalam air.
Spesifikasi :
·
Nilai Tegangan
: DC 12V
·
Beban : Air
·
Penyerapan
air : 1L – 1.2L/min
·
Arus (dengan
beban) : Kurang
dari 320mA
·
Arus : 2.0LPM
·
Ukuran total :
D27 x 75mm
·
Diameter lubang air : 6.5mm
·
Tekanan maksimum
: Lebih dari 360mmHg
· Kebisingan : Kurang dari <60dB
4.1 Universal
Asynchronous Receiver Transmitter (UART)
UART
(Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras
komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial.
UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi
serial pada komputer atau port serial perangkat periperal.
4.2 Motor Servo
Motor servo adalah perangkat elektromekanis yang
digunakan untuk mengontrol posisi sudut, kecepatan, dan akselerasi dengan
presisi tinggi. Motor ini terdiri dari motor biasa yang digabungkan dengan
sensor posisi dan rangkaian kontrol. Sensor posisi, sering berupa potensiometer
atau enkoder, menyediakan umpan balik ke rangkaian kontrol, yang kemudian
mengatur arus ke motor untuk mencapai posisi yang diinginkan. Motor servo
digunakan dalam berbagai aplikasi yang memerlukan kontrol gerakan yang tepat,
seperti robotika, kontrol pesawat, sistem navigasi otomatis, dan mekanisme
penggerak presisi dalam industri manufaktur. Keandalannya dalam mencapai dan
mempertahankan posisi tertentu membuatnya sangat populer dalam sistem
otomatisasi dan kontrol gerak.
4.3. Motor Pump DC
Motor DC (Direct Current) adalah jenis motor listrik yang mengubah energi listrik arus searah menjadi energi mekanis berupa gerakan rotasi. Motor ini terdiri dari beberapa komponen utama: stator, rotor (atau armatur), komutator, sikat, dan sumber daya DC.
Pompa
air DC adalah perangkat yang menggunakan motor listrik berarus searah (DC)
untuk memompa air dari satu lokasi ke lokasi lain. Pompa ini sering digunakan
dalam aplikasi portabel dan sistem energi terbarukan karena dapat dioperasikan
menggunakan baterai atau panel surya. Komponennya meliputi motor DC, impeller
untuk memindahkan air, dan casing yang melindungi serta mengarahkan aliran air.
Pompa air DC umumnya digunakan dalam irigasi taman, sistem pendingin, akuarium,
dan aplikasi rumah tangga lainnya yang memerlukan transfer air yang efisien dan
andal. Keunggulannya termasuk konsumsi energi rendah, kemampuan untuk
beroperasi pada tegangan rendah, dan kesederhanaan dalam instalasi serta
perawatan.
4.4 Arduino
Arduino adalah kit
elektronik atau papan rangkaian elektronik open source yang di dalamnya
terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari
perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino
Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa
menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer
ataupun perangkat lain.
4.5 PWM (Pulse Width
Modulation)
PWM (Pulse Width
Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan
nilai amplitudo dan frekuensi yang tetap.
Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke
kondisi low . Lebar pulsa PWM berbanding
lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya
dinyatakan dalam bentuk
persen (%). PWM pada arduino bekerja pada frekuensi
500Hz, artinya 500 siklus/ketukan dalam satu
detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255.
Ketika kita memberikan angka 0,
berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu
bernilai 0 volt). Sedangkan jika kita
memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai
127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan
setengah siklus lagi akan bernilai 0 volt.
Sedangkan jika jika memberikan 25% dari 255 (1/4 x 255 atau 64), maka
1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam
1 detik.
4.6 ADC
(Analog to Digital
Converter)
ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital.Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.
Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A (A0- A5 pada Arduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);.
Prosedur program terdiri dari
- Download library yang diperlukan pada bagian download dalam blog.
- Buka proteus yang sudah diinstal untuk membuat rangkaian.
- Tambahkan komponen seperti Arduino, sensor, dan perangkat lainnya lalu susun menjadi rangkaian.
- Buka Arduino IDE yang sudah diinstal.
- Di Arduino IDE, pergi ke menu "File" > "Preferences".Pastikan opsi
- "Show verbose during compile" dicentang untuk mendapatkan informasi detail saat kompilasi.
- Salin kode program Arduino pada blog kemudian tempelkan program tadi ke Arduino IDE.
- Kompilasikan kode dengan menekan tombol "Verify" di Arduino IDE.
- Cari dan salin path file HEX yang dihasilkan selama proses kompilasi.
- Kembali ke Proteus dan pilih Arduino yang telah Anda tambahkan di rangkaian.
- Buka opsi "Program File" dan tempelkan path HEX yang telah Anda salin dari Arduino IDE.
- Jalankan simulasi di Proteus.
#include
<LiquidCrystal_I2C.h>
LiquidCrystal_I2C
lcd(0x27, 20, 4);
const int tdsPin = A0;
const int suhuPin = A1;
const int pHPin = A2;
const int echoPin = 12;
const int triggerPin =
11;
const int touchPin = 2;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
// Baca nilai sensor
float tdsValue = analogRead(tdsPin) * (5.0 /
1023.0) * 1000;
float suhuValue = analogRead(suhuPin) * (5.0
/ 1023.0) * 100;
float pHValue = analogRead(pHPin) * (14.0 /
1023.0);
//Sensor Ultrasonik
long duration, jarak;
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
jarak = (duration / 2) / 29.1;
//Sensor Touch
int touchStatus = digitalRead(touchPin);
// Kirim karakter ke slave
if (touchStatus == HIGH){
Serial.write('A');
} else{
Serial.write('B');
}
if (suhuValue > 35){
Serial.write('C');
} else{
Serial.write('D');
}
if (pHValue > 8){
Serial.write('E');
} else if(pHValue < 7){
Serial.write('F');
} else{
Serial.write('G');
}
if (tdsValue > 20 || jarak > 23){
Serial.write('H');
} else{
Serial.write('I');
}
if(jarak < 10){
Serial.write('J');
} else{
Serial.write('K');
}
// Tampilkan nilai sensor di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TDS: ");
lcd.print(tdsValue);
lcd.print(" ppm");
lcd.setCursor(0, 1);
lcd.print("Suhu: ");
lcd.print(suhuValue);
lcd.print(" C");
lcd.setCursor(0, 2);
lcd.print("pH: ");
lcd.print(pHValue);
lcd.setCursor(0, 3);
lcd.print("Jarak: ");
lcd.print(jarak);
lcd.print(" cm");
delay(100);
}
#include <Servo.h>
const int motorKipas = 3;
const int
motorPengurasAir = 5;
const int
motorPenambahAir = 6;
Servo motorPakan;
Servo
motorCairanAsamBasa;
void setup() {
Serial.begin(9600);
pinMode(motorKipas, OUTPUT); // motorKipas
(DC)
pinMode(motorPengurasAir, OUTPUT); //
motorPengurasAir (DC)
pinMode(motorPenambahAir, OUTPUT); //
motorPenambahAir (DC)
motorPakan.attach(10); // motorPakan (servo)
motorCairanAsamBasa.attach(11); //
motorCairanAsamBasa (servo)
}
void loop() {
if (Serial.available() > 0) {
char input = Serial.read();
switch(input) {
case 'A':
motorPakan.write(90); // Mengaktifkan
motor pakan
break;
case 'B':
motorPakan.write(0); // Mengembalikan
motor pakan ke posisi semula
break;
case 'C':
digitalWrite(motorKipas, HIGH);
break;
case 'D':
digitalWrite(motorKipas, LOW);
break;
case 'E':
motorCairanAsamBasa.write(0); //Putar
ke kiri menambah cairan asam
break;
case 'F':
motorCairanAsamBasa.write(180); //Putar
ke kanan menambah cairan basa
break;
case 'G':
motorCairanAsamBasa.write(90);
//Kembali ke posisi awal
break;
case 'H':
digitalWrite(motorPengurasAir, HIGH);
break;
case 'I':
digitalWrite(motorPengurasAir, LOW);
break;
case 'J':
digitalWrite(motorPenambahAir, HIGH);
break;
case 'K':
digitalWrite(motorPenambahAir, LOW);
break;
}
}
}
0 comments:
Posting Komentar