Adventures in Signal Processing with Python
Author’s note: This article was originally called Adventures in Signal Processing with Python (MATLAB? We don’t need no stinkin' MATLAB!) — the allusion to The Treasure of the Sierra Madre has been removed, in deference to being a good neighbor to The MathWorks. While I don’t make it a secret of my dislike of many aspects of MATLAB — which I mention later in this article — I do hope they can improve their software and reduce the price. Please note this...
Implementation Complexity, Part II: Catastrophe, Dear Liza, and the M Word
In my last post, I talked about the Tower of Babel as a warning against implementation complexity, and I mentioned a number of issues that can occur at the time of design or construction of a project.
The Tower of Babel, Pieter Bruegel the Elder, c. 1563 (from Wikipedia)
Success and throwing it over the wallOK, so let's say that the right people get together into a well-functioning team, and build our Tower of Babel, whether it's the Empire State Building, or the electrical grid, or...
Implementation Complexity, Part I: The Tower of Babel, Gremlins, and The Mythical Man-Month
I thought I'd post a follow-up, in a sense, to an older post about complexity in consumer electronics I wrote a year and a half ago. That was kind of a rant against overly complex user interfaces. I am a huge opponent of unnecessary complexity in almost any kind of interface, whether a user interface or a programming interface or an electrical interface. Interfaces should be clean and simple.
Now, instead of interface complexity, I'll be talking about implementation complexity, with a...
Isolated Sigma-Delta Modulators, Rah Rah Rah!
I recently faced a little "asterisk" problem, which looks like it can be solved with some interesting ICs.
I needed to plan out some test instrumentation to capture voltage and current information over a short period of time. Nothing too fancy, 10 or 20kHz sampling rate, about a half-dozen channels sampled simultaneously or near simultaneously, for maybe 5 or 10 seconds.
Here's the "asterisk": Oh, by the way, because the system in question was tied to the AC mains, I needed some...
Oscilloscope review: Hameg HMO2024
Last year I wrote about some of the key characteristics of oscilloscopes that are important to me for working with embedded microcontrollers. In that blog entry I rated the Agilent MSOX3024A 4-channel 16-digital-input oscilloscope highly.
Since then I have moved to a different career, and I am again on the lookout for an oscilloscope. I still consider the Agilent MSOX3024A the best choice for a...
How to Estimate Encoder Velocity Without Making Stupid Mistakes: Part I
Here's a common problem: you have a quadrature encoder to measure the angular position of a motor, and you want to know both the position and the velocity. How do you do it? Some people do it poorly -- this article is how not to be one of them.
Well, first we need to get position. Quadrature encoders are incremental encoders, meaning they can only measure relative changes in position. They produce a pair of pulse trains, commonly called A and B, that look like...
Chebyshev Approximation and How It Can Help You Save Money, Win Friends, and Influence People
Well... maybe that's a stretch. I don't think I can recommend anything to help you win friends. Not my forte.
But I am going to try to convince you why you should know about Chebyshev approximation, which is a technique for figuring out how you can come as close as possible to computing the result of a mathematical function, with a minimal amount of design effort and CPU power. Let's explore two use cases:
- Amy has a low-power 8-bit microcontroller and needs to compute \( \sqrt{x} \)...
Thoughts on Starting a New Career
I recently completed a 16-year stint at an engineering company. I started there fresh out of college in June 1996. This June I just started a new career as an applications engineer in the area of motor drives at Microchip Technology in Chandler, Arizona. The experience I had in switching jobs was a very enlightening one for me, and has given me an opportunity to reflect on my career. I want to share some of that reflection with you.
Disclaimer: the opinions expressed in this and other blogs...
10 Software Tools You Should Know
Unless you're designing small analog electronic circuits, it's pretty hard these days to get things done in embedded systems design without the help of computers. I thought I'd share a list of software tools that help me get my job done. Most of these are free or inexpensive. Most of them are also for working with software. If you never have to design, read, or edit any software, then you're one of a few people that won't benefit from reading this.
Disclaimer: the "best" software...
Have You Ever Seen an Ideal Op-Amp?
Somewhere, along with unicorns and the Loch Ness Monster, lies a small colony of ideal op-amps. Op-amp is short for operational amplifier, and we start our education on them by learning about these mythical beasts, which have the following properties:
- Infinite gain
- Infinite input impedance
- Zero output impedance
And on top of it all, they will do whatever it takes to change their output in order to make their two inputs equal.
But they don't exist. Real op-amps have...
Hot Fun in the Silicon: Thermal Testing with Power Semiconductors
Here's a trick that is useful the next time you do thermal testing with your MOSFETs or IGBTs.
Thermal testing?!
Yes, that's right. It's important to make sure your power transistors don't overheat. In the datasheet, you will find some information that you can use to estimate how hot the junction inside the IC will get.
Let's look at an example. Here's a page from the IRF7739 DirectFET datasheet. I like this datasheet because it has almost all the thermal stuff on one page,...
Modulation Alternatives for the Software Engineer
Before I get to talking about modulation, here's a brief diversion.
A long time ago -- 1993, to be precise -- I took my first course on digital electronics and processors. In that class, we had to buy a copy of the TTL Data Book* from Texas Instruments.
If you have any experience in digital logic design you probably know that TTL stands for Transistor-transistor logic (thereby making the phrase "TTL Logic" an example of RAS...
How to Include MathJax Equations in SVG With Less Than 100 Lines of JavaScript!
Today’s short and tangential note is an account of how I dug myself out of Documentation Despair. I’ve been working on some block diagrams. You know, this sort of thing, to describe feedback control systems:
And I had a problem. How do I draw diagrams like this?
I don’t have Visio and I don’t like Visio. I used to like Visio. But then it got Microsofted.
I can use MATLAB and Simulink, which are great for drawing block diagrams. Normally you use them to create a...
Baking in Process Improvements
Today I want to talk about process improvements with an example.
Recently, a relative of mine was busy preparing for a garage sale. She had also wanted to make a double batch of chocolate chip cookies, but ran out of time. So I offered to make the cookies with her daughter, who I will call Spunky Shoes. She handed me a printout of the recipe, which I have listed below:
Soft and Chewy Chocolate Chip Cookies(from Danielle Rye’s
Important Programming Concepts (Even on Embedded Systems) Part VI : Abstraction
Earlier articles:
- Part I: Idempotence
- Part II: Immutability
- Part III: Volatility
- Part IV: Singletons
- Part V: State Machines
We have come to the last part of the Important Programming Concepts series, on abstraction. I thought I might also talk about why there isn’t a Part VII, but decided it would distract from this article — so if you want to know the reason, along with what’s next,
Ten Little Algorithms, Part 4: Topological Sort
Other articles in this series:
- Part 1: Russian Peasant Multiplication
- Part 2: The Single-Pole Low-Pass Filter
- Part 3: Welford's Method (And Friends)
- Part 5: Quadratic Extremum Interpolation and Chandrupatla's Method
- Part 6: Green’s Theorem and Swept-Area Detection
Today we’re going to take a break from my usual focus on signal processing or numerical algorithms, and focus on...
Linear Feedback Shift Registers for the Uninitiated, Part IX: Decimation, Trace Parity, and Cyclotomic Cosets
Last time we looked at matrix methods and how they can be used to analyze two important aspects of LFSRs:
- time shifts
- state recovery from LFSR output
In both cases we were able to use a finite field or bitwise approach to arrive at the same result as a matrix-based approach. The matrix approach is more expensive in terms of execution time and memory storage, but in some cases is conceptually simpler.
This article will be covering some concepts that are useful for studying the...
Shibboleths: The Perils of Voiceless Sibilant Fricatives, Idiot Lights, and Other Binary-Outcome Tests
AS-SALT, JORDAN — Dr. Reza Al-Faisal once had a job offer from Google to work on cutting-edge voice recognition projects. He turned it down. The 37-year-old Stanford-trained professor of engineering at Al-Balqa’ Applied University now leads a small cadre of graduate students in a government-sponsored program to keep Jordanian society secure from what has now become an overwhelming influx of refugees from the Palestinian-controlled West Bank. “Sometimes they visit relatives...
Scorchers, Part 4: Burned by the Happy Path (Simon Says)
As engineers, we have to think carefully about how our designs may be used in ways we did not foresee. You may have heard of the happy path, which describes a sequence of events someone takes to use a product — whether it’s software or hardware. The line between software and hardware has gotten pretty blurry in recent years due to the prevalence of embedded systems. (Good news for embedded engineers!) Things have gotten
Supply Chain Games: A Warning on Tariffs
Things have changed quite a bit in the last two years with the automotive & industrial semiconductor market — from extreme chip shortage to inventory glut. I wanted to weigh in on our most recent economic news — tariff wars — while I’m still working on the next chapter of the Supply Chain Games series. (Yes, the last part I published was Part Five on cycle time in August 2023; no, I haven’t forgotten.) Part Six is really tricky to write, and I’m...
Shibboleths: The Perils of Voiceless Sibilant Fricatives, Idiot Lights, and Other Binary-Outcome Tests
AS-SALT, JORDAN — Dr. Reza Al-Faisal once had a job offer from Google to work on cutting-edge voice recognition projects. He turned it down. The 37-year-old Stanford-trained professor of engineering at Al-Balqa’ Applied University now leads a small cadre of graduate students in a government-sponsored program to keep Jordanian society secure from what has now become an overwhelming influx of refugees from the Palestinian-controlled West Bank. “Sometimes they visit relatives...
How to Succeed in Motor Control: Olaus Magnus, Donald Rumsfeld, and YouTube
Almost four years ago, I had this insight — we were doing it wrong! Most of the application notes on motor control were about the core algorithms: various six-step or field-oriented control methods, with Park and Clarke transforms, sensorless estimators, and whatnot. It was kind of like a driving school would be, if they taught you how the accelerator and brake pedal worked, and how the four-stroke Otto cycle works in internal combustion engines, and handed you a written...
The Dilemma of Unwritten Requirements
You will probably hear the word “requirements” at least 793 times in your engineering career, mostly in the context of how important it is, in any project, to agree upon clear requirements before committing to (and hastily proceeding towards) a deadline. Some of those times you may actually follow that advice. Other times it’s just talk, like how you should “wear sunscreen when spending time outdoors” and “eat a diet low in saturated fats and...
Oh Robot My Robot
Oh Robot! My Robot! You’ve broken off your nose! Your head is spinning round and round, your eye no longer glows, Each program after program tapped your golden memory, You used to have 12K, now there is none that I can see, Under smoldering antennae, Over long forgotten feet, My sister used your last part: The chip she tried to eat.
Oh Robot, My Robot, the remote controls—they call, The call—for...
Scorchers, Part 1: Tools and Burn Rate
This is a short article about one aspect of purchasing, for engineers.
I had an engineering manager once — I’ll leave his real name out of it, but let’s call him Barney — who had a catchy response to the question “Can I buy XYZ?”, where XYZ was some piece of test equipment, like an oscilloscope or multimeter. Barney said, “Get what you need, need what you get.” We used purchase orders, which when I started in 1996 were these quaint forms on...
Beware of Analog Switch Leakage Current
I’ve written about leakage current of CMOS circuitry several times previously, but it’s always been as a warning tossed aside, something to scare inexperienced youngsters, like the boogeyman or the chupacabra. Today I want to show you a specific example.
Let’s say I want to make a switchable reference that takes a 1.25V reference voltage and either buffers it or multiplies it by a gain of 2. I have three ideas of circuits that will do this:
In all cases, I have a...
A Wish for Things That Work
As the end of the year approaches, I become introspective. This year I am frustrated by bad user interfaces in software.
Actually, every year, throughout the year, I am frustrated by bad user interfaces in software. And yet here it is, the end of 2017, and things aren’t getting much better! Argh!
I wrote about this sort of thing a bit back in 2011 (“Complexity in Consumer Electronics Considered Harmful”) but I think it’s time to revisit the topic. So I’m...
How to Analyze a Three-Op-Amp Instrumentation Amplifier
There is a useful circuit called an instrumentation amplifier which has several subtle advantages. Back in 2014 I wrote an article called How to Analyze a Differential Amplifier, which is a circuit that comes up so often that every electrical engineer should just know it.
This gives you a gain of \( K \) from input to output if \( R3/R1 = R4/R2 = K \):
$$V_\text{out} - V_\text{ref} = K\left(V_P - V_N\right)$$
If you don’t get the resistor ratios exactly equal...
In Memoriam: Frederick P. Brooks, Jr. and The Mythical Man-Month
It is with some sadness that I have read that Fred Brooks has passed away. Brooks (1931 - 2022) worked at IBM and managed a large team developing the IBM System/360 computers in the early 1960s. Brooks was thirty years old at the start of this project. He founded the Computer Science Department at UNC Chapel Hill in 1964, at the age of thirty-three, acting as its department chair for twenty years. He remained at IBM until 1965, however. During this one-year...
April is Oscilloscope Month: In Which We Discover Agilent Offers Us a Happy Deal and a Sad Name
Last month I wrote that March is Oscilloscope Month, because Agilent had a deal on the MSOX2000 and MSOX3000 series scopes offering higher bandwidth at lower prices. I got an MSOX3034 oscilloscope and saved my company $3500! (Or rather, I didn't save them anything, but I got a 350MHz scope at a 200MHz price.)
The scope included a free 30-day trial for each of the application software modules. I used my 30-day trial for the serial decode + triggering module, to help debug some UART...







