EmbeddedRelated.com

Return of the Delta-Sigma Modulators, Part 1: Modulation

Jason SachsJason Sachs May 28, 20232 comments

Jason Sachs returns to delta-sigma modulators with a hands-on, code-first treatment that focuses on the DAC side of things. Part 1 walks through first- and second-order kernels, linearized analysis, spectra, and practical coefficient choices while illustrating results with Python simulations. Expect clear rules of thumb for A, R, and B, a derivation of noise shaping behavior, and a useful error bound for RC filtering.


STM32 B-CAMS-OMV Walkthrough

Peter McLaughlinPeter McLaughlin April 30, 20231 comment

Want to prototype embedded vision quickly? This walkthrough shows how the STM32 B-CAMS-OMV camera module pairs with the STM32H747I-DISCO discovery kit and the FP-AI-VISION1 function pack to get you running in minutes. The video covers the camera connection interface, key software functions to control and process data, and the ISP features that let image processing run inside the camera. The STM32 H7 project with B-CAMS-OMV drivers is available on GitHub.


Basler pylon on Raspberry Pi with Yocto

Peter McLaughlinPeter McLaughlin January 21, 2023

Basler's pylon can be packaged into a minimal Raspberry Pi Yocto image in a few clear steps. This walkthrough shows how to clone poky with meta-openembedded, meta-raspberrypi and Basler's meta-basler-tools, tweak conf/local.conf to add OpenCV and accept the Basler EULA, build rpi-test-image and generate an SDK for cross-compilation. It finishes by cross-compiling a pylon_example binary, copying it to the Pi and testing with a Basler acA2440-20gm.


Peripheral Interaction Without a Linux Device Driver Using Spidev

Mohammed BillooMohammed Billoo November 20, 2022

Kernel-space drivers are not always necessary; many SPI peripherals can be handled from userspace using spidev. This post shows how to expose an SPI device through the device tree and kernel, wire a Bosch BMP388 to a Toradex Apalis iMX8 Ixora board, and implement a C userspace app that uses ioctl to read the chip ID. Practical tips on SPI settings and logic-analyzer validation are included.


VolksEEG Project: Initial Hardware Architecture

Steve BranamSteve Branam November 2, 20211 comment

The VolksEEG prototype pairs an Adafruit Feather nRF52840 Sense MCU with an ADS1299 analog front end, organized into non-isolated and isolated domains to protect patients. The post explains why isolation is required, which chips bridge the domains, and why simple, high-level power and signal diagrams help clarify the KiCad schematics for engineers and reviewers.


Introducing The VolksEEG Project

Steve BranamSteve Branam October 31, 2021

VolksEEG is an open-source effort to build an FDA-cleared clinical EEG and publish every design so others can manufacture it. The volunteer-driven project centers on the TI ADS1299 8-channel, 24-bit biopotential ADC and combines medical and electrical engineering expertise to confront regulatory, safety, and usability challenges. This blog series will document technical decisions, isolation and safety concerns, and ways engineers can contribute.


Painting with Light to Measure Time

Jason SachsJason Sachs December 26, 2020

When Jason Sachs needed to verify a first-order sigma-delta LED dimming implementation but had no oscilloscope, he turned to long-exposure "light painting" to turn time into space on a photograph. By sweeping the camera across blinking LEDs he captured pulse trains, read the bit patterns from the light trail, and confirmed the result with a tiny Python accumulator model. The post shares practical tips on timing accuracy, exposure, and avoiding ambient-light artifacts.


Tolerance Analysis

Jason SachsJason Sachs May 31, 2020

Jason Sachs walks through practical tolerance analysis by designing a 24V overvoltage detector from the ground up, combining resistor tolerances, temperature coefficients, reference and comparator errors, hysteresis, and dynamic RC behavior. He demonstrates worst-case stacking with real datasheet numbers, shows how solder and mechanical stress affect resistor choice, and sizes filtering so the comparator meets a microsecond-range trip requirement. The article is a hands-on guide full of worked examples and trade-offs for embedded hardware engineers.


Racing to Sleep

Jason SachsJason Sachs December 30, 2019

Jason Sachs walks through a realistic field sensor case study, the BigBrotherBear 2000, to show how a careful power budget exposes surprising energy costs. He demonstrates that radios and data transmission often dwarf quiescent MCU current, explains the race-to-sleep principle for computation-bound tasks, and outlines practical wake-up and measurement trade-offs so engineers can extend battery lifetime in real deployments.


Interfacing with Electrochemical Gas Sensors

CypressCypress February 8, 2018

Stephane Boucher lays out practical rules for connecting electrochemical gas sensors to amplifiers and mixed-signal MCUs. He explains the potentiostat and transimpedance amplifier topology, why the reference electrode must see sub-nanoamp currents, and how GPIO structures in devices like the PSoC 4 can introduce leakage. The post shows how choosing supply and reference voltages yields a near-zero input-current operating point for reliable sensing.


Arduino robotics #4 - HC-SR04 ultrasonic sensor

Lonnie HoneycuttLonnie Honeycutt October 20, 20131 comment

Lonnie Honeycutt shows how to turn a $50 mobile platform into a simple autonomous robot by adding an HC-SR04 ultrasonic sensor to an Arduino. The post walks through wiring, a minimal test sketch and the integration code used on Clusterbot, plus practical tips on range limits, motor choices and library options to make obstacle avoidance reliable for hobby builds.


Return of the Delta-Sigma Modulators, Part 1: Modulation

Jason SachsJason Sachs May 28, 20232 comments

Jason Sachs returns to delta-sigma modulators with a hands-on, code-first treatment that focuses on the DAC side of things. Part 1 walks through first- and second-order kernels, linearized analysis, spectra, and practical coefficient choices while illustrating results with Python simulations. Expect clear rules of thumb for A, R, and B, a derivation of noise shaping behavior, and a useful error bound for RC filtering.


The Other Kind of Bypass Capacitor

Jason SachsJason Sachs January 3, 20173 comments

Most engineers treat bypass capacitors as supply decoupling, but Jason Sachs digs into the other kind: a capacitor placed in the feedback path to tame unpredictable high-frequency plant behavior. He walks through real examples, Bode plots, and a simple RC model to show how the cap forces unity-gain feedback at high frequency, stabilizing switching regulators and wideband amplifiers while revealing the speed versus stability tradeoff.


Someday We’ll Find It, The Kelvin Connection

Jason SachsJason Sachs July 28, 20142 comments

Low-ohm measurements will fool your multimeter unless you use Kelvin connections. Jason Sachs walks through four-wire sensing using a current-limited supply and two DMMs, explains thermoelectric and connector-related errors, and shows why schematics and PCB layout must reflect Kelvin sense pads to avoid subtle measurement and circuit problems.


Using a RTLSDR dongle to validate NRF905 configuration

Fabien Le MentecFabien Le Mentec January 27, 20146 comments

Fabien Le Mentec wanted to be sure his nRF905 radio link was configured correctly before trusting it across seven floors. Instead of guessing, he used a cheap RTLSDR dongle, rtl_fm, and a small custom decoder to inspect the 433 MHz traffic directly. The result was a practical way to validate packet framing, Manchester coding, and signal strength without relying only on the radio module’s own feedback.


Real-time clocks: Does anybody really know what time it is?

Jason SachsJason Sachs May 29, 20118 comments

Most RTC chips still expose calendar fields rather than seconds-since-epoch, forcing embedded engineers to write ugly conversion code. Jason Sachs makes the case for offset encoding, subseconds, and an explicit snapshot feature to simplify interval math, raise precision, and avoid rare timing bugs. Read this practical take on RTC trade-offs and a short wishlist for chip makers.


Introduction to Microcontrollers - Adding Some Real-World Hardware

Mike SilvaMike Silva October 8, 20132 comments

Two blinking LEDs only teach you so much, so Mike designed a docking board that adds a 4x20 HD44780 LCD, a 4x4 button matrix, four LEDs, DIP switches and an ADC potentiometer for AVR and STM32 experiments. This post shows how to wire and drive the HD44780 in 4-bit mode, calibrate microsecond and millisecond software delays, use the busy flag to speed writes, and includes AVR example code to get the display running.


Levitating Globe Teardown, Part 2

Tim WescottTim Wescott November 6, 20139 comments

Tim Wescott opens up a budget levitating globe and shows why it seems magical: a massive 30 mm rare-earth magnet and a deliberately cheap magnetic circuit. He documents a bolt used as the flux core, a likely microcontroller and hall sensor in the head, very fine winding in the electromagnet, and a single-transistor unidirectional drive. Part 3 will measure forces and sensor voltages to build a better controller.


10 More (Obscure) Circuit Components You Should Know

Jason SachsJason Sachs February 5, 20121 comment

Jason Sachs follows up his earlier primer with ten more underused but practical parts that can simplify embedded hardware designs. From MOSFET-based ideal diode controllers that eliminate diode drops to TAOS light-to-frequency sensors that expand dynamic range, the post explains what each component does, when to choose it, and real-world tradeoffs learned from field use. Ideal for engineers looking to broaden their parts toolbox.


How to use I2C devices in (Apache) NuttX: Adding support for an I2C device in your board

Alan C AssisAlan C Assis May 28, 2024

You can add an I2C sensor to NuttX with a few file edits, menuconfig tweaks, and a standard build-and-flash cycle. This guide shows how the BMP280 barometer was integrated into the Raspberry Pi Pico bringup by copying and adapting an existing board driver, wiring the sensor to I2C0, enabling the BMP280 option in menuconfig, and compiling and flashing the resulting nuttx.uf2. It includes exact wiring and build tips.