Como explicó FakeMoustache, la idea del diodo no es realmente buena. La forma más fácil de lograr esto es ajustar el rango de entrada (que incluye tanto voltajes positivos como negativos de alta amplitud) a algo que pueda utilizar el ADC (un voltaje entre GND y V REF ). Para esto, necesita reducir la amplitud del voltaje de entrada y agregar una compensación fija. El objetivo es que cuando tenga una entrada a 0 V, obtenga un voltaje V REF / 2 para alimentar el ADC.
Podemos construir esta etapa con un amplificador operacional. Pero esto puede hacerse de manera más efectiva si acepta invertir el signo de voltaje de entrada y repararlo más tarde desde el firmware de la MCU. Por ejemplo, la etapa de ajuste emitirá un voltaje de + V REF cuando la entrada sea de -20V y un voltaje de GND cuando la entrada sea de + 20V. Básicamente, la función de transferencia se invierte. De esta manera, puede hacer esto sin necesidad de polarizaciones de voltaje negativas, y con un solo indicador.
Aquí está el circuito básico:
simular este circuito : esquema creado usando CircuitLab
Ahora, ¿cómo calcular los valores de R1, R2, R3, R4 y R5 para que obtenga el rango que necesita y el desplazamiento correcto? Bueno, básicamente, todo se puede deducir de la siguiente fórmula:
\ $ \ dfrac {\ frac {V_ {OUT}} {R1} + \ frac {V_ {IN}} {R2}} {\ frac {1} {R1} + \ frac {1} {R2} + \ frac {1} {R3}} = \ dfrac {\ frac {V_ {REF}} {R4}} {\ frac {1} {R4} + \ frac {1} {R5}} \ $
Debe encontrar los valores adecuados para que cuando V IN sea 20V, V OUT sea 0V y cuando V IN sea -20V, V OUT es V REF . También debe asegurarse de que la impedancia de entrada total sea lo suficientemente alta como para dejar su señal de entrada sin alterar (los valores en el rango de 100 k 100 probablemente estarán bien).
Pero soy un poco demasiado perezoso para resolver esto yo mismo ...
Lo último: elija un opamp con entradas y salidas de riel a riel. De lo contrario, obtendrás resultados incorrectos en el extremo lejano del rango de entrada.
Edit: Parece que no soy tan perezoso después de todo. Digamos que el rango de entrada es + V MAX → -V MAX y desea traducir esto a 0 → + V REF , la fórmula anterior da las siguientes relaciones entre los valores de resistencia:
\ $ \ frac {R1} {R2} = \ frac {V_ {REF}} {2V_ {MAX}} \ $ y \ $ \ frac {R4} {R5} = 1 + 2 \ frac {R1} {R3} + \ frac {V_ {REF}} {V_ {MAX}} \ $
Por lo tanto, una posible solución para V MAX = 20V y V REF = 5V sería:
- R1 = R3 = 12.5k
- R2 = 100k
- R5 = 10k
- R4 = 32.5k
Lo comprobé con el simulador circuitlab, parece consistente. Aquí está la función de transferencia: