ADC ratiométricos y algoritmos de conversión [cerrado]

-2

Supongamos que quiero medir la temperatura digitalmente con una MCU. El ADC de la MCU usa una aproximación sucesiva para convertir la tensión analógica a digital y obtengo los 0 y 1 que se convierten en códigos digitales y puedo obtener la temperatura de los códigos digitales. Bueno, este sistema funciona bien.

Pero, porque sabemos que la mayoría de los ADC son métricos y el código digital del voltaje Vk se puede calcular a partir de:

$$ \ frac {Vk \ cdot (2 ^ n-1)} {VDD} $$

¿No podemos diseñar un sistema que calcule el valor del código digital en la ALU de la CPU y obtener los resultados en lugar de usar SAR y flash en los ADC?

En otras palabras, ¿podemos pasar del valor del voltaje al valor del código digital mediante un cálculo en lugar de analizar el SAR y luego calcular el valor del código digital?

    
pregunta Jack

4 respuestas

1

Un ADC está convirtiendo una señal analógica (nivel de voltaje) en un código digital, que representa el voltaje analógico.

Las ALU se implementan con lógica digital que solo entiende los niveles de voltaje "alto" y "bajo".

Necesitamos circuitos analógicos adicionales para comparar un voltaje de entrada arbitrario con algunos otros voltajes conocidos para convertir el nivel de voltaje en un código digital. Eso es lo que es un ADC. Las formas en que puede hacerse incluyen aproximación sucesiva, flash, seguimiento, tiempo para cargar un capacitor y muchos otros, pero una ALU simplemente no puede.

    
respondido por el Icy
1

No estoy seguro de que entiendas lo que es un convertidor ADC.

Lo más cercano a lo que estamos pidiendo es un convertidor sigma delta. Todavía usa un ADC, pero es un ADC de un bit. Necesita un filtro que lo envuelva, pero le da probablemente la menor complejidad analógica total para un ADC, y sí, dado el flujo de bits que proviene de él, debe calcular la respuesta final en la ALU.

Lamentablemente, el artículo de wikipedia sobre delta sigma es un poco engañoso, así que no voy a enlazar con él.

Estos tutoriales de Maxim y TI son algo mejores

enlace

enlace

    
respondido por el Neil_UK
1

Creo que estás terriblemente confundido y usando los términos incorrectos, pero creo que veo lo que estás tratando de preguntar.

Usted aplica un voltaje a la entrada del ADC, y su MCU recibe un código que indica la porción del rango del ADC.

Supongamos que tiene un ADC de 12 bits que puede aceptar un voltaje de 0 a 3.0 voltios. Si aplica 3.0 voltios a la entrada de ADC, entonces el ADC dará un valor numérico de 4095 a la MCU.

Lo que está preguntando es: ¿por qué el ADC no puede reportar un valor numérico de 3.0 en lugar de 4095?

Bueno, podrías hacer uno que haga eso. Sin embargo, sería muy complicado por dentro, ya que tendría que lidiar con dígitos codificados en binario (BCD) o números de punto flotante. También tendría que comunicar los números a su MCU en ese formato.

Por lo tanto, pasaría de una representación binaria de 12 bits a 32 bits (punto flotante) o posiblemente más bits (BCD) para representar el mismo valor. Eso requiere más tiempo para comunicarse desde el ADC a la MCU, por lo que está reduciendo la velocidad a cero. Su MCU tendría que entender el formato que envía el ADC y convertirlo internamente en algo que pueda usar, y muchas MCU más pequeñas no pueden manejar el punto flotante de forma nativa y necesitarán una gran biblioteca para trabajar con esos números. Lo mismo se aplica a BCD.

Lo siguiente es que muchos ADC operan desde un voltaje de referencia que se puede cambiar desde afuera, el ADC no tiene idea de qué referencia está usando. Tendría que ser capaz de medir eso y darle algún tipo de sentido para hacer el cálculo.

Entonces, se está preguntando por qué el ADC no realiza un paso simple (valor binario a valor de voltaje) para que simplifique su software. Al realizar ese paso simple (en software) resulta ser un enorme desorden en el hardware. .

Razón simple: se puede hacer, pero no es necesario y sería complejo, costoso y más lento de lo que se usa normalmente.

    
respondido por el JRE
0

Cuando mides la temperatura, usas un sensor. Convertir el voltaje o la corriente [analógica] de ese sensor, en un valor digital, es el trabajo del ADC.

Formato los 1 y 0 posteriores se pueden hacer con la CPU. ¿Estás midiendo grados centígrados? ¿Desea valores negativos para temperaturas bajo cero?

¿Quiere calibrar, para lecturas precisas? Coloque el sensor en un vaso, lleno de agua fresca y hielo: la lectura que obtiene es la configuración de "cero grados centígrados". Una olla de agua hirviendo en una estufa te dará "100 grados centígrados". Teniendo en cuenta todos esos factores de calibración para proporcionar una lectura precisa, es donde entra en juego la potencia de procesamiento de la CPU.

    
respondido por el Alan Campbell

Lea otras preguntas en las etiquetas