TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: Kira1708 en 03 de Junio de 2012, 15:21:10

Título: Graficar datos que vienen de puerto serie
Publicado por: Kira1708 en 03 de Junio de 2012, 15:21:10
Hola a todos!
Tengo un pequeño gran problema, debo hacer un osciloscopio para un proyecto de la escuela con el PIC18F4550 y mi problema es como graficar los datos que recibo del PIC que vienen del ADC, hasta el momento tengo esto.


Programa en el PIC CCS

Código: [Seleccionar]
#include <18F4550.h>

#fuses HSPLL,NOMCLR,NOWDT,USBDIV,PLL5,CPUDIV1,VREGEN
#device adc=10
#use delay(clock=48000000)

#include "usb_cdc.h"

void main (void){
int16 q;
float p;

setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

   usb_init();
   usb_cdc_init();
   while(TRUE){

      usb_task();
      if(usb_enumerated()){
      q=read_adc();

p = 5.0*q/1024.0;
printf(usb_cdc_putc,"\n\r %01.2fV", p);
}

Programa en VB 2010

Código: [Seleccionar]
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If (SerialPort1.IsOpen) Then
            SerialPort1.Close()
        Else
            SerialPort1.Open()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Label1.Text = SerialPort1.ReadExisting
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub
End Class

En la simulacion en proteus puedo ver el valor de voltaje pero la cosa es cómo graficarlo...

Además cuando lo conecto en fisico no hace nada porque no reconoce el PIC en ningun COM y no se que hacer....


Alguna idea??


Gracias de antemano...
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: darck_khronos en 03 de Junio de 2012, 15:50:03
te falta agregar esta linea
Código: [Seleccionar]
#include <18f2550.h>
#fuses HSPLL,NOWDT,NOBROWNOUT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,NOPBADEN,WRTB
#use delay(clock=48000000)
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: Kira1708 en 05 de Junio de 2012, 21:35:03
Creo que esas lineas no me sirven de nada pero gracias...

Tenía mal una conexión pero ya esto recibiendo los datos del PIC en mi PC pero cómo grafirlo??

Alguna idea??
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: darck_khronos en 05 de Junio de 2012, 22:15:11
Creo que esas lineas no me sirven de nada pero gracias...

Tenía mal una conexión pero ya esto recibiendo los datos del PIC en mi PC pero cómo grafirlo??

Alguna idea??

mmm Primero necesitas almacenar esa informacion en algun lugar, y despues ya con una tabla realizar la grafica, tienes pensado algun software en utilizar o piensas generar uno?
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: korpaztk en 27 de Junio de 2012, 01:57:33
Hola Kira1708

Hice un proyecto para controlar temperatura con un pic 18f4550 e hice una plataforma en visual basic 2010, utilizando unas librerias de .net framework 4 que permiten hacer gráficas de un montón de estilos...
si bien el software no lo colgué todavía al completo (aunque ya lo tengo) la parte de traficar si se puede comprender, no es tan complicado.

aquí te dejo el hilo...

http://www.todopic.com.ar/foros/index.php?topic=37446.0 (http://www.todopic.com.ar/foros/index.php?topic=37446.0)

espero que te pueda servir en algo...


Saludos.-
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: alperez en 27 de Junio de 2012, 05:55:51
Creo que tienes que hacer una rutina de control de datos, por ejemplo, tienes que sincronizar la velocidad de refresco de la muestra del gráfico con el envío desde el PIC, de tal manera que el PIC no envíe datos si el receptor no está a la espera y viceversa, ya que creo que quedaría muy mal si el PC está esperando y el PIC no le envía nada.

A ver si me explico: si vas a mostrar por ejemplo una onda cuadrada y el software (PC) esta preparado para la recepción pero el PIC no envía dato alguno, vas a mostrar "0", pero a lo mejor no es eso lo que hay "fisicamente" en el pin del PIC que quieres monitorear

No sé si me explico.
Para mostrar gráficas existen muchos controles que se insertan con VStudio (VBasic), son algunos de pago pero VStudio tiene un control Chart bastante simple pero creo que te puede servir.
Título: Re: Graficar datos que vienen de puerto serie
Publicado por: Drod en 17 de Julio de 2012, 10:24:09
Hola! Te dejo un link de un oscilloscopio hecho con Arduino y C#, quizas puedas cojer ideas!

http://code.google.com/p/xoscillo/