● online
- USB To RS485 High Speed Converter RS-485 RS 485 Ad....
- Breadboard 400 titik lubang Bread board Projectboa....
- 10X RESISTOR 1K 1KOHM 1/4W 1% METAL FILM....
- Kabel Jumper Arduino Dupont 20 cm Female to Male P....
- Dimmer AC 4000W 220 Volt 4000 Watt 220V + Casing A....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to M....
- Tilt Sensor SW-520D Module Modul Sensor Kemiringan....
- DS3231SN DS3231 SN I2C RTC Module & Baterai Mo....
- 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
NodeMCU dikhususkan sebagai board yang dapat terhubung dengan jaringan internet (Wifi), jadi buat yang ingin belajar Internet of... selengkapnya
Potensiometer merupakan sebuah resistor yang nilainya dapat kita atur sesuai keinginan. Bagaimana cara mengaturnya? nah potensiometer memiliki 3... selengkapnya
Ketemu lagi dengan sensor DS18b20, kali ini akan kita monitoring menggunakan aplikasi Blynk dan ESP-01. Langsung saja ya kita... selengkapnya
DHT11 adalah perangkat elektronik yang digunakan untuk mendeteksi kelembapan dan suhu udara. Sensor ini dapat digunakan untuk mendeteksi suhu... selengkapnya
Pasti Anda semua sudah tahukan apa itu pas foto. Bagi Anda yang belum tahu apa itu pas foto, pas... selengkapnya
Raspberry Pi adalah komputer mini yang sangat populer di kalangan penggemar elektronika dan pemrograman. Salah satu kelebihan utamanya adalah pin... selengkapnya
MP3 DFPlayer merupakan sebuah modul elektronik yang berfungsi untuk memainkan sebuah suara yang filenya berketensi MP3. Seperti memutar sebuah... selengkapnya
Oke kali ini kita akan membahas salah satu board wifi yaitu kakak dari NodeMcu yang memiliki fungsi lebih +... selengkapnya
Siapa yang nggak kenal dengan running text? Running text merupakan sebuah teks berjalan pada sebuah papan yang berisi led-led... selengkapnya
Halo semuanya, pada kesempatan kali ini saya ingin berbagi tutorial tentang simulasi penggunaan sensor PIR (Passive Infra Red) untuk... selengkapnya
This is a set of transmitter and receiver in one of the photoelectric sensor. Detection distance can be adjusted according… selengkapnya
Rp 37.500Kinerja Produk: Warnanya coklat (amber), Goldfinger tape sticky baik, patuh, suhu tinggi, pelarut, tidak ada rembesan timah dan tidak ada… selengkapnya
Rp 11.900Features and Specs: Dual-Core, 32-bit ARM Cortex M0+ Processor Clocked at 48MHz (default), configurable max to 133MHz. Ready with USB… selengkapnya
Rp 82.900Kabel jumper 20 cm merk Dupont untuk Arduino Female to male 1 lembar = 40 kabel
Rp 11.300Dimmer AC 220 Volt 4000 Watt + Casing Aluminium Potensiometer untuk mengatur tegangan output min/max pada tegangan AC PLN 220V…. selengkapnya
Rp 52.500Kabel jumper Dupont untuk jumper Arduino atau Raspeberry Pi 20 cm Female to female 1 lembar = 40 kabel
Rp 11.300Menerima jasa cetak PCB FR2 (pertinax) / FR4 (double) single / double layer. Silahkan ke web kalkulator biaya cetak pcb… selengkapnya
Rp 1.000Kabel Jumper Dupont Pelangi 10 cm.. male to female 1 lembar isi 40 kabel
Rp 9.000The power supply is isolated industrial power modules, with a temperature protection, overcurrent and short circuit full protection, high and… selengkapnya
Rp 15.900Spesifikasi : – 16×2 – Warna Biru – Tegangan kerja : 5v Digunakan untuk keperluan display project seperti Arduino, Raspberry,… selengkapnya
Rp 17.000

Saat ini belum tersedia komentar.