ITR9606 Modulo Opto interruptor, Sensor de Ranura Infrarrojo para Detección de Velocidad y Posición

[ITR9606] ITR9606 Modulo Opto interruptor, Sensor de Ranura Infrarrojo para Detección de Velocidad y Posición

https://electrofranko.com/web/image/product.template/55040/image_1920?unique=36cb84e

S/ 6.00 6.0 PEN S/ 6.00

S/ 6.00

Not Available For Sale

Esta combinación no existe.

Términos y condiciones
Envío: 2-3 días laborales


Referencia Interna: ITR9606

Módulo Sensor Optointerruptor de Ranura (ITR9606)

Interruptor óptico por barrera infrarroja con salida digitalizada y comparador LM393 integrado.

El módulo optointerruptor de ranura basado en el sensor ITR9606 es un dispositivo de detección óptica que integra un diodo emisor de infrarrojos de galio-arsénico y un fototransistor de silicio de alta sensibilidad alojados en una carcasa de policarbonato con una apertura de 5 mm. El principio operativo se basa en la interrupción física del haz de luz infrarroja: cuando un objeto sólido o disco encoder se interpone en la ranura, obstruye la barrera lumínica, modificando instantáneamente el estado del receptor. Equipado con un chip comparador LM393, el módulo entrega una señal digital limpia y libre de ruidos mecánicos, ideal para la medición precisa de velocidad angular, conteo de revoluciones y sistemas de posicionamiento industrial.

Especificaciones Técnicas

Parámetro Detalle
Tensión de AlimentaciónDC 3.3 V a 5.0 V
Corriente de Consumo~15 mA (Operación estable)
Ancho de la Ranura5.0 mm
Emisor ÓpticoLED Infrarrojo de 940 nm
Detector ÓpticoFototransistor de Silicio NPN
Comparador de SeñalIC LM393 integrado en placa
Parámetro Detalle
Formato de Salida DigitalTTL (Lógica Baja '0' / Alta '1')
Formato de Salida AnalógicaVoltaje lineal directo del receptor
Tiempo de Respuesta15 µs (Conmutación de alta velocidad)
Indicadores visualesLED de Encendido y LED de Estado DO
Dimensiones del PCB32 mm x 14 mm x 7 mm
Configuración de PinesVCC, GND, DO (Digital), AO (Analógico)

Diagrama de Conexiones y Mapeo de Pines

Diagrama de Conexión ITR9606

Ventajas del Módulo

Cero Desgaste y Alta Conmutación: Al ser un interruptor puramente óptico sin contactos físicos mecánicos internos, no presenta rebotes eléctricos de acoplamiento ni fatiga estructural por fricción, tolerando millones de ciclos de trabajo.

Señal Digital Cuadrada Perfecta: Gracias al acondicionamiento analógico provisto por el chip comparador LM393, la salida digital cambia de estado de manera abrupta e impecable, asegurando flancos limpios de subida y bajada compatibles con entradas digitales.

Monitoreo de Salida Dual: La incorporación paralela del terminal analógico (AO) permite diagnosticar variaciones en la densidad de obstrucción de la ranura, acumulación de polvo óptico o calibración fina de umbrales externos.

Código Arduino Completo y Optimizado

// Código de Control Avanzado para el Optointerruptor de Ranura ITR9606 // Implementa conteo por interrupciones externas, antirrebote por software y cálculo de RPM const int pinDO = 2; // Pin digital con soporte para interrupciones (Interrupt 0 en Arduino) // VARIABLES VOLÁTILES PARA INTERRUPCIONES DE ALTA VELOCIDAD volatile unsigned long conteoPulsos = 0; // Contador totalizador de ranuras censadas volatile unsigned long timestampUltimoPulso = 0; // Registro de tiempo para filtro antirrebote // PARÁMETROS CONFIGURABLES DE MEDICIÓN (Líneas extendidas adicionadas) const unsigned long ventanaDebounce = 5; // Tiempo mínimo entre pulsos en ms (filtro de ruido) const int ranurasPorVuelta = 20; // Número de ranuras del disco encoder utilizado unsigned long conteoAnterior = 0; // Registro de conteo en la ventana previa unsigned long tiempoAnterior = 0; // Marcador temporal para cálculo de frecuencia float rpmCalculadas = 0.0; // Almacén de cálculo dinámico de velocidad angular // Rutina de Servicio de Interrupción (ISR) optimizada de alta velocidad void ISR_ConteoPulsos() { unsigned long tiempoActual = millis(); // Filtro digital de tiempo para descartar transiciones espurias o ruidos en el flanco if (tiempoActual - timestampUltimoPulso > ventanaDebounce) { conteoPulsos++; timestampUltimoPulso = tiempoActual; } } void setup() { Serial.begin(9600); pinMode(pinDO, INPUT_PULLUP); // Configuración del pin de entrada con resistencia interna // Vinculación de la interrupción por flanco de bajada (FALLING) para máxima precisión attachInterrupt(digitalPinToInterrupt(pinDO), ISR_ConteoPulsos, FALLING); tiempoAnterior = millis(); Serial.println("--- Tacómetro y Contador de Pulsos ITR9606 Inicializado ---"); Serial.println("Monitoreando interrupciones ópticas en tiempo real..."); } void loop() { unsigned long tiempoActual = millis(); unsigned long deltaTiempo = tiempoActual - tiempoAnterior; // Cálculo periódico exacto cada 1000 ms (1 segundo) if (deltaTiempo >= 1000) { // Sección crítica: Desactivar interrupciones momentáneamente para leer variables volátiles de 32 bits de forma segura noInterrupts(); unsigned long copiaConteo = conteoPulsos; interrupts(); // CÁLCULO LOGÍSTICO COMPLEMENTARIO DE RENDIMIENTO (Líneas extendidas adicionadas) unsigned long pulsosEnIntervalo = copiaConteo - conteoAnterior; float vueltas = (float)pulsosEnIntervalo / ranurasPorVuelta; rpmCalculadas = (vueltas / (deltaTiempo / 1000.0)) * 60.0; // Actualización de registros históricos de control conteoAnterior = copiaConteo; tiempoAnterior = tiempoActual; // Envío secuencial estructurado a la terminal de depuración serial Serial.print("Pulsos Totales: "); Serial.print(copiaConteo); Serial.print(" | Pulsos/seg: "); Serial.print(pulsosEnIntervalo); Serial.print(" | Velocidad: "); Serial.print(rpmCalculadas, 1); Serial.println(" RPM"); // Alerta lógica si se detecta un bloqueo estático prolongado (Líneas extendidas adicionadas) if (digitalRead(pinDO) == HIGH && pulsosEnIntervalo == 0) { Serial.println("[ NOTA: Haz infrarrojo despejado / Sistema detenido ]"); } else if (digitalRead(pinDO) == LOW && pulsosEnIntervalo == 0) { Serial.println("[ ADVERTENCIA: Obstrucción continua detectada en la ranura ]"); } Serial.println("-----------------------------------------------------------------"); } }