Progress On Multiple Fronts

Over the course of the last week, I have been working on two sub-components of the project; the first is modelling a test stand for the EDF so I can do experiments with the fan safely and securely in place to avoid damage and injury, the second is creating a simulation of the effect of jerk on the theoretical linear position, building on what was explained in my last blog post.

The test stand

I first decided the best way to design the stand would be to model the EDF itself. The Amazon listing for the fan had a diagram giving the physical measurements for parts of the casing which I used to guide the process:

3455b38f-4bb1-4951-bb26-36e0929c2841

I used digital calipers to measure the casing of my own fan as a sanity check and found that some measurements had to be adjusted, and there were parts of the case that did not have measurements shown on the diagram at all, namely the ridge around the middle of the ducting. The final result has all the detail necessary for going on to model the test stand, but I didn't bother modelling unnecessary details like the fan blades.

ed236218-cd8d-46c1-9192-6df3a7af9ec4

Note that I'm using OnShape to do this modelling as it's the tool I'm used to, and having it run in the browser is very convenient for me (especially given that native Linux CAD tools range from fiddly, incomplete mess to non-existent).

Once I had the fan modeled, It was relatively simple to create the main body of the test stand using the fan model as a template and building around it. I used a boolean difference to make the test stand cradle the exact shape of the fan body, including the central ridge, and added two pins to go through the mounting holes to ensure the fan stays in place. The stand also has a large flat portion with a circular indentation so it can be clamped to a table or desk to keep it in place.

ec6c5cf4-a5fd-44b5-9701-320dd366e949

937838ae-f41d-47a6-8066-983778996d34

I printed a test fit to make sure the ridge indent and pins properly fit the real fan by chopping the model down to the bare minimum (a slice around the middle of the stand about 9mm wide) to make sure everything would fit correctly, and then printed the full stand in white PLA+ (it was the spool that happened to be on my printer at the time and I don't have any reason to believe the stand needs any special properties that might require other filaments) at a 0.24mm layer height with 15% cross-hatch pattern infill.

a3332638-0e48-4068-819f-fa10adda7bd6 This is a photo of the fan on the test stand ready to start experimenting.

I did consider adding a way to manage the wires to keep them out of the way, if this is needed, I'll add it on a future revision of the stand, but given it's only temporary, I'm not convinced it will be needed.

Simulation

This simulation is an extension of the spreadsheet I used in my last blog post. I've written it in typescript using the Fresh framework. This is a framework I've used before and I find it allows me to get up and running with less boilerplate than React or Vue, the other popular frameworks I've used and know.

The simulation allows the editing of jerk “keyframes” which function similarly to keyframes in any video editor/animation software, the jerk value changes only when a keyframe is encountered, with each keyframe being assigned a specific “tick” or timestep to which it belongs.

The simulation can then be started, and the green slider at the top will move accordingly, following the position calculated in real time. At the same time graphs for jerk, acceleration, velocity and position are plotted in real time.

3fec24d8-2fb4-4d22-a00d-e538b9bd53f2 It's not pretty but it is certainly functional.

The git repo for this simulation can be found on my labcode here

This simulation helps me to visualise the kind of movements I'll be having to deal with on the actual test track, but the important next step is to be able to find or create an algorithm that can do this process in reverse. Currently, jerk keyframes are the input to the simulation and the final position is the output (with acceleration and velocity being intermediary stages). To accomplish the main goal of this project though, I need to be able to give the algorithm a position along the track and have it calculate the jerk required and when to apply it in order to reach that position.

Gantt Chart

There's not much to add to the Gantt chart this week beyond marking what I've done as complete, although I have added an entry for preparing for the Viva, which should have been on there from the beginning. I'll be conducting experiments this coming week and I'm sure that will lead to “unknown unknowns” becoming “known unknowns” I can add to the chart.

1d9a6180-cc6d-4de9-871f-aa0c92cc9b98