Nearly endless kinematic options from simple parts.
Cardboard is a great material for machine prototyping because you can cut, glue, tape, laminate, slice, and fold with ease! Since the material is cheap, iteration is a breeze! We use science fair style trifold presentation boards because they are colorful and so we can claim they are made from 100% science.
Laser cut cardboard parts layout
Etched lines should be cut through the top later and corrugation but not through bottom layer.
Necessary parts for one cardboard linear stage.
Each layer must be laminated together to achieve maximum stiffness.
Motor installation happens mid assembly.
Fully assembled linear stages ready for electronics to be added.
Fasteners:
Have a look at the Construction Kit for clever ways of connecting the stages together.
Software:
Now that the stage is complete we will need to download the required software to program and communicate with the Gestalt Nodes. You can clone the latest Gestalt library from GitHub here.
Once you have the Gestalt Framework downloaded and installed, it is time to program the nodes. Use the below wiring diagram and Makefile.
Programming your Gestalt Node with and AVR. Note The Fabnet to node connector is not typical!
CFLAGS = -g -Wall -Os -mmcu=$(MCU) -DF_CPU=$(FREQ) -I$(GESTALT_DIR) $(GESTALT_DEFS)
avr-g++ $(CFLAGS) -c -Wall $(SOURCES)
avr-g++ $(CFLAGS) $(LDFLAGS) gestalt.o -o $@ $^
avr-objcopy -j .text -j .data -O ihex $< $@
Wiring diagram with control boards "daisy chained" together. One node, two node, red node, blue node....
else: self.fabnet = interfaces.gestaltInterface('FABNET', interfaces.serialInterface(baudRate = 115200, interfaceType = 'ftdi', portName = '/dev/ttyUSB0'))
self.xAxisNode = nodes.networkedGestaltNode('X Axis', self.fabnet, filename = '086-005a.py', persistence = self.persistence)
self.yAxisNode = nodes.networkedGestaltNode('Y Axis', self.fabnet, filename = '086-005a.py', persistence = self.persistence)
self.xyNode = nodes.compoundNode(self.xAxisNode, self.yAxisNode)
self.xAxis = elements.elementChain.forward([elements.microstep.forward(4), elements.stepper.forward(1.8), elements.leadscrew.forward(8), elements.invert.forward(True)])
self.yAxis = elements.elementChain.forward([elements.microstep.forward(4), elements.stepper.forward(1.8), elements.leadscrew.forward(8), elements.invert.forward(False)])
self.stageKinematics = kinematics.direct(2) #direct drive on all axes
self.move = functions.move(virtualMachine = self, virtualNode = self.xyNode, axes = [self.xAxis, self.yAxis], kinematics = self.stageKinematics, machinePosition = self.position,planner = 'null')
self.jog = functions.jog(self.move) #an incremental wrapper for the move function
Everything needed to start moving! Pen not included!
NEVER HOT PLUG! ( boards should never be powered while connecting). We power the boards at the very end, forgetting this and connecting while powered will most likely destroy the Gestalt Node...
The set up of nodes is saved into a machine persistence file called test.vmp. You can make a new one by deleting the old one and rerunning the virtual machine file. The code will prompt you to identify the nodes by pressing their buttons. Try e.g. running http://github.com/imoyer/gestalt/examples/htmaa/xy_plotter.py
nadya@revolt:~/Version/gestalt/examples/htmaa$ python xy_plotter.py
xy_plotter.py: Warning: setting persistence without providing a name to the virtual machine can result in a conflict in multi-machine persistence files.
X Axis: http://www.fabunit.com/vn/086-005a.py
Y Axis: http://www.fabunit.com/vn/086-005a_boot.py
Y Axis: http://www.fabunit.com/vn/086-005a.py
Drawing in process with springloaded pen capture and nylon quick connect straps.
Image of single line drawing completed with Cardboard CNC
The Modular Machines that Make project is a collaborative project born out of the 'Machines that Make Project' inside the Center for Bits and Atoms at The Massachusetts Institute of Technology.
Current research also sponsored by the MIT - SUTD Collaboration and International Design Center.
Current Contributors: