Beam designs for infinite Z 3D printers

Overview

A 3D printed beam that is as stiff as steel

A while ago Naomi Wu 机械妖姬 very kindly sent us one of Creality's infinite-Z belt printers. Lots of people have printed long I beams on this type of machine, but we thought that we'd write a Python FreeCAD program to generate parametric beams more suitable for 3D printing, taking advantage of the fact that complexity is more or less free with this technology and that infinite-Z belt printers can print many overhanging shapes without support material. The result is a beam that is about as stiff as a steel beam of the same weight.

The image above shows an example of the Python output. All you need to specify is the length, width, and height, the thickness of the struts, and the diameter and number of the screw holes in the mounting blocks at the ends. The program then automatically generates the entire beam.

The central section consists of a row of open boxes, each of which is decomposed into tetrahedra. This effectively means that the entire shape is built from tetrahedra - the strongest shape - and also that most of the material is on the outer faces which gives a high second-moment of cross-sectional area for bending resistance in all directions.  The diagonals are angled so that a belt printer with a 45o Z movement can print the entire structure without support material.

The blocks at the ends are for bolting the beams to each other or to other items. The rings of 12 small holes shown allow any orientation in increments of 30o. The large holes are to allow wiring, tubes and other services to be run down the middle of the beams and connect up at the ends, or to allow things such as drive shafts to be accommodated.

It turns out that FreeCAD can't model the rings of small holes. If you want to skip a technical explanation of why this is so then just know that there's a work-round and ignore the italic section that follows.

The image below shows the shape of all the small holes that needs to be subtracted from the end blocks.

As you can see, there are a lot of common tangencies where cylinders cross. When FreeCAD throws the calculation of these to Open Cascade, which is the geometric modeller that FreeCAD uses to represent shapes, it goes away and gets lost in its own thoughts (CPU: 100%...) and you never hear from it again. I (Adrian) don't think this is really a bug in Open Cascade; any boundary-representation (B-rep) geometric modeller would probably have the same problem. Because (as the name implies) B-rep modellers represent shapes by recording the topology and geometry of their surfaces, they have to put a lot of effort into doing things like working out the curves of intersection between surfaces, and keeping all the shape topology consistent while this is done. In some cases this is quite literally impossible. For example there is no closed-form solution to working out the curve of intersection between two NURBS surfaces; that always has to be approximated. Even for cylinder-cylinder intersections, things can get complicated (look at the topological stitch-lines running along the cylinders in the picture; these all have to be matched up).

Set-theoretic (or CSG) geometric modellers have none of these problems because they don't represent the surfaces of objects; they represent their solidity. In their simplest form they can only answer one question: given a point (x, y, z), is it inside the solid part of the object or outside? - a so-called membership test. (In practice set-theoretic modellers can all do much more than this.) And they do membership-tests with rock-solid certainty. Unfortunately they are rarely used in CAD systems, except as a means of input. The reasons for this are historical rather than technical. For example the invention of the hardware depth-buffer, which allows computer graphics systems to make pictures of large numbers of triangles blindingly fast, favoured the early development of systems that represent surfaces (which are easy to triangulate). If instead a hardware ray-tracer had been implemented, then set-theoretic modellers (which are natural choices for ray tracing) might have come to dominate. (I wrote a set-theoretic modeller called SvLis in C++ about three decades ago; if you want to go mad see if you can get it going with a modern C++ compiler. If you succeed, DM me...)

The work-round in FreeCAD that allows the cylinders to be dealt with is as simple as it is nasty. The cylinder radii are perturbed a tiny bit at random:

cyl = Part.makeCylinder(d/2 + random.uniform(-0.01, 0.01), z + 0.2)

This means that what were common tangencies no longer are, quite . The perturbation is well below the resolution of 3D printing.

The following image shows the beams being printed in PLA.

When it was done, we subjected one to a bending test using weights and a dial gauge to measure deflection.

Note the pieces of wood on the left; if only we had some way to 3D-print structural parts...

The beam was held and deflected sideways so it couldn't slip in the vice. Here are the results:

The equation is that of the least-squares fit straight line. The effective length of the beam (ignoring the clamped end) was 175 mm. Its stiffness was 1.02 x 10-4 mN-1 from the graph. This meant that its flexural rigidity (EI) was 17.5 Nm2 (where E is Young's modulus in Pa and I is the second moment of area in m4). Thus we can work out that an equivalent steel beam would be 5 mm square. (That is to say, a steel beam with the same EI value.)

The printed beam weighed 47.7 grams. Coincidentally a 5 mm square steel beam of the same length (including the clamped end) would weigh about the same (47 grams), so we have made a printed beam that is about as stiff as the same weight of steel.

The printed beam was physically bigger than its steel equivalent, of course. This is to be expected as PLA has a much lower elastic modulus than steel. But printing allows any size easily to be created, it allows services to be run up the insides, and it allows a fancy pattern of attachments and screw holes to be created at the ends, all automatically.

It would also allow a beam of beams to be printed. Because it needs no support, this beam design could be used as the struts of a much bigger beam in the same pattern. This would make a fractal beam...

Our Python program that makes the beams in FreeCAD is in the Software directory of this repository in the file square-beam.py. The file Z-beam.scad is an OpenSCAD set-theoretic (CSG) version by David Eccles that he did a few hours after we released this. We all love open-source!

It has not escaped our attention that beams of this sort would be ideal components for building a RepRap infinite-Z belt printer.

Owner
RepRap Ltd
RepRap Ltd specialises in research and development in self-replicating open-source 3D printing.
RepRap Ltd
Raspberry Pi Pico and LoRaWAN from CircuitPython

Raspberry Pi Pico and LoRaWAN from CircuitPython Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040-based board using CircuitPython

Alasdair Allan 15 Oct 08, 2022
Python application, displaying currently played track from Spotify on OLED display connected via I2C

RaspberryPi Spotify OLED Display This application will display currently played track on SSD1306 OLED display connected to RaspberryPi. Displayed stuf

Wojciech Olech 2 Dec 30, 2021
Python module for the qwiic serial control motor driver

Qwiic_SCMD_Py Python module for the qwiic motor driver This python package is a port of the existing SparkFun Serial Controlled Motor Driver Arduino L

SparkFun Electronics 6 Dec 06, 2022
Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

Mycodo Environmental Regulation System Latest version: 8.12.9 Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in i

Kyle Gabriel 2.3k Dec 29, 2022
Watson-Assistant with integration capabilities

Watson-Assistant-Integration Watson-Assistant with integration capabilities "main.py" should be deployed as Cloud Function (Action) on IBM Cloud. For

Sergey Usachev 1 Dec 20, 2021
CO2Ampel - This RaspberryPi project uses weather data to estimate the share of renewable energy in the power grid

CO2Ampel This RaspberryPi project uses weather data to estimate the share of ren

Felix 4 Jan 19, 2022
CircuitPython library for the CH559 USB to Serial chip

CH559 (USB to Serial) CircuitPython Library Why? Because you might want to get keyboard/mouse/gamepad/HID input into your CircuitPython projects witho

Guy Dupont 3 Nov 19, 2022
Testing out some (stolen) DMA code for RP2040 Micropython

RP2040_micropython_dma testing out some (stolen) DMA code for RP2040 Micropython. Heavy inspiration and some code from https://iosoft.blog/2021/10/26/

2 Dec 29, 2022
Raspberry Pi Pico support for VS Code

Pico-Go VS Code Extension Pico-Go provides code auto-completion and allows you to communicate with your Raspberry Pi Pico board using the built-in REP

Chris Wood 114 Dec 28, 2022
PyLog - Simple keylogger that uses pynput to listen to keyboard input.

Simple keylogger that uses pynput to listen to keyboard input. Outputs to a text file and the terminal. Press the escape key to stop.

1 Dec 29, 2021
Bucatini: a soft PIPE PHY for FPGA SerDes

Bucatini: a soft PIPE PHY for FPGA SerDes Bucatini is a noodly gateware layer capable of transforming an FPGA SerDes into a PIPE PHY, allowing you to

Great Scott Gadgets 28 Dec 02, 2022
Python information display framework aimed at e-ink devices

My display, using a Raspberry Pi Zero W and Waveshare 6" e-paper hat infodisplay Modular information display framework aimed at e-ink devices. Built u

Niek Blankers 3 Apr 08, 2022
Nordpool_diff custom integration for Home Assistant

nordpool_diff custom integration for Home Assistant Requires https://github.com/custom-components/nordpool Applies non-causal FIR differentiator1 to N

Joonas Pulakka 45 Dec 23, 2022
A Python program that makes it easy to manage modules on a CircuitPython device!

CircuitPython-Bundle-Manager-v2 A Python program that makes it easy to manage modules on a CircuitPython device! The CircuitPython Bundle Manager v2 i

Ckyiu 1 Dec 18, 2021
Estimation of whether or not the persons given information will have diabetes.

Diabetes Business Problem : It is desired to develop a machine learning model that can predict whether people have diabetes when their characteristics

Barış TOKATLIOĞLU 0 Jan 20, 2022
Uses the Duke Energy Gateway to import near real time energy usage into Home Assistant

Duke Energy Gateway This is a custom integration for Home Assistant. It pulls near-real-time energy usage from Duke Energy via the Duke Energy Gateway

Michael Meli 28 Dec 23, 2022
Event-based hardware simulation framework

An event-based multi-device simulation framework providing configuration and orchestration of complex multi-device simulations.

Diamond Light Source Controls Group 3 Feb 01, 2022
Shotgrid Toolkit Engine for Gaffer

Shotgun toolkit engine for Gaffer Contact : Diego Garcia Huerta Overview Implementation of a shotgun engine for Gaffer. It supports the classic bootst

Diego Garcia Huerta 12 May 21, 2022
Extremely simple PyBadge examples to demonstrate different aspects of CircuitPython using PyBadge hardware.

BeginnerPyBadge I purchased a PyBadge recently. I'm new to hardware. I was surprised how hard it was to find easy examples demonstrating how different

Rubini LaForest 2 Oct 21, 2021
A python script for Homeassistant that counts down the days to birthdays, anniversaries etc

Date Countdown A python script for Homeassistant that counts down the days to birthdays, anniversaries etc Important note I no longer use homeassistan

Marc Forth 21 Mar 12, 2022