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

Wednesday, 13 August 2025

Republishing a WS2812 PSoC Creator Project

Introduction 
This short blog republishes a PSoC Creator project that uses a WS2812 component. The WS2812 is an addressable RGB LED, as seen in common devices such as LED strips. The original post with the PSoC Creator Project, ‘WS2812 and 5LP @ 48 MHz’ was posted in the Infineon Developer Community with the project named ws2812_test.cywrk_.Archive01.zip.

Reason to Republish
Four development boards, the micro:bit, Arduino, PSoC, and STM, were chosen for comparison. Most of those boards have been or are currently used in education, and they have a broad sample of projects with code spread across community forums and sites.

Project Example to Compare Development Boards
The addressable RGB LED (WS2812B) was chosen as the example project since LED strips are engaging with students. Example projects were found for all but the PSoC4 part 
CY8C4245AXI-473. The Modus Toolbox PSoC development environment from Infineon supports NeoPixels, but an example did not seem to be available for the PSoC4. The target audience for this project was at the education level, so off-the-shelf and ‘working’ examples were preferred.

Using Modus Toolbox, the CY8C4245AXI-473 PSoC microcontroller was not listed under the ‘Select device part numbers'.

Modus Toolbox BSP Assistant - Device Part Numbers
Modus Toolbox BSP Assistant - Device Part Numbers

A related development kit, CY8CKIT-042, associated with the same PSoC4, was not listed under the Modus Toolbox ‘Select BSP template’.

Modus Toolbox BSP Assistant - Template
Modus Toolbox BSP Assistant - Template

Understandably, the target PSoC is an older device, so some limitations were anticipated. Of course, a PSoC6 development kit could be used with the NeoPixel LEDs, but that was hardly a fair comparison against the slightly slower micro:bit or Arduino.

Finding a WS2812 PSoC4 Example Project
A WS2812 library was available for PSoC5, 
CY8C5888-LP097, by the author, Mark Hastings (Cypress Semiconductor). The example project for the WS2812 was taken from the Infineon community forum, but the project is several years old and contains broken component dependencies.

Later, I was to find another PSoC WS2812 project from the same author called FunWithLEDs. This project contains comprehensive examples of the WS2812.

Rebuilding the WS2812 Example Project
Opening the Top Design in the WS2812 PSoC5 project, some missing components were shown.

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

The missing library was not included with the WS2812 project, so this was found on another site and copied into the project's root folder.

Added WS281xlib to Project Folder
Added WS281xlib to Project Folder

To correct the missing library component in the PSoC project Top Design, the Dependencies menu in PSoC Creator was used to perform an update.

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

The existing dependency for the WS2812, called StripLightLib, was removed.

Lastly, the dependency for WS281xLib was added to the project dependencies, now pointing to the copy in the project’s root folder. 

PSoC Creator Dependencies - WS281xLib
PSoC Creator Dependencies - WS281xLib

The downloaded WS281xLib contains the StripLightLib library and several others worth exploring.

Contents of WS281xLib Folder
Contents of WS281xLib Folder

The missing component issue was resolved in the projects Top Design, as pictured below.

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

Compiling the project resulted in no further issues.

Complied QS2812 PSoC Creator Project
Complied WS2812 PSoC Creator Project

The PSoC target was changed to the CY8C4245AXI-473. Finally, the development board was programmed and subsequently used for the development kit evaluation.


Downloads
The dependency WS281xLib and the updated project for PSoC5, built for PSoC Creator 4.4, are available below for download. All intellectual property rights and licenses for the libraries and PSoC Projects, including those belonging to Mark Hastings, Cypress Semiconductor, and related parties, are retained and owned by those entities.

WS281xLib
WS281xLib

ws2812_test
ws2812_test

Thursday, 31 July 2025

Drill Press Controller Update Part 2

Introduction 
This blog details the completion of the drill press controller's printed circuit board (PCB) layout, a partial build of the power supply and testing.

Model of ESTOP PCA Mated to the Enclosure
Model of ESTOP PCA Mated to the Enclosure

Placement of New Components
In the previous post, the PCB shape was defined to suit the enclosure. In this post, the component placement and board routing were performed. Even though the design has a relatively low component count, attention was still paid to the mains (AC-DC) power supply and the low-voltage signals. Isolation and component clearances were made a priority.

Unrouted ESTOP Controller PCB
Unrouted ESTOP Controller PCB

In the above capture, the AC to DC power supply (PSU1) is located on the PCB's left side. The right side of the PCB contains low-voltage parts, such as the microcontroller, input and driver devices.

Unpopulated PCB Housing
After the component placement was finalised, a 3D model of the PCB was generated using the PCB design software. This approach was taken to check for mechanical interference between the PCB and the enclosure model. The check between models was achieved using Fusion 360.

PCB Mated with Enclosure Base
PCB Mated with Enclosure Base

 The design uses the connectors provided with the enclosure.

PCB Mated with Enclosure Base and Cover
PCB Mated with Enclosure Base and Cover

With no interference detected between objects, the PCB was routed.

Routed PCB and Layers
The PCB was designed using a standard 4-layer 1.6 mm PCB stackup provided by the manufacturing house.

PCB Top Layer
PCB Top Layer

PCB Mid Layer 1
PCB Mid Layer 1

PCB Mid Layer 2
PCB Mid Layer 2

The PCB bottom layer was a copper fill under the low-voltage section and not shown in this post.

Manufactured PCB and Population 
To populate a new PCB, I prioritise installing the power supply first. However, as the controller PCB is double the size of the reflow device (e-Design Miniware MHP50), more difficult parts were soldered first.

Reflow Part on a MiniWare
Reflow Part on a MiniWare

The driver chip with an exposed pad was reflowed first.

Power Supply Population
Next, out of the two onboard power supplies, the discrete switch-mode DC 5 V regulator was fitted to the board.

Power Supply Bench Test
Power Supply Bench Test

Testing was performed by directly supplying power to the relevant connections on the board. The turn ON voltage was noted at 6.8 V with the unloaded accuracy better than 2 %. With a 165 mA resistive load, the voltage regulation was better than 0.6 %. However, with a 330 mA load, the voltage regulation fell to 3.6 % which was likely due to the inductor. A different inductor will be tested in the next post, together with the additional PCB components.