Conversión de temperatura ADC0804 y LM35

0

Estoy haciendo esta conversión y tengo un problema. Debo convertir de 0 ° C a 30 ° C, y sé que el LM35 me ofrece 10mv / ° C. Por lo tanto, si la temperatura = 30 ° C, el Vout = 0,3V = Vmax. Amplifico esta salida con el LM741 con una ganancia G = 16,7, porque así mi Vmax = 5V. La salida del OPAMP va directamente al ADC0804.

Mi pregunta es: ¿Cómo hago para mostrar el valor de la temperatura en dos pantallas BCD 7-seg? ¿Cuál es el circuito combinatorio que necesito construir? No sé cómo pasar de binario a BCD y también uso solo 5 bits para ir de 0 a 32.

    
pregunta sarquis88

3 respuestas

1

Mi primera respuesta es que probablemente debería avanzar hacia un enfoque más moderno de este proyecto. El uso de LM35 y LM741 es una tecnología que tiene aproximadamente 35 años. Puede hacer mucho mejor y mucho más simplemente jugar con los me gusta si estas partes analógicas antiguas.

Investigue los sensores de temperatura digitales que tienen una interfaz I 2 C utilizando solo dos señales digitales. Hay una gran cantidad de chips candidatos para usar para esto y te brindarán una amplia capacidad de medición de rango, a menudo con una resolución de hasta 0.125 grados.

El sensor de temperatura con la interfaz I 2 C se conecta a una MCU de su elección. A su vez, la pantalla está conectada a la MCU y el software se encarga de leer los valores de temperatura del sensor y enviar los valores formateados a la pantalla. Una vez más, hay un montón de opciones de MCU y las opciones de visualización pueden variar desde segmentos LED, caracteres LCD o gráficos OLED.

    
respondido por el Michael Karas
0
  

¿Cómo hago para mostrar el valor de la temperatura en dos pantallas BCD 7-seg? ¿Cuál es el circuito combinatorio que necesito construir? No sé cómo pasar de binario a BCD y también uso solo 5 bits para ir de 0 a 32.

Tuve un revolver alrededor de varias búsquedas de imágenes y dibujé un espacio en blanco. Todos los controladores de pantalla de BCD a siete segmentos son dispositivos de entrada de 4 bits. Podría usar lógica combinacional (NAND o NOR), pero sería ridículo.

Ya que tiene el primer bit de trabajo y está contento con él y tal vez quiera usarlo como un ejercicio de aprendizaje, una solución simple sería usar un micro con 16 o 18 pines GPIO. Podría usar ocho para leer el AD0804, siete más para controlar los segmentos de las pantallas de siete segmentos y dos más para conducir los cátodos o ánodos comunes.

Para una mayor diversión, puede reducir el conteo de E / S a nueve o diez, dependiendo de si también desea la visualización del punto decimal. (No lo hace en su caso). Esto tiene un costo de siete u ocho resistencias.

(Su requisito es para la visualización de 5 bits a doble de siete segmentos sin punto decimal, así que modifíquelo).

simular este circuito : esquema creado usando CircuitLab

Figura 1. El micro está configurado para leer las salidas AD804 entre las luces estroboscópicas entre las pantallas de siete segmentos.

Con la adición de R1 a R8, puede ahorrar en los pines GPIO en el micro - para mantener el tamaño bajo y aprender más.

Pseudo código:

disable(GPIO8);                 // Tristate the seven segment common driver pin.
disable(GPIO9);                 // As above.
input(portA);                   // Configure port A as inputs.
delay(1);                       // Stabilise.
t = readTemperature();          // Read the 8-bit value on port A.
msd = t \ 10;                   // Most significant digit. (Integer division.)
lsd = t % 10;                   // Least significant digit. (Modulo arithmatic.)
output(portA, sevenseg(msd));   // Configure port A as outputs and setup
                                   the seven-segment display pattern.
output(GPIO8, 1);               // Strobe the first digit.
delay(x);                       // Give it some time to excite the retina.
output(GPIO8, 0);               // Turn off 10s display.

output(portA, sevenseg(lsd));   // Repeat for units display.
output(GPIO9, 1);
delay(x);        
output(GPIO9, 0);
loop;

Hace lo que quieres con un solo chip y algún código.

    
respondido por el Transistor
0

Un enfoque podría ser escalar la entrada con un poco menos de ganancia para obtener 0-150 para 0-30C. Luego puede convertir el número binario (con un LSB agregado de 0) a BCD (utilizando algo como algoritmo add-3 ), y convierta cada dígito a 7 segmentos (el dígito más significativo puede tener lógica simplificada si solo necesita mostrarse en blanco o 0, 1 y 2- y quizás 3 dependiendo de si considera la especificación para incluir el punto final.)

Considere cómo lidiar con el rango excesivo y considere implementar la supresión de rizado, de modo que muestre 0.0 para 0C, 10.0 para 10C, en lugar de 00.00 y 010.0 respectivamente.

Si la lógica se te escapa para mirar en 7 segmentos las puertas que hay dentro, por ejemplo, un SN7447 (parte antigua de TTL).

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas