● online
- DS3231SN DS3231 SN I2C RTC Module & Baterai Mo....
- IIC I2C LCD 1602 16x2 2004 20x4 Backpack for LCD A....
- E18-D80NK Infrared Obstacle Avoidance Sensor Proxi....
- Kabel Jumper arduino Dupont Pelangi 30 cm Male to ....
- PWM DC 10A Motor 12V-40V Pulse Width Modulation Sp....
- LCD 16x2 / 1602 Display Arduino Raspberry LCD 16 x....
- Sensor Api Flame detector sensor....
- LM2596 Module Step Down DC-DC Ultra compact in 3-4....
- 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
Telegram adalah sebuah aplikasi chating yang cukup banyak penggunanya dan telegram ini dapat menjawab sendiri sesuai dengan perintah yang... selengkapnya
Sensor PIR (Passive Infrared) adalah salah satu sensor yang paling sering digunakan untuk mendeteksi gerakan, terutama gerakan manusia. Sensor ini... selengkapnya
Motor servo adalah salah satu jenis motor listrik yang memiliki feedback berupa sensor posisi. Dengan adanya feedback tersebut, motor... selengkapnya
Motor jadi salah satu komponen elektronik yang seru buat kita pelajari, dengan motor kita bahkan bisa buat mobil mainan yang... selengkapnya
CNC router merupakan sebuah mesin yang mempunyai kegunaan untuk memotong, mengukir/grafir dan membuat marking. Semua proses itu dapat dilakukan... selengkapnya
Saat menghubungkan SHT40 ke ESP32-C3 Mini, ada satu hal yang sering bikin bingung, yaitu alamat I2C. Alamat ini digunakan oleh... selengkapnya
Sensor PIR berfungsi untuk mendeteksi benda (manusia/hewan) dengan cara mendeteksi energi panas dalam bentuk radiasi inframerah. Jadi sensor ini... selengkapnya
Di percobaan sebelumnya, kamu sudah belajar dua hal penting secara terpisah, yaitu menyalakan LED dan membaca input dari tombol. Nah,... selengkapnya
Penggunaan LCD I2C sering kali gagal menampilkan teks karena deklarasi awal yaitu alamat I2C yang salah/keliru dikarenakan alamat yang... selengkapnya
Pada penggunaan mesin CNC router salah satu kegunaanya adalah dapat membuat layout atau jalur PCB. Cara penggunaanya kita memerlukan... selengkapnya
Bagaimana jika mikrokontroler yang anda gunakan tidak memiliki port ADC. atau anda masih kurang dengan spesifikasi resolusi ADC yang disediakan… selengkapnya
Rp 65.000MERK : TOWER PRO MG995 180 derajat Specifications Weight: 55 g Dimension: 40.7 x 19.7 x 42.9 mm approx. Stall… selengkapnya
Rp 36.300Buruan dibeli gan….barang murah-berkualitas SIAPA CEPAT DIA DAPAT Spesifikasi: LCD 1602 / 16×2 (16 karakter, 2 baris) merek QAPASS (cek… selengkapnya
Rp 24.500Kabel Jumper Dupont Pelangi 10 cm male to male 1 lembar = 40 kabel
Rp 13.0002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.500Description: TP5100 is a double switch buck 8.4V, single cell 4. 2V lithium battery charge management chip. Its ultra-compact QFN16… selengkapnya
Rp 10.600Features – Calibrated directly in Celsius (Centigrade) – Linear + 10.0 mV/C scale factor – 0.5C accuracy guaranteeable (at +25C)… selengkapnya
Rp 8.000Support terus UKM indonesia dengan membeli produk-produk dalam negeri. Untuk kualitas tidak usah diragukan, udah kita tes QC dengan sangat… selengkapnya
Rp 8.500Specifications: 1. supports sampling costs (KHz): 8/11.025/12/16/22.05/24/32/44.1/48 2. 24-bit DAC output, dynamic range aid: 90dB, SNR aid: 85dB 3. fully… selengkapnya
Rp 17.800Modul sensor tegangan AC bolak balik 1 fasa ini menggunakan optocoupler sehingga tegangan input (AC) tidak akan mengganggu/membahayakan tegangan output… selengkapnya
Rp 21.000Tutorial Mengitung Jarak dengan Pulsa Rotasi Disk Encorder dan Sensor Optocoupler ITR 9608
Kategori
Artikel Terkait
-
Cara Bikin Sistem Monitoring Getaran Gempa dan Stabilitas Kemiringan Pakai ESP32 dan MPU 6050
-
Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69
-
Bikin Sistem Monitor Volume Air Tandon Otomatis Pakai Arduino Uno dan Sensor Ultrasonik
-
Cara Bikin Kipas Angin Otomatis Berbasis Suhu Pakai Arduino Uno dan Sensor LM35
-
Bikin Smart Medicine Box Otomatis Pakai Arduino Nano dan Sensor Suhu DHT11

Saat ini belum tersedia komentar.