TB066

Análisis de Circuitos (TB066)
Index Commits Files Refs
commit 1def8d8a0de9b9b29927d717f3cd68aa5505839b
parent 4968f411568f321ad876f8ad2f9efbc493d2998a
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Thu, 16 Jul 2026 00:14:29 -0300

Agregar respuesta de tf ideal y normalizada a diferentes señales

Diffstat:
Mtp/informe/informe.pdf | 0
Mtp/informe/informe.tex | 328+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mtp/informe/plot/bode_passive_highpass.png | 0
Mtp/informe/plot/sallen-key_lpf_valores_teoricos_scipt_min_err.png | 0
Atp/informe/plot/sine_response_1.png | 0
Atp/informe/plot/sine_response_2.png | 0
Atp/informe/plot/sine_response_3.png | 0
Atp/informe/plot/tf_bode.png | 0
Atp/informe/plot/tf_impulse.png | 0
Atp/informe/plot/tf_sig_square_response_1.png | 0
Atp/informe/plot/tf_sig_square_response_2.png | 0
Atp/informe/plot/tf_sig_square_response_3.png | 0
Atp/informe/plot/tf_step.png | 0
Dtp/informe/sch/TL081.mod | 43-------------------------------------------
Mtp/informe/sch/sallen-key_lpf_valores_teoricos_scipt_min_err.asc | 2+-
Mtp/scripts/spice_exported_data_plots/bode_passive_highpass.png | 0
Mtp/scripts/spice_exported_data_plots/main.m | 35+++++++++++++++++++++++++++--------
Mtp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos.m | 33++++++++++++++++++++++++---------
Mtp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos_scipt_min_err.png | 0
Atp/scripts/spice_exported_data_plots/tf_ideal_vs_norm.m | 306+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dtp/scripts/spice_exported_data_plots/trans_comp.m | 141-------------------------------------------------------------------------------
Mtp/scripts/valores_sallen-key.py | 2+-
22 files changed, 598 insertions(+), 292 deletions(-)
diff --git a/tp/informe/informe.pdf b/tp/informe/informe.pdf
Binary files differ.
diff --git a/tp/informe/informe.tex b/tp/informe/informe.tex
@@ -160,7 +160,7 @@ fontupper={\ttfamily\mystrut}}
   moredelim=**[is][\color{operatorcolor}\bfseries]{@}{@}, % allow inline operator styling using @...@
 }
 
-\title{Síntesis de filtro}          % Titulo del trabajo.
+\title{Síntesis de Filtro}          % Titulo del trabajo.
 \author{Klöckner, Martin Javier}
 \date{\today}                   % Fecha (automática)
 
@@ -227,6 +227,7 @@ fontupper={\ttfamily\mystrut}}
 \phantomsection
 \pdfbookmark[1]{\contentsname}{toc}
 \tableofcontents
+\pagebreak
 \listoffigures
 \pagebreak
 
@@ -636,16 +637,16 @@ ecuación \eref{eq-h-impulso-final}.
     \label{eq-h-impulso-final}
 \end{align}
 
-Para la expresión de la respuesta al impulso de la ecuacion
-\eref{eq-h-impulso-final}, se realiza un gráfico en funcion del tiempo, el cual
+Para la expresión de la respuesta al impulso de la ecuación
+\eref{eq-h-impulso-final}, se realiza un gráfico en función del tiempo, el cual
 se muestra en la figura \ref{fig-h-impulso-final}, la forma era de esperarse ya
-que una de las transferencias ($H_{2}(s)$) tiene raices complejas conjugadas por
+que una de las transferencias ($H_{2}(s)$) tiene raíces complejas conjugadas por
 lo que su comportamiento es de tipo subamortiguado.
 
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=1.00\textwidth]{plot/impulse.png}
-    \caption{Respuesta al impulso en dominio temporal}
+    \caption{Respuesta al impulso analítica en dominio temporal}
     \label{fig-h-impulso-final}
 \end{figure}
 
@@ -783,18 +784,18 @@ cual se muestra en la figura \ref{fig-y-U-final}.
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=1.00\textwidth]{plot/Heaviside.png}
-    \caption{Respuesta al escalón en dominio temporal}
+    \caption{Respuesta al escalón analítica en dominio temporal}
     \label{fig-y-U-final}
 \end{figure}
 
 En la figura 2 se observa que para frecuencias altas, esto es en la transición
 en el origen de la función escalón, se comporta similar a la respuesta al
 impulso, presentando oscilaciones hasta que el sistema se estabiliza. De la
-ecuacion \eref{eq-y-U-final} se observa que el transitorio mas lento es el de la
-exponencial $e^{-889\cdot t}$ el cual tiene un tiempo caracteristico $\tau =
-2$ms; por convencion se toma $5$ veces ese valor, resultando en $10$ms de
+ecuación \eref{eq-y-U-final} se observa que el transitorio mas lento es el de la
+exponencial $e^{-889\cdot t}$ el cual tiene un tiempo característico $\tau =
+2$ms; por convención se toma $5$ veces ese valor, resultando en $10$ms de
 tiempo para que el sistema se estabilice por completo, lo cual se ve claramente
-en la figura. Cuando la funcion escalon es continua y el sistema se estabiliza
+en la figura. Cuando la función escalón es continua y el sistema se estabiliza
 se observa la ganancia de $6$ (o $15.56 dB$ aproximadamente) propia de la
 transferencia $H(s)$ para frecuencias bajas, obtenido en la ecuación \eref{eq-tran-to-zero}.
 
@@ -988,7 +989,7 @@ un gráfico en función del tiempo, el cual se muestra en la figura
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=1.00\textwidth]{plot/sine_response_omega1.png}
-    \caption{Respuesta a señal senoidal de $250Hz$ en dominio temporal}
+    \caption{Respuesta a señal senoidal de $250Hz$ analítica en dominio temporal}
     \label{fig-y-sin-final}
 \end{figure}
 
@@ -1146,8 +1147,7 @@ Dadas las ganancias $K_{LF}$ y $K_{HF}$, entonces de
 \eref{eq-trans-res-div-inf-gain} resulta que $C_{2}=0$. Imponiendo $C_{1} =
 22nF$, entonces de la ecuación \eref{eq-trans-res-div-z1} resulta $R_{1} = R_{2}
 \approx 181818\Omega$ y dado que $181818\Omega$ no es un valor comercial
-estandarizado se toma el valor $180k\Omega$, esto último implica un error de
-aproximadamente $1\%$ en el valor del resistor elegido.
+estandarizado se toma el valor $180k\Omega$.
 
 Reemplazando los valores en el circuito de la figura
 \ref{fig-impedance-divider}, resulta en el circuito de la figura
@@ -1161,7 +1161,7 @@ circuito simulado y la transferencia teórica $H_{1}$.
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=\textwidth]{plot/bode_passive_highpass.png}
-    \caption{Diagrama de Bode de circuito pasa altos normalizado y $H_{1}$}
+    \caption{Diagrama de Bode de circuito pasa altos, $H_{1}$ y $H_{1}$ normalizada}
     \label{fig-pasa-altos-primer-orden}
 \end{figure}
 
@@ -1182,6 +1182,10 @@ muestra a continuación en \eref{eq-trans-res-div-compl-values}.
     \label{eq-trans-res-div-compl-values}
 \end{align}
 
+Dados los valores de $R_{1}$ y $R_{2}$ elegidos, la transferencia de la ecuación
+\eref{eq-trans-res-div-compl-values} impone un error con respecto a la
+transferencia $H_{1}$, en valores porcentuales se tiene para la ganancia
+aproximadamente $0.002\%$, y para las singularidades de $1\%$.
 
 \iffalse
 La transferencia $H_{1}(s)$ es de la forma de la ecuación
@@ -1241,12 +1245,22 @@ de $1.00\%$ para $R_{1}$ y $0.10\%$ para $R_{2}$.
 \subsection{Filtro pasa bajos de segundo orden}\label{filtro-pasa-bajos-de-segundo-orden}}
 
 Para implementar la transferencia $H_{2}$ se elige un circuito Sallen-Key pasa
-bajos de segundo orden con ganancia unitaria, ya que este tipo de filtro es
-relativamente sencillo con respecto a otros filtros y los cálculos son directos.
-La transferencia de un filtro Sallen-Key pasa bajos de segundo orden con
-ganancia unitaria se muestra a continuación en la ecuación
+bajos de segundo orden con ganancia unitaria, tal como el que se muestra en la
+figura \ref{fig-pasa-bajos-sallen-key}. Se elige este tipo de
+filtro ya que es relativamente sencillo con respecto a otros filtros y los
+cálculos son directos, y el hecho de que sea de ganancia unitaria permite
+simplificar aun más las expresiones, en particular la expresión del factor de
+calidad $Q$.
+
+La transferencia de un filtro Sallen-Key pasa bajos con ganancia unitaria se
+muestra a continuación en la ecuación
 \eref{eq-sallen-key-lpf-generic}.\footnotemark[10]
 
+% Se elige ganancia unitaria porque simplifica el calculo de los componentes y
+% dado que en este caso se tiene un factor de calidad relativamente alto este
+% depende mucho de la ganancia del amplificador y de la tolerancia de los
+% componentes.
+
 \footnotetext[10]{\ Esto se obtiene de la sección 4.5.1: ``Sallen-Key Circuits'',
 \cite{schaumann2001}. Imponiendo $R_{A}\to\infty$, $R_{B}=0$, logrando así
 ganancia unitaria $K=1$.}
@@ -1263,7 +1277,7 @@ Igualando la transferencia anterior de la ecuación
 de segundo orden mencionado en la ecuación \eref{eq-lpf-2-general} se obtienen
 las expresiones para la frecuencia natural $\omega_{0}$ y el factor de calidad
 $Q$ que se muestran en las ecuaciones \eref{eq-sallen-key-param-w0} y
-\eref{eq-sallen-key-param-Q}.
+\eref{eq-sallen-key-param-Q}, respectivamente.
 
 \begin{align}
     \omega_{0} &= \sqrt{ \dfrac{1}{R_{1}\ R_{2}\ C_{1}\ C_{2}}}
@@ -1274,22 +1288,27 @@ $Q$ que se muestran en las ecuaciones \eref{eq-sallen-key-param-w0} y
 \end{align}
 
 Para obtener valores de los componentes $R_{1}$, $R_{2}$, $C_{1}$ y $C_{2}$ se
-sabe que $\omega_{0} = 4000$ y $Q=2.25$, por lo que reemplazando en las
-ecuaciones \eref{eq-sallen-key-param-w0} y \eref{eq-sallen-key-param-Q} se
-tiene un sistema de dos ecuaciones con 4 incógnitas, por lo que se utiliza un
-script de Python que dado una lista de valores normalizados de resistencias y
-capacitores se calcula el error de $\omega_{0}$ y $Q$ para cada cuarteto de
-valores $R_{1}$, $R_{2}$, $C_{1}$, $C_{2}$ posible, resultando en una lista de
-la mejor combinación de valores para minimizar el error de $\omega_{0}$ y $Q$.
-En la tabla \ref{tab-sallen-key-componentes} se muestran algunos de los mejores
-valores obtenidos mediante el script. En particular se eligió $R_{1} =
-20k\Omega$, $R_{2} = 30k\Omega$, $C_{1} = 47nF$ y $C_{2} = 2.20nF$, ya que si
-bien no es la opción que mayor minimiza el error, son valores de resistencias
-mayores que otras opciones lo cual es deseable, ya que evita cargar etapas
-anteriores y disminuye el consumo de corriente y los capacitores tienen valores
-fácilmente disponibles comercialmente. De cualquier forma el error de
-$\omega_{0}$ y $Q$ permanece por debajo de $1\%$.
+sabe que $\omega_{0}$ debe ser $4000$ rad/s y $Q$ debe ser de $2.25$,
+reemplazando en las ecuaciones \eref{eq-sallen-key-param-w0} y
+\eref{eq-sallen-key-param-Q} se tiene un sistema de dos ecuaciones con 4
+incógnitas, es por esto que se utiliza un programa de calculo numérico que dada
+una lista de valores normalizados de resistencias y capacitores se calcula el
+error de $\omega_{0}$ y $Q$ para cada cuarteto de valores $R_{1}$, $R_{2}$,
+$C_{1}$, $C_{2}$ posible y se ordena de menor a mayor error combinado entre
+$\omega_{0}$ y $Q$, resultando en una lista ordenada de valores con los
+respectivos errores. 
 
+En la tabla \ref{tab-sallen-key-componentes} se muestran algunos de los mejores
+valores obtenidos mediante el programa numérico. En particular, se eligió
+$20k\Omega$, $30k\Omega$, $47nF$ y $2.20nF$ para $R_{1}$, $R_{2}$, $C_{1}$ y
+$C_{2}$, respectivamente, ya que si bien no es el cuarteto con menor error, se
+tienen valores de resistencia mayor que otros conjunto de valores, lo cual es
+deseable, ya que se incrementa la impedancia y disminuye el consumo de
+corriente, y los capacitores tienen valores fácilmente disponibles
+comercialmente. De cualquier forma el error de $\omega_{0}$ y $Q$ permanece por
+debajo de $1\%$.
+
+\renewcommand{\arraystretch}{1.2}
 \begin{table}[h]
     \centering
     \begin{tabular}{|r|r|r|r|r|r|r|r|}
@@ -1297,16 +1316,16 @@ $\omega_{0}$ y $Q$ permanece por debajo de $1\%$.
         $R_1$ [$\Omega$] & $R_2$ [$\Omega$] & $C_1$ [nF] & $C_2$ [nF] & $\omega_0$ [rad/s] & $\Delta\omega_0$ [\%] & $Q$ & $\Delta Q$ [\%] \\
         \hline
         \hline
-        1300  & 15000 & $470$ & $6.80$ & 4005.7 &  0.14 & 2.252 &  0.10 \\
+        1300  & 15000 & $470$ & $6.80$ & 4005.71 &  0.14 & 2.252 &  0.10 \\
         \hline
-        15000 & 1300  & $470$ & $6.80$ & 4005.7 &  0.14 & 2.252 &  0.10 \\
+        15000 & 1300  & $470$ & $6.80$ & 4005.71 &  0.14 & 2.252 &  0.10 \\
         \hline
-        2700  & 4700  & $330$ &   $15$ & 3989.9 &  0.25 & 2.258 &  0.35 \\
+        2700  & 4700  & $330$ &   $15$ & 3989.94 &  0.25 & 2.258 &  0.35 \\
         \hline
-        30000 & 20000 &  $47$ & $2.20$ & 4014.8 &  0.37 & 2.264 &  0.64 \\
+        30000 & 20000 &  $47$ & $2.20$ & 4014.80 &  0.37 & 2.264 &  0.64 \\
         \hline
     \end{tabular}
-    \caption{Lista de valores para minimizar $\omega_{0}$ y $Q$.}
+    \caption{Algunos valores obtenidos que minimizan el error de $\omega_{0}$ y $Q$.}
     \label{tab-sallen-key-componentes}
 \end{table}
 
@@ -1319,6 +1338,10 @@ a continuación en la ecuación \eref{eq-trans-2-val}.
     \label{eq-trans-2-val}
 \end{align}
 
+Y el circuito resultante con los valores elegidos que implementa la
+transferencia $H_{2}$ se muestra en la figura
+\ref{fig-pasa-bajos-sallen-key} a continuación.
+
 % \begin{lstlisting}
 %     R1      R2        C1        C2      w0    dw0      Q     dQ
 %   1300   15000  4.70e-07  6.80e-09  4005.7  +0.14  2.252  +0.10
@@ -1330,19 +1353,24 @@ a continuación en la ecuación \eref{eq-trans-2-val}.
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=0.75\textwidth]{sch/pasa-bajos_activo_segundo_orden_sallen-key_script.png}
-    \caption{Circuito pasa bajos de segundo orden Sallen-Key}
-    \label{fig-pasa-bajos-primer-orden-inversor}
+    \caption{Circuito pasa bajos Sallen-Key}
+    \label{fig-pasa-bajos-sallen-key}
 \end{figure}
 
+Se simuló el circuito de la figura \ref{fig-pasa-bajos-sallen-key} en LTSpice
+obteniendo la respuesta en frecuencia y se comparó con la respuesta en
+frecuencia de la transferencia $H_{2}$, el resultado se muestra en la figura
+\ref{fig-bode-pasa-bajos-segundo-orden-sallen-key} en la cual se observa que la
+respuesta en frecuencia del circuito elegido y la transferencia $H_{2}$ son
+prácticamente idénticas.
+
 \begin{figure}[!ht]
     \centering
     \includegraphics[width=\textwidth]{plot/sallen-key_lpf_valores_teoricos_scipt_min_err.png}
-    \caption{Diagrama de Bode de circuito pasa bajos Sallen-Key normalizado y $H_{2}$}
-    \label{fig-pasa-altos-primer-orden}
+    \caption{Diagrama de Bode de circuito pasa bajos Sallen-Key, $H_{2}$ y $H_{2}$ normalizada}
+    \label{fig-bode-pasa-bajos-segundo-orden-sallen-key}
 \end{figure}
 
-\clearpage
-\pagebreak
 \hypertarget{amplificador-no-inversor}{%
 \subsection{Amplificador no inversor}\label{amplificador-no-inversor}}
 
@@ -1355,7 +1383,7 @@ se utiliza un amplificador no inversor con un circuito como el de la figura
 
 \begin{figure}[!ht]
     \centering
-    \includegraphics[width=0.30\textwidth]{sch/non_invert_amp.png}
+    \includegraphics[width=0.30\textwidth]{sch/non_invert_amp2.png}
     \caption{Circuito amplificador no inversor}
     \label{fig-amp-no-inversor}
 \end{figure}
@@ -1370,84 +1398,206 @@ La trasferencia del circuito amplificador no inversor de la figura
 \end{align}
 
 Dado que se requiere un factor de ganancia de 12, es decir, una transferencia
-$T(s)=12$ constante para todas las frecuencias, de \eref{eq-trans-amp} se
-obtiene la relación $R_{2}=11\ R_{1}$. Imponiendo $R_{1} = 20k\Omega$, entonces
-$R_{2} = 220k\Omega$.
+$T(s)$ constante e igual a $12$ para todas las frecuencias, de
+\eref{eq-trans-amp} se obtiene que $R_{2}$ debe ser $11\ R_{1}$. Eligiendo
+$20k\Omega$ para $R_{1}$, entonces $R_{2}$ resulta $220k\Omega$.
 
-\pagebreak
-\hypertarget{circuito-final}{%
-\subsection{Circuito final}\label{circuito-final}}
+\hypertarget{circuito-completo}{%
+\subsection{Circuito completo}\label{circuito-completo}}
 
 El circuito final resulta de la ``cascada'' o conexión en serie de los
 diferentes etapas: el filtro pasa altos que implementa la transferencia $H_{1}$,
 el filtro pasa bajos Sallen-Key que implementa la transferencia $H_{2}$, y el
-amplificador no inversor para ajustar la ganancia. 
+amplificador no inversor para ajustar la ganancia. La transferencia $H$
+normalizada, resultante del producto de todas las etapas, se muestra en la
+ecuación \eref{eq-trans-norm} a continuación.
+
+\begin{align}
+    \boxed{\boxed{H(s) \approx 12\ \left(\dfrac{s + 252.52}{s + 505.05}\right)\ \left(\dfrac{16118619.04}{s^{2} + 1773.05s + 16118619.04}\right)}}
+    \label{eq-trans-norm}
+\end{align}
 
 Hay que tener en cuenta que la cascada de diferentes circuitos solo es posible
 en la práctica si los circuitos no interfieren entre sí, en particular esto es
 válido cuando la impedancia de salida del primer circuito es mucho menor que la
 impedancia de entrada del segundo circuito,\footnotemark[11] teniendo esto en
-cuanta se ubica en primer lugar el filtro pasa altos de primer nivel, ya que
-este tiene impedancia de entrada y salida baja, luego el amplificador no
-inversor ya que este tiene una impedancia infinita debido al amplificador
-operacional, por ultimo se ubica el filtro Sallen-Key de segundo orden tal como
-se muestra en la figura \ref{fig-pasa-bajos-primer-orden-inversor}.
+cuanta se ubica en primer lugar (más cerca de la señal de entrada) el filtro
+pasa altos de primer nivel, ya que este tiene impedancia de entrada y salida
+relativamente baja, luego el amplificador no inversor ya que este tiene una
+impedancia de entrada muy alta debido al amplificador operacional, por ultimo se
+ubica el filtro Sallen-Key de segundo orden tal como se muestra en la figura
+\ref{fig-circuito-final-ideal}.
 
 \footnotetext[11]{Esto se obtiene de la sección 3.6: ``Cascade Design'',
 \cite{schaumann2001}}
 
-
 \begin{figure}[!ht]
     \centering
-    \includegraphics[width=\textwidth]{sch/trans_comp.png}
-    \caption{Circuito final con valores normalizados}
-    \label{fig-pasa-bajos-primer-orden-inversor}
+    \includegraphics[width=\textwidth]{sch/trans_comp_valores2.png}
+    \caption{Circuito completo con valores normalizados}
+    \label{fig-circuito-final-ideal}
 \end{figure}
 
+Para el circuito final de la figura \ref{fig-circuito-final-ideal} se realiza
+una simulación en LTSpice de la respuesta en frecuencia y se compara con la
+respuesta en frecuencia de la transferencia $H$, el resultado se muestra a
+continuación en la figura \ref{fig-bode-circuito-completo-ideal} en la cual se
+observa que la respuesta en frecuencia es prácticamente la misma. 
+
 \begin{figure}[!ht]
     \centering
-    \includegraphics[width=\textwidth]{plot/trans_comp.png}
-    \caption{Diagrama de Bode de circuito final y $H$}
-    \label{fig-pasa-bajos-primer-orden-inversor}
+    \includegraphics[width=\textwidth]{plot/trans_comp_norm.png}
+    \caption{Diagrama de Bode de circuito completo ideal, $H$ y $H$ normalizada}
+    \label{fig-bode-circuito-completo-ideal}
 \end{figure}
 
-\pagebreak
-\hypertarget{diagrama}{%
-\subsection{Diagrama}\label{diagrama}}
+% \pagebreak
+% \hypertarget{diagrama}{%
+% \subsection{Diagrama}\label{diagrama}}
 
 \hypertarget{simulaciones}{%
-\subsection{Simulaciones}\label{simulaciones}}
+\section{Simulaciones}\label{simulaciónes}}
 
-\pagebreak
-\hypertarget{implementacion-de-circuito}{%
-\section{Implementacion de circuito}\label{implementacion-de-circuito}}
+\hypertarget{transferencia-normalizada}{%
+\subsection{Transferencia normalizada}\label{transferencia-normalizada}}
 
-\hypertarget{armado}{%
-\subsection{Armado}\label{armado}}
+Dadas las transferencias normalizadas obtenidas halladas previamente, la
+transferencia $H$ normalizada resulta como se muestra en \eref{eq-trans-norm} a
+continuación.
+\hypertarget{respuesta-al-impulso}{%
+\subsubsection{Respuesta al impulso}\label{respuesta-al-impulso}}
 
-\hypertarget{mediciones}{%
-\subsection{Mediciones}\label{mediciones}}
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/tf_impulse.png}
+    \caption{Respuesta al impulso transferencia ideal y normalizada}
+    \label{fig-resp-impulso-tf-ideal-norm}
+\end{figure}
 
-Se tomaron mediciones de la salida del circuito armado resultando como se
-muestra en la figura \ref{osc1}.
+\hypertarget{respuesta-a-escalón}{%
+\subsubsection{Respuesta a escalón}\label{respuesta-a-escalón}}
 
-\begin{figure}[!ht]
+\begin{figure}[H]
     \centering
-    \includegraphics[width=1.00\textwidth]{img/osc1.png}
-    \caption{Ejemplo captura de osciloscopio}
-    \label{osc1}
+    \includegraphics[width=\textwidth]{plot/tf_step.png}
+    \caption{Respuesta al escalón transferencia ideal y normalizada}
+    \label{fig-resp-escalon-tf-ideal-norm}
 \end{figure}
 
-\begin{figure}[!ht]
+\hypertarget{respuesta-a-señal-senoidal}{%
+\subsubsection{Respuesta a señal senoidal}\label{respuesta-a-señal-senoidal}}
+
+\begin{figure}[H]
     \centering
-    \includegraphics[width=1.00\textwidth]{img/osc2.png}
-    \caption{Otro ejemplo captura de osciloscopio}
-    \label{osc2}
+    \includegraphics[width=\textwidth]{plot/sine_response_1.png}
+    \caption{Respuesta a señal senoidal $10\ Hz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-10-tf-ideal-norm}
 \end{figure}
 
-\pagebreak
-\hypertarget{resultados}{%
-\section{Resultados}\label{resultados}}
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/sine_response_2.png}
+    \caption{Respuesta a señal senoidal $636.6\ Hz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-636-tf-ideal-norm}
+\end{figure}
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/sine_response_3.png}
+    \caption{Respuesta a señal senoidal $100\ kHz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-100k-tf-ideal-norm}
+\end{figure}
+
+\hypertarget{respuesta-a-señal-cuadrada}{%
+\subsubsection{Respuesta a señal cuadrada}\label{respuesta-a-señal-cuadrada}}
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/tf_sig_square_response_1.png}
+    \caption{Respuesta a señal cuadrada $10\ Hz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-10-tf-ideal-norm}
+\end{figure}
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/tf_sig_square_response_2.png}
+    \caption{Respuesta a señal cuadrada $636.6\ Hz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-636-tf-ideal-norm}
+\end{figure}
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/tf_sig_square_response_3.png}
+    \caption{Respuesta a señal cuadrada $100\ kHz$ transferencia ideal y normalizada}
+    \label{fig-resp-sin-100k-tf-ideal-norm}
+\end{figure}
+
+\hypertarget{circuito-completo-no-ideal}{%
+\subsection{Circuito completo no ideal}\label{circuito-completo-no-ideal}}
+
+A continuación se evaluará la respuesta del circuito propuesto en varios
+aspectos, para esto se utilizará el programa LTSpice y el modelo de amplificador
+operacional a utilizar en la placa final, el TL081, a diferencia de simulaciones
+anteriores que se utilizaban modelos ideales de amplificadores operacionales.
+
+El circuito final a simular se muestra en la figura
+\ref{fig-circuito-final-model} y es similar al circuito final ideal de la figura
+\ref{fig-circuito-final-ideal} pero con la adición del modelo de amplificador
+operacional TL081 y la fuente de alimentación simétrica de $\pm12\ V$.
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{sch/trans_comp_model.png}
+    \caption{Circuito final a simular en LTSpice}
+    \label{fig-circuito-final-model}
+\end{figure}
+
+\hypertarget{respuesta-en-frecuencia}{%
+\subsubsection{Respuesta en frecuencia}\label{respuesta-en-frecuencia}}
+
+A continuación en la figura \ref{fig-bode-circuito-final-model} se muestra el
+diagrama de Bode del circuito no ideal con el modelo de amplificador operacional
+TL081 y se compara en la misma figura con el diagrama de Bode del circuito
+ideal y además con la transferencia $H$ con valores teóricos y normalizados. Se
+puede ver que prácticamente se compartan de la misma forma.
+
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=\textwidth]{plot/trans_comp_norm_model.png}
+    \caption{Diagrama de Bode de circuito completo ideal, no ideal, $H$ y $H$ normalizada}
+    \label{fig-bode-circuito-final-model}
+\end{figure}
+
+% \pagebreak
+% \hypertarget{implementacion-de-circuito}{%
+% \section{Implementación de circuito}\label{implementacion-de-circuito}}
+
+% \hypertarget{armado}{%
+% \subsection{Armado}\label{armado}}
+ 
+% \hypertarget{mediciones}{%
+% \subsection{Mediciones}\label{mediciones}}
+
+% Se tomaron mediciones de la salida del circuito armado resultando como se
+% muestra en la figura \ref{osc1}.
+% 
+% \begin{figure}[!ht]
+%     \centering
+%     \includegraphics[width=1.00\textwidth]{img/osc1.png}
+%     \caption{Ejemplo captura de osciloscopio}
+%     \label{osc1}
+% \end{figure}
+% 
+% \begin{figure}[!ht]
+%     \centering
+%     \includegraphics[width=1.00\textwidth]{img/osc2.png}
+%     \caption{Otro ejemplo captura de osciloscopio}
+%     \label{osc2}
+% \end{figure}
+% 
+% \pagebreak
+% \hypertarget{resultados}{%
+% \section{Resultados}\label{resultados}}
 
 \pagebreak
 \hypertarget{conclusion}{%
diff --git a/tp/informe/plot/bode_passive_highpass.png b/tp/informe/plot/bode_passive_highpass.png
Binary files differ.
diff --git a/tp/informe/plot/sallen-key_lpf_valores_teoricos_scipt_min_err.png b/tp/informe/plot/sallen-key_lpf_valores_teoricos_scipt_min_err.png
Binary files differ.
diff --git a/tp/informe/plot/sine_response_1.png b/tp/informe/plot/sine_response_1.png
Binary files differ.
diff --git a/tp/informe/plot/sine_response_2.png b/tp/informe/plot/sine_response_2.png
Binary files differ.
diff --git a/tp/informe/plot/sine_response_3.png b/tp/informe/plot/sine_response_3.png
Binary files differ.
diff --git a/tp/informe/plot/tf_bode.png b/tp/informe/plot/tf_bode.png
Binary files differ.
diff --git a/tp/informe/plot/tf_impulse.png b/tp/informe/plot/tf_impulse.png
Binary files differ.
diff --git a/tp/informe/plot/tf_sig_square_response_1.png b/tp/informe/plot/tf_sig_square_response_1.png
Binary files differ.
diff --git a/tp/informe/plot/tf_sig_square_response_2.png b/tp/informe/plot/tf_sig_square_response_2.png
Binary files differ.
diff --git a/tp/informe/plot/tf_sig_square_response_3.png b/tp/informe/plot/tf_sig_square_response_3.png
Binary files differ.
diff --git a/tp/informe/plot/tf_step.png b/tp/informe/plot/tf_step.png
Binary files differ.
diff --git a/tp/informe/sch/TL081.mod b/tp/informe/sch/TL081.mod
@@ -1,43 +0,0 @@
-* TL081 OPERATIONAL AMPLIFIER "MACROMODEL" SUBCIRCUIT
-* CREATED USING PARTS RELEASE 4.01 ON 06/16/89 AT 13:08
-* (REV N/A)      SUPPLY VOLTAGE: +/-15V
-* CONNECTIONS:   NON-INVERTING INPUT
-*                | INVERTING INPUT
-*                | | POSITIVE POWER SUPPLY
-*                | | | NEGATIVE POWER SUPPLY
-*                | | | | OUTPUT
-*                | | | | |
-.SUBCKT TL081    1 2 3 4 5
-*
-  C1   11 12 3.498E-12
-  C2    6  7 15.00E-12
-  DC    5 53 DX
-  DE   54  5 DX
-  DLP  90 91 DX
-  DLN  92 90 DX
-  DP    4  3 DX
-  EGND 99  0 POLY(2) (3,0) (4,0) 0 .5 .5
-  FB    7 99 POLY(5) VB VC VE VLP VLN 0 4.715E6 -5E6 5E6 5E6 -5E6
-  GA    6  0 11 12 282.8E-6
-  GCM   0  6 10 99 8.942E-9
-  ISS   3 10 DC 195.0E-6
-  HLIM 90  0 VLIM 1K
-  J1   11  2 10 JX
-  J2   12  1 10 JX
-  R2    6  9 100.0E3
-  RD1   4 11 3.536E3
-  RD2   4 12 3.536E3
-  RO1   8  5 150
-  RO2   7 99 150
-  RP    3  4 2.143E3
-  RSS  10 99 1.026E6
-  VB    9  0 DC 0
-  VC    3 53 DC 2.200
-  VE   54  4 DC 2.200
-  VLIM  7  8 DC 0
-  VLP  91  0 DC 25
-  VLN   0 92 DC 25
-.MODEL DX D(IS=800.0E-18)
-.MODEL JX PJF(IS=15.00E-12 BETA=270.1E-6 VTO=-1)
-.ENDS
-
diff --git a/tp/informe/sch/sallen-key_lpf_valores_teoricos_scipt_min_err.asc b/tp/informe/sch/sallen-key_lpf_valores_teoricos_scipt_min_err.asc
@@ -42,7 +42,7 @@ SYMATTR InstName R1
 SYMATTR Value 20k
 SYMBOL res 128 112 R90
 WINDOW 0 -5 56 VBottom 2
-WINDOW 3 36 55 VTop 2
+WINDOW 3 38 58 VTop 2
 SYMATTR InstName R2
 SYMATTR Value 30k
 SYMBOL voltage -144 128 M0
diff --git a/tp/scripts/spice_exported_data_plots/bode_passive_highpass.png b/tp/scripts/spice_exported_data_plots/bode_passive_highpass.png
Binary files differ.
diff --git a/tp/scripts/spice_exported_data_plots/main.m b/tp/scripts/spice_exported_data_plots/main.m
@@ -40,6 +40,8 @@ set(0, "DefaultAxesYMinorTick", "on");
 
 set(0, 'DefaultAxesGridAlpha', 0.50);
 
+set(0, "defaultAxesFontName", "Nimbus Sans");
+
 % exported ltspice data
 filename = "passive_highpass_normalized_utf8.txt";
 
@@ -75,6 +77,7 @@ grid on;
 set(gcf, "paperunits", "inches");
 set(gcf, "papersize", [10 5]);
 set(gcf, "paperposition", [0 0 10 5]);
+
 % theorical transfer function
 
 H1=tf([1 250], [1 500])
@@ -87,13 +90,25 @@ mag_the = squeeze(mag_the);
 pha_the = squeeze(pha_the);
 mag_the = 20*log10(mag_the);
 
+% theorical normalized transfer function
+
+H1_norm = tf([1 252.52], [1 505.05])
+[mag_the_norm, pha_the_norm, freq] = bode(H1_norm, freq);
+
+% bode functions returns linear scale y-axis
+mag_the_norm = squeeze(mag_the_norm);
+pha_the_norm = squeeze(pha_the_norm);
+mag_the_norm = 20*log10(mag_the_norm);
+
 %% Magnitude
 ax1 = subplot(2, 1, 1)
-y1 = semilogx(freq*2*pi, mag, "LineWidth", 3);
+y1 = semilogx(freq*2*pi, mag, "LineWidth", 3.5);
 grid on;
 hold on;
-y2 = semilogx(freq, mag_the, "LineWidth", 2);
-ylim([-6.015 0])
+y2 = semilogx(freq, mag_the, "LineWidth", 2.75);
+y3 = semilogx(freq, mag_the_norm, "LineWidth", 2);
+
+ylim([-6.5 0.5])
 yticks([-6 -3 0]);
 xlim([1 1e5])
 % xlabel("Frequency [Hz]");
@@ -106,10 +121,12 @@ set(ax1, "XTickLabel", []);
 
 %% Phase
 ax2 = subplot(2, 1, 2)
-semilogx(freq*2*pi, phase, "LineWidth", 3);
+semilogx(freq*2*pi, phase, "LineWidth", 3.5);
 grid on;
 hold on;
-semilogx(freq, pha_the, "LineWidth", 2);
+semilogx(freq, pha_the, "LineWidth", 2.75);
+semilogx(freq, pha_the_norm, "LineWidth", 2);
+
 xlim([1 1e5])
 xlabel('FRECUENCIA  [rad/s]');
 ylabel("FASE  [grados]");
@@ -126,11 +143,13 @@ axL = axes("Position", [0 0 1 1], ...
            "Visible", "off", ...
            "Units", "normalized");
 
-lgd = legend(axL, [y1 y2], ...
-             {"Circuito pasa altos\nde primer orden", "Transferencia H_{1}"});
+lgd = legend(axL, [y1 y2 y3], ...
+             {"Pasa altos de primer orden",...
+                 "H_{1}", ...
+                 "H_{1} normalizada"});
 
 % Move legend between plots
-set(lgd, "position", [0.58 0.54 -0.50 -0.50]);
+set(lgd, "position", [0.555 0.54 -0.50 -0.50]);
 set(lgd, "numcolumns", 1);
 
 % Reduce vertical spacing
diff --git a/tp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos.m b/tp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos.m
@@ -77,6 +77,7 @@ grid on;
 set(gcf, "paperunits", "inches");
 set(gcf, "papersize", [10 5]);
 set(gcf, "paperposition", [0 0 10 5]);
+
 % theorical transfer function
 
 H2=tf([4000^2], [1 4000^2/9000 4000^2])
@@ -89,15 +90,26 @@ mag_the = squeeze(mag_the);
 pha_the = squeeze(pha_the);
 mag_the = 20*log10(mag_the);
 
+% theorical normalized transfer function
+
+H2_norm = tf([4014.80^2], [1 4014.80/2.264 4014.80^2])
+[mag_the_norm, pha_the_norm, freq] = bode(H2_norm, freq);
+
+% bode functions returns linear scale y-axis
+mag_the_norm = squeeze(mag_the_norm);
+pha_the_norm = squeeze(pha_the_norm);
+mag_the_norm = 20*log10(mag_the_norm);
+
 %% Magnitude
 ax1 = subplot(2, 1, 1)
-y1 = semilogx(freq*2*pi, mag, "LineWidth", 3);
+y1 = semilogx(freq*2*pi, mag, "LineWidth", 3.5);
 grid on;
 hold on;
-y2 = semilogx(freq, mag_the, "LineWidth", 2);
+y2 = semilogx(freq, mag_the, "LineWidth", 2.75);
+y3 = semilogx(freq, mag_the_norm, "LineWidth", 2);
 
-ylim([-60 10])
-yticks([-60 -40 -20 0]);
+ylim([-60 20])
+yticks([-60 -40 -20 0 20]);
 xlim([1 1e5])
 
 % xlabel("Frequency [Hz]");
@@ -110,12 +122,13 @@ set(ax1, "XTickLabel", []);
 
 %% Phase
 ax2 = subplot(2, 1, 2)
-semilogx(freq*2*pi, phase, "LineWidth", 3);
+semilogx(freq*2*pi, phase, "LineWidth", 3.5);
 grid on;
 hold on;
-semilogx(freq, pha_the, "LineWidth", 2);
+semilogx(freq, pha_the, "LineWidth", 2.75);
+semilogx(freq, pha_the_norm, "LineWidth", 2);
 
-ylim([-180 0])
+ylim([-225 45])
 yticks([-180 -90 0]);
 xlim([1 1e5])
 
@@ -134,8 +147,10 @@ axL = axes("Position", [0 0 1 1], ...
            "Visible", "off", ...
            "Units", "normalized");
 
-lgd = legend(axL, [y1 y2], ...
-             {"Circuito pasa bajos Sallen-Key", "Transferencia H_{2}"});
+lgd = legend(axL, [y1 y2 y3], ...
+             {"Circuito pasa bajos Sallen-Key", ...
+                 "H_{2}", ...
+                 "H_{2} normalizada"});
 
 % Move legend between plots
 set(lgd, "position", [0.15 0.55 -0.50 -0.50]);
diff --git a/tp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos_scipt_min_err.png b/tp/scripts/spice_exported_data_plots/sallen-key_lpf_valores_teoricos_scipt_min_err.png
Binary files differ.
diff --git a/tp/scripts/spice_exported_data_plots/tf_ideal_vs_norm.m b/tp/scripts/spice_exported_data_plots/tf_ideal_vs_norm.m
@@ -0,0 +1,306 @@
+clc; clear all; close all;
+
+pkg load control signal
+
+%% Figure light theme
+
+set(0, "defaultAxesColorOrder", [
+        1.0000 0.0000 0.0000;  # red
+        0.0000 0.0000 1.0000;  # blue
+        1.0000 0.4980 0.0549;  # orange
+        0.1725 0.6275 0.1725;  # green
+        0.5804 0.4039 0.7412;  # purple
+        0.5490 0.3373 0.2941;  # brown
+        0.8902 0.4667 0.7608;  # pink
+        0.4980 0.4980 0.4980;  # gray
+]);
+
+set(0, "DefaultFigureColor", [1 1 1]);
+set(0, "DefaultAxesColor", [1 1 1]);
+set(0, "DefaultAxesXColor", [0 0 0]);
+set(0, "DefaultAxesYColor", [0 0 0]);
+set(0, "DefaultTextColor", [0 0 0]);
+set(0, "DefaultAxesGridColor", [0 0 0]);
+set(0, 'DefaultAxesGridAlpha', 1.00);
+set(0, "DefaultAxesMinorGridColor", [0 0 0]);
+set(0, 'DefaultAxesMinorGridAlpha', 0.20);
+set(0, "DefaultLineLinewidth", 3.00);
+set(0, "DefaultAxesFontSize", 16);
+set(0, "DefaultTextFontSize", 16);
+set(0, "DefaultAxesLineWidth", 1.00);
+set(0, "DefaultAxesXGrid", "on");
+set(0, "DefaultAxesYGrid", "on");
+set(0, "DefaultAxesZGrid", "on");
+set(0, "DefaultAxesXMinorGrid", "on");
+set(0, "DefaultAxesYMinorGrid", "on");
+set(0, "DefaultAxesXMinorTick", "on");
+set(0, "DefaultAxesYMinorTick", "on");
+set(0, 'DefaultAxesGridAlpha', 0.50);
+set(0, "defaultAxesFontName", "Nimbus Sans");
+
+figure(1);
+grid on;
+set(gcf, "paperunits", "inches");
+set(gcf, "papersize", [10 5]);
+set(gcf, "paperposition", [0 0 10 5]);
+
+f = logspace(0, 5, 1000);
+w = 2*pi*f;
+
+%% Transferencia ideal
+
+H1 = tf([1 250], [1 500])
+H2 = tf([4000^2], [1 4000^2/9000 4000^2])
+H = 12*H1*H2
+[mag_the, pha_the] = bode(H, w);
+
+% La funcion `bode` devuelve el eje `y` en escala lineal
+mag_the = squeeze(mag_the);
+pha_the = squeeze(pha_the);
+mag_the = 20*log10(mag_the);
+
+%% Transferencia normalizada
+
+H1_norm = tf([1 252.52], [1 505.05])
+H2_norm = tf([4014.80^2], [1 4014.80/2.264 4014.80^2])
+H_norm = 12*H1_norm*H2_norm
+[mag_the_norm, pha_the_norm] = bode(H_norm, w);
+
+% La funcion `bode` devuelve el eje `y` en escala lineal
+mag_the_norm = squeeze(mag_the_norm);
+pha_the_norm = squeeze(pha_the_norm);
+mag_the_norm = 20*log10(mag_the_norm);
+
+
+if 0
+%% Diagrama de Bode
+
+% Magnitude
+ax1 = subplot(2, 1, 1);
+grid on;
+hold on;
+
+y1 = semilogx(w, mag_the, "LineWidth", 3.00);
+y2 = semilogx(w, mag_the_norm, "LineWidth", 2.25);
+
+ylim([-35 35])
+yticks([-20 0 20]);
+xlim([1 1e5])
+ylabel("MAGNITUD [dB]");
+set(ax1, "XTickLabel", []); % Ocultar x-tick del gráfico superior
+
+% Phase
+ax2 = subplot(2, 1, 2)
+grid on;
+hold on;
+
+semilogx(w, pha_the, "LineWidth", 3.00);
+semilogx(w, pha_the_norm, "LineWidth", 2.25);
+
+ylim([-225 45])
+yticks([-180 -90 0]);
+xlim([1 1e5])
+xlabel("FRECUENCIA  [rad/s]");
+ylabel("FASE  [grados]");
+
+% Ejes invisibles para `legend`
+ax0 = axes("Position", [0 0 1 1], ...
+           "Visible", "off", ...
+           "Units", "normalized");
+
+lgd = legend(ax0, [y1 y2], ...
+             {"H", "H normalizada"});
+
+set(lgd, "position", [0.16 0.54 0.10 0.05]);
+set(lgd, "numcolumns", 1);
+
+% Reducir espacio entre sub-figuras
+set(ax1, "Position", [0.13 0.58 0.80 0.38]);
+set(ax2, "Position", [0.13 0.13 0.80 0.38]);
+
+print("tf_bode.png", "-dpng", "-r500");
+
+%% Respuesta al impulso
+
+t = linspace(0, 0.010, 10000);
+[y1, t1] = impulse(H, t);
+[y2, t2] = impulse(H_norm, t);
+
+figure();
+grid on;
+set(gcf, "paperunits", "inches");
+set(gcf, "papersize", [10 4]);
+set(gcf, "paperposition", [0 0 10 4]);
+set(gca, "minorgridlinestyle", ".");
+
+plot(t1*1e3, y1, 'b', 'linewidth', 3.00, 'displayname', 'G1');
+hold on;
+plot(t2*1e3, y2, 'r', 'linewidth', 2.25, 'displayname', 'G2');
+grid on;
+xlabel("TIEMPO  t  [ms]");
+ylabel("AMPLITUD");
+legend('location', 'southeast');
+xlim([0 10])
+xticks(0:1:16);
+ylim([-35000 35000])
+
+print('tf_impulse.png', '-dpng', '-r500');
+
+%% Respuesta al escalon
+
+% Compute impulse responses
+[y1, t1] = step(H, t);
+[y2, t2] = step(H_norm, t);
+
+% Plot
+figure();
+grid on;
+set(gcf, "paperunits", "inches");
+set(gcf, "papersize", [10 4]);
+set(gcf, "paperposition", [0 0 10 4]);
+set(gca, "minorgridlinestyle", "--");
+
+plot(t1*1e3, y1, 'b', 'linewidth', 3.00, 'displayname', 'G1');
+hold on;
+plot(t2*1e3, y2, 'r', 'linewidth', 2.25, 'displayname', 'G2');
+grid on;
+xlabel("TIEMPO  t  [ms]");
+ylabel("AMPLITUD");
+legend('location', 'southeast');
+xlim([0 10])
+xticks(0:1:16);
+ylim([0 20])
+
+print('tf_step.png', '-dpng', '-r500');
+
+%% Respuesta a señales senoidales
+
+freqs = [10, 636.6, 100e3]; % Frequencias [Hz]
+
+hf = figure("visible", "off");
+
+for k = 1:length(freqs)
+    f = freqs(k);
+
+    figure();
+    grid on;
+    hold on;
+
+    set(gcf, "paperunits", "inches");
+    set(gcf, "papersize", [10 4]);
+    set(gcf, "paperposition", [0 0 10 4]);
+
+    xlabel("TIEMPO  t  [ms]");
+    ylabel("AMPLITUD");
+    % xticks(0:1:16);
+
+    switch k
+        case 1
+            sin_signal_lgd = sprintf("Señal senoidal 10 Hz");
+            t = 0:1e-6:500e-3;
+            xlim([0 500])
+            xticks(0:50:500);
+            ylim([-7 7])
+            yticks([-6 -3 0 3 6]);
+        case 2
+            sin_signal_lgd = sprintf("Señal senoidal 636.6 Hz");
+            t = 0:1e-6:10e-3;
+            xlim([0 10])
+            xticks(0:1:10);
+            ylim([-30 30])
+        case 3
+            sin_signal_lgd = sprintf("Señal senoidal 100 kHz");
+            t = 0:1e-9:100e-6;
+            xlim([0 100e-3])
+            xticks(0:0.01:0.1);
+            ylim([-1.05 1.05])
+        otherwise
+    end
+
+    u = sin(2*pi*f*t);
+    y      = lsim(H, u, t);
+    y_norm = lsim(H_norm, u, t);
+
+    y2 = plot(t*1e3, y, 'linewidth', 3.00);
+    y1 = plot(t*1e3, u, 'linewidth', 3.00);
+    y3 = plot(t*1e3, y_norm, 'linewidth', 2.50);
+
+    % legend("location", "southeast");
+
+    legend(gca, [y1 y2 y3], ...
+        {sin_signal_lgd,...
+            "H", "H normalizada"});
+
+    save_file_name = sprintf("tf_sig_sine_response_%d.png", k);
+    print(save_file_name, "-dpng", "-r500");
+end
+
+endif
+
+%% Respuesta a señales cuadradas
+
+freqs = [10, 636.6, 100e3]; % Frequencias [Hz]
+
+hf = figure("visible", "off");
+
+for k = 1:length(freqs)
+    f = freqs(k);
+
+    figure();
+    grid on;
+    hold on;
+
+    set(gcf, "paperunits", "inches");
+    set(gcf, "papersize", [10 4]);
+    set(gcf, "paperposition", [0 0 10 4]);
+
+    xlabel("TIEMPO  t  [ms]");
+    ylabel("AMPLITUD");
+    % xticks(0:1:16);
+
+    switch k
+        case 1
+            sin_signal_lgd = sprintf("Señal cuadrada 10 Hz");
+            t = 0:1e-6:500e-3;
+            xlim([0 500])
+            xticks(0:50:500);
+            ylim([-12 12])
+            yticks([-12 -6 0 6 12]);
+        case 2
+            sin_signal_lgd = sprintf("Señal cuadrada 636.6 Hz");
+            t = 0:1e-6:10e-3;
+            xlim([0 10])
+            xticks(0:1:10);
+            ylim([-35 35])
+        case 3
+            sin_signal_lgd = sprintf("Señal cuadrada 100 kHz");
+            t = 0:1e-9:100e-6;
+            xlim([0 100e-3])
+            xticks(0:0.01:0.1);
+            ylim([-1.05 1.05])
+        otherwise
+    end
+
+    u = square(2*pi*f*t);
+    y      = lsim(H, u, t);
+    y_norm = lsim(H_norm, u, t);
+
+    y2 = plot(t*1e3, y, 'linewidth', 3.00);
+    y1 = plot(t*1e3, u, 'linewidth', 3.00);
+    y3 = plot(t*1e3, y_norm, 'linewidth', 2.50);
+
+    % legend("location", "southeast");
+
+    legend(gca, [y1 y2 y3], ...
+        {sin_signal_lgd,...
+            "H", "H normalizada"});
+
+    save_file_name = sprintf("tf_sig_square_response_%d.png", k);
+    print(save_file_name, "-dpng", "-r500");
+end
+
+% legend('location', 'southeast');
+% xlim([0 10])
+% ylim([0 20])
+
+% print('tf_step.png', '-dpng', '-r500');
diff --git a/tp/scripts/spice_exported_data_plots/trans_comp.m b/tp/scripts/spice_exported_data_plots/trans_comp.m
@@ -1,141 +0,0 @@
-clc; clear all; close all;
-
-%% Figure light theme
-
-set(0, "defaultAxesColorOrder", [
-        1.0000 0.0000 0.0000;  # red
-        0.0000 0.0000 1.0000;  # blue
-        1.0000 0.4980 0.0549;  # orange
-        0.1725 0.6275 0.1725;  # green
-        0.5804 0.4039 0.7412;  # purple
-        0.5490 0.3373 0.2941;  # brown
-        0.8902 0.4667 0.7608;  # pink
-        0.4980 0.4980 0.4980;  # gray
-]);
-
-set(0, "DefaultFigureColor", [1 1 1]);
-set(0, "DefaultAxesColor", [1 1 1]);
-set(0, "DefaultAxesXColor", [0 0 0]);
-set(0, "DefaultAxesYColor", [0 0 0]);
-set(0, "DefaultTextColor", [0 0 0]);
-
-set(0, "DefaultAxesGridColor", [0 0 0]);
-set(0, 'DefaultAxesGridAlpha', 1.00);
-
-set(0, "DefaultAxesMinorGridColor", [0 0 0]);
-set(0, 'DefaultAxesMinorGridAlpha', 0.20);
-
-set(0, "DefaultLineLinewidth", 3.00);
-set(0, "DefaultAxesFontSize", 16);
-set(0, "DefaultTextFontSize", 16);
-set(0, "DefaultAxesLineWidth", 1.00);
-
-set(0, "DefaultAxesXGrid", "on");
-set(0, "DefaultAxesYGrid", "on");
-set(0, "DefaultAxesZGrid", "on");
-set(0, "DefaultAxesXMinorGrid", "on");
-set(0, "DefaultAxesYMinorGrid", "on");
-set(0, "DefaultAxesXMinorTick", "on");
-set(0, "DefaultAxesYMinorTick", "on");
-
-set(0, 'DefaultAxesGridAlpha', 0.50);
-
-% exported ltspice data
-filename = "trans_comp_utf8.txt";
-
-fid = fopen(filename, "r");
-
-% Skip header
-fgetl(fid);
-
-% Read frequency and complex string
-data = textscan(fid, "%f %s", "Delimiter", "\t");
-
-fclose(fid);
-
-freq = data{1};
-response = data{2};
-
-N = numel(freq);
-
-mag = zeros(N,1);
-phase = zeros(N,1);
-
-for k = 1:N
-    tokens = regexp(response{k}, ...
-        '\(([-+0-9.eE]+)dB,([-+0-9.eE]+)°\)', ...
-        'tokens');
-
-    mag(k)   = str2double(tokens{1}{1});
-    phase(k) = str2double(tokens{1}{2});
-end
-
-figure(1);
-grid on;
-set(gcf, "paperunits", "inches");
-set(gcf, "papersize", [10 5]);
-set(gcf, "paperposition", [0 0 10 5]);
-% theorical transfer function
-
-H1=tf([1 250], [1 500])
-H2=tf([4000^2], [1 4000^2/9000 4000^2])
-H=12*H1*H2
-bode(H)
-[mag_the, pha_the, freq] = bode(H, freq);
-
-% bode functions returns linear scale y-axis
-mag_the = squeeze(mag_the);
-pha_the = squeeze(pha_the);
-mag_the = 20*log10(mag_the);
-
-%% Magnitude
-ax1 = subplot(2, 1, 1)
-y1 = semilogx(freq*2*pi, mag, "LineWidth", 3);
-grid on;
-hold on;
-y2 = semilogx(freq, mag_the, "LineWidth", 2);
-ylim([-35 31])
-yticks([-20 0 20]);
-xlim([1 1e5])
-% xlabel("Frequency [Hz]");
-ylabel("MAGNITUD [dB]");
-% title("Bode Magnitude");
-% legend("Normalizado", "Teórica", "Location", "southeast");
-
-% Remove x tick labels from upper plot
-set(ax1, "XTickLabel", []);
-
-%% Phase
-ax2 = subplot(2, 1, 2)
-semilogx(freq*2*pi, phase, "LineWidth", 3);
-grid on;
-hold on;
-semilogx(freq, pha_the, "LineWidth", 2);
-
-ylim([-180 45])
-yticks([-180 -90 0]);
-xlim([1 1e5])
-xlabel("FRECUENCIA  [rad/s]");
-ylabel("FASE  [grados]");
-% title("Bode Phase");
-% legend("Normalizado", "Teórica", "Location", "northeast");
-
-% Invisible axes covering the whole figure
-axL = axes("Position", [0 0 1 1], ...
-           "Visible", "off", ...
-           "Units", "normalized");
-
-% Create legend on top axes
-lgd = legend(axL, [y1 y2], ...
-             {"Resp. frecuencia circuito final", "Transferencia H"});
-
-% Move legend between plots
-set(lgd, "position", [0.25 0.54 0.10 0.05]);
-set(lgd, "numcolumns", 1);
-
-% Reduce vertical spacing
-set(ax1, "Position", [0.13 0.58 0.80 0.38]);
-set(ax2, "Position", [0.13 0.13 0.80 0.38]);
-
-print("trans_comp.png", "-dpng", "-r500");
-
diff --git a/tp/scripts/valores_sallen-key.py b/tp/scripts/valores_sallen-key.py
@@ -95,7 +95,7 @@ for E, omega, Q, R1, R2, C1, C2 in resultados[:20]:
         f"{R2:6.0f}  "
         f"{C1:8.2e}  "
         f"{C2:8.2e}  "
-        f"{omega:6.1f}  "
+        f"{omega:6.2f}  "
         f"{errw:+7.2f}  "
         f"{Q:6.3f}  "
         f"{errq:+6.2f}  "