TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: EI00623 en 24 de Febrero de 2004, 11:16:00

Título: Hacer la media de 20 datos adquiridos A/D
Publicado por: EI00623 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: esancho 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: ejmc 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: Nocturno 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.
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: MGLSOFT 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.
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: cucaracha 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.
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: ejmc 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: esancho 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: ejmc 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: todopic 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: manex_1987 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!
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: LBpendragon 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,

Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: MGLSOFT en 10 de Marzo de 2004, 07:07:00
Y como solucionas el acarreo producido cuando los datos sobrepasen los 8 bits??
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: RGL 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
Título: RE: Hacer la media de 20 datos adquiridos A/D
Publicado por: cucaracha 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.