Circuito

En esta sección se tratará muy brevemente el circuito final que se utilizó para acondicionar la señal leída.

Después de las muchas consideraciones que se tomaron en la sección anterior, ya que la gran mayoría de las cosas ideas terminaron en fallo, el diseño se fue reduciendo más y más hasta poder trabajar únicamente con resistores y la tarjeta de desarrollo ESP-32.

Entonces, todo el diseño del osciloscopio se vio reducido a una máquina lineal (la cual iremos descubriendo a lo largo de este capítulo) la cual consta únicamente de resistores y un convertidor analógico digital (ADC).

Esto quiere decir que tenemos una función lineal que relaciona el voltaje que queremos leer (previo al acondicionamiento) y el voltaje que va a leer la tarjeta ESP-32 (posterior al acondicionamiento). Esta función la podremos expresar como:

\[ V_{ESP-32}(V_{Real}) = V_{Real} * K_{Atenuación}\]

Lo que tendremos que hacer es diseñar un circuito tal que conozcamos la atenuación de nuestros resistores a priori además de poder aprovechar el rango de voltajes disponibles en el ADC de nuestro ESP-32. Esto sugiere que tendremos que hacer un centrado posterior a la atenuación de nuestra señal eléctrica:

\[ V_{ESP-32}(V_{Real}) = V_{Real} * K_{Atenuación} + C_{Ajuste}\]

Por conveniencia de diseño podemos solicitar en nuestro diseño que el voltaje mínimo sea el voltaje mínimo posible a leer con la ESP-32. De la misma manera, podemos solicitar que el voltaje máximo sea el voltaje máximo disponible para el ADC de la ESP-32.

\[ V_{ESP-32}(V_{Min}) = 0[V] = V_{Min} * K_{Atenuación} + C_{Ajuste} \] \[ V_{ESP-32}(V_{Max}) = 3.3[V] = V_{Max} * K_{Atenuación} + C_{Ajuste} \]

Por último, resulta más o menos obvio (pero podemos explicitarlo) que el voltaje central (el voltaje de 1.65[V]) será el voltaje en el cual estaremos leyendo 0[V] previos al acondicionamiento. Por eso lo llamaremos "real cero" o V_cero.

\[ V_{ESP-32}(V_{cero}) = 1.65[V] = V_{cero} * K_{Atenuación} + C_{Ajuste} \]

El volaje mínimo entonces será el voltaje de misma dimensión pero signo opuesto al voltaje máximo. Lo que nos garantizará que en el intervalo de operación para V_real (V_real siendo el voltaje previo al acondicionamiento) \[ V_{real} \in (V_{min}, V_{max})\] Así, tendremos valores siempre positivos entre 0[V] y 3.3[V] en la lectura del ESP-32 y así evitaremos darle voltajes superiores a 3.3[V] o inferiores a 0[V] con respecto a la tierra de la tarjeta o a la computadora a la que se encuentre conectada, (respetando así nuestro intervalo de operación seguro en todo momento).

Esto nos deja con la siguiente tarea de diseño: Diseñar un circuito con resistores tal que funcione como un circuito de atenuación de factor K, donde además podamos centrar el voltaje.

Solo por el bien de hacer una gráfica descriptiva en los ejes X, Y, con X siendo "Voltaje real" y Y siendo "Voltaje ESP-32", sugeriremos un Vmax de 20[V], un Vmin de -20[V] y un voltaje "cero" de 1.65[V].

Graficado en Desmos

Existen muchas muchas maneras de obtener un comportamiento semejante a este haciendo uso únicamente de resistores ya que hay una infinidad de arreglos que pueden proporcionar este comportamiento. En este caso en concreto, se decidió partir de un divisor de voltaje.

La idea fue:

  1. Supongamos que tenemos un arreglo de dos resistores en serie (el circuito llamado divisor de voltaje)

  1. Ese divisor de voltaje lo podemos diseñar de manera que queden exactamente en 1.65[V] en el nodo central.

  1. Si agregamos un tercer resistor a este nodo, podremos "desviar" el voltaje hacia valores más altos o más bajos. En este ejemplo, el voltaje cambia 1/3 del voltaje original ya que está conectado a tierra pero no es difícil de ver que si el nuevo resistor estuviera conectado a un voltaje igual al generador inicial el nuevo resultado sería 2/3 del voltaje original (en vez de 1/2, como cuando había solo una entrada y una salida).

  1. Este resistor nuevo lo podemos llamar N. Si los dos resistores originales los llamamos R1 y R2 quedaría un nodo central conectado en paralelo a tres resistores, R1 con voltaje, R2 con tierra y N con un voltaje variable. En ese nodo compartido por R1, R2 y N podremos realizar mediciones con el ADC del ESP-32. Este nodo, será tan importante que lo podremos bautizar de una vez como el nodo "RN".

  2. Pensemos que el voltaje variable dependiera no de nosotros sino del fenómeno que estamos intentando medir. Ya que todo nuestro modelado es lineal, sería bastante fácil saber qué voltaje está ocurriendo del lado opuesto de N. N es de alguna manera nuestro "termómetro de voltaje" ya que lo podemos colocar en otro lugar y obtendremos una medición. Esta medición ya será bastante interesante puesto que podremos determinar el voltaje de el dispositivo al que se conecte N con respecto al voltaje de tierra y el voltaje de operación de la ESP-32. Esto está bien PERO nosotros somos un poco más ambiciosos, estamos buscando medir el voltaje entre dos puntos, no importa cuáles sean. Esto quiere decir, no nos interesa realmente el voltaje del punto con respecto a la tarjeta ESP-32 sino, nos interesa la relación del voltaje entre dos puntos del mundo externo, no su relación con la tarjeta ESP-32.

Ahora, recordemos brevemente el divisor de voltaje, el divisor de voltaje divide \[ V = \frac{V1 - V2}{R1 - R2} \]

Supongamos que la manipulación del voltaje de N la realizáramos por medio de esa división de voltaje en un nuevo divisor de voltaje paralelo.

Circuito interactivo

  1. Dado que nuestro sistema de alambrado está constituido de resistores que no cambian con el voltaje (o al menos eso queremos suponer) podremos obtener fácilmente el valor de (V1 - V2). Así, podremos saber cuál es el voltaje entre dos puntos. O bueno, ya casi. Hay que recordar que el valor de voltaje que estamos leyendo en todo momento es el voltaje en el nodo compartido por N, R1 y R2.

Ahora, si hiciéramos eso ¿qué valores leeríamos? Todos los valores leídos serían con respecto a los valores extremos de operación (en nuestro caso 0[V] y 3.3[V]).

Vale la pena mencionar, al hacer esto, los valores de 1k ya no funcionan como quisiéramos ya que la introducción del resistor N hizo que ya no fuera un divisor de voltaje invariable además que desconocemos qué voltajes se van a introducir en los resistores S1 y S2.

Aquí es donde, si uno no presta suficiente atención o realiza las suficientes pruebas es muy fácil dejar que un error pase desapercibido. Hasta el momento no hemos cometido ningún error garrafal ¿o sí?

Hagamos un rápido resumen:

  • Pensamos en el divisor de voltaje de dos resistores como nuestra base. (resistores R1, R2)
  • Le agregamos un tercer resistor por medio del cual introduciríamos una variación en el voltaje del nodo central del divisor de voltaje. (resistor N)
  • Agregamos un segundo divisor de voltaje por medio del cual obtendríamos la diferencia de voltajes entre las dos terminales de medición del osciloscopio (resistores S1 y S2). Con este divisor de voltaje obtendríamos un gradiente de voltaje entre S1 y S2 con el cual afecteríamos de manera predecible el voltaje en el nodo central de R1, R2 y N.

Aquí es donde algo se nos está pasando, un error que tomó mucho rato encontrar y resolver.

El nodo R1, R2, N no está desacoplado del nodo S1, S2, N. Este es el verdadero problema. El hecho de que no estén desacoplados puede parecer una nimiedad, sin embargo, este pequeño detalle destruye nuestro diseño. (O al menos nos obliga a replantear algunas cosas).

Llamemos a los nodos S1, S2, N el nodo SN y a R1, R2, N el nodo RN.

Supongamos

  • El voltaje de tierra se encuentra en el resistor R2.
  • El voltaje de 3.3V se encuentra en el resistor R1.
  • Algún voltaje (solo por esta vez, pensemos que 3.3V) se encuentra en el resistor S1
  • Algún voltaje (solo por esta vez, pensemos que 0V) se encuentra en el resistor S2.

Esperaríamos que el voltaje en el nodo SN se encuentre en alguna vecindad que nuestro osciloscopio pueda manejar. Este voltaje en SN generaría una desviación de voltaje en el nodo RN y podríamos calcular el voltaje en el nodo SN y a partir de éste podríamos calcular el voltaje en S1 y S2 (los dos verdadores valores de interés). La realidad es que en este escenario (0V y 3.3V) no tendríamos ningún cambio de voltaje en el nodo RN. Además los resultados obtenidos serían un sinsentido, ¿qué voltaje se mostraría si en S1 tuviéramos un voltaje altísimo y en S2 un voltaje negativo de un enorme valor absoluto? Sería impredecible y sería dependiente del valor de N. Si N fuera muy grande podríamos casi lograr un desacoplo, si N fuera muy chica la influencia del voltaje SN en el voltaje RN sería enorme. Pensemos también en el escenario ¿y si tanto el voltaje de S1 como el voltaje de S2 fueran altísimos? Quizá no obtendríamos una real diferencia de voltaje en el divisor SN pero sí veríamos una influencia muy grande en el nodo RN.

Está mal, falla por todos lados y solo funcionaría nuestro circuito en un puñado muy muy selecto de escenarios. Es por eso que tenemos que cambiar nuestro modelo.

Regresemos al paso en que agregamos N.

Venga, una vez más, paso 4. Esta vez hagamos una consideración adicional; vamos a medir el voltaje de un solo punto, no la diferencia de voltajes.

  1. El resistor nuevo lo podemos llamar N, por medio de este resistor podremos introducir un voltaje y por medio de este resistor conoceremos el valor de voltaje en UN SOLO PUNTO con respecto a nuestro nodo RN.

Este sistema sabemos que funciona, sabemos que no estamos cometiendo ningún error hasta este momento: Tres resistores, tres fuentes de voltaje, conocemos el valor de dos fuentes, conocemos el valor de todos los resistores, podemos caracterizar perféctamente el valor del voltaje introducido a N si conocemos el valor de voltaje en RN.

  1. Llegamos una vez más al punto en que necesitamos saber el voltaje en dos puntos, no nada más en uno ya que todo osciloscopio necesita un voltaje para la terminal negativa y uno para la terminal positiva. Deje de leer en este punto si desea darle vueltas un poco por su propia cuenta.

Nota: Me intriga saber qué soluciones se le pueden haber ocurrido, lector. Ya llegaremos a la parte de diseño avanzado donde quizá pueda ponerlas en marcha.

  1. Agregamos un segundo arreglo de tres resistores, R1, R2 y N, una vez más, una medición más. Entonces, obtendremos el siguiente arreglo de resistores:

Circuito interactivo

Así ya tendremos el arreglo A y el arreglo B. Con el arreglo A realizaremos la medición de un voltaje con una punta de terminal (podemos definir que el arreglo A lleve a la terminal roja "positiva") y con la otra terminal podemos realizar la otra medición (el arreglo B lleva a la terminal negra "negativa").

  1. Aquí termina la perte del diseño del circuito, realizaremos la medición del nodo RN_A y del nodo RN_B de manera simultánea con el ESP-32 ya que esta tarjeta cuenta con dos ADCs. Esta es una más de las razones por las cuales resulta tan conveniente esta tarjeta.

Leídos los dos voltajes de manera individual podremos realizar una resta entre ellos y hacer todas las manipulaciones posteriores por medio de herramental lógico (software).

Conclusión

En la parte de usuario avanzado explicaré a más detalle cómo calcular los valores de los resistores a usar, cómo determinar los voltajes máximos seguros así como explorar los múltiples diseños que se llevaron antes de llegar a este último arreglo que resultó aparentemente tan sencillo al final.

Del diseño podemos concluir que muchas veces lo mejor es delegar la responsabilidad de realizar operaciones lógicas a la programación y a las capas más abstractas del proyecto. Es por esto que siempre se intenta delegar responsabilidad a "una capa superior". Lo mismo ocurrirá cuando trabajemos con el ESP-32, le delegaremos responsabilidades a aplicación de Java ya que ahí tendremos todavía más holgura en cuanto a capacidad de procesamiento.

Usuario Avanzado: diseño del circuito