● online
- Raspberry Pi Pico Microcontroller Board....
- Tilt Sensor SW-520D Module Modul Sensor Kemiringan....
- Motor servo MG996R TowerPro Metal Gear....
- LM35DZ Sensor Suhu - LM35....
- Water Level sensor ketinggian air - deteksi air....
- Dual Volt Amp Meter Digital Ampere Meter Voltmeter....
- LDR Sensor 5mm Cahaya 5528 Light Dependent Resisto....
- Max7219 Led Dot Matrix 32x8 Display Module For Ard....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Tutorial Mengitung Jarak dengan Pulsa Rotasi Disk Encorder dan Sensor Optocoupler ITR 9608
Optocoupler atau photo interrupter merupakan sensor optik slot tipe U yang menggunakan cahaya infra merah (IR) untuk mendeteksi ada atau tidaknya objek yang menghalangi jalur cahaya. Sensor ini memiliki dua bagian utama, yaitu:
Gambar 1. Schematic Komponen Optocoupler
-
Pemancar
Bagian ini berupa LED infra merah yang berfungsi memancarkan sinar infra merah secara terus-menerus ke arah detektor. Cahaya ini tidak terlihat oleh mata manusia, tetapi dapat dideteksi oleh komponen Photodetector di sisi seberangnya. -
Penerima
Bagian penerima terdiri dari Phototransistor yang peka terhadap cahaya infra merah dari LED pemancar.
Ketika cahaya infra merah mengenai Phototransistor, maka transistor akan aktif dan menghasilkan sinyal pada output.
Sebaliknya, ketika sinar terhalang oleh objek seperti bagian gelap dari disk encoder, maka transistor akan nonaktif, dan output akan berubah ke kondisi logika berlawanan.
Kedua bagian ini dipasang berhadapan di dalam bentuk celah huruf “U”, sehingga sebuah benda seperti disk encoder bisa bergerak di antara keduanya dan memutus atau menghubungkan jalur cahaya infra merah. Dalam tutorial ini, kita akan membuat sistem sederhana yang menghitung jarak berdasarkan pulsa dari rotasi disk encoder, di mana 1 pulsa mewakili 1 mm pergerakan. Sistem ini sangat cocok untuk robot, mesin penghitung panjang kabel, konveyor, dan aplikasi otomasi lainnya.
Alat dan Bahan yang Diperlukan
Untuk menjalankan proyek ini, berikut yang kamu butuhkan :
- Optocoupler ITR960
- Arduino nano
- Push button
- LED
- Resistor
- Breadboard dan kabel jumper
Wiring Rangkaian Optocoupler
Susun rangkaian dengan panduan seperti ini:
- Pin 5v ke positif Breadboard
- Pin GND ke negatif Breadboard
- Pin D2 ke emitter optocoupler
- Pin D3 ke positif button
- Pin D4 ke positif LED 2 melalui resistor
- Kaki anoda optocouplerke 5v melalui resistor
- Kaki katoda optocouplerke GND
- Kaki collector optocouplerke GND
- Kaki emitter optocouplerke 5v melalui resistor
- Kaki katoda LED 1 ke resistor emitter optocoupler
- Kaki anoda LED 2 ke 5v
Gambar 2. Wiring Rangkaian Optocoupler dengan Arduino Nano
Menulis Program Data Optocoupler
Setelah semua komponen terpasang, buka software Arduino IDE dan tulis kode berikut :
/* Penghitung Jarak berbasis Encoder Versi: Arduino Nano Encoder: 1 slot = 1 mm */ const byte sensorPin = 2; // Pin interrupt dari sensor encoder const byte resetButtonPin = 3; // Tombol reset const byte ledPin = 4; // LED indikator // Spesifikasi encoder const unsigned int slotsPerRevolution = 88; // jumlah slot per putaran // Masukkan perkiraan RPM maksimum alatmu di sini const unsigned int maxRPM = 600; // ubah sesuai kebutuhan (contoh: 600, 3000, dst) volatile unsigned long pulseCount = 0; volatile unsigned long lastPulseTime = 0; // untuk debounce di ISR unsigned long debounceMicros = 500; // dihitung otomatis di setup() const unsigned long minDebounceMicros = 50; // batas bawah praktis (μs) // ISR (Interrupt Service Routine) — menghitung pulsa dari encoder void handleSensorPulse() { unsigned long now = micros(); if (now - lastPulseTime > debounceMicros) { pulseCount++; lastPulseTime = now; } } void setup() { Serial.begin(115200); Serial.println("=== Encoder Distance Counter (Arduino Nano) ==="); pinMode(sensorPin, INPUT_PULLUP); pinMode(resetButtonPin, INPUT_PULLUP); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Hitung debounceMicros berdasarkan maxRPM & slots float pulsesPerSec = ((float)maxRPM / 60.0) * (float)slotsPerRevolution; if (pulsesPerSec <= 0.0001) pulsesPerSec = 1.0; // safety float tMin_us = 1000000.0 / pulsesPerSec; // mikrodetik antar pulsa unsigned long computed = (unsigned long)(tMin_us * 0.35f); // 35% dari interval if (computed < minDebounceMicros) computed = minDebounceMicros; debounceMicros = computed; // Info ke Serial Serial.print("Slots per Revolution: "); Serial.println(slotsPerRevolution); Serial.print("Max RPM: "); Serial.println(maxRPM); Serial.print("Estimated min interval (us): "); Serial.println((unsigned long)tMin_us); Serial.print("Debounce interval (us): "); Serial.println(debounceMicros); if (tMin_us * 0.35f < minDebounceMicros) { Serial.println("⚠️ WARNING: maxRPM terlalu tinggi, bisa kehilangan pulsa!"); } // Gunakan interrupt 0 (pin D2 di Nano) attachInterrupt(digitalPinToInterrupt(sensorPin), handleSensorPulse, RISING); Serial.println(">> Encoder siap: 1 slot = 1 mm\n"); } void loop() { // Tombol reset ditekan (aktif LOW) if (digitalRead(resetButtonPin) == LOW) { noInterrupts(); pulseCount = 0; interrupts(); digitalWrite(ledPin, HIGH); Serial.println(">> Penghitung di-reset ke 0 mm"); delay(300); // debounce tombol digitalWrite(ledPin, LOW); } // Ambil data dari variabel volatile noInterrupts(); unsigned long pulseCopy = pulseCount; interrupts(); // Hitung jarak (1 pulsa = 1 mm) unsigned long jarakMM = pulseCopy; Serial.print("Jarak Terdeteksi: "); Serial.print(jarakMM); Serial.println(" mm"); delay(100); // Update tiap 100 ms }
Penjelasan Kode
slotsPerRevolution
: jumlah lubang pada disk encoder.maxRPM
: kecepatan maksimum perkiraan putaran disk (digunakan untuk menentukan waktu antar pulsa).pulseCount
: jumlah total pulsa (setiap 1 pulsa = 1 mm).lastPulseTime
: waktu mikrodetik dari pulsa terakhir untuk menghitung jeda antar pulsa (debounce).
Apa yang Akan Terjadi dengan Optocoupler?
Ketika disk encorder diputar secara perlahan maka sensor akan mendeteksi tiap pulsa nya sebagaia 1mm yang akan ditampilkan pada serial monitor secara berurutan tanpa adanya lonjakan yang tidak wajar, hal ini menunjukkan bahwa mekanisme debounce waktu mikrodetik (micros) pada ISR bekerja efektif untuk menyaring pulsa ganda akibat noise optik dari sensor. Saat tombol reset ditekan, LED indikator menyala sesaat dan penghitung kembali ke nol.
Tutorial Mengitung Jarak dengan Pulsa Rotasi Disk Encorder dan Sensor Optocoupler ITR 9608
Artikel kali ini, akan membahas tentang mengontrol sebuah LED menggunakan remote. Remote apa yang digunakan? anda dapat menggunakan berbagai... selengkapnya
Potensiometer merupakan sebuah resistor yang nilainya dapat kita atur sesuai keinginan. Bagaimana cara mengaturnya? nah potensiometer memiliki 3... selengkapnya
Untuk membuat sebuah perangkat otomatis (di artikel ini lampu LED) sebenarnya dapat menggunakan berbagai macam sensor misalnya sensor suhu,... selengkapnya
Pada umumnya sebuah output data dapat kita tampilkan di berbagai platform software maupun hardware. Misalnya pada web, aplikasi android,... selengkapnya
Setelah mengetahui spesifikasi dan fungsi BFD-1000 pada artikel sebelumnya, maka kini mari kita belajar lebih dalam lagi mengenai pin pada... selengkapnya
Arduino Pro Micro adalah jenis arduino yang berukuran kecil, ukuranya hampir sama seperti Arduino Pro Mini. Secara fungsi dan... selengkapnya
MPU6050 adalah Sensor Gyroscope dan Accelerometer yang memiliki 6-axis Motion Tracking di mana perangkat ini mengkombinasikan 3-axis gyroscope, 3-axis accelerometer... selengkapnya
Hari ini kita akan belajar untuk membaca data analog dari sensor LDR menggunakan Blynk dan NodeMCU. Tidak hanya membaca... selengkapnya
Android merupakan sistem operasi untuk perangkat seluler dengan pengguna terbesar di dunia termasuk di Indonesia, dengan market share 90%... selengkapnya
Rain sensor merupakan sensor yang berfungsi untuk mendeteksi hujan turun atau tidak. Intinya sensor ini jika terkena air pada... selengkapnya
Features – Calibrated directly in Celsius (Centigrade) – Linear + 10.0 mV/C scale factor – 0.5C accuracy guaranteeable (at +25C)… selengkapnya
Rp 8.000Kabel Jumper Dupont Pelangi 10 cm female to female 1 lembar = 40 kabel
Rp 9.000Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500Spesifikasi: 50mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 75.000Item Deskripsi : This module performance is stable, measure the distance accurately. performance nearly the same as SRF05, SRF02 SRF05,… selengkapnya
Rp 13.900ESP-WROOM-32 is Powered by Espressif’s most advanced SoC, the ESP-WROOM-32 features high performance, a wide range of peripherals, Wi-Fi and… selengkapnya
Rp 38.400Modul sensor tegangan AC bolak balik 3 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 57.0001 X LDR Sensor 5mm Cahaya 5528 Light Dependent Resistor LDR
Rp 4.000Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v Digunakan untuk keperluan display project seperti Arduino, Raspberry,… selengkapnya
Rp 17.000Specifications: Operating voltage: DC3-5V Operating current: less than 20mA Sensor Type: Analog Detection Area: 40mmx16mm Production process: FR4 double-sided HASL… selengkapnya
Rp 3.000
Saat ini belum tersedia komentar.