transformador

De acuerdo con la ley de Faraday,

\[ v_1 = N_1 \frac{d\Phi}{dt} \]

\[ v_2 = N_2 \frac{d\Phi}{dt} \]

de lo que puede derivarse que:

\[ \frac{v_1}{v_2} = \frac{N_1 \frac{d\Phi}{dt}}{ N_2 \frac{d\Phi}{dt}}  = \frac{N_1}{N_2} \]

Por lo que el cociente entre espiras determina la relación entre las tensiones de los devanados.

Si se considera una reluctancia nula, es decir, un transformador ideal, la relación de corrientes es:

\[N_1 \cdot i_1 – N_2 \cdot i_2 = 0 \]

Si por el contrario la reluctancia no es nula y se tiene en cuenta el fenómeno de saturación:

\[N_1 \cdot i_1 – N_2 \cdot i_2 =  \mathscr{R} \cdot \Phi \]

La inductancia magnetizante vista desde el primario es:

\[\frac{N^2_i}{\mathscr{R}} = L_{m1} \]

 

coil

\[V_L(t) = L \frac{di(t)}{dt} \]

Si despejamos el diferencial e integramos:

\[\frac{di(t)}{dt} = \frac{V_L}{L}\]

\[\int{\frac{di(t)}{dt} dt} = \int{\frac{V_L}{L} dt}\]

\[ i(t) = \int{\frac{V_L}{L} dt} =  i(0) + \frac{V_L}{L}t \]

La variación de la corriente en el tiempo no puede ser instantánea, ya que de lo contrario habría un pico infinito de tensión en el inductor (\(v(t) = \infty\)).

\[ \frac{di(t)}{dt} \neq \infty \]

Si el valor de la inductancia L es grande, las variaciones de corriente en el inductor serán pequeñas, por lo que el inductor se podrá considera como una fuente de corriente.

En régimen permanente, el valor medio de la tensión en los extremos del inductor debe ser nulo, ya que de lo contrario la corriente en bornes del inductor aumenaría hasta el infinito.

Es decir, ya que:

\[ i(t) = \int_0^t{-\frac{v_L(t)}{L} dt} \]

si \(v_L(t)\) no tuviese una media nula, la integral de la tensión sería infinito, ya que solo sumaría.

Por tanto:

\[<v(t)> = \frac{1}{T} \int_0^T v(t) dt = 0\]

Cuando hablamos del comportamiento de un condensador en frecuencia, imaginamos que su impedancia decrece hasta hacerse 0 en el infinito.

Sin embargo, en la realidad nos encontramos que el modelo real de una condensador tiene una resistencia en serie además de un inductor. En esta entrada vamos a ver solo los efectos que tiene dicha resistencia en serie, también conocida como ESR (equivalent series resistor).

Caso ideal

rc-ideal
Circuito RC ideal

Si calculamos la función de transferencia de este circuito, encontraremos que tiene la siguiente expresión:
\[H(s) = \frac{\frac{1}{CR_g}}{s+\frac{1}{CR_g}}\]

Diagrama de Bode del circuito RC ideal

Vemos que la frecuencia de corte a la cual el valor absoluto de la función de transferencia H(s) ha disminuido 3 dB es:
\[f = \frac{1}{2\pi R C} = \frac{1}{2\pi \cdot 50 \cdot 10^{-6}} = 3183 Hz\]

Sin embargo, ¿cómo va a ser su respuesta en frecuencia si añadimos una resistencia en serie?

Caso real

Para tener en cuenta los efectos de la resistencia en serie, modificamos el esquemático original añadiendo la resistencia en serie con el condensador. Para que los efectos sean más notables de manera que se vean mejor las consecuencias que tiene, el valor de la resistencia se ha escogido alto (50 Ω). Sin embargo, los condensadores reales intentan mantener este valor tan bajo como sea posible para seguir manteniendo las características de condensador en un ancho de banda más amplio.

Circuito RC con ESR
Circuito RC con ESR

La función de transferencia de este circuito es:
\[H(s) = \frac{R_L}{R_g + R_L}\frac{s+ \frac{1}{C R_L}}{s+ \frac{1}{C \left( R_L + R_g \right)}}\]

Como vemos, la función de transferencia tiene un cero en \(f_c = \frac{1}{2 \pi C R_L}\) y polo en \(f_p = \frac{1}{2\pi C \left( R_L + R_g\right) }\). El cero fuerza un pendiente a partir de \(f_1\) de -20 dB/dec, mientras que el polo fuerza una pendiente de +20 dB/dec a partir de \(f_2\), tal y como vemos en el diagrama de bode:

Diagrama de Bode del circuito RC con ESR
Diagrama de bode del circuito RC con ESR

Como vemos, el cero anula al polo de manera que la respuesta en frecuencia es plana para altas frecuencias (en la realidad el inductor en serie hace que aumente. Sin embargo, ahora no se están contemplando sus efectos). La frecuencia del polo está por debajo de la frecuencia del cero \(f_p < f_c\). Además, la frecuencia del cero está determinada por el valor de la resistencia en serie y por el valor del condensador. Por tanto, si hacemos \(R_L\)muy pequeña, estaremos retardando el efecto del cero y con ello, haciendo que la respuesta frecuencial del condensador sea igual a la del caso ideal en un ancho de banda mayor.

Si hacemos \(R_L = 0.01 \Omega\), las características de condensador (disminución de impedancia al incrementar la frecuencia) se dan para un ancho de banda mayor:

Diagrama de Bode del circuito RC con baja ESR
Diagrama de Bode del circuito RC con baja ESR

A modo de comparativa, podemos observar las diferencias mejor si superponemos todos los diagramas de bode.

 Línea continua: alta ESR con \( R_L = 50 \Omega\) . Linea discontinua: ESR = 0 (ideal). Linea punto ralla: \( R_L = 0.01 \Omega \).
Línea continua: alta ESR con \(R_L = 50 \Omega\). Linea discontinua: ESR = 0 (ideal). Linea punto ralla: \(R_L = 0.01 \Omega\).

El script de MATLAB utilizado para simular y hacer estas gráficas es:

clear all;
close all;
 
s = tf('s');
Rg = 50;
RL = 50;
RLow = 0.01;
C = 1e-6;
 
%% Con ESR
H1 = ((1+s*C*RL)/(s*C*(Rg+RL)+1));
 
%% Sin ESR
H2 = (1/(C*Rg))/(s+1/(C*Rg));
 
%% Con bajo ESR
H3 = ((1+s*C*RLow)/(s*C*(Rg+RLow)+1));
 
bode1 = bodeplot(H1,'r',H2,'b--', H3, 'g-.');
 
setoptions(bode1, 'FreqUnits', 'Hz');
 
legend('Circuito RC con alta ESR', 'Circuito RC ideal', 'Circuito RC con baja ESR');
grid on;

Conclusión

Como vemos, debido a efectos parásitos como la resistencia en serie (ESR), el condensador deja de comportarse como tal a partir de una determinada frecuencia. Por debajo de ella, el condensador puede ser utilizado como tal. En los datasheets, este parámetro viene expresado como ESR aunque generalmente, se engloba dentro de un parámetro más general que es el factor de calidad Q.

Hace poco escribía sobre la importancia de tener en cuenta la resistencia parásita serie de un condensador (ESR). La ESR es un parámetro importante pero sin embargo, no tener en cuenta la inductancia serie equivalente puede ser incluso más catastrófico en un diseño.

Como ya habíamos hablado, estos elementos parásitos inherentes al condesador real hacen que su comportamiento deje de ser el esperado. La expresión de la impedancia de un condensador es
\[Z_C = \frac{1}{2 \pi f C}\]
Por lo que al subir en frecuencia su impedancia disminuye.

Circuito RLC
Circuito RLC

Podemos ver que hay un tanque LC en serie (un condensador y un inductor en serie). La característica principal de un tanque LC en serie es que a su frecuencia de resonancia, \(f_0 = \frac{1}{2\pi \sqrt{LC}}\) se comporta como un cortocircuito. Por debajo de esa frecuencia, predomina la impedancia del condesador, por encima de la frecuencia de resonancia domina la impedancia del inductor y justo a la frecuencia de resonancia la impedancia del condensador es igual y de signo contrario a la del inductor. Es por ello que se anulan.

Debido a esto, podemos esperar que a la frecuencia de resonancia la salida sea 0 porque ambas impedancias se anulen cortocircuitando la salida a masa.

La función de transferencia de este circuito (o parámetro S21) es:
\[H(s) = \frac{s^2 + \frac{1}{LC}}{s^2 + s \frac{R_g}{L} + \frac{1}{LC}}\]

Diagrama de Bode del circuito LC
Diagrama de Bode del circuito LC

De la gráfica podemos observar todo lo que habíamos predicho teóricamente.

Sin embargo, si añadimos la ESR encontramos que la función de transferencia ahora es
\[H(s) = \frac{s^2 + s \frac{R}{L} + \frac{1}{LC}}{s^2 + s \frac{R+R_g}{L} + \frac{1}{LC}}\]

Diagrama de Bode para diferentes ESR
Diagrama de Bode para diferentes ESR

Como se puede ver, cuanto más grande es la ESR el pico de resonancia es menor. Si un condensador es muy malo (tiene unas ESR y ESL altas), se parecerá más a la curva azul (ESR = 10).

Los transformadores son elementos muy útiles cuando es necesario modificar la impedancia vista desde un punto del circuito. Cuando estamos diseñando un filtro paso banda y queremos conectar la siguiente etapa es muy importante no modificar la resistencia del circuito, ya que modificaríamos su ancho de banda. Por otra parte, construir transformadores es algo caro, que ocupa mucho espacio y poco práctico. Por ello intentar buscar una solución sin que utilice bobinas es una buena idea.

Transformación paralelo-serie

Para empezar, deberemos saber como pasar del paralelo de una resistencia y un condensador a la disposición en serie de una resistencia y un condensador:

temp

 

La impedancia equivalente del paralelo es:

\[Z = \frac{R_p}{1 + R_p C_p j \omega} = \frac{R_p}{1+R_p C_p j \omega} \cdot \frac{1-j\omega R_p C_p}{1-j\omega R_p C_p}=\frac{R_p(1-j\omega R_p C_p)}{1+\omega^2 R_p^2 C_p^2}=\frac{R_p}{1+\omega^2 R_p^2 C_p^2} – \frac{j\omega R_p^2 C_p}{1+\omega^2 R_p^2 C_p^2}\]

Si \(R_p >> \frac{1}{C_p\omega}\), entonces podemos aproximar la impedancia equivalente como:

\[Z \approx \frac{1}{R_p C_p^2 \omega^2}-j\frac{1}{\omega\cdot C_p}\]

Por tanto:

\[R_s = \frac{1}{R_p C_p^2 \omega^2}\]

\[C_s = C_p\]

Como hemos visto esto solo es válido cuando la impedancia de la resistencia paralela es mucho mayor que la impendancia del condensador. Por tanto, podemos reescribir la condición como \[f >> \frac{1}{2\pi R_p C_p}\]

Veamos un ejemplo:

temp (3)

 

Primero tenemos que comprobar que a la frecuencia de trabajo (27 MHz) se cumplen la condición necesaria para que la aproximación sea válida:

\[f >> \frac{1}{2\pi R_p C_p} = \frac{1}{2\pi 1k\Omega 1nF}=159 kHz\]

Como vemos, a 27 MHz cumplimos de sobra la condición. Para calcular \[C_s\]:

\[R_s = \frac{1}{R_p C_p^2 \omega^2} = \frac{1}{1 k\Omega (1nF)^2 (2\pi\cdot 27 MHz)^2}=0.0347 \Omega\]

Transformación serie-paralelo

De la misma manera, podemos transformar el circuito serie en paralelo.

Transformación serie-paralelo

 

Ahora las identidades son:

\[R_p = \frac{1}{R_s C_s^2 \omega^2}\]

\[C_p = C_s\]

Siempre y cuando \[f >> \frac{1}{2\pi R_p C_p}\]

Uso como transfomador

Alternativa al transformador

 

Como vemos, de esta manera conseguimos tener un condensador y una resistencia en paralelo del valor:

\[C_{eq}=\frac{C_1\cdot C_2}{C_1 + C_2}\]

\[R_p = R_0 (1+\frac{C_2}{C_1})^2\]

Como vemos \((1+\frac{C_2}{C_1})^2\) veces más grande.

Los filtros son una de las piezas claves en la electrónica y sobretodo en el mundo de las telecomunicaciones. Para poder identificar el orden de un filtro, si trazamos si diagrama de Bode y observamos que la atenuación es de 20 dB/década se tratará de un filtro de 1º orden, 40 dB/década para un filtro de 2º orden, 60 dB/decada para un filtro de 3º orden, etc. Otra manera más práctica es mirar el número de polos y ceros que presenta la función de transferencia, lo que se traduce en mirar cuántos condensadores y inductores presenta. Esta regla no tiene por qué ser siempre cierta, así que para asegurarnos será mejor recurrir al diagrama de Bode.

En esta ocasión nos centraremos en los filtros de segundo orden, en concreto los filtros paso bajo. Su función de transferencia genérica es de la forma:
\[H(s)=\frac{H_0}{s^2+2\zeta\omega_0 s+\omega_0^2}\]

\(H_0\): es la amplificación a baja frecuencia del filtro
\(\zeta\): es el coeficiente de amortiguación
\(BW\)) en radianes. Por tanto la función de transferencia puede ser reescrita como:
\[H(s)=\frac{H_0}{s^2+BW s+\omega_0^2}\]
Otro parámetro importante de un filtro paso banda es el factor de calidad. Este nos da información sobre como de estrecho y selectivo es el filtro. Una de las definiciones del factor de calidad (Q) es:
\[Q=\frac{f_o}{BW}\]
Si lo analizamos asintoticamente, si el filtro tuviera un ancho de banda \(f_0 \pm BW\), pero como veremos es algo muy complicado de conseguir actualmente.

Screen Shot 2014-10-05 at 16.49.17

Las redes de adaptación son necesarias cuando queremos maximizar la transferencia de potencia entre dos sistemas conectados en cascada. Las redes de adaptación se comportan como filtros en los que en la banda de paso hay adaptación. En la banda de frecuencia a la cual la red no está adaptada, la potencia es reflejada.

Para asegurar la máxima transferencia de potencia, la impedancia de carga debe ser la compleja conjugada del generador.

Máxima transferencia de potencia (MTP)
Máxima transferencia de potencia (MTP)

Ceros de transmisión

Dependiendo de la disposición de inductores y condensadores, es posible crear ceros de transmisión en los cuales no haya transferencia de señal entre la entrada y la salida.

Cero de transmisión en DC ( \(f= 0\) ).

Para conseguir un cero de transmisión en DC podemos poner un condensador en serie entre entrada y salida o una inductancia en derivación (en paralelo a masa).

zero1

La pendiente con la que tiende a 0 el diagrama de Bode es de -20 dB/dec o 6 dB/oct.

Para calcular las octavas que hay entre dos frecuencias:
\[N_{octavas} = \log_2{\frac{f_{sup}}{f_{inf}}}\]
Para calcular el número de décadas entre dos frecuencias:
\[N_{dec} = \log_{10}{\frac{f_{sup}}{f_{inf}}}\]
Para pasar de décadas a octavas:
\[N_{dec} = 0.3 N_{octavas}\]
Cero de transmisión en \(f=\infty\)

Para conseguir un cero de transmisión a frecuencias muy altas, hay que poner un inductor en serie o un condensador en derivación.

La pendiente en el diagrama de Bode es de 20 dB/dec o 6 dB/oct.

zero2

Cero a \(0< f_R < \infty\)

Para crear un cero a una frecuencia que no es ni DC ni a frecuencias infinitas, es necesario utilizar circuitos resonadores (también llamados circuitos tanque).

Existen dos tipos de resonadores: los serie y los paralelo.

Los resonadores serie constan de un condensador y un inductor en serie que a la frecuencia de resonancia equivalen a un cortocircuito. Por tanto, para forzar un cero de transmisión, será necesario poner un resonador serie en derivación.

Por otra parte, tenemos los resonadores paralelo, que a la frecuencia de resonancia son equivalentes a un circuito abierto. Para crear un cero de transmisión basta con ponerlos en serie entre la entrada y la salida del circuito.

La frecuencia de resonancia de un resonador es: \(f_R = \frac{1}{2\pi\sqrt{LC}}\)

zero3Topologías de adaptación con elementos concentrados

Existen 3 topologías de redes en las que se necesita una red de adaptación para conseguir MTP:

  1. \(R_s = R_L\)
  2. \(R_s \neq R_L\)
  3. La impedancia de carga o fuente es compleja.

1) Impedancia compleja con \(R_S = R_L\)

adp1En esta red de adaptación el valor de la parte real de la impedancia coincide con la impedancia del generador. Sin embargo, hay un parte imaginaria que es necesario eliminar. En este caso es tan sencillo como añadir en serie una impedancia imaginaria de signo contrario. Es decir, si la reactancia es positiva (carácter inductivo), habrá que poner un condesador. Si la reactancia es negativa (carácter capacitivo), habrá que poner un inductor. De esta manera, es equivalente a tener un circuito tanque en serie. Sin embargo, como ya hemos visto anteriormente esta solución solo es válida para una frecuencia ya que ambos valores solo se anulan a su frecuencia de resonancia.

Una manera de medir cómo de estrecha será la banda a la cual se da la adaptación es utilizando el factor de calidad Q. En circuitos paso banda, el factor de calidad establece la relación que hay entre la frecuencia de paso y el ancho de banda a -3 dB. Es decir:
\[Q = \frac{f_0}{BW}\]
qComo vemos, si el ancho de banda es grande (poco selectivo), la Q es pequeña. Si el filtro es muy selectivo, la Q es grande.

Este parámetro puede ser medido en función de la reactancia y el valor de la resistencia de carga:
\[Q = \frac{X_L}{2R}\]
Por tanto, si la resistencia es grande la Q es pequeña (el filtro es poco selectivo) y la banda de adaptación es ancha. Si por el contrario la resistencia es pequeña lleva a Q muy grandes (muy selectivo). Ambos extremos son difíciles de solucionar en la práctica, ya que conseguir un filtro muy selectivo o de gran ancho de banda es complicado.

2) Impedancia compleja con \(R_S \neq R_L\)

En este caso, las resistencia de carga y de fuente no coinciden. Es por ello que se necesita subir o bajor el valor de la resistencia de carga para adaptar con la impedancia de fuente.

2Para diseñar este tipo de redes de adaptación se utilizan redes en L:

rsnerl

Sin embargo el principal problema del diseño de este tipo de redes es que su cálculo es muy largo sobretodo cuando el número de elementos aumenta.

Este proceso se puede simplificar si utilizamos equivalencias serie-paralelo de circuitos RC y RL.

rc

RL
\[Q_s = \frac{X_s}{R_s} = Q_p = \frac{R_p}{X_p} = Q\]
\[R_p = \left( 1 + Q^2 \right)R_s\]
\[C_p \approx C_s\]
\[L_p \approx L_s\]
El factor de calidad (Q) indica cómo de ideal es un dispositivo a la hora de almacenar energía. Un dispositivo que pueda almacenar toda la energía sin disiparla tendrá un factor de calidad que tenderá a infinito. Una manera fácil de saber cómo es la expresión del factor de calidad con una resistencia en serie es pensando que si la resistencia en serie es muy grande, esta disipará mucha potencia y el factor de calidad será bajo. Por tanto, en la expresión del factor de calidad para un dispositivo con una resistencia en serie, el valor de la resistencia está en el denominador \(Q_p = \frac{R_p}{X_p}\)

La manera en la que se deben colocar los elementos es la siguiente: con la resistencia de mayor valor, un elemento en paralelo (para bajar su impendancia). Y con la resistencia de menor valor un elemento en serie (para subir su impedancia).

ejRLCPara calcular los valores de los elementos hay que igualar el factor de calidad Q de las redes serie y paralelo:
\[Q_s = Q_p = \sqrt{\frac{R}{r} – 1}\]
donde R es la resistencia con el valor nominal más alto y r la resistencia más baja.

Una vez calculado el factor de calidad, se obtiene el valor de la reactancia y con ello, el valor nominal del condensador o inductor.

Existen 4 disposiciones distintas:

l

Ejemplo:

EnEjQueremos adaptar estos dos puertos para que a la frecuencia de 850 MHz haya MTP y al mismo tiempo que la polarización en DC también pueda pasar del puerto 1 al 2.

Debido a que no podemos bloquear la continua, no podemos utilizar un condensador en serie con la resistencia del puerto 1. Por tanto, tenemos que utilizar la red en L con una bobina en serie y un condensador en derivación:

lPara calcular los valores de L y C:
\[Q_s = Q_p = \sqrt{\frac{R}{r} -1 } = \sqrt{\frac{50}{5} -1} = 3\]
\[Q_s = \frac{X_s}{R_s} \Rightarrow X_s = Q \cdot R_s = 2\pi f L\]
\[L = \frac{Q \cdot R_s}{2\pi f} = \frac{3 \cdot 5}{2\pi \cdot 850\cdot 10^6} = 2.8\text{ nH}\]
\[Q_p = \frac{R_p}{X_p} \Rightarrow X_p = \frac{R_p}{Q_p} = \frac{1}{2\pi f C}\]
\[C = \frac{Q_p}{2\pi f R_p} = 11.2\text{ pF}\]
ejemploQ

Respuestra en frecuencia del parámetro S21
Respuestra en frecuencia del parámetro S21

Sin embargo, cuando la diferencia de resistencias es muy grande, es posible que necesitemos unos valores de Q que no nos convengan en la práctica (recordar que \(Q = \sqrt{\frac{R}{r} – 1}\) ).

 Es decir, este salto de impedancia puede ser muy grande
Es decir, este salto de impedancia puede ser muy grande

Podemos hacer varios saltos de impedancia en lugar de uno solo. Esto da lugar a las redes en T y redes en π:

RT

rpiPor tanto disponemos de 3 tipos de redes: las redes en L, las redes en T y las redes en π. Con estas redes en T y π podemos aumentar el ancho de banda ya que al hacer saltos más pequeños de impedancia, la Q disminuye y el ancho de banda aumenta. Con las redes en L podemos disminuir el ancho de banda, ya que la resistencia virtual está entre un valor de \(R_{int} < r\) o \(R_{int} > R\).

Aumento del ancho de banda

Para aumentar el ancho de banda hay que utilizar una red en T o π. Si queremos una red de adaptación con un ancho de banda grande, la Q deberá se baja. Para que la Q sea baja, los saltos de impedancia deben de ser pequeños. Por tanto, podemos hacer saltos intermedios que tengan una Q menor y de esta manera aumentar el ancho de banda:

saltoimpe

Para que una red en T o en π dé un ancho de banda mayor, el valor de la resistencia \(R_L\). Un valor adecuado es el que da la media geométrica entre los dos valores:
\[R_{int} = \sqrt{R_s R_L}\]
Por tanto, las redes en T y en π no sirven para adaptar resistencias de carga y generador ya iguales ya que se hacen saltos de impedancia.

Si queremos poner \(m\) sería:
\[R_m = R_S^{\frac{n-m}{n}} R_L^\frac{m}{n}\]

Reducción del ancho de banda

Para reducir el ancho de banda debemos hacer saltos de impedancia más grandes. Esto se puede conseguir de la siguiente manera:

saltoimpeEl valor de \(R_{int} > R\). Ambas combinaciones harán que el ancho de banda sea menor.

3) Impedancias complejas

Una tercera forma de adaptar las impedancias de carga y fuente es mediante absorción o resonancia de la parte compleja de impedancia. Estas soluciones son de banda muy estrecha.

absorcionLa absorción consiste en utilizar la parte compleja de la carga o fuente como parte de la red de adaptación. Es decir, si necesitamos un condensador de 10 pF y la carga tiene un condesandor equivalente de 5 pF, solo será necesario poner un condensador de 5 pF ya que los otros 5 pF restantes los pondrá la parte imaginaria de la impedancia de carga.

La otra estrategia es hacer resonar la reactancia de la carga para poder eliminarla a la frecuencia de trabajo. Es decir, si tenemos un condensador en derivación, podemos ponerle un inductor en paralelo para que resuene a la frecuencia de trabajo y haya máxima transferencia de potencia.

resonanciaTambién podemos resonar solo una parte de la reactancia y utilizar la otra para conformar la red de adaptación en L:

resonanciaparcialAdaptación con líneas de transmisión

En las líneas de transmisión tenemos 2 grados de libertad: la impedancia característica y la longitud eléctrica. Jugando con estos valores podemos sintetizar valores de inductancia y capacitancia utilizando transformadores en \(\frac{\lambda}{4}\) y stubs en paralelo. Sin embargo, las líneas de transmisión no sirven para adaptar los casos en los los valores de resistencia de carga y fuente sean diferentes.

lt lt2

esp8266

Hace algunas semanas compré por Ebay 3 módulos ESP8266 con la esperanza de poder utilizarlos en aplicaciones de IoT. Oí hablar de este módulo en Hackaday y solo leer de lo que era capaz no me lo pensé dos veces:

  • Procesador con puertos GPIO (General Purpose Input Output)
  • Wifi integrado
  • ¡Solo vale 4€! (Actualización: actualmente es posible encontrarlo por ~1.5€)

Por tanto, este chip es capaz de conectarse con la red Wifi de tu casa, guardar o escribir información en una base de datos, hacer las veces de servidor, leer información de sensores, activar otros actuadores (como relés)… ¡Las posibilidades son enormes! Es un pequeñísimo Arduino con Wifi integrado.

Los primeros meses desde la salida del ESP8266 fueron bastante oscuros, ya que no se tenía apenas información, no había un SDK oficial y lo que había estaba en chino.

Pero recientemente la comunidad ESP8266 ha empezado a florecer ofreciendo diferentes vertientes por las que poder configurarlo. Yo me voy a centrar únicamente en la que utiliza el firmware NodeMCU.

Este firmware hace correr un compilador de LUA en el procesador, de manera que podremos escribir los programas que queramos correr en este mismo lenguaje.

Para poder instalar el firmware solo hay que conectar un FTDI (USB-UART converter) a nuestro ESP8266 de la siguiente manera:

esp826

Advertir que es obligatorio alimentar el ESP8266 a 3.3V, ya que por lo contrario quemaréis el chip.

Para entrar en modo de escritura de firmware hay que conectar el pin GPIO0 a masa. Yo he utilizado un jumper con que puedo conectar y desconectar fácilmente el pin.

Cuando tengamos este montaje hecho, necesitaremos descargar el grabador del firmware, que lo podemos encontrar también en el GitHub de NodeMCU.

Una vez descargado, abrimos el flasher:

ESP8266-flasher-folder

Con lo que nos aperecerá la siguiente aplicación:

ESP8266-flasher

Automáticamente cuando conectemos nuestro FTDI cambiará el puerto COM. Si no te sucede asegúrate de tener los drivers para tu FTDI instalados.

Flashear el ESP8266 con NodeMCU es tan sencillo como darle al botón Flash(F), y se pondrá a escribir el firmware en la memoria del procesador. Como se puede ver en la pestaña Config hace cuatro escrituras distintas, siendo la tercera la que más tiempo lleva. Cuando termine el FTDI se desconectará del equipo y aparecerá un símbolo verde abajo en la esquina izquierda. En mi caso dicho símbolo no ha aparecido pero el flasheo ha sido correcto igualmente.

Ahora que ya tenemos el firmware subido, tenemos que cargar nuestro programa. Para ello utilizaremos el programa LUAUploader de Hari Wiguna. Con esta aplicación especialmente desarrollada para el ESP8266 podremos subir nuestros programas de una manera muy sencilla.

Cabe destacar que la corriente que entrega un puerto USB del ordenador no es suficiente para iniciar el módulo de Wi-Fi, así que a partir de este momento es necesario alimentar el ESP8266 con una fuente externa. En mi caso he utilizado dos pilas LR03 (las pequeñas de los mandos) para obtener 3V. Recuerda que no sirven los 5V o el chip se quemará. Cuando conectes la fuente externa desconecta el pin de 3.3V del FTDI para evitar problemas, pero deja el pin de GND para unificar las masas del FTDI y de la fuente externa.

Una vez lo tengamos todo listo podemos pasar a lo divertido. Abrimos el LUAUploader y nos aparecerá la siguiente pantalla:

LuaUploaderPara comprobar que el firmware ha sido grabado correctamente iremos a la pestaña “Immediate” y escribiremos un pequeño chunk de prueba (un chunk es cada trozo de código que Lua puede ejecutar)

dummy = 5
print(dummy)

Si el compilador nos devuelve 5, quiere decir que el firmware ha sido escrito correctamente:

LUAtest

 

Para poder conectarnos a nuestra red Wi-Fi es necesario introducir el siguiente chunk:

ip = wifi.sta.getip()
print(ip)
--nos devolverá nil
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","password")
ip = wifi.sta.getip()
print(ip)
--nos devolverá la IP asignada

Hay veces que después de intentar conectarse a la red Wi-Fi continúa devolviendo nil. Probad a imprimir de nuevo la dirección IP con:

ip = wifi.sta.getip()
print(ip)

Ahora, para hacer una pequeña prueba, podemos montar un servidor en el propio ESP8266 con el chunk:

srv=net.createServer(net.TCP) 
srv:listen(80,function(conn) 
   conn:on("receive",function(conn,payload) 
      print(payload) 
      conn:send("<h1>Hola Ruben!</h1>")
   end) 
   conn:on("sent",function(conn) conn:close() end)
end)

Una vez subido, si accedemos a la dirección del ESP8266 nos devolverá la página con un heading y el texto “Hola Ruben!” (para poder escribir acentos hay que utilizar los códigos ASCII en HTML y utilizar la columna HTML Número: é = &#233;)

web

Podéis encontrar muchos más ejemplos en el GitHub de NodeMCU.