temporizador de tiempo aleatorio

6

Estoy construyendo un circuito simple que emite un pitido en un intervalo de tiempo determinado, utilizando un temporizador 555. ¿Hay alguna forma sencilla de aleatorizar la hora en el temporizador 555 entre dos intervalos dados, digamos, en cualquier momento entre 30 segundos y dos minutos? Ni siquiera estoy buscando una verdadera aleatorización, solo algo simple para hacer que el intervalo sea diferente entre cada pulso. Idealmente, esto sería lo suficientemente simple / pequeño para que pueda poner dos de ellos en un circuito con un temporizador 556; el segundo sería un tiempo de sub-segundo para crear un "pitido" diferente cada vez. ¿Alguna idea?

Gracias.

P.S. - ¿Bonificación si los intervalos se pueden ajustar con un potenciómetro?

    
pregunta Chris

5 respuestas

7

Estoy de acuerdo con Olin: abandona el 555 y consigue un microcontrolador. El PIC10F200 es el primero que viene a la mente si solo necesita un par de E / S y un programa simple. Gracias al oscilador interno no necesita ninguno de los componentes externos requeridos por el LM555. El 10F200 es solo unos centavos más que el LM555 y puede reemplazar fácilmente dos de ellos. El LM556 tampoco es competencia: cuesta el doble de lo que pagas por el 10F200.

¿Entonces la respuesta de Olin es la correcta? No :-). ¡Voy por la bonificación! Recientemente encontré el Atmel ATTiny5 , que es comparable con el PIC10F200: el mismo paquete SOT23, la misma memoria de programa de 512 bytes, oscilador interno. ¡PERO! El ATTiny5 tiene un ADC , ¡que el PIC no tiene! ¡Conecta el potenciómetro y el bono es mío! :-)

(También puede hacer un ADC en bruto con el PIC, pero necesita 2 pines que puede usar como salidas, y como ya tenemos dos salidas y solo se recibe una E / S del 10F200, tendrá para abandonar la salida del zumbador. Editar. Pensándolo bien, puedes hacerlo con una E / S, pero necesitarás dos resistencias: un condensador en lugar de una resistencia y un condensador. )

El software será muy parecido al del PIC: programa un LFSR (Registro de desplazamiento de retroalimentación lineal):

Un LFSR de 8 bits puede recorrer hasta 255 combinaciones antes de que se repita, un LFSR de 16 bits hasta 65535. Use la lectura del potenciómetro para definir los valores de recorte para el temporizador.

    
respondido por el stevenvh
11

Dijiste que querías lo simple y lo pequeño, pero aún estás usando un temporizador 555. Esos dos están en desacuerdo entre sí.

Regresa el temporizador 555 a cualquier museo en el que lo hayas encontrado y usa un microcontrolador. El pequeño PIC10F200 puede hacer este trabajo. Viene en un paquete SOT-23, y solo necesita una parte adicional de un solo bypass.

El resto es firmware. Esta parte tiene un oscilador interno y 255 palabras de instrucción utilizables. Eso es suficiente para un poco de tiempo y código de número pseudo-aleatorio. Incluso puedes hacer que haga varias salidas al mismo tiempo. Esta parte tiene seis pines: alimentación, tierra, una entrada y tres E / S. Por lo tanto, puede hacer que produzca hasta 3 eventos separados directamente desde sus pines.

Añadido:

Aparentemente hay un cierto deseo de controlar la longitud del intervalo promedio con una olla. Si eso es lo que quiere, puede usar un PIC 10F220 en lugar del 10F200. Ese PIC tiene un A / D de 8 bits y solo cuesta un poco más que el '200 (todavía solo $ .38 en 100s en microchipdirect). Una vez más, la única otra parte que necesita aparte del microcontrolador es una tapa de derivación. La olla puede ser de alrededor de 20 kΩ o 47 kΩ. Los extremos están conectados a Vdd y tierra, y el limpiaparabrisas a uno de los dos pines de entrada analógica. El resto es firmware.

    
respondido por el Olin Lathrop
3

Claro que es trivial. Simplemente obtenga un registro de desplazamiento, una compuerta XOR cuádruple y un pot en el 555 o use un inversor Schmitt para hacer lo mismo (Relajación Osc) y conduzca un contador binario para obtener el período mínimo de 1 minuto. Utilice otro inversor para hacer un tono diferente. Use un retardo RC de una puerta XOR y tendrá un disparo para cada transición. Cúbralo con su tono o use otro inversor Schmitt para hacer otro tono f fijo, o use el mismo tono para que cuando cambie los intervalos con el pot, el tono también cambie el tono.

Busque PRSG, PRNG, LFSR o RNG o ... ... todo lo que necesita es un generador de secuencia aleatorio de 8 etapas. Hay polinomios más largos que puedes usar simplemente también. Si usa un inversor en la retroalimentación, todos los ceros o un reinicio pueden usarse como semilla inicial. O puedes cargar una semilla aleatoria de otra manera ... Pero todos los 1 son ilegales. Esto tendrá sentido después de ver el diseño clásico. (Lo usé en 1976)

Pensándolo bien, solo desea una relación de 4: 1 de .5 a 2min y esto creará una relación de 8: 1. Eso no es demasiado difícil de arreglar ... usando un retardo de tiempo fijo de 30 segundos y un PRNG polinomial más alto para una mejor resolución, luego use un flip flop o 2 puertas para configurar después de 30 segundos y restablecer después de 2 minutos. Ahora vaya a ejecutar eso en VHDL y póngalo en un simple chip CPLD. Siguiente?

    
respondido por el Tony EE rocketscientist
0

Supongo que el 555 se utiliza en configuración monoestable.

El intervalo lo determina el RC y C es fijo. R puede ser variada; por ejemplo, utilizando un LDR, o un termistor. Por lo tanto, la constante RC probablemente también cambiaría.

Por supuesto, existe la advertencia de que tal resistencia / controlador variable debería estar expuesto al entorno adecuado para que su resistencia varíe.

Espero que esto ayude.

    
respondido por el Everyone
-5

Los 555 son tan antiguos ... Puedes hacer 6 osciladores con un inversor HEx Schmitter o usar Schmitt NAND.

Luego use ambas entradas de XOR con retardo RC en una para hacer un duplicador de frecuencia de un disparo.

En realidad todo esto es de la vieja escuela y usa un registro de turnos no DFF. y un contador de ondulación binario para reducir el reloj hacia abajo.

Solo usa una placa de pruebas.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas