¿Cómo generar una onda cuadrada constante de 38 kHz para la fuente de luz IR?

6
  • Aplicación: barrera de luz IR a una distancia de 1 m

  • Receptor: por ejemplo, Vishay TSSP4038 sensor IR (sintonizado a 38 kHz)

  • Rango de temperatura ambiente: -10 a 40 ° C

Aquí he encontrado un circuit con un gatillo Schmidt que debería hacer el Truco, si hubiera un cristal oscilando a 38 kHz. Pero no puedo encontrar alguna. Digikey enumera cristales de 38 kHz , pero, observando la especificación Hojas: resulta que en realidad son cristales de 32,768 Hz.

¿Cómo obtengo 38 kHz?

También he considerado un circuito basado en NE555, pero eso no es temperatura Estable, y requiere recorte. Otra opción, me han dicho, sería estar usando un Arduino para generar los 38 kHz, pero parece que exceso.

Actualizar

Siguiendo la recomendación en la nota de aplicación mencionada en answer , finalmente decidí usar un Arduino Nano. Para generar los 38 kHz, utilicé el temporizador como se describe en un publicación en el foro de Arduino por Nick gammon al foro de arduino. Su código de ejemplo:

const byte LED = 11;  // Timer 2 "A" output: OC2A

void setup() {
 pinMode (LED, OUTPUT);

 // set up Timer 2
 TCCR2A = _BV (COM2A0) | _BV(WGM21);  // CTC, toggle OC2A on Compare Match
 TCCR2B = _BV (CS20);   // No prescaler
 OCR2A =  209;          // compare A register value (210 * clock speed)
                        //  = 13.125 nS , so frequency is 1 / (2 * 13.125) = 38095

}  // end of setup

void loop() { }

A través de un pin de interrupción, conecté el Nano a un Yún, que ejecuta la lógica principal y le dice al Nano que encienda o apague la señal. Tenga en cuenta que la nota de la aplicación Vishay se trata de medir la distancia a un objeto, mientras que mi aplicación se trata simplemente de medir si un rayo se interrumpe o no.

Próximos pasos: deshacerse del Nano; Actualice de 38 a 56 kHz para una detección ligeramente más rápida.

    
pregunta feklee

7 respuestas

6

Tu esfuerzo está mal dirigido; estos receptores no son tan sensibles a la frecuencia precisa pero no mantendrán la salida con una señal modulada constante .

En cambio, están diseñados para buscar "ráfagas" de modulación y rechazarán el ruido que no se parece a un tren de pulsos de portadora modulada; para que continúen funcionando, no necesitará un generador de señales sino dos, uno para la modulación y otro para crear las ráfagas en la envolvente de la modulación.

El primer generador produce modulación de 38 KHz.

El segundo generador activa y desactiva el primer generador a una velocidad dentro de la ventana de los tipos de señales remotas que el receptor está diseñado para aceptar.

Normalmente, usas un microcontrolador; use un canal de temporizador dividido desde el reloj MCU para producir los 38 KHz hasta la aproximación más cercana que pueda. No es necesario que sea exacto .

Luego, tenga un software u otra tecla de temporizador que esté activada y desactivada.

(Probablemente podría usar el temporizador doble 556; pero las MCU que pueden hacer esto son muy inferiores a un dólar en cantidad, requieren menos componentes de soporte y pueden hacer otras cosas también).

Si estaba esperando una salida constante del detector, tendrá que repensar el diseño de su sistema; en su lugar, es probable que necesite seguir el detector con un extensor de pulso que puede llenar los espacios entre sus pulsos de transmisión; Si su transmisión cesa, el strether de pulso extenderá el último pulso del receptor y luego se detendrá.

    
respondido por el Chris Stratton
3

Agarre un ATMega328p y ponga un cristal de cuarzo de 7.6MHz en él. Luego, con el modo Corrección de frecuencia de fase con ICR1 como 100, se emitirá una señal exacta de 38 kHz.

Para hacer esto:

Establezca los fusibles MCU al cargar el código, a estos valores:

low_fuses= 0x7D = 1111 1101
bit 7 = 1 = CKDIV8  = Divide clock by 8
bit 6 = 1 = CKOUT = clock output
bit 5 = 1 = SUT1 = Select start-up time
bit 4 = 1 = SUT0
bit 3 = 1 = CKSEL3 = Select clock source
bit 2 = 1 = CKSEL2
bit 2 = 0 = CKSEL1 
bit 0 = 1 = CKSEL0

El código para producir los 38kHz en los pines PB1 / OSC1A y PB2 / OSC1B será:

// Set Timer1 to phase and frequency correct mode. NON-inverted mode
TCCR1A = _BV(COM1A1) | _BV(COM1B1); 

// Set prescaler to clk/1
TCCR1B = _BV(WGM13) | _BV(CS10);

//ICR Register, which controls the total pulse length
ICR1 = 100; // Divides clock by 100/2, so 7.6MHz/100/2 = 38kHz
//OCR Registers, which control the duty cycle.
// OCR1A + OCR1B must be = IRC1.
OCR1A = 50; // 50% of the pulse will be LOW state
OCR1B = 50; // 50% of the pulse will be HIGH state
    
respondido por el cyberponk
2

La especificación del sensor IR Vishay TSSP4038 muestra la capacidad de respuesta frente a la frecuencia relativa. Un 555 con componentes externos estables a la temperatura debería mantenerlo dentro de un rango razonable de capacidad de respuesta, pero debe determinar qué porcentaje de capacidad de respuesta puede sufrir en todo el rango (una especificación del 0% nunca es realista, pero el porcentaje real es muy alto). aplicación específica). Solo tiene que hacer algunos cálculos matemáticos para determinar la deriva en el peor de los casos frente a la temperatura en los componentes RC y averiguar si puede recibir el impacto de la capacidad de respuesta.

Alternativamente, un microcontrolador con un cristal para temporización utilizando una salida de temporizador para alternar un pin en el momento correcto funcionaría y sin duda sería más estable.

    
respondido por el Bob
2

Las especificaciones del receptor Vishay muestran la característica del filtro como + -5% a la atenuación 3dB relativa a la frecuencia nominal (38 kHz).

El mejor (temporizador SE555 TI) tiene una sensibilidad interna de 90 ppm / C típica, que a lo largo de más de 50 C da como resultado 4500 ppm, o 0.45%.

Para llegar a 38 kHz, necesitará usar un condensador de 10 nF con una resistencia de 2 k. Puede usar tapas de cerámica tolerantes al 1% de NPO (por ejemplo, de Murata), y si también obtiene una fuente de alimentación estable, debería poder obtener una estabilidad del 2-3% en un rango de 50 ° C.

Sin embargo, lo anterior es más como una ilusión, ya que TI en sí no garantiza nada, consulte esta entrada de blog .

Además , como lo menciona Chris Stratton , la parte del receptor Vishay no garantiza una salida estable si se aplica una señal óptica constante a la frecuencia portadora, el receptor necesita algo "interrupciones" entre la ráfaga de impulsos de portadora, consulte las especificaciones de una pieza similar a TSOP6238 .

ACTUALIZACIÓN : Acabo de hacer un experimento rápido con un receptor de IR similar, GP1UV700QS (36kHz, por Sharp). Con un LED IR accionado desde un generador de señal como fuente, el comportamiento es el siguiente: si no hay señal IR, la salida del receptor es ALTA; si la señal se inicia y continúa, el receptor se pone BAJO y, a continuación, se pone ALTO por sí solo . La duración del pulso BAJO depende de la proximidad al emisor. A una distancia cercana (20 cm), el pulso puede durar hasta 300 ms, mientras que a una distancia mayor (1 m) se reduce a 1-2 ms, hasta llegar a 250 us. Dado que la característica de respuesta de frecuencia de la portadora es bastante amplia (5% a -3dB), y el rango dinámico es enorme, realmente no importa mucho si la portadora se desvía en + -5kHz, los resultados son los mismos.

LÍNEA INFERIOR: si la señal del emisor IR no está modulada, solo una portadora de 38 kHz de amplitud constante, la clase de receptores IR como Vishay TSSP40xx o Sharp GP1UV70xx no mantendrán la salida del detector lógico. Para que estos circuitos integrados funcionen como "barrera de luz", la amplitud de la portadora debe modularse en ráfagas distintivas de aproximadamente 1 ms ON y ~ 1 ms de portadora OFF. Desafortunadamente, la salida cambiará en consecuencia, por lo que, para utilizar el receptor como detector "go-nogo", el circuito de procesamiento debe detectar el cambio.

Por lo tanto, podría ser más fácil usar un cristal con un microprocesador, y usar temporizadores internos programables para obtener la frecuencia y modulación correctas, como el original Vishay appnote sugiere.

    
respondido por el Ale..chenski
2

Si la frecuencia es tan crítica, es posible que desee considerar un "bucle de fase bloqueada" (PLL). Un oscilador de cristal que tenga un "Denominador común más pequeño" con la frecuencia que está intentando producir debería producir menos fluctuación (si eso es un factor). Solo como ejemplo 1.9 MHz dividido por 38 kHz = 50 veces. Entonces un 1.9 MHz dividido por 50 sería tu 38 kHz. Espero que esto ayude.

    
respondido por el Optionparty
1

Dos opciones simples para una onda cuadrada de 38kHz:

  1. Use el oscilador controlado por voltaje incorporado en este chip PLL: enlace (Consulte la página 16 del PDF para saber cómo elegir los componentes para configurar la frecuencia de salida)

  2. Construya un oscilador de relajación con un op-amp y resistencias estables a la temperatura: enlace

Un 555 probablemente sería la solución más fácil y podría ser lo suficientemente estable en un amplio rango de temperatura.

    
respondido por el DEED
1

38kHz cristal en Ebay Simplemente use el cuadro de selección para la frecuencia correcta.

PERO! considerando que estos sensores exactos se usan con Arduinos, que usualmente tienen relojes de 16 MHz, ¡consideraría hacer una investigación sobre el código Arduino para estos kits de sensores, ya que podría haber algún código terminado para su proyecto!

    
respondido por el cyberponk

Lea otras preguntas en las etiquetas

Comentarios Recientes

Escuchemos nuestra PC con cámara web QHD: ¿Qué pasa con las líneas ligeramente difusas en el video? Eso solo significa que la luz IR golpea su fuente y se raya. Entonces, ¿cómo sucede eso? La luz IR fue reflejada en su cámara web por un objeto subdividido. ¿Podemos deshabilitar la detección de IR y empujar la luz IR sobre una superficie desacoplada? Es bastante divertido imaginar que los píxeles de una computadora portátil tocan algo similar en la pantalla. ¿Pueden las teclas de un Galaxy Pro usar sus teclas?... Lees verder