Autor Tema: tablas tipo cordenadas...  (Leído 276 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
tablas tipo cordenadas...
« en: 17 de Junio de 2017, 20:24:17 »
saludos, quería pedir el consejo de alguien que tenga una experiencia parecida a esto que de seo hacer, quisiera manejar un tabla pero que tenga coordenadas es decir que bajo un paramento "X" y otro "Y", se rescate un valor y se lleve al registro W.. 

Desconectado juaperser1

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2377
Re:tablas tipo cordenadas...
« Respuesta #1 en: 18 de Junio de 2017, 07:50:23 »
Hola mak_paint, eso se consigue con matrizes (o arrays bidimensionales), funcionan como un array normal y corriente solo que posee dos coordenadas la de la fila y la de la columna, de esta manera puedes tener una matriz de variables.

Cuidado con esto por que consume bastante memoria, por ejemplo crear una matriz "int matriz1[10][10]" es como si crearas 100 variables tipo int.

un saludo.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
Re:tablas tipo cordenadas...
« Respuesta #2 en: 19 de Junio de 2017, 07:47:38 »
Hola mak_paint, eso se consigue con matrizes (o arrays bidimensionales), funcionan como un array normal y corriente solo que posee dos coordenadas la de la fila y la de la columna, de esta manera puedes tener una matriz de variables.

Cuidado con esto por que consume bastante memoria, por ejemplo crear una matriz "int matriz1[10][10]" es como si crearas 100 variables tipo int.

un saludo.

entiendo, gracias por la ayuda pero me queda una duda, como se logra esto en ASM, supongo que hablas de hacer esta matriz en lenguaje C, o me equivoco ?, la verdad nunca e echo una matriz en ASM ni siquiera se si es posible jeje, y lenguaje C no lo manejo... gracias nuevamente por la ayuda  podrías acláreme  un poco mas sobre esto,... saludos...

Desconectado juaperser1

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2377
Re:tablas tipo cordenadas...
« Respuesta #3 en: 19 de Junio de 2017, 08:15:52 »
Lo siento no habia visto que estabamos en el foro de ensamblador, si lo que yo decia es en C.

No soy muy bueno en esamblador, pero se puede conseguir mediante la "DB", puedes encontar algunos ejemplos en internet, a ver si alguno te sirve para tu programa:

http://www.lawebdelprogramador.com/foros/Ensamblador/1113418-Matriz-Assembler.html

Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
Re:tablas tipo cordenadas...
« Respuesta #4 en: 19 de Junio de 2017, 08:46:49 »
gracias por ayudar juan, alguien mas que quiera opinar,...

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re:tablas tipo cordenadas...
« Respuesta #5 en: 19 de Junio de 2017, 09:24:06 »
Mira aqui tienes ejemplos de manejo de tablas:

http://www.todopic.com.ar/foros/index.php?topic=24720.0

Tendras que hacer dos tablas leer los dos valores y despues lo que tengas que hacer con ellos ¿No?.

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6121
Re:tablas tipo cordenadas...
« Respuesta #6 en: 19 de Junio de 2017, 18:55:06 »
Hola mak, en ASM va a depender del microcontrolador que estes utilizando.
Ya que algunos poseen instrucciones especiales para esto, otros permiten leer valores desde la FLASH, otros hay que usar metodos como saltos computados para obtener el valor.

En si lo que buscas todavia no lo entiendo. Si vos queres tener un "X" e "Y" como en una funcion, usualmente uno usa siempre la X como indice y los valores guardados es la Y. Por lo que necesitarias una sola tabla nomas. Ahora si queres acceder tanto desde la parte de las X como las Y ( es decir usar de indice las Y) lo podrias hacer de 2 formas, 1 es generando otra tabla, y si no  creando un algoritmo que empiezce a buscar el valor correcto de X que se acerque al Y que queres.

Si puedieras explicarte un poco mas, seria mejor.

Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
Re:tablas tipo cordenadas...
« Respuesta #7 en: 20 de Junio de 2017, 12:27:43 »
gracias por las ayudas amigos, bueno explico un poco mejor es un proyecto que estoy viendo la posibilidad de controlar un motor de combustión interna, me parece interesante eso que comentas que hay pic que son especiales para lo que intento, en principio un motor de combustión interna se tienen dos parámetros principales uno es la carga del motor esto se puede medir con el sensor MAP  que se alimenta de 5V y ofrece como retorno un voltaje de de 0.6V a 5V que refleja la carga del motor en determinado momento( asi funciona en principio la mayoría de los MAP) , el segundo parámetro es las revoluciones mismas en que el motor se encuentra girando en ese momento, entonces tenemos dos señales que después de su procesamiento se volverán digitales asi que debes ubicara en una tabla o cartograma o coordenadas, como lo queramos llamar, con eso dos valores debemos tomar una decisión o acción a ejecutar  de cuanta combustible debemos inyectar ( esto solo es cuanto ms se mantiene abierto un inyector  y en que momento se debemos dejar que la bobina dispare la chispa a la bujía... esto es a groso modo como funciona un motor claro hay muchísimos mas parámetros a tener en cuanta como en que angulo se encuentra el cigüeñal en ese momento temperaturas retardos de accionadores electro mecánicos (el mismo inyector)  etc etc...   tengamos un ejemplo : el motor tiene una carga  de 80kPa en un momento determinado digamos que nuestra convercion A/D del MAP nos  da un decimal de 150, entonces debo colocarme en el eje X de la tabla en 150,  y nuestras velocidad de giro es de 3500RPM, entonces me coloco en el eje Y de 3500, en la intersecion de estos dos datos  tenemos un valor ( el cual podemos manipular para obtener mejor rendimiento del motor) este valor es el que el programa rescata y le indica cuanto tiempo el inyector debe permanecer abierto para suministrar el combustible adecuado, en otra tabla gemela se obtiene un valor que le indicara en que momento del giro se debe acciona la bobina para que entregue la chispa a la bujia... bueno esto es a groso modo lo que debe ejecutar el programa obviamente tiene mas complejidad pero lo que quería saber es que método puede usarse para que este manejo de tablas sea lo mas rápido y preciso, espero mas o menos les puede orientar en lo que busco... obtenemos dos datos producto de dos sensores con estos dos datos vamos a un cartograma  de dos ejes ubicamos los datos y en la intersecion de la tabla encotramos un valor que le indica al programa en que momento y por cuanto tiempo ejecuta una acción...

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6121
Re:tablas tipo cordenadas...
« Respuesta #8 en: 20 de Junio de 2017, 14:26:39 »
Citar
entonces debo colocarme en el eje X de la tabla en 150,  y nuestras velocidad de giro es de 3500RPM, entonces me coloco en el eje Y de 3500, en la intersecion de estos dos datos  tenemos un valor

Entonces no es una funcion X/Y que pueda ser representado en un plano.

Lo que vos buscas es una funcion X/Y/Z que termina dandote un Mapa o un figura en el espacio. Algo de este estilo:



Suponiendo que los haces en pasos discretos podrias crear tablas para cada ciertos valores de RPM por ejemplo Suponete que vas de 0 a  10000 rpm, y lo haces en pasos de 500, eso te dejaria con 20 tablas la cual luego entras con la carga y eso te da la inyeccion.
Si queres hacer algo intermedio entre esas 500, podes exptrapolar esos puntos, ejemplo
Tengo 2750 RPM. y -40 KPa
Busco las 2 tablas, la de 3000 y la de 2500, ambos para -40KPa, de alli tomo el resultado de las 2 y saco la media de estos. Suponete que uno me daba 8ms y otro 9ms, entonces me quedaria 8.5ms.


Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
Re:tablas tipo cordenadas...
« Respuesta #9 en: 20 de Junio de 2017, 15:29:28 »
Citar
entonces debo colocarme en el eje X de la tabla en 150,  y nuestras velocidad de giro es de 3500RPM, entonces me coloco en el eje Y de 3500, en la intersecion de estos dos datos  tenemos un valor

Entonces no es una funcion X/Y que pueda ser representado en un plano.

Lo que vos buscas es una funcion X/Y/Z que termina dandote un Mapa o un figura en el espacio. Algo de este estilo:



Suponiendo que los haces en pasos discretos podrias crear tablas para cada ciertos valores de RPM por ejemplo Suponete que vas de 0 a  10000 rpm, y lo haces en pasos de 500, eso te dejaria con 20 tablas la cual luego entras con la carga y eso te da la inyeccion.
Si queres hacer algo intermedio entre esas 500, podes exptrapolar esos puntos, ejemplo
Tengo 2750 RPM. y -40 KPa
Busco las 2 tablas, la de 3000 y la de 2500, ambos para -40KPa, de alli tomo el resultado de las 2 y saco la media de estos. Suponete que uno me daba 8ms y otro 9ms, entonces me quedaria 8.5ms.

correctisinoooooooooooooooooooooooooooooooo.... jejeje..... dame mas detalles de tu idea por favor...

Desconectado mak_paint

  • PIC10
  • *
  • Mensajes: 31
Re:tablas tipo cordenadas...
« Respuesta #10 en: 20 de Junio de 2017, 15:32:24 »
justamente asi trabajan los programas para tunear o afinar motores, lo que estaría complicado es llevar esto a ASM...

Conectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6121
Re:tablas tipo cordenadas...
« Respuesta #11 en: 20 de Junio de 2017, 17:29:39 »
Nuevamente te explico

usar ASM termina en que es dependiente del microcontrolador que uses.
Dependiendo del micro que uses va a ser el programa. Ya que algunos poseen facilidades para esto. Por eso no puedo darte ningun codigo como para que pruebes. Un PIC16 ? Un PIC18 ? un dsPIC o PIC24 ?

Tambien deberias pensar en un micro que sea lo suficientemente grande como para almacenar todas las tablas en la FLASH!
¿Cuanta memoria? dependera de la cantidad de tablas que vayas a guardar. Esto si no usas una memoria externa y solo usas la interna del micro lo que es mas rapido