Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/03/2009 #1


Leer onda sinusoidal con PIC
Necesito un poco ayuda,
Mis conocimientos en programacion de PIC son buenos pero con el tema del diseno de perifericos soy un tanto novato.
Debo ingresar a mi PIC la senal sinusoidal que adjunto en 2 PINS IO.
El dibujo muestra 3 ciclos de la onda de entrada. Cada vez que se produzca una onda durante la fase positiva se ha de ver un 1 logico en el PIN1, a su vez la fase negativa se ha de ver como un 1 logico en el PIN2.
Las ondas con el patron de la figura y se producen con una frecuencia que va desde 2HZ hasta 150HZ. El pico de tension es proporcional a la frecuencia y es de 2,9V a baja frecuencia y puede alcanzar 20V.
Cual es la estrategia mas recomendable para transformar esta senal en los pulsos digitales necesarios?
Pense en 2 optocoupler, uno con el diodo en paralelo y el otro en antiparalelo para cada fase respectivamente.
Por ahi es mas practico usar los comparadores del PIC. La onda positiva la puedo obtener usando el comparador interno del PIC o la puerta con shmitt trigger. Se podria leer de esta misma manera la fase negativa?
Ojala alguien pueda ayudarme, al menos una linea para tener una idea de por donde empezar.
Gracias de antemano.
16/03/2009 #2
Moderador general

Avatar de Fogonazo

Esta puede ser una forma de detectar la excursión negativa y positiva.
Habría que adecuar el nivel de la señal de entrada porque con tensiones bajas muy posiblemente no se dispare, podría ser mediante un operacional

Edit:
También se podría hacer íntegramente con operacionales en modo comparador, pero se complicaría el esquema, todo depende del punto en que desees que aparezca la detección de semi-ciclo positivo o negativo.
16/03/2009 #3


Leer onda sinusoidal con PIC
Muchas gracias,
Si entiendo bien el esquema, cada vez que ocurre una infleccion positiva el inversor schmitt U1C muestra un 1 logico en Vout (C en el osciloscopio).
A su vez U1A muestra normalmente un 1 en Vout (o 0 luego del inversor U1B), al haber una infleccion negativa U1A muestra un 0 logico en Vout (que es convertido en 1 por U1B).
Es asi?
Como eliges el valor de C1 y C2?

Mis pulsos deberiam dispararse en cada cruce por 2,7V (o -2,7V) aunque no es critico.

Que simulador has utilizado en los esquemas?

Creo que estas tareas se pueden llevar a cabo con los dos comparadores integrados en el 16F628A usando la referencia interna, no?
Aunque tendria que limitar con zeners la entrada.

Muchas gracias otra vez, perdon por tantas preguntas, estoy recien aprendiendo y me cuesta un poco.
16/03/2009 #4
Moderador general

Avatar de Fogonazo

Re: Leer onda sinusoidal con PIC
navarretemarce dijo:
Si entiendo bien el esquema, cada vez que ocurre una infleccion positiva el inversor schmitt U1C muestra un 1 logico en Vout (C en el osciloscopio).
A su vez U1A muestra normalmente un 1 en Vout (o 0 luego del inversor U1B), al haber una infleccion negativa U1A muestra un 0 logico en Vout (que es convertido en 1 por U1B).
Es asi?
Correcto, el cambio de estado del Schmitt Trigger se hace por el flanco ascendente en uno y descendente en el otro.

Como eliges el valor de C1 y C2?
De acuerdo a la resistencia Pull Up o Pull Dawn del Schmitt Trigger y la frecuencia mínima de trabajo
Como el Schmitt Trigger es CMOS su resistencia interna es despreciable, siempre que la frecuencia de operación no sea demasiado alta.

Mis pulsos deberiam dispararse en cada cruce por 2,7V (o -2,7V) aunque no es critico.
Si alimentas el Schmitt Trigger con 5V el disparo sera aproximadamente en esos valores.

Que simulador has utilizado en los esquemas?
Multisim 10.1

Creo que estas tareas se pueden llevar a cabo con los dos comparadores integrados en el 16F628A usando la referencia interna, no?
Aunque tendria que limitar con zeners la entrada.
En efecto, todo depende la precisión y nivel que desees en el cambio de estado.
Por otro lado, tu señal presenta una serie de oscilaciones de bajo valor, ¿ Quieres que estas sean detectadas o no ?
Colocar la protección depende de donde provenga la señal, y si esta está acotada a valores seguros o no.
16/03/2009 #5


Hombre, llamarle a eso senoidal, es tener mucha imaginacion y eliminar muchos harmonicos.

Parece la señal del captador de punto cero de un motor o del detector de ABS.

Seguramente el sensor es la tipica bobinilla con iman incluido.

Este es un simple esbozo del tipico montaje con un comparador con histeresis.

Yo utilizo un lm311, pero tambien deberia funcionar correctamente con un tl81 o 741 o similar.

Tambien se podria hacer algo similar con un 555


Finalmente utilizo un zener como proteccion, aunque se pueden utilizar diodos, pero personalmente me gusta mas el zener.

Curiosamente el zener cuando ya no puede aguantar mas (sobrecarga) se cortocircuita fundiendo en este caso la resistencia de 1k, prefiero cambiar la resistencia y el zener que quemar el operacional o el micro.

Pon un zener en tu vida.
Imágenes Adjuntas
Tipo de Archivo: jpg project_0001_777.jpg (280,0 KB (Kilobytes), 137 visitas)
16/03/2009 #6


Muchas gracias Fogonazo y Tiopepe

Hombre, llamarle a eso senoidal, es tener mucha imaginacion y eliminar muchos harmonicos.
Perdon mi ignorancia, no sabia como llamar a mi senal, con mi imaginacion borre los armonicos de la linea de base je je.

Seguramente el sensor es la tipica bobinilla con iman incluido.
En efecto se trata de un reluctor es una inductancia de nucleo imantado para detectar la posicion y RPM de un ciguenal.

Por otro lado, tu señal presenta una serie de oscilaciones de bajo valor, ¿ Quieres que estas sean detectadas o no ?
Colocar la protección depende de donde provenga la señal, y si esta está acotada a valores seguros o no.
Solo me interesan las oscilaciones de alto valor (marcadas como 0° y 360° en la imagen). Los valores son de 2,7V hasta 20V (segun la velocidad de giro), que excede los 4,3V max que tolera el comparador del PIC

Este es un simple esbozo del tipico montaje con un comparador con histeresis.
Los comparadores con histeresis incluidos en los PIC (16F628, 12F675) desempenan de esta manera.

Con la fase positiva, me las arreglaba mas o menos. Pero estaba atorado especialmente con la fase negativa de la onda, que para mi proyecto es muy importante y debo leerla de manera separada (por un port diferente).

Muchas gracias, no saben como me sirve para irme desasnando un poco. Voy a ponerme a simular y les cuento.
16/03/2009 #7


Ava ise una pequeña prueba de lo que pides ojala que te sirva.
Esta en proteus.
Archivos Adjuntos
Tipo de Archivo: rar prueba_127.rar (16,9 KB (Kilobytes), 104 visitas)
18/03/2009 #8


Muchas Gracias a todos,

Dejo aca como quedo por si le sirve a alguien. Utilize los capacitores de acople como me indico fogonazo, un par de transistores porque me siento mas comodo para los calculos, y el resto se lo dejo a los comparadores embebidos en el PIC y uso el Vref interno para obtener histeresis.
Desempena como espero en rango de frecuencias (1-120HZ) y de voltaje (1-20) de la entrada.
Dejo aca el fragmento de codigo .ASM que utilizo (en este caso no uso inversores aunque es facil implementarlos en el registro CMCOM.

SetUp
Banco0
MOVLW b'00000011'
MOVWF CMCON ; Comparator with Output and Internal Reference

Banco1
MOVLW b'00100010'
MOVWF TRISIO ; GP5 as imput w/internal PullUp. GP2 Comparator-output
BSF WPU,5
MOVLW b'10100110' ; VREF
MOVWF VRCON ; high range set VR<3:0>=6 = (2.2)V

[/img]
Imágenes Adjuntas
Tipo de Archivo: gif ad2_118.gif (36,5 KB (Kilobytes), 100 visitas)
Tipo de Archivo: gif ad1_124.gif (43,1 KB (Kilobytes), 57 visitas)
18/03/2009 #9


Segun tu explicacion cuando la tension esta en el rango -2.7..0.. 2.7V no hay uno logico en cualquieras de las dos salidas.
19/03/2009 #10


Es cierto, el cruce lo detecta a -1 y +1V.

Usando el modulo comparador embebido del PIC, el registro COUT muestra un 1 logico ante cada cruce.

Los graficos muestran la logica invertida pero en el codigo de ejemplo que puse para PIC 12F629, el bit 3 de CMCOM es 0, entonces cuando VIN- sea menor a VREF (transistor en saturacion) COUT=1 COUT esta asignado a GP2. Osea que GP2 mostrara un 1 logico cada vez que haya un cruce.

Espero ahora se entienda y muchas gracias por la correccion.
Imágenes Adjuntas
Tipo de Archivo: jpg captor_128.jpg (203,7 KB (Kilobytes), 77 visitas)
20/04/2009 #11


Esto me servira si lo conecto al cable que va desde el CDI a la bobina de la bujia en una moto?
20/04/2009 #12


Hola,

Esto me servira si lo conecto al cable que va desde el CDI a la bobina de la bujia en una moto?
No, este detecta los cruces a + y/o -1V el pulso que va desde el CDI a la bobina es de alrededor de 200V.
Pero si te sirve si lo conectas en el cable que va del sensor al CDI.[/quote]
20/04/2009 #13


navarretemarce dijo:
Hola,

Esto me servira si lo conecto al cable que va desde el CDI a la bobina de la bujia en una moto?
No, este detecta los cruces a + y/o -1V el pulso que va desde el CDI a la bobina es de alrededor de 200V.
Pero si te sirve si lo conectas en el cable que va del sensor al CDI.
[/quote]

Se te ocurre alguna manera que ande tomando la señal del cable que va del cdi a la bobina de la bujia? es para un tacometro..
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.