Pasaje de frecuencia a voltaje pic16f628a

hola,
soy completamente nuevo en el foro. Estoy fuertemente interesado en el desarrollo de rutinas para pics. Por el momento estoy practicando con el pic 16f628A. Estoy avanzando lentamente pero con claridad de conceptos, creo.
Estaba interesado en crear un circuito con el pic anteriormente mencionado que sea capaz de leer una señal analógica de alguna frecuencia y obtener como salida un nivel de voltaje. A una frecuencia máxima le correspondería un voltaje máximo y viceversa.
Pense en utilizar el comparador del pic para generar una onda PWM cuya frecuencia variara dependiendo de la frecuencia de la onda ingresada para luego hacer un filtro pasabajos RC o algo asi, no lo se con certeza. Alguien tiene alguna sugerencia?? muchas gracias
 
Amigo, bueno el sistema es basicamente como lo planteas. Otro modo consiste, en acondicionar la señal, para ser leida como caracter digital, antes de ingresarla al PIC, generas una rutina en la cual almacenas en una variable el valor de cuenta obtenido por unidad de tiempo (frecuencimetro), luego el valor de la variable la exportas a un puerto paralelo disponible, y de ahi a un convertidor R2R, para obtener un valor analogo en tension.
 
Última edición:
muchas gracias Gudino Roberto, me resulta de gran interés tu propuesta, es mas basándome en tu idea se me ocurrió armar un circuito analógico comparador, posiblemente un schmitt trigger cuya salida conectare en la entrada RB0 del pic capaz de leer flancos ascendentes y descendentes para determinar la frecuencia de la señal por software para luego realizar un conversor D/A.
que te parece?
cualquier sugerencia para llevar a cabo este plan es bienvenida, muchas gracias
 
Hola tetosemperena

Creo que otra opción sería utilizar un IC convertidor de frecuencia a voltaje como por ejemplo el LM2907/LM2917.
En las salidas de éste tendrías el voltaje análogo a la frecuencia que le está entrando.

saludos
a sus ordenes
 

Adjuntos

  • LM2907 FrequencyToVoltage 21 Pages.pdf
    708.2 KB · Visitas: 39
continuo con el proyecto comentado arriba. Se me presentaron las siguientes incógnitas:
1- ¿que circuito analógico implemento para acondicionar la señal analógica en un tren de pulsos para ingresar por RB0 del pic?
2-los saltos del tren de pulsos antes mencionado deben de ser de 0v a 5v? o pueden tener otros valores que igual se detectan?
3-para el pasaje D/A pense en una red r-2r de 8 bits lo que me generaría una resolución de 256 posibles valores de frecuencias por lo que a frecuencias mayores no funcionaria, ¿esto es correcto?¿como determino el rango entre frecuencia máxima y mínima ?
cualquier sugerencia es bienvenida
 
Amigo, veamos, para acondicionar la señal puedes utilizar un dispositivo schmitt trigger, op-amp, etc, o cualquier sistema que posea una extrema ganancia, para lograr corte o saturacion segun el nivel de señal.
Bien, la señal para ingresar al microcontrolador, debe poseer niveles que este necesita, deberas verificar con el datasheet del propio dispositivo.
En cuanto a la resolucion, del D/A de 8 bits, el mismo entregara 256 valores diferentes, segun el rango que manejes por software. Entonces a mayor margen menor resolucion tendras. Vale decir si el sistema tiene un margen digamos de: 1Khz a 10Khz, pues tendras aprox. 35Hz por division.
Si trabajas con un rango de 100Hz a 500Hz, pues obtienes 1,6Hz por division de resolucion.
 
Última edición:
muchas gracias por la replica, da gusto el sentimiento de respaldo que generan los participantes del foro, muy impresionado. Tengo dos incógnitas que no logro dilucidar por completo. Quiero hacer un código en lenguaje ensamblador que calcule la frecuencia de un tres de pulsos externo y ese valor sacarlo expresado en binario con 8bits. Mi idea es detectar un flanco de subida y activar el timer1 para luego desactivarlo en un nuevo flanco de subida y leer el valor obtenido que correspondería a un valor asociado al periodo, no? porque entra en juego el reloj interno de 4Mhz y cosas así pero no me doy cuenta como puedo determinar la frecuencia de la onda, inverso del periodo. No veo la posibilidad de hacer operaciones aritméticas mas allá de suma y resta en ensamblador.
Por ultimo, no entiendo como determino el rango de frecuencias por software, por ejemplo, si ingreso un tren de 1khz no podre escribirlo en mis 8bits de salida, como vinculo la frecuencia y la salida para otro rango que no sea de 0hz a 255hz?
dejo un pequeño esquema del circuito para que personas con mayor conocimiento puedan aconsejarme. Muchas gracias
 

Adjuntos

  • circuito.rar
    24.3 KB · Visitas: 32
  • image002.gif
    image002.gif
    7.7 KB · Visitas: 25
Última edición por un moderador:
Hola tetosemperena

Me podrías decir qué tipo de archivo es el que contiene el circuito.rar ??
Parece que le cambiaste la extensión y luego lo comprimiste para adjuntarlo aquí.

saludos
a sus ordenes
 
Hola tetosemperena

Perfecto, ya lo pude abrir y ver su contenido.
Veo que modificaste tu mensaje #9 adjuntando la imagen de un circuito.

Hubiera sido mejor que adjuntaras el archivo .DSN que se genera con el ISIS de Proteus pues de ese modo lo abriría y haría pruebas. Con la imagen tendré que hacer el archivo .DSN basado en esa imagen que adjuntaste.

saludos
a sus ordenes

PD: Tienes también el Código para el PIC ??. . .
No el .HEX sino el que fuera: PBP, BAS, C, ASM.
Súbelo tambien por favor.
 
Última edición:
Atrás
Arriba