Saludos amigos del foro...
He estado trabajando en un Osciloscopio digital usando el PIC-16F877 y LabView...
Me entro la idea a la cabeza de usar comunicacion entre dos PICs con la finalidad de hacer comunicacion inalambrica en un futuro.
Lo que tengo es lo siguiente:
- UN PIC 16F877 EL CUAL REALIZA LA CONVERSION ANALOGICO DIGITAL (con una etapa de adpatacion de voltajes previa) Y QUE A TRAVEZ DEL PUERTO PORTC.5 ENVIA LA INFORMACION A OTRO PIC.
- OTRO PIC 16F877 QUE RECIBE LA INFORMACION DE VOLTAJE A TRAVEZ DEL PUERTO PORBC.5, ESTE ULTIMO PIC ENVIA ESTA INFORMACION A UNA PC MEDIANTE EL PUERTO USB.
- UNA INTERFAZ HECHA EN LabVIEW PARA GRAFICAR LA INFORMACION ENVIADA Y DE HECHO LOGRO VER UNA SEÑAL SEÑOIDAL DE BAJA FRECUENCIA.
PROBLEMA:
EN PIC - La comunicacion PIC-PIC la hago por SOFTWARE y la comunicacion PIC-PC por hardware. No se como lograr identificar la frecuencia de la señal de entrada. Me explico mejor. quiero sincronizar los valores de amplitud que mido con el tiempo en que fue medido para poder graficar y observar el periodo de la señal.
EN LABVIEW:
la infomacion que me llega es solo voltaje, es por ello que solo he podido graficarla en un WAVEFORM CHART, pero me gustaria conocer tambien el periodo y graficar tal cual lo hace un Osciloscopio (claro con los errores propios de mi diseño)
EN RESUMEN:
COMO HAGO PARA SABER EN LABVIEW CUAL ES LA FRECUENCIA DE LA SEÑAL DE ENTRADA Y SU VALOR RMS
ENTIENDO QUE EN PURA TRANSMISION PIERDO TIEMPO, (por lo cual el ancho de banda por ahora no me interesa) PERO A FUTURO SE IMPLEMENTARA CON UN ADC Y MEMORIA RAM EXTERNA. EL CONVERTIDOR EXTERNO HARA LA CONVERSION ALMACENARA LA INFORMACION EN LA MEMORIA EXTERNA Y EL PIC LEERA ESTA INFORMACION A SU MAXIMA VELOCIDAD y TRANSMITIRA.
PARTE DEL CODIGO DEL PIS QUE REALIZA LA ADC
Realizo la conversion, verifico el tamaño del dato y envio al otro PIC el dato en el formato siguiente:
[A+ESCALA_VOLTAJE+TAMAÑO_DATO+DATO]
A: Ya que el dato pertenece a un canal de la trajeta
ESCALA_VOLTAJE: Ya que la trajete permite 4 escalas (2,5V, 5V, 10V y 15V), informacion que necesito para graficar
TAMAÑO_DATO: Para que el otro PIC sepa el tamaño del dato a leer (¿ALGUNA OTRA RECOMENDACION?)
DATO: EL DATO CONVERTIDO
PARTE DEL CODIGO QUE RECIBE LA CONVERSION (OTRO PIC) Y ENVIA A LA PC
QUE CREEN QU PUEDA MEJORARSE EN ESE CODIGO (SOLO ES LA PARTE DE COMUNICACION YA QUE HAY VARIAS MAS RUTINAS QUE NO VI NECESARIAS MOSTRARLAS)
Gracias de antemano por la colaboracion prestada a este asunto
He estado trabajando en un Osciloscopio digital usando el PIC-16F877 y LabView...
Me entro la idea a la cabeza de usar comunicacion entre dos PICs con la finalidad de hacer comunicacion inalambrica en un futuro.
Lo que tengo es lo siguiente:
- UN PIC 16F877 EL CUAL REALIZA LA CONVERSION ANALOGICO DIGITAL (con una etapa de adpatacion de voltajes previa) Y QUE A TRAVEZ DEL PUERTO PORTC.5 ENVIA LA INFORMACION A OTRO PIC.
- OTRO PIC 16F877 QUE RECIBE LA INFORMACION DE VOLTAJE A TRAVEZ DEL PUERTO PORBC.5, ESTE ULTIMO PIC ENVIA ESTA INFORMACION A UNA PC MEDIANTE EL PUERTO USB.
- UNA INTERFAZ HECHA EN LabVIEW PARA GRAFICAR LA INFORMACION ENVIADA Y DE HECHO LOGRO VER UNA SEÑAL SEÑOIDAL DE BAJA FRECUENCIA.
PROBLEMA:
EN PIC - La comunicacion PIC-PIC la hago por SOFTWARE y la comunicacion PIC-PC por hardware. No se como lograr identificar la frecuencia de la señal de entrada. Me explico mejor. quiero sincronizar los valores de amplitud que mido con el tiempo en que fue medido para poder graficar y observar el periodo de la señal.
EN LABVIEW:
la infomacion que me llega es solo voltaje, es por ello que solo he podido graficarla en un WAVEFORM CHART, pero me gustaria conocer tambien el periodo y graficar tal cual lo hace un Osciloscopio (claro con los errores propios de mi diseño)
EN RESUMEN:
COMO HAGO PARA SABER EN LABVIEW CUAL ES LA FRECUENCIA DE LA SEÑAL DE ENTRADA Y SU VALOR RMS
ENTIENDO QUE EN PURA TRANSMISION PIERDO TIEMPO, (por lo cual el ancho de banda por ahora no me interesa) PERO A FUTURO SE IMPLEMENTARA CON UN ADC Y MEMORIA RAM EXTERNA. EL CONVERTIDOR EXTERNO HARA LA CONVERSION ALMACENARA LA INFORMACION EN LA MEMORIA EXTERNA Y EL PIC LEERA ESTA INFORMACION A SU MAXIMA VELOCIDAD y TRANSMITIRA.
PARTE DEL CODIGO DEL PIS QUE REALIZA LA ADC
Código:
MedirVoltajeA:
VoltajeA = ADIn 0 'A/D por el canal A.0 y almacena en VoltajeA
Tamano=Tamano_Dato(VoltajeA) 'Funcion determina el tamaño del dato convertido
SerOut PORTC.5, 9600, ["A",Dec EscalaCanal_A,Dec Tamano,Dec VoltajeA]
Return
Realizo la conversion, verifico el tamaño del dato y envio al otro PIC el dato en el formato siguiente:
[A+ESCALA_VOLTAJE+TAMAÑO_DATO+DATO]
A: Ya que el dato pertenece a un canal de la trajeta
ESCALA_VOLTAJE: Ya que la trajete permite 4 escalas (2,5V, 5V, 10V y 15V), informacion que necesito para graficar
TAMAÑO_DATO: Para que el otro PIC sepa el tamaño del dato a leer (¿ALGUNA OTRA RECOMENDACION?)
DATO: EL DATO CONVERTIDO
PARTE DEL CODIGO QUE RECIBE LA CONVERSION (OTRO PIC) Y ENVIA A LA PC
Código:
SerIn PORTC.5, Baudios, [Canal] 'Lee por SOFWARE
If Canal="A" Then 'Verifica el dato A
SerIn PORTC.5, Baudios, [Escala] 'Lee el proximo BYTE que es la escala
SerIn PORTC.5, Baudios, [TamanoDato] 'Lee el proximo BYTE que es Tamaño_dato
If TamanoDato="1" Then 'Si el tamaño es 1
SerIn PORTC.5, Baudios, [Voltaje[0]] 'Lee un solo BYTE
EndIf
If TamanoDato="2" Then 'Si tamaño es 2
SerIn PORTC.5, Baudios, [Str Voltaje\2] 'Lee dos BYTE
EndIf
If TamanoDato="3" Then 'Si tamaño es 3
SerIn PORTC.5, Baudios, [Str Voltaje\3] 'Lee tres BYTE
EndIf
If TamanoDato="4" Then 'Si tamaño es 4
SerIn PORTC.5, Baudios, [Str Voltaje\4] 'Lee cuatro BYTE
EndIf
HRSOut "A",Escala,TamanoDato,Str Voltaje 'Se envia a la PC por HARDWARE
QUE CREEN QU PUEDA MEJORARSE EN ESE CODIGO (SOLO ES LA PARTE DE COMUNICACION YA QUE HAY VARIAS MAS RUTINAS QUE NO VI NECESARIAS MOSTRARLAS)
Gracias de antemano por la colaboracion prestada a este asunto
Última edición: