Autor Tema: Hacer la media de 20 datos adquiridos A/D  (Leído 3500 veces)

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

Desconectado EI00623

  • PIC10
  • *
  • Mensajes: 7
Hacer la media de 20 datos adquiridos A/D
« en: 24 de Febrero de 2004, 11:16:00 »
no se me ocurre como hacer la subrrutina que cada 100ms me coja el valor del convertidor A/D i ese valor digital de 8 bits cada 20 datso me haga la media, o sea que me de el valor de 8 bits en bcd cada 2 segundos,  de media. Gracias pero es que ni idea de como hacerlo, ha ademas en assembler, mas liado aun

Desconectado esancho

  • PIC10
  • *
  • Mensajes: 3
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #1 en: 04 de Marzo de 2004, 09:06:00 »
Hola.
Para darte una idea . La suma es evidente, ¿como obtener la media? cuenta cuantas veces le restas el divisor (20) a la suma y obtendrás el cociente, que sera una aproximación muy buena.
Si deseas mayor precisión, tomas el resto y si es mayor de 10 (la mitad de 20) añades una unidad al valor obtenido, de este modo tendras un valor redondeado al entero más próximo.

Saludos

Enrique Sancho
Baleares

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #2 en: 04 de Marzo de 2004, 11:23:00 »
La media no es el valor central de las 20 mediciones?
O sea, ordenas las 20 mediciones de mayor a menor y tomas el valor intermedio a los valores que se encuentran en las posiciones 10 y 11. O lo que quieres es el promedio de las 20 mediciones?
De assembler ni j, pero te escribo esto por si interpretaron mal lo que quieres hacer

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #3 en: 04 de Marzo de 2004, 12:16:00 »
Perdona ejmc, pero creo recordar de mis tiempos de estudiante que ese valor que estás definiendo se llama Moda.
La media aritmética es el resultado de sumar todos los valores y dividirlos por el número de valores que haya.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #4 en: 04 de Marzo de 2004, 12:59:00 »
Si no entiendo mal eso se llama promedio...
Entiendo que la media aritmetica tiene que ver mas con el valor mas representativo o mas repetitivo dentro de un rango de valores.

Yo hago promedios.
Sumo las 20 mediciones y luego divido por 20, obteniendo como resultado lo que llame promedio, segun mi entendimiento.
Lo hago asi como una especie de filtro de las mediciones.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #5 en: 04 de Marzo de 2004, 13:18:00 »
Pues es lo mismo la media aritmética que el promedia.
Lo del valor más repetitivo es la moda.
Saludos desde Huelva (ESPAÑA)

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #6 en: 04 de Marzo de 2004, 19:20:00 »
Estoy medio perdido. Promedio: lo que todos savemos
Moda : El valor que mas se repite en un conjunto dado
Y hay otro nombre que es para el valor central, que me parece que es media, veo si lo encuentro en la carpeta de estadistica de mi hermana.
Bueno de todos modos, deveriamos ver que nos dice EI00623

Desconectado esancho

  • PIC10
  • *
  • Mensajes: 3
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #7 en: 04 de Marzo de 2004, 20:08:00 »
Media, media aritmética o promedio es lo mismo.

Moda: dentro de la distribución de valores, son los que tiene una fecuencia mayor que su anterior y posterior, por tanto en una distribución puede haber varias modas.

Tras poner los valores en orden ascendente, el que deja por dejabo de sí el 50% de las mediciones es la mediana, por tanto si el nº de medidas es impar, coincide con el que esta justo en el medio. En el caso planteado, la mediana sería el valor nº 11 tras haber realizado una ordenación ascendente, que ese es otro problema muy interesante, pues se deben aplicar algoritmos de ordenación, que hallaras en libros de programación, donde se encuentran docenas de ellos.

Saludos
Enrique Sancho

Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #8 en: 04 de Marzo de 2004, 21:18:00 »
Mediana.......... Esa hera a la que me referia cuando puse el primer mensaje, y eso hera lo que consideraba aclarar . Disculpen, no me meto mas

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #9 en: 04 de Marzo de 2004, 21:40:00 »
Hola Amig@s! , muy buenas las definiciones vertidas por Esancho...

que les parece resolverlo asi

el valor leido en el conversor, lo rotamos  a la derecha (divido por 2)

LEER
CALL LECTURA

RRF VALOR,W
ADDWF   PROMEDIO,F " lo almaceno en promedio

DECFSZ   VECES  " serian 20
GOTO LEER

con esto, leeria 20 veces, cada valor lo divide, y lo va sumando en promedio... a las 20 lecturas, quedaria el promedio....



puede ser?

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #10 en: 05 de Marzo de 2004, 14:36:00 »
Bastante simple, bastaria con lo siguiente (lo expongo con codigo verbal ligeramente desplazado al basic):

[[Suponiendo una matriz "DATO" de 20 elementos , o 20 variables]]

-Cuando se reciba un dato del ADC :

       -contador=contador+1
       -DATO(contador) = [Dato del ADC]
 
-Si el contador = 20 , hacer lo siguiente:

       - FOR X=1 TO 20
       - total=total + DATO(x)
       - NEXT X
       - total=total / 20
       - MEDIA = total
       - contador = 0

- volvemos a recibir datos del ADC...

>>No creo que se me haya olvidado nada, es una especie de borrador del que fácilmente se puede construir código. Saludos!

Desconectado LBpendragon

  • PIC10
  • *
  • Mensajes: 1
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #11 en: 10 de Marzo de 2004, 06:54:00 »
hola,
tengo una idea y es la siguiente. sino tienes restriccion en el numero de muestras escoge una que sea multiplo de potencias de 2 (ejemplo 8, 16, 32) y las sumas en binario , una vez obtenida todas las sumas, simplemente rotas a la derecha con el CARRY en 0.
ejemplo. si son 4 muestras:

muestras_1+muestra_2+muestra_3+muestra_4=total_muestras

y a total_muestras lo rotas 2 veces(2*2=4) a la derecha (en otras palabras divides)  y obtienes la media.

el comando de rotacion es RRF en asembler

de todas maneras perderas la parte decimal, y hai podras pasarla a BCD.

si quieres rutinas de eso pasate por www.piclist.com

espero haberte ayudado,


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #12 en: 10 de Marzo de 2004, 07:07:00 »
Y como solucionas el acarreo producido cuando los datos sobrepasen los 8 bits??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #13 en: 13 de Marzo de 2004, 21:21:00 »
manex,

esta bien desarrollada tu idea, pero estas desperdiciando una gran cantidad de memoria reservando 20 variables. Seria mejor ir operando la media con los dos valores leidos. Me explico: leo un valor y lo guardo, leo el siguiente y lo sumo con el anterior y hago la media, leo el siguiente lo sumo a la media anterior y lo divido por dos. No se si matematicamente es correcto pero nos ahorrariamos 18 variables, que a veces son importantes.

Saludos
Ricky
Madri-Espa~a

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Hacer la media de 20 datos adquiridos A/D
« Respuesta #14 en: 13 de Marzo de 2004, 22:51:00 »
No, matemáticamente eso no es correcto. Yo lo hago en C con un long. Tomo uno y sumo, otra y sumo.... Cuando tengo todas entonces divides. Con un long puedes hacer la media de hasta 256 tomas (si no me equivoco).
En total, dos variables (para el long, osea 16bits) y el resultado de la media en la parte baja de ese long.
Saludos desde Huelva (ESPAÑA)


 

anything