
This course teaches power engineers to design and implement digital filters using DSP or FPGA, with hands-on Python and open source tools, covering LaPlace transform and continuous-discrete time conversion.
Targeting power engineers and electrical engineering students, this course teaches how to design and implement digital filters using Python and multiple software tools.
Explore digital signal processing with engineering examples, mastering frequency response, Laplace transform, and discrete-time implementation using Python, matplotlib, and Sipah tools.
Explore the contrast between discrete-time and continuous-time systems using real-world examples, introduce the digitization process, and outline how digital signal processing overcomes continuous-time limitations.
Explore the difference between discrete and continuous time using a soccer match analogy, highlighting sampling concepts, continuous versus discrete viewing, and efficiency gains in discrete processing for digital signal processing.
demonstrates a continuous-time filtering example using a capacitor to suppress high-frequency noise in a sensor signal, with the capacitor's reactance creating a low-pass effect, and its low cost.
Explore why digital signal processing offers precise, drift-free filtering and easier frequency tuning compared to continuous-time filters with passive components, tolerance issues, and higher costs for precision.
Explore how digital signal processing relies on discrete sampling, contrasting continuous and discrete processing, and implementing DSP filters with code running on processors using time intervals.
Programmable processors such as DSPs, FPGAs, and microcontrollers offer higher computational power and easier implementation of complex algorithms than passive continuous-time filters, while remaining drift-free and cost-effective.
Learn how a continuous signal converts to digital form through quantization, using binary digits and multiple levels, and balance quantization error with hardware cost as bit depth increases.
The lecture introduces analog to digital conversion, detailing sampling, quantization, a capacitor-based sample-and-hold mechanism, and encoding into binary levels for DSP processing.
Explain how an adc interfaces with a processor, covering start and complete signals, sample and hold, quantization, and result register, with flags and interrupts for clocked sampling.
Conclude this section by comparing digital signal processing to continuous signal processing, exploring analog-to-digital converters, practical applications, and simple sensor filter examples that illustrate when digital processing is advantageous.
Explore the theory of digital signal processing and the LaPlace transform as the foundation for design and frequency analysis of systems.
Explore how capacitors and inductors shape signals in analog filters, showing how capacitors bypass high-frequency currents and inductors block them, using derivative and integral actions.
Learn how analog LC filters use inductors and capacitors to create low-pass behavior, smoothing high-frequency noise through the double integration of current to the output voltage.
Explore transformations that convert equations describing physical phenomena into informative forms, revealing properties and easing analysis. See how Laplace transforms apply to signal processing and filter design.
Learn how the Laplace transform converts time-domain signals to the s-domain, turning differentiation into multiplication by s and integration into division by s, yielding simple polynomials in signal processing.
Explore how the Laplace transform converts inductor and capacitor relations from time to the frequency domain, turning differential equations into simple polynomials in s.
Explore how the Laplace transform converts time-domain equations to a frequency-domain form, and the inverse transform is never required in this course; design and simulate filters in the frequency domain.
Explain how the Laplace transform converts time-domain signals to the s-domain, simplifying circuits and differential equations into polynomial forms for easier analysis and filter design.
Understand what s represents in the Laplace transform and how time signals map to the frequency domain. Learn how magnitude and angular frequency govern system behavior across frequencies.
Explore how Laplace transform concepts translate to the digital domain, viewing frequency as both an operator and a discrete time delay or advance in the z-domain.
Learn how continuous-time systems map to the discrete domain through z-transform concepts, evaluate zero-order and first-order hold methods, and adopt the bilinear transformation for stable, practical continuous-to-digital conversion.
Review the core theory of the Laplace transform, its shift from continuous to discrete domains, and how it links circuit behavior to frequency-based digital filter design.
Explore signal processing theory, learn how the Laplace transform converts time signals to the frequency domain, and transition from continuous time domain to the digital domain to implement digital filters.
Install Python and Anaconda, set up virtual environments, and use Jupyter Notebook for interactive coding; learn basic Python and plotting with matplotlib to design filters in signal processing.
Explore installing Python with the Anaconda distribution, understand dependency handling via a package manager, and set up cross-platform environments and the Jupiter notebook for Python projects.
Download and install the Anaconda distribution on Windows, using the 64-bit installer. Follow steps for license agreement and setting the default Python for machine learning, data science, and artificial intelligence.
Install Anaconda on Linux by downloading the Linux installer, running bash, accepting the license, using the default home install, and choosing whether to initialize in the terminal.
Explore how to use Anaconda virtual environments to isolate Python project dependencies and prevent version conflicts by running each project in its own container-like environment.
Set up and manage conda environments with the Anaconda prompt, create and activate named environments, install specific Python versions, and handle dependencies for isolated projects.
Learn to set up and manage an Anakonda environment on Linux. Create, list, activate, deactivate, and install Python versions and packages.
Choose and set up a suitable code editor or IDE for Python, such as PyCharm, Visual Studio Code, Sublime Text, or Atom, alongside Anaconda environments, before coding.
Create and activate a new conda environment for DSP class, and install numpy, scipy, and matplotlib to enable Python-based signal processing in this course.
Launch and use Jupiter notebook within the active Anaconda environment to run Python interactively in your default browser, and practice commands with shift-enter.
Learn to use numpy arrays instead of Python lists, import numpy as np, and create, index, and slice arrays with arange, understanding start, stop, and step for signals.
Learn to generate signals with numpy arrays by applying elementwise operations and functions, compare numpy arrays with Python lists, and transform each element for efficient signal processing.
Learn to plot functions with matplotlib, create sine and cosine waves, customize colors and figure size, and add legends, axes labels, and titles for clear waveform plots.
Learn how to sample a continuous sensor signal into discrete numpy arrays using regular time intervals. Use start:stop:step slicing to extract samples for digital signal processing workflows.
Generate a 50 Hz sine wave with magnitude 5 in Python, sample at 5 kHz for one second, then compare full and sampled signals in matplotlib.
Install and set up Python in the notebook with Anaconda, explore basic signal processing concepts, generate and sample signals, and prepare to implement filters in the next section.
Bridge the gap between analog filter design and digital implementation by showing how inductors, capacitors, and resistors translate into digital filters.
Explore digitally emulating a capacitor to design a fully digital filter. Map the capacitor equation from Laplace to discrete time via s-to-z, then derive a difference equation for implementation.
Contrast offline analysis with real-time processing, highlighting past and present samples and the challenge of unknown future values for discrete signal implementations.
Transform the capacitor filter equation into a delay-based form using the delay operator and real-time processing, computing the present measured value from past measured values and past computed values.
Code a capacitor filter in a discrete-time simulation by applying the filter equation to every sample. Manage input current signals, time steps, and past values to compute output voltage samples.
Design and analyze a digital capacitor filter in a simulated workflow, setting up signals, sampling, applying the filter equation, and plotting input versus output to study results.
explains the dc offset from a capacitor filter when fed a sinusoid, due to indefinite integration and initial conditions, and notes losses will dissipate it.
Learn how to model loss in a capacitor using a parallel resistance to remove dc offset, relate voltage and current, and prepare for discrete-time implementation.
Develop a digital model for a lossy capacitor filter from a resistance loss across the capacitor, transform with Laplace, then apply a bilinear transformation to derive an implementable difference equation.
Model the lossy capacitor in an rc circuit using the Laplace transform, introduce a loss resistance, and observe the dc offset settling over time.
Simulate the digital model of an inductor filter using the inductor’s integral relation and bilinear transform to obtain a discrete-time, z-domain representation via Laplace.
Explore the digital inductor filter by adapting a capacitor filter model to voltage inputs, simulate current responses, and examine DC offset and impedance effects in a 50 Hz power system.
Model the losses in the inductor with a series resistor, since magnetic field energy depends on current; the series loss causes dissipation while the inductor remains in the circuit.
Develop a discrete-time model of lossy inductors by converting the integral loss equation to the frequency and z-domain, deriving a practical circuit implementation for power engineers.
Explore how a lossy digital inductor filter behaves in a resistive-inductive circuit, highlighting the impact of series resistance on time constant, DC offset, and settling time through simulation.
This lecture demonstrates a digital model of an lc filter by converting circuit elements to their laplace equivalents and deriving the transfer function, then applying bilinear transformation for discrete-time implementation.
Derive the discrete lc filter equation from the continuous model via Laplace transform, and implement a second-order digital filter with x[n], y[n], and past states for a 200 μs sample.
Analyze a digital LC filter by simulating input and output, exploring harmonics, noise, and sampling effects, and showing how changing L and C shapes resonance and filtering.
Analyze how inductance, capacitance, and resistance shape an LC filter’s transfer function in the frequency domain. Apply frequency response design principles to tailor digital filter behavior and test outcomes.
Conclude this section by building an inductor-capacitor filter and comparing analog to digital implementations, using Borst analysis to illustrate frequency response and previewing Python and SciPy signal toolbox.
Explore designing digital filters directly with the signal processing package, analyzing frequency response, converting continuous-time transfer functions to digital form, and cascading filters—using Python, no equations, only programming.
Explore how Bode plots reveal a system's frequency response, showing magnitude in decibels and phase, derived from a transfer function and visualized with Python tools.
Learn why semi-logarithmic frequency axes simplify Bode plots for wide ranges, preserving accuracy while clarifying the filter’s frequency response.
Explore linear time invariant systems by representing filters with transfer functions, expressing polynomials as coefficient lists for numerators and denominators, and previewing frequency response plotting.
Learn to generate bode plots with SciPy for a transfer function, plotting magnitude and phase over a logarithmic frequency axis using LC and RC values and a denominator-only model.
analyze the LC filter's frequency response with Bode plots, focusing on magnitude in decibels, resonance, and the minus 40 decibels per decade roll-off.
Explore the generalized second-order pole transfer function with ω0 and damping ζ, and see how adjusting ζ and ω0 alters magnitude and phase in digital filters implemented in Python.
Learn continuous to discrete conversion by deriving a discrete transfer function in the z-domain and implementing the y[n] and y[n-1] relation using a sampling time, noting zero hold and trapezoidal.
Learn to code the generalized second order pole by implementing a discrete system, plotting magnitude and phase, and comparing input and output signals across multiple windows.
Simulate the generalized second order pole and verify the magnitude response with a 50 Hz input. Note the small phase lag and plan to discuss noise next lecture.
Analyze how a generalized second order pole shapes a transfer function, showing unity gain, a resonant peak, and a -40 dB/decade roll-off, and how filters suppress noise while preserving frequency.
Explore the generalized first order pole, its cutoff frequency Omega not, and how the transfer function shapes magnitude response in LC-filtered signals.
Explore the generalized first-order zero as the reciprocal of a pole in transfer functions, noting its simple, non-resonant behavior at the cut-off frequency omega.
Explore the generalized second order zero as the reciprocal of the generalized first order, defined by the resonant frequency omega_n and damping zeta, implemented as a filter for transfer functions.
This lecture shows how to synthesize higher order transfer functions by factoring into second-order and first-order sections and combining them, highlighting hardware implementation, discretization, and stability concerns.
Examine how higher-order filters, including the second-order pole filter, improve noise suppression when the noise approaches the signal, and why cascade designs may be necessary.
Redefine filters and set the resonant frequency to about half the rejection frequency to prevent input magnification, then verify attenuation through simulations and practice trial-and-error to design higher-order filters.
Learn how to synthesize higher order transfer functions by multiplying polynomials using polymul, and feed separate numerators and denominators into the LDA function for accurate frequency response.
Design a double pole filter by cascading two second order transfer functions, defining numerator and denominator polynomials, and analyze magnitude, decibels, and phase delay.
Implement a double pole filter by cascading two second-order sections. Explore hardware implications for power engineers, such as stability and coefficient quantization, versus a single fourth-order approach.
Address phasing delay in a double-pole filter by tuning damping and natural frequency, analyze magnitude and phase, and explore cascading a first-order zero and a second-order zero for improvement.
Design a combined filter by pairing a first-order pole with a second-order pole, and study the resulting transfer function and phase behavior in digital signal processing for power engineers.
Learn how to implement a notch filter by adding zeros to cancel a resonant frequency, shaping a second order response to preserve higher frequencies.
Explore notch filter design using a two-pole, two-zero setup to level the magnitude around a chosen resonant frequency, using trial-and-error to place the notch and examine magnitude and phase responses.
Examine implementing a zero for a notch filter using second-order zeros, and why improper transfer functions hinder continuous-to-discrete conversion. The lecture outlines a workaround and next steps.
Learn a practical workaround to discretize improper transfer functions by treating a zero as a pole and flipping numerator and denominator for implementation. It covers continuous-to-discrete conversion.
Complete the notch filter by implementing the remaining zeros and poles in the cascaded transfer function, update coefficients, and validate the build before analyzing performance in the next lecture.
Analyze how a notch filter eliminates interference around 11,500 Hz while preserving the fundamental and higher frequencies, using cascaded second-order sections and frequency response analysis.
Define the filter objectives and identify which input frequency components to preserve or remove, then balance magnitude and phase to meet end-user tolerances.
Conclude this section on designing digital filters by synthesizing complex filters from basic building blocks, analyzing their frequency response, and validating results with simulations using Python.
Conclude by reinforcing hands-on learning in digital signal processing, guiding you to design filters from scratch with Python, explore open source tools, and apply concepts to real hardware projects.
This course introduces signal processing to a power engineer with the objective of fulfilling one of the most pressing needs faced in power engineering - filter design. The course begins with a basic introduction to the concept of signal processing, discrete time systems and basic hardware applications. The course dives into the mathematics behind signal processing in order to translate many of the obscure concepts into plain English with the final objective of implementation in hardware. The course will then have code-along sessions where students will learn how filters are designed, analyzed and implemented using Python, Numpy, Scipy and Matplotlib. The course has a section on how to install and setup software on different operating systems and used only free and open source software, making the course and the materials accessible to students irrespective of their background.