Circuito que puede convertir pulsos de corriente a voltaje

Tengo un anemómetro que emite pulsos de corriente. No puedo desarmarlo, pero sé que hay un fototransistor y un LED en paralelo que brillan a través de los agujeros. Me dijeron que con un viento de 30 m/s habrá pulsos de corriente de 3 uS de largo sobre la corriente normal (a través del LED).

Mi problema es transferir estos pulsos a un Arduino o convertir estos pulsos a voltaje 0/1. Arduino no es un problema para mí, pero no tengo experiencia en el diseño de circuitos.

¿Tiene un enlace al anemómetro para que se pueda analizar la especificación? ¿Los pulsos permanecen de ancho constante pero la frecuencia del pulso aumenta con la velocidad del viento?
La traducción de corriente -> voltaje se puede hacer de manera aproximada con una resistencia, o si la corriente es muy pequeña, se puede hacer correctamente con un "amplificador de transimpedancia".
Andy alias: Desafortunadamente no, es una pieza antigua patentada
La pregunta no puede responderse sin detalles de los "pulsos": ¿cuál es la amplitud?
@Leon Heller: no tengo equipo para medir pulsos, pero como dije, funciona así yoctopuce.com/pubarchive/2013-01/impulse_counter_1.jpg (el fototransistor es paralelo al LED y la resistencia, por lo que está conectado con un par de cables )
He visto el convertidor de frecuencia a voltaje LM2907/LM2917 utilizado exactamente para el mismo propósito que necesita
@ pjc50 muchas gracias, ¡la resistencia funciona! miraré el amplificador de transimpedancia a wiki más tarde
Verifique si puede ejecutar los pulsos directamente en las entradas del temporizador de Arduino, y haga que el temporizador haga el trabajo duro de medir el período/duración del pulso, etc. Eso sería mucho más fácil y más preciso que hacer una conversión de pulso a V.
@DavidKessner: Buena idea, pero podría ser difícil cronometrar algo tan rápido con cierta precisión en Arduino: esta pregunta involucra un chip de 20Mhz (ardiono Uno es de 16Mhz), y solo es posible una precisión de 5.6 uS en "ticks" simples.
@ user22108: Sí, creo que definitivamente querrá transformar su frecuencia en otra cosa (por ejemplo, voltaje): no creo que Arduino sea lo suficientemente rápido como para medir pulsos de 3uS con precisión. Creo que a 16Mhz los extrañará por completo.

Respuestas (3)

No desea una conversión de "frecuencia a voltaje". Eso tiende a ser complicado, propenso a errores y, en general, un truco de solución.

Lo que realmente desea es ejecutar los pulsos directamente en la MCU y medir la frecuencia directamente.

Aquí hay una nota de la aplicación sobre cómo hacerlo exactamente con los MCU de AtMega. Cómo lo haces realmente con el software Arduino es algo que no puedo responder.

AVR205: Medición de frecuencia simplificada con Atmel tinyAVR y Atmel megaAVR

Aparentemente, estoy corregido.
@angelatlarge <sonrisa> :)

Sin especificaciones, no sabemos si hay pulsos de 3us (?) de una sola toma dos veces por revolución (según el diagrama mecánico) o si el pulso está completamente controlado por cortes de disco. Pero con lo que puede contar es con dos pulsos por revolución.

Es poco probable que la frecuencia del pulso abrume a un Arduino (si lo hace, ¡tienes problemas más grandes que la electrónica!) Así que podrías contar los pulsos en un bucle simple. Tome un ejemplo: un tren de pulsos de 1 KHz significa un intervalo de 1 ms entre pulsos. Recuerde, solo los estamos contando, no los estamos midiendo, por lo que un bucle sumamente ineficiente podría seguir el ritmo. ¡1000 Hz implicaría una velocidad de anemómetro de 500 RPS = 30000 RPM! Su anemómetro se desintegraría antes de eso.

Entonces el conteo de pulsos no será un problema. Puede decidir si solo necesita el Arduino para contar pulsos o hacer un procesamiento más pesado con el resultado.

En este último caso, lea la hoja de datos sobre contadores de tiempo (capítulos 15-17 para el ATmega328p, f/ex). Mediante el uso de un temporizador de contador, el hardware contará para usted mientras que su programa solo tiene que leer el valor del contador de vez en cuando para encontrar la velocidad, y toda su potencia de procesamiento está disponible para cualquier otra cosa que desee hacer con los datos.

Aquí hay cierta confusión, así que miré la imagen vinculada por el OP (abajo)ingrese la descripción de la imagen aquí

Si el período de servicio de "algo" es de 3 us, entonces no puede ser causado por los espacios en la rueda giratoria; tiene que ser que el LED está pulsando como un medio para proporcionar una contramedida para la entrada normal de la luz solar. Esa es la única explicación que se me ocurre.

Dada también la suposición de que el LED funciona con un ciclo de trabajo asimétrico hasta posiblemente 100 veces el período de marca, podría ser factible construir un circuito que convierta los trenes de pulsos en un voltaje positivo y cuando el opto se "cierre" regresa 0V. Tal vez algo como esto: -

ingrese la descripción de la imagen aquí

Por lo tanto, (dados todos los supuestos y leyendo entre líneas) propondría que el fotodiodo en el optoacoplador se proteja con un amplificador de transimpedancia y luego su salida alimente un detector de AM convencional construido alrededor de un diodo, una resistencia y un condensador. Esta salida luego alimenta un comparador/cortador de datos y luego es adecuado para una entrada Arduino

Para hacer que las cosas sean menos intensivas en hardware en el lado analógico, el tren de pulsos del amplificador de transimpedancia podría alimentar directamente una entrada de Arduino y el software puede "construir" una versión demodulada que se puede contar.

El contador sería de dos pulsos por revolución (suponiendo que la imagen sea representativa) y esto debería traducirse en la velocidad del viento. Digo "debería" porque es probable que haya una relación no lineal entre la velocidad del viento y la velocidad de rotación. Buena suerte con éste proyecto.

Con vientos huracanados, suponiendo que la rueda gire a la velocidad del viento, una rendija de 1 mm tardará 0,008 uS en pasar, según mis cálculos del reverso del sobre.
@angelatlarge: no me parecen rendijas de 1 mm, creo que la opto se coloca sobre las ranuras largas. ¡Oye, es una cosa de 2D versus 3D!
Claro, pero eso significa que una rendija de 35 cm te dará pulsos de 3 uS en un huracán, suponiendo que mis cálculos sean correctos. Solo digo que 3uS no parece una locura sin el LED parpadeando.
Si la rendija/ranura tiene 1 mm de ancho y está a una distancia radial de (digamos) 10 cm, la circunferencia a esta distancia será de aproximadamente 630 mm y esto significa, usando 0,008 us por mm, 360 grados convertidos en tiempo = 5,04 us o 200 000 revoluciones por segundo. Te daré diez minutos para averiguar dónde te equivocaste LOL