Sacar promedio de señales de 8 bits

Buenas, tengo el siguiente conversor adc, el cual me da señales de 8 bits, me pueden aconsejar como hacer para sacar el promedio de 100 señales ...
 

Adjuntos

  • SIMULACION.rar
    27.7 KB · Visitas: 7
  • Parte 1.jpg
    Parte 1.jpg
    89.3 KB · Visitas: 29
  • Parte 2.jpg
    Parte 2.jpg
    102 KB · Visitas: 28
Última edición por un moderador:
"el siguiente" ...no veo ningún siguiente.

Sumas cien valores y divides por 100 mucho misterio no tiene. O divides cada valor por 100 y sumas cien, al gusto.
 
¿Pretendes hacer eso "a pedales"? :eek:
Con cualquier microcontrolador se hace sin respirar, con lógica discreta es una bonita forma de perder el tiempo y el dinero.
 
Te aconsejo que lo hagas mediante una máquina de estados y contadores, tanto para ir sumando los valores como para hacer la división por 100 en el último estado de tu máquina.

Por ejemplo, al inicio todos los contadores se resetean. Durante el estado de captura y suma, se divide en varios subestados y un contador lleva la cuenta de los valores sumados. Uno de los subestados captura el valor del sample preseteado dentro de un contador de descenso y el subestado siguiente habilita un reloj de conteo que cuenta en el contador de suma y descuenta en el contador de muestreo hasta que éste se encuentre a 0, donde una puerta activará el siguiente estado de la máquina, que será comparar si se ha llegado a 100 muestas, y si no, se vuelve al principio. Una vez tengas los 100 valores sumados, otro estado habilita otro reloj y otro contador que cuente cada 100 pulsos de descuento del contador suma. Cuando el contador suma halla llegado a 0, en el contador que cuenta cada 100 pulsos tendrás el promedio de los 100 valores.

Eso sí, el esquema es complicado de cojones, pero menos complicado que hacer un sumador de 800 bits.
 
Hola keponce

Creo que primero hay que mejorar algunas cosas del diseño que adjuntaste en el archivo .ZIP
Según se ve fue desarrollado en Proteus Ver. 8.

Lo que habría que mejorar es lo siguiente:
Todas las salidas del ADC0808 desde DB0 hasta DB7 deben estar conectadas a las entradas del circuito Decodificador de binario natural a BCD 2 Cifras.
El BIT DB0(18) no está conectado al susodicho Decodificador. En este decodificador tienes conectado ese BIT a GND(Tierra, Masa).

Para lograr lo que pretendes –sacar el promedio de 100 lecturas- se requiere que el ADC0804 notifique, por medio de una señal, que ya ESTÁ una lectura valida en sus salidas (DB0 a DB7). Probablemente sea su salida nombrada INTR(Negada) del ADC0804.

Cada que aparezca esta señal, se toma la lectura en sus salidas de DB0 hasta DB7, se divide entre 100 y su suma. Como al inicio el resultado SUMA está en cero, por lo tanto, solo aparecerá la primer lectura dividida entre 100.
Cuando hayan ocurrido 100 lecturas tendremos en SUMA el promedio de 100 lecturas el cual se pasará al Decodificador de binario natural a BCD 2 Cifras.

Entonces:
A)- Lectura valida ??
B)- No, Regresar a A)-
C)- Si, Tomarla y dividirla entre 100
D)- Sumarla al resultado
E)- Son 100 lecturas ??
F)- No regresar a A)-
G)- Si, convertir a BCD y mostrar en Display’s
H)- Regresar a A)-

De lo anterior se desprende que se requiere un contador de ciclos (100) un divisor (/100) y un sumador.
Probablemente el divisor y sumador deberían poder dar resultados con fracciones de grado. (25.3°C)
Algo debe sincronizar la toma de lecturas para irlas dividiendo y sumando.
El tiempo de ciclo de este circuito -sacar el promedio de 100 lecturas- debe ser menor al tiempo de conversión del ADC0804.

Otra opción es sacar el promedio de 100 lecturas en la parte análoga de tu circuito.
100 amplificadores operacionales que dividan la entrada entre 100 y un capacitor de buena calidad para mantener la lectura Y, todos esos capacitores conectarlos a un sumador con su salida conectada al ADC0804.
Aquí también se requiere la señal Lectura Valida para almacenarla en los capacitores.

saludos
a sus ordenes
 
Ahora... si quieres simplificar la electronica, saca el promedio de 64 o 128 datos.... por que un corrimiento a la izquierda equivale a una division entre 2... asi solo recorres el resultado 6 o 7 lugares a la izquierda y tienes tu division entre 64 o 128
 
Ahora... si quieres simplificar la electronica, saca el promedio de 64 o 128 datos.... por que un corrimiento a la izquierda equivale a una division entre 2... asi solo recorres el resultado 6 o 7 lugares a la izquierda y tienes tu division entre 64 o 128
Desarrollando esta idea, creo que se podría hacer de forma dinámica:
Se toma una medida y se suma a la media anterior y se divide por dos, eso continuamente.
 
El problema es que con números enteros se pierde precisión en seguida.
En lugar de por dos se puede multiplicar la "media" por 0,9 y sumar la nueva medida multiplicada por 0,1.
Si se quiere hace en números enteros; multiplicar la media por 9, sumar la medida y el resultado dividirlo por 10 de esa forma la media estará mas estable.
 
Atrás
Arriba