Autor Tema: Telemetria - Aeromodelo  (Leído 24413 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Telemetria - Aeromodelo
« Respuesta #30 en: 08 de Diciembre de 2009, 13:47:48 »
UPDATE:
En el principio del proyecto yo pense en poner un LCD 2x16 y un teclado matricial para no depender tanto un ordenador, pero no me parecio viable por el gran numero de pines que iba a utilizar.

También hay una técnica para implementar un teclado matricial para ahorrarse pines, usando un ADC del PIC. El tema fue tratado en el siguiente hilo:

Lectura de un teclado matricial con un solo pin del PIC

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Telemetria - Aeromodelo
« Respuesta #31 en: 08 de Diciembre de 2009, 16:10:45 »
Hola buenas tardes, oye estos metodos son muy bueno y aplicables en su momento pero en este caso ahorrarias pines del pic pero aumentarias recursos del micro como es la ram del pic y esas cosas hay que estudiar bien la factibilidad.

Saludos y es cuestion de ver bien que es lo mejor.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Telemetria - Aeromodelo
« Respuesta #32 en: 08 de Diciembre de 2009, 17:33:33 »
Hola amogos!
Dop mis felicitaciones por el proyecto me dejaste loco con la interfaz grafica  :shock:
Como la haces que programss empleas para ello?   :mrgreen:

En cuanto a tu preguta sobre los modulos RF te recomiendo los Xbee Pro de 60 0 100mW   :mrgreen:
Son mejores que los laipac que yo he usado  ;-)

En cuanto a lo del i2c te recomendaria que utilizaras memorias spi porque con ellas puedes enviar y recibir datos mas rapidamente que con el bus i2c! claro todo dependera de lo que quieras hacer.

Bueno estare pendiente de este hilo y de tus comentarios

Saludos

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Telemetria - Aeromodelo
« Respuesta #33 en: 08 de Diciembre de 2009, 20:16:05 »
buenas noches si usar spi seria el mismo protocolo que usas para las memorisas sd y asi solo estudiarias un solo protocolo y como dijo el colega un poco mas rapido su comunicacion.

Saludos.
Atten.
Alexander Santana.
Venezuela-Barcelona
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Telemetria - Aeromodelo
« Respuesta #34 en: 08 de Diciembre de 2009, 20:24:31 »
buenas noches si usar spi seria el mismo protocolo que usas para las memorisas sd y asi solo estudiarias un solo protocolo y como dijo el colega un poco mas rapido su comunicacion.

Las memorias EEPROM SPI usan modo 0_0 y las memorias SD usan 1_1 y a distintas velocidades, así que o hay que cambiar de modo cada vez que se requiera o usar pos software alguna.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Drod

  • PIC16
  • ***
  • Mensajes: 136
Re: Telemetria - Aeromodelo
« Respuesta #35 en: 09 de Diciembre de 2009, 12:49:39 »
Hola foreros! Muchas gracias por el interés! Confeso que ahora estoy un poco confuso con cual tema dar prioridad, porque estou teniendo problemas con el dinero que será aplicado a compra del GPS y el Transceiver, por problemas en el equipo de gestión del Aerodesign.

ASTROCAR:
Citar
estos metodos son muy bueno y aplicables en su momento pero en este caso ahorrarias pines del pic pero aumentarias recursos del micro como es la ram del pic y esas cosas hay que estudiar bien la factibilidad.


Es muy importante lo que has dicho, al tener todo el hardware basico hecho y programado, luego veo si es posible poner el LCD, el teclado y lo demas. No creo que voy a poder, pues com pocas cosas que hice ya tuve problemas con la RAM, bueno, se deve tambien a la falta de experiencia en estos temas, jeje... En realidad creo que la "administracion" del "poder" del PIC y "trabajar con muchos datos a la vez" son los pasos mas importantes de todo el proyecto, pues no adelanta mucho tener 20 sensores y todo mas conectado al PIC, y luego no sacar todo el provecho posible. Siempre trabajé con pocos datos, voy a tener muchas dificultades con eso. Os iba a preguntar sobre un tema que yo no conozco y que vi en otros hilos, que es la posibilidad de trabajar con 2 PIC's, siendo que uno seria solamente para manipulacion de datos (o algo asi).

RALF2:
Citar
Dop mis felicitaciones por el proyecto me dejaste loco con la interfaz grafica 
Como la haces que programss empleas para ello?   

Hola Ralf2! Muchas gracias!

A respecto de tu duda, no se si ya tienes facilidad con VC#, pero en todo caso a ver si te explico el paso a paso:

Lo programe em C#, usando el "Dundas Gauge" y "Dundas Chart" (luego se lo explico).

Lo primero que tienes que hacer es bajar el Visual C# Express (gratuito) http://www.microsoft.com/express/vcsharp/ (tambien puede ser el Visual Basic Express, no cambia mucho, basicamente cosillas estructurales y asignación de variables). Si nunca has hecho nada con lenguajes orientada a objectos, no temas, es muy facil (empezar).

Luego, después de instalar el C#, en la pagina http://www.dundas.com/, puedes bajar la version full evaluation de "Dundas Gauge" y "Dundas Chart", o comprar la versión Full, que tiene mucho más recursos. Si trabajas con adquisicion de datos, lo recomendo la full, pues facilita mucho al enseñar los datos en pantalla, y es muy bonito!

Luego, al tener instalado, estos son los pasos que segui en Visual C# Express para instalarlos:


Ahora solo tienes que pulsar en "Chart", o "GaugeContainer", y poner en tu "form", y saltara a la pantalla el Wizard como este (para los chart):



Veamos un ejemplo, para hacer una gráfica como esta (te servirá para
saber como cambiar propriedades de cualquier grafica, o gauge):



Pulsas, en "Chart", en el Wizard, elijes "Line" e dale al "Finish"

Tendras algo así:



Luego, con el componente selecionado, en la ventana de propriedades, cambias el
"BackColor" para Black,
"BackGradientEndColor" para "34;34;34"
y el "BackGradientType" para "HorizontalCenter"

Luego pulsas en Chart Areas

 "ChartAreas",
y luego cambia "BackColor" para Black, BackGradientEndColor para "34;34;34"
y el BackGradientType para "VerticalCenter"

Luego pulsas en "Axes", "Y(Value)", le das un titulo (por ejemplo, "Variable), y cambia el color del titulo y del LabelStyle



Tendrás algo así:


Para añadir el numero de sensores (o lo que sea), que seran vistos, en la ventana de propriedades, pulsas en "Series", luego en "Add"
y añades cuantos "sensores" quieras! Elijas el tipo "line" para todos, y cambie su nombre para lo que desees, como "Potenciometro 1", etc!



Tendrás algo así:



Ahora en la ventana de propriedades pulsas en "Titles", en "Add", y Eliges un nombre para la Gráfica y el color, fuente, etc



Luego,  en la ventana de propriedades pulsas en "Legends", y cambia las propriedades BackColor, BorderColor, BorderWidth, Alignment y Docking


Y tanaaaa! Tienes tu grafica personalizada y lista!


Ahora, a programar!

Lo primero que tienes que hacer es poner un timer al proyecto, y elegir el tiempo en el que se activará la subrutina de la grafica,
por ejemplo, 10ms...



Pulsas dos veces en el timer1, y este es un codigo ejemplo para que todo salga bien, en las condiciones establecidas
anteriormente:

Código: [Seleccionar]
    private void timer1_Tick(object sender, EventArgs e)
       
        {

            int numberOfPointsInChart = 200;
            int numberOfPointsAfterRemoval = 150;

            // Simulate adding new data points
            int numberOfPointsAddedMin = 1; //5
            int numberOfPointsAddedMax = 1; //10

           

            //chart1.ChartAreas["Default"].AxisX.Minimum = pointIndex - numberOfPointsAfterRemoval;
            //chart1.ChartAreas["Default"].AxisX.Maximum = chart1.ChartAreas["Default"].AxisX.Minimum + numberOfPointsInChart;

            //chart1.ChartAreas["Default"].AxisX.Minimum = minValue.ToOADate();
            //chart1.ChartAreas["Default"].AxisX.Maximum = maxValue.ToOADate();
         

            for (int pointNumber = 0; pointNumber < random.Next(numberOfPointsAddedMin, numberOfPointsAddedMax); pointNumber++)
            {
                chart1.Series["Sensor 1"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 500)); 
                chart1.Series["Sensor 2"].Points.AddXY(pointIndex + 1, vScrollBar5.Value);
                chart1.Series["Sensor 3"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 1000));
                chart1.Series["Sensor 4"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 2500));
                chart1.Series["Sensor 5"].Points.AddXY(pointIndex + 1, vScrollBar5.Value - 1400);
                chart1.Series["Sensor 6"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 3300));
                chart1.Series["Sensor 7"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 1200));
                chart1.Series["Sensor 8"].Points.AddXY(pointIndex + 1, vScrollBar5.Value + 2600);
                chart1.Series["Sensor 9"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 1100));
                chart1.Series["Sensor 10"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 7300));
     
               
               
                ++pointIndex;
            }

            // Adjust Y & X axis scale
            chart1.ResetAutoValues();

            // Keep a constant number of points by removing them from the left
            while (chart1.Series["Sensor 1"].Points.Count > numberOfPointsInChart)
            {
                // Remove data points on the left side
                while (chart1.Series["Sensor 1"].Points.Count > numberOfPointsAfterRemoval)
                {
                    chart1.Series["Sensor 2"].Points.RemoveAt(0);
                    chart1.Series["Sensor 1"].Points.RemoveAt(0);
                    chart1.Series["Sensor 3"].Points.RemoveAt(0);

                    chart1.Series["Sensor 4"].Points.RemoveAt(0);
                    chart1.Series["Sensor 5"].Points.RemoveAt(0);
                    chart1.Series["Sensor 6"].Points.RemoveAt(0);
                   
                    chart1.Series["Sensor 7"].Points.RemoveAt(0);
                    chart1.Series["Sensor 8"].Points.RemoveAt(0);
                    chart1.Series["Sensor 9"].Points.RemoveAt(0);

                    chart1.Series["Sensor 10"].Points.RemoveAt(0);
                 
                }

                // Adjust X axis scale

               
               
                chart1.ChartAreas["Default"].AxisX.Minimum = pointIndex - numberOfPointsAfterRemoval;
                chart1.ChartAreas["Default"].AxisX.Maximum = chart1.ChartAreas["Default"].AxisX.Minimum + numberOfPointsInChart;
            }

            // Invalidate chart
            chart1.Invalidate();

           

        }

OJO:    Las variables  int numberOfPointsInChart y int numberOfPointsAfterRemoval = 150 son las mas importantes, indican el tamaño y el tiempo de la grafica. Juega con ellas y veras cual valor te gusta mas!

En este caso, para demonstracion, la fuente de datos es una VScrollBar. Las lineas quedarán com el valor que la  VScrollBar tiene en
su propriedad "Value".


 
Pero los datos pueden venir de donde quieras, por ejemplo, de variables que almazenas los valores recebidor serialmente atraves del PIC!

Y es eso! Creo que ya puedes empezar algo, jejejeje

A respecto del XBEE Pro, tu crees que merece la pena para mi, mismo siendo 5 veces mas cara que el Laipac? (al menos por aqui! jejeje) Son tantas las ventajas?

Ya lo pensaré! Por lo que leí en las características si que son mejores, y ademas se quedan mas chulas en la placa, jejejejeje Pero todavia no se si en mi
caso, la relacion "precio X ventajas al Laipac" será buena!

Lo de las memorias SPI todavia ni idea, voy a leer algo!

Gracias!

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Telemetria - Aeromodelo
« Respuesta #36 en: 09 de Diciembre de 2009, 13:08:19 »
cada dia se aprende mas y mas y que bueno eso de usar c# para presentas graficos no tenia conocimiendo de eso y explisito tus comentarios.

Saludos y estoy siempre pendiente del hilo.

Saludos y estamos en contacto.
Atten.
Alexander Santana.
Barcelona-Venezuela.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Telemetria - Aeromodelo
« Respuesta #37 en: 09 de Diciembre de 2009, 14:36:58 »
 :) este Drod parece un mago del C#..a mi se me ha hecho un lio empezar ...adelante con el post..por lo q se ve los modulos xbee son muy buenos..entonces me parece a mi q es una buena inversion...ademas con ellos se pude hacer una red, no se si con los laipac igual pero de seguro le puedes sacar mas jugo a los xbeee.
animo con el proyecto :-/
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Telemetria - Aeromodelo
« Respuesta #38 en: 09 de Julio de 2010, 23:51:55 »
Muy buen proyecto, te felicito por todo lo que has logrado! Lo detuviste por algun tiempo?  :(
@fabianjsm is on twitter

Desconectado wrl401

  • PIC10
  • *
  • Mensajes: 1
Re: Telemetria - Aeromodelo
« Respuesta #39 en: 25 de Enero de 2012, 15:21:23 »
genial te luciste Drod,  yo pense que en C# esa clases d proyectos era complicado pero tu la haces ver facil, felicidades drod

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Telemetria - Aeromodelo
« Respuesta #40 en: 25 de Enero de 2012, 17:07:43 »
Me había perdido tu mensaje Drod. Magníficamente explicado. Gracias