Saturday, 28 February 2026

TDR Pulse Generator (Microchip) with Housing

Introduction 
This post continues a previous post that used a Microchip microcontroller and a buffer chip to generate a fast-rising edge. In this edition, the design is updated to suit an aluminium housing.

Assembled Pulse Generator Unit
Assembled Pulse Generator Unit

Another Release
To cater to those requesting a USB-powered unit in a ready-made enclosure, the same Microchip microcontroller (ATmega16U2) and driver design from the previous blog were used. Some design changes were made to improve manufacturability, such as using a right-angle PCB-mount SMA connector.

For a small sample run of the new design, the rise time is comparable to the previous design, at 1.1 ns and faster than the original design at 658 ps.

Design Changes
The Microchip microcontroller (ATmega16U2) can be USB-powered (5 V) and operate at a logic voltage of 3.3 V. An external linear regulator was chosen instead of using the UCAP 3.3 V output supply from the ATmega, as the UCAP supply is intended for only low-current loads.

The self-powered connection example is shown in Section 20.3 USB Module Powering Options of the ATmega16U2 datasheet (doc7799.pdf).

ATmega16U2 Bus Powered Example (Courtesy Microchip)
ATmega16U2 Bus Powered Example (Courtesy Microchip)

With the power supply reduction to the ATmega I/O, the hex Schmitt-trigger power supply was also reduced to 3.3 V. The output performance was tested with Nexperia parts 74AHC04APW and 74LVC04APW.

To support DFM (Design for Manufacturing), the hand-soldered SMA connector from TE Connectivity (5-1814832-1) was replaced with a PCB-mount right-angle part from Molex (73391-0080).

Updated Pulse Generator PCB (2D)
Updated Pulse Generator PCB (2D)

Updated Pulse Generator PCB (3D)
Updated Pulse Generator PCB (3D)

Lastly, the board shape was resized to suit a metal case. A Hammond aluminium case (1455D602BK) was chosen for the PCB. This case was at the time less than USD 8 in quantities of 10 pieces and available at several online stores. A 3D-printed plastic case would also be an ideal, cost-effective alternative.

The plastic end caps supplied with the Hammond enclosure were replaced with PCBs. This change was aimed at a more turnkey solution, meaning the pulse generator PCB and end caps could come from the same PCB fabricator.

Pulse Generator PCB Assembly Modelled in Fusion 360
Pulse Generator PCB Assembly Modelled in Fusion 360

Designing the end caps was performed after the pulse generator PCB was completed, with some adjustments.

PCB End Cap (SMA End) in Fusion 360
PCB End Cap (SMA End) in Fusion 360
 
PCB End Cap (USB End) in Fusion 360
PCB End Cap (USB End) in Fusion 360

After the pulse generator PCB was loaded into Fusion 360 and the end cap dimensioned, the PCB end caps were created in the PCB tool.

PCB End Cap (SMA End)
PCB End Cap (SMA End)
 
PCB End Cap (USB End)
PCB End Cap (USB End)


Modelling in Fusion 360
The pulse generator PCB dimensions were chosen after making physical measurements of a Hammond aluminium case.

Pulse Generator PCB with Hammond Enclosure
Pulse Generator PCB with Hammond Enclosure

Hammond provides a CAD file for the aluminium case; however, a physical measurement for the PCB width was performed because of the powder coating.

Assembly and Tests
The pulse generator PCB Rev 3 and end caps were sent for manufacture. For the 50 Ω controlled impedance on the pulse generator PCB, a predefined layer stackup was selected from the PCB manufacturer's options.

Pulse Generator Blank PCB
Pulse Generator Blank PCB

After assembling the pulse generator, programming and performing validation checks, the pulse generator PCA was slid into the Hammond case – almost. Checking another case, the PCA slid in very tightly. To make the PCA fit in all the aluminium cases, light sanding was required on the long edge of the PCB – tolerances and case anodising were possibly the culprit.

To fit the PCB end caps, the Hammond-supplied thread rolling steel screws #6 x 3/8" were changed to a set of salvaged pan head Philips screw. Using this type of screw is not ideal, and it should be replaced with a thread-cutting type to suit the C-shaped screw port in the Hammond case.

Pulse Generator SMA End View
Pulse Generator SMA End View

Changing the straight SMA to a right-angle SMA connector had a negligible effect on the rising edge.

With a 74AHC04PW fitted, the rise time (20-80 %) was 1.18 ns. Using a 74LVC04PW, the rise time (20-80 %) was 759 ps.

Pulse Generator Output Rise Time (74AHC04)

Pulse Generator Output Rise Time (74AHC04)

Pulse Generator Output Rise Time (74LVC04)
Pulse Generator Output Rise Time (74LVC04)

Summary and Future Updates
As noted by readers, this design is slower than other designs offered on the market. However, as readers continue to use this design, write their own USB interfaces and highlight the need for faster solutions, new posts on this subject will be made available.

Engineering Files
The same Atmel Studio project applies to this project. Below is the updated revision 4 schematic, PCB Gerbers and PCB BOM for download. The Rev 4 includes only a minor top-layer change near the SMA connector.

In addition to the PCBs, the Hammond case 1455D602BK and suitable screws are required, for example, M3 x 8 mm thread cutting.

Pulse Generator Microchip Studio Project

Pulse Generator Schematic Rev4









Pulse Generator Bill of Materials Rev4






















Saturday, 31 January 2026

Model Rocket Engine Test Stands

 Introduction 
This blog provides ideas and an example for 3D-printed metal rocket test stands designed to accommodate the popular Estes-sized model rocket engines.

Rocket Engine Holders
Rocket Engine Holders

Why an Engine Test Stand?
To conduct rocket engine tests and measurements, a model rocket engine test stand was required. The stand was designed to serve as a motor anchor and mount on the horizontal axis. Since pricing from 3D metal printing companies has become more cost-effective, two stand designs were tried. Cost-reducing changes were implemented in the first revision test stands with a focus on reducing the printed weight.

Development and Manufacture
Autodesk’s tool, Fusion 360, was used in the development of the rocket engine holders. JLC3DP performed the 3D printing in stainless steel (BJ-316L). 

What Changes?
Since 3D printing can be charged by weight (or volume), and because the thrust axis of the rocket engine is well established, the side walls of the rocket engine stand were partially excluded. The exclusion (cutout) in the stand body, as depicted in the images below, reduced the weight by approximately half. Additional changes could be made to reduce the weight if the focus were on cost-effectiveness, and with that in mind, the CAD files are provided at the end of this post for download.

3D Printed Test Stand
The first test stand was a simple prototype for Estes A-C engines. Some engines did not fit entirely into the 3D-printed metal holder, while others were easily inserted. This was because there are variations in the diameter of rocket engines, and older engines may have expanded with age.

Model of Model Rocket D Engine Holder
Model of Model Rocket D Engine Holder

Model of Model Rocket C Engine Holder
Model of Model Rocket C Engine Holder

Some videos below show how the motor was mounted. As a side note, the exhaust temperature was measured at almost 600 C, 100 mm from the engine nozzle.

 
 

 


Downloads

Files are exported from Fusion 360.

Fusion 360 C Engine Holder Model

C Engine STL File

The D engine holder model below has a 0.5 mm larger bore than the model in the above videos.

Fusion 360 D Engine Holder Model

D Engine STL File

 

Tuesday, 16 December 2025

Drill Press Controller Update Part 4

Introduction 
This blog 
details the fitting of the drill press controller's input circuitry and simple validation testing of the updated input circuitry.

Input Device Validation
In the earlier drill press post describing updates to the controller, the input circuitry (24 V) was changed from using discrete components to the PLC (Programmable Logic Controller) input device, the MAX22191, from Analog Devices.

The PLC input devices were soldered to the prototype board along with the input connector. It should be noted that the footprint for the MAX22191 on the board was found to be incorrect; however, testing was still possible.

Controller and Sensor Test Setup

Controller and Sensor Test Setup 

The output of a power supply was connected to one of the PLC inputs, and the ON/OFF thresholds were measured by varying the voltage to the MAX22191 in 100 mV increments. The approximate threshold voltages were measured for an ON at 8.9 V, and the OFF voltage was 7.8 V. These voltages fall within the range specified by the ‘IN Voltage Upper Threshold’ and ‘IN Voltage Lower Threshold’ as stated in the MAX22191 datasheet.

Connecting a Proximity Sensor
The drill press controller utilises a proximity sensor to detect the spindle speed, with the output signal from the sensor resembling a square wave. The proximity sensor was connected to one of the MAX22191 inputs for testing. The output of the MAX22191 connects directly to the microcontroller (PSoC), so a pass-through connection was made in the PSoC for testing purposes. Using the PSoC fabric, the sensor input was routed to a test pin, which had a test pad.

PSoC Creator Spindle Pass-Through Connection
PSoC Creator Spindle Pass-Through Connection

Shown below is a pulse from a magnetic sensor and the PSoC test pin, as measured by an oscilloscope. Oscilloscope channel 1 represents the input to the MAX22191, and channel 2 represents the PSoC test pin output. Upon reviewing the input and output signals, there is little difference in the timing of the signals, which is ideal for ensuring no change to the spindle 
speed measurement.

Sensor Test Pulse Measurement
Sensor Test Pulse Measurement

As an additional check, the delay from the proximity sensor to the rising edge of the output signal was also captured, as shown in the image below.

Sensor Test Pulse Rising Edge Measurement
Sensor Test Pulse Rising Edge Measurement

In the next post, the final check will be performed on the debug channel, which is a TTL signal, and the circuit board will be updated with any changes.

Tuesday, 11 November 2025

WS2812 PSoC5 Creator Project

Introduction 
This short blog continues a previous post about a WS2812 addressable LED for an Infineon (Cypress) PSoC 4 microcontroller. This blog focuses on the project for the PSoC 5 with testing performed on a CY8CKIT-059 development board.

Rebuilding the Project
The PSoC5 project, ‘ws2812_test’, was downloaded from a post on the Infineon Community site.

Upon opening the PSoC5 project, the same issue noted in the previous blog with the PSoC4 was observed. The missing component is evident in the top-level design of the PSoC project.

Missing Components in PSoC Top Design
Missing Components in PSoC Top Design

Unlike the previous post, where the WS2812 library was not included in the compressed project, the WS2812 library is included in the compressed project.

WS281xLib in PSoC Project Folder
WS281xLib in PSoC Project Folder

The issue with the missing component was resolved by updating the project Dependencies in PSoC Creator.

PSoC Creator Dependencies - StripLightLib Error
PSoC Creator Dependencies - StripLightLib Error

The dependency for the existing WS2812 library was deleted. Next, the dependency for WS281xLib was added again to the project. The WS2812 folder in the local ws2812_test project was chosen.

PSoC Creator Dependencies - WS281xLib
PSoC Creator Dependencies - WS281xLib

After exiting the project Dependencies window, the Top Design sheet in the project displays the previously missing WS2812 component.

Updated Components in PSoC Top Design
Updated Components in PSoC Top Design

Before rebuilding the project, a resistive pull-up was added to the SW button to suit a PSoC development board.

Switch Input Pin Configured with Resistive Pull-Up
Switch Input Pin Configured with Resistive Pull-Up

The CY8CKIT-059 development board does not appear to have a resistive pull-up connected to the pushbutton switch ‘SW’ on the development board.

CY8CKIT-059 User Push Button Connection
CY8CKIT-059 User Push Button Connection

This information is noted in Section 3.1 Theory of Operation, in the User Manual. With the default code implementation, the WS2812 will be driven by the development board as soon as the board is powered via the USB KitProg or PSoC connector.

Note from CY8CKIT-059 User Manual
Note from CY8CKIT-059 User Manual


Testing
A WS2812 module with eight LEDs was tested using the CY8CKIT-059 development board. The default code is configured for a single LED in blue, as shown below.


A modification is shown below for festive celebrations!


The LED colours for the above example were extracted from Line 117 in the PSoC project StripLights.c file. Setting of the two LED colours used with the Modulo operator, as shown below in main.c

Updated Code in Main.c from Line 54
Updated Code in Main.c from Line 54

Downloads
Linked below is an updated release of the PSoC project with the corrected dependencies to suit the CY8CKIT-059.

Updated Original PSoC5 Application - WS2812_test


Monday, 27 October 2025

PSU Characterisation with Rigol Equipment using SCPI

Introduction 
This brief blog provides a hobbyist solution for characterising the performance of devices such as DC supply modules using measurements from SCPI-capable test equipment.

Set up for Power Supply Test Fixture
Set up for Power Supply Test Fixture

Datasheets and Measurements
In most cases, the datasheet for a piece of hardware, be it a component or a printed circuit assembly (PCA), will provide sufficient information. For other cases, the performance or characterisation of the hardware requires a specific test or behaviour to be verified or quantified.

DC Supply Module Test (Example)
In this blog, the power-up voltage of an off-the-shelf power supply module was logged for different temperatures. The Device Under Test (DUT) was the STS1024S05 from XP Power.

A small test fixture was created to test multiple XP Power modules. In this example blog, the schematic shows connections to the supply.

Schematic for Test Fixture
Schematic for Test Fixture

The test fixture used pogo pins to connect to the castellated power module pads and banana sockets to interface with the test equipment.

Assembled Test Fixture with Device Under Test (DUT)
Assembled Test Fixture with Device Under Test (DUT)

Test Software
The project's test software was originally started with Lab Windows. However, with many PyVISA Python examples available, Python in VS Code was selected instead. A Python script from Core Electronics was almost identical to the script required test setup, so the script was modified for this example. All credits to the team at Core Electronics for the original Python script.

Changes were made to the original script to suit the test setup. In the updated script, the test equipment type, the voltage step size of 100 mV, and the reported and logged voltages were updated as published here.

Measurements
The temperature was verified with a PC210 thermal camera for the duration of the measurement. The temperature variation was around 5 °C, which was attributed to the heating and cooling equipment. 

A full listing of the measurements is available in a combined Excel file here

Plotted below are measurements for the voltage range between DC 5.0 V and 6.0 V, where the DUT output was activated. The plot indicates differences in the DUT turn-on voltage for the temperature range sampled.

Measurement Results with STS1024S05
Measurement Results with STS1024S05

Sunday, 5 October 2025

Drill Press Controller Update Part 3

Introduction 
This blog details 
retesting the drill press controllers' DC-DC power supply, fitting components related to the outputs and testing the output drivers.

Retesting the Power Supply
The original inductor fitted to the PCB (Printed Circuit Board) was removed and replaced with a 10 μH inductor. Testing the supply with the same load as the last post, the regulation at 165 mA and 330 mA was better than 0.1 %. The unloaded voltage was measured at 3.36 V, which is within component tolerances.

A short regulation test was made on the output of the AC-DC bricks after fitting the necessary parts to the PCB. The bricks output was as expected in tolerance.

PCB Setup for Power Supply Testing
PCB Setup for Power Supply Testing


Fitting Output Connected Microcontroller
The microcontroller and associated output hardware were fitted to the PCB, after which tests were performed. For the relay outputs, the output driver VND5160J was fitted to the PCB and then load tested. Separate FDN337N devices control the emergency stop and status LEDs, which were also checked.

Solid State Relay (SSR) Outputs
Following the fitting of the microcontroller and the output driver for the SSR, an external AC supply, SSR, and mains lamp were connected.

Instead of the previously mentioned SSR from TE, part SSRD-240D25A, a Multicomp MPKSI240D10-L(070) was selected. The control voltage for the Multicomp part is between DC 4 – 32 V, meaning an installation can be configured with one or two SSR devices. The clip below shows a lamp connected through the SSR powered by a transformer. The PSoC was programmed to toggle the SSR control input.


For reference, the output of the SSR was captured on an oscilloscope.

SSR Output
SSR Output

Status and Emergency Stop LEDs
The EAO illuminated pushbutton featured in the original drill press design was listed as superseded and replaced with the EAO part 84-5241.2B20. The original code was updated to flash the status LED, indicating the code was operating. No changes were needed for the Emergency Stop LED. In the clip below, both LEDs are shown operating.


In the next post, the input circuitry will be fitted and tested.

Sunday, 14 September 2025

Gravity Lightning Sensor Adaptor Board for Arduino

Introduction 
This short post contains details on an Arduino-compatible circuit board (board) to carry the Gravity lightning sensor module.

Custom Shield
In a previous blog, a custom Arduino board with a ScioSense AS3935 lightning sensor was designed. Instead of using a dedicated design, a Gravity Lightning Sensor Module (SEN0290) was used in conjunction with a simplified board to carry the module. This board, with the sensor module, could easily be assembled in educational environments when required. The Gravity module is commonly connected to an Arduino with jumper cables, however a custom board was created to provide a permanent fixture.

Simplified Gravity Sensor Board for Arduino
Simplified Gravity Sensor Board for Arduino

Circuit Board Build
The board consists of a few connectors for the Arduino and the sensor module. The custom board was designed to use a standard 4-pin to 4-pin sensor cable to connect to the Gravity module.

Grove 4-pin through-hole connectors were chosen. The pin mapping on the 4-pin connectors for the I2C was adjusted to account for the difference between the Gravity Sensor and the Grove RGB LED Matrix.

Circuit Board with Gravity Sensor Module
Circuit Board with Gravity Sensor Module

Test Data
After completion of the hardware pictured above and connection of the module to an Arduino Uno, the example ‘DFRobotAS3935LightningSensorDetails.ino’ code was uploaded to an Arduino Uno.

Arduino Sketch for Circuit Board with Gravity Sensor
Arduino Sketch for Circuit Board with Gravity Sensor

On running the Uno, various noise sources in the development area resulted in continuous ‘Disturber discovered!’ messages. After some tweaking of the Arduino example, the settings in the code listed below yielded more stable lightning measurement results.

Changes in setup
lightning0.setOutdoors();
lightning0.disturberDis();
lightning0.setNoiseFloorLvl(1);
lightning0.setWatchdogThreshold(1);
lightning0.setSpikeRejection(1);

Below is a contiguous debug output from the Arduino debug running the sketch ‘DFRobotAS3935LightningSensorDetails.ino’ with the above modified settings.

DFRobot AS3935 lightning sensor begin!
set up for outdoor operation
AS3935 manual cal complete
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 0
Reg 0x05: 0
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 10 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 140
Reg 0x05: 45
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 5 km
Intensity: 10
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 79
Reg 0x05: 203
Reg 0x06: 2
Reg 0x07: 5
Reg 0x08: 12
10
Lightning occurs!
Distance: 10 km
Intensity: 4
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 201
Reg 0x05: 39
Reg 0x06: 1
Reg 0x07: 10
Reg 0x08: 12
4
Lightning occurs!
Distance: 10 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 115
Reg 0x05: 9
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 10 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 97
Reg 0x05: 48
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 10 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 208
Reg 0x05: 41
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 10 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 108
Reg 0x05: 35
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
0
Lightning occurs!
Distance: 10 km
Intensity: 1
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 155
Reg 0x05: 101
Reg 0x06: 0
Reg 0x07: 10
Reg 0x08: 12
1
Lightning occurs!
Distance: 14 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 233
Reg 0x05: 25
Reg 0x06: 0
Reg 0x07: 14
Reg 0x08: 12
0
Lightning occurs!
Distance: 14 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 159
Reg 0x05: 13
Reg 0x06: 0
Reg 0x07: 14
Reg 0x08: 12
0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 0
Reg 0x05: 0
Reg 0x06: 0
Reg 0x07: 27
Reg 0x08: 12
0
Lightning occurs!
Distance: 27 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 43
Reg 0x05: 6
Reg 0x06: 0
Reg 0x07: 27
Reg 0x08: 12
0
Lightning occurs!
Distance: 17 km
Intensity: 1
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 144
Reg 0x05: 73
Reg 0x06: 0
Reg 0x07: 17
Reg 0x08: 12
1
Lightning occurs!
Distance: 27 km
Intensity: 0
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 65
Reg 0x05: 21
Reg 0x06: 0
Reg 0x07: 27
Reg 0x08: 12
0
Lightning occurs!
Distance: 12 km
Intensity: 2
Reg 0x00: 28
Reg 0x01: 17
Reg 0x02: 193
Reg 0x03: 32
Reg 0x04: 216
Reg 0x05: 159
Reg 0x06: 0
Reg 0x07: 12
Reg 0x08: 12
2

Gerber and Lightning PCB Parts

Lightning (PCB) Gerber

 

Lightning Project Parts

Item Description Quantity
1 Gravity Lightning Sensor Module (SEN0290) 1
2 Lightning PCB 1
3 Grove 4-pin through-hole 1
4 Grove 4-pin to 4-pin connector cable 1
5 Arduino stackable headers 1
6 Header pins for Gravity IRQ connection 1