Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/08/2013 #1


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 ...
03/08/2013 #2

Avatar de Scooter

"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.
03/08/2013 #3

Avatar de Scooter

¿Pretendes hacer eso "a pedales"?
Con cualquier microcontrolador se hace sin respirar, con lógica discreta es una bonita forma de perder el tiempo y el dinero.
03/08/2013 #4


LO SE, pero es necesario hacerlo con elementos TTL, =( con un pick 16f887 es mucho mas fácil pero hay que hacerlo como me lo pidieron D:
03/08/2013 #5

Avatar de Scooter

Pues nada, que lo disfrutes... ánimo y no te enfades mucho.
03/08/2013 #6


Gracias =) sera un proyecto un poco largo
04/08/2013 #7

Avatar de palurdo

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.
04/08/2013 #8


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
06/08/2013 #9


Gracias por todas sus respuestas, empezaré a desarrollarlas.
06/08/2013 #10
Moderador

Avatar de Chico3001

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
06/08/2013 #11

Avatar de Scooter

Chico3001 dijo: Ver Mensaje
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.
08/08/2013 #12

Avatar de Scooter

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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.