17. Machine Design#
1. Machine Structure and Mechanical Systems Design#
(Detailed description of Machine Design on Rico Kanthatham’s page here
- Animation modeling in F360 hints at potential real world mechanical movement issues that will be addressed with some design reconsideration
- Prototype 3D printing revealed tolerance and mechanical connection issues that will require design modification.
- Review of the available bamboo stock cut the week earlier…reveals that usable tube diameters of ~14mm, ~22mm and ~40mm (+/- 3mm) will need to be factored into final parts design and modeling in F360
Factoring for real world, available bamboo stock and dimensions and mechanical and structural issues identified in virtual modeling, redesign of parts commnenced. After a week, parts are ready for actual fabrication.
The itemized list of required parts as follows…
Parts to be fabricated: 19 in all
4x Y-Rail End Capture
2x X-Rail End Capture
2x Y-Ball Bearing Capture/Y-Rail Glide/Y-Top Lock Tab
1x X-Ball Bearing Capure/X-Rail Glide/X-Top Lock Tab
2x Stepper Motor Mount
2X Spindles Mount
Parts to be Procured:
4x 14mm Bamboo rails
5x 22mm Bamboo rails
4x 40mm Bamboo posts
2x Stepper Motors
1x 6mm Wide Rubber Toothed Driving Belt
Misc. fasteners as required
Initial mechanism animation…
3D printed prototype parts…
While eventually, quality parts were printed, the process of 3D printing as part of our project workflow proved to be time consuming and inconsistent on outcome and final finish. Many failures along the way. A method to speed up the 3D printing of prototype parts discovered and applied, making the printing process much less time costly.
The bamboo stock is cut down to size, fire finished to harden, connection end dimensions normalized and natural joints shaved down and smoothed out to reasonable conditions.
Laser cut prototype parts…
We used the laser cutter to fabricate the primary “Y-Plate” that spans between the 2 Y-Rail assemblies. The Y-Plate serves primarily as a singular connector piece to which the Y-Ball Bearing Assmbly, the final set of spindles, and the X-Rail Assembly are attached…and also as a path guide for the X-Ball Bearing assembly.
We generated the model of the Y-Plate in Fusion 360, projected an image, exported the image as a DXF file…which we used in Adobe Illustrator to prepare the final image to cut on the laser cutter.
We cut 2 pieces the Y-Plate out of 4mm MDF board, with the intention to stack them into a 10mm final plate. The process went quickly and smoothly.
- Bamboo rods inserted into 3D printed Parts
- Stepper motor and spindles inserted into 3D printed parts and MDF Y-plate
- 3D printed parts snaps into the MDF Y-plate
- Twine also used to connect 3D printed parts to main bamboo support structure.
Here is the finished test machine, with End Effector installed…ready for electronics control testing.
2. End Effector Design#
I made a rapid prototype of Rack & Pinion mechanism using laser cutter at week#15. However it was not so firm that I had to support it manually during moving. So I designed the integrated one using 3D printer.
Two holes are joint for coreXY main unit.
As the up and down movement was not steady, I designed following guide to attach beside the rack.
Check the movement using volume.
While drawing, the lower part of brush swung horizontally. So I attached additional holder at the bottom of the rack.
3. Electronics Design & Programming#
(Detailed description is Yosuke Tsuchiya’s Page: @week17)
This week, I continued my study about Core XY and learned about G-Code for getting konw how to generate the data of characters that we want let machine write. First, I read the Core XY program based on Arduino and find out what functions are included. Then, I studied about G-Code, how to generate G-Code data and simulate it. Moreover, I studied how to develop interface application for sending G-Code data to the machine.
Core XY functions#
Opening serial monitor of Arduino (connecting to Satshakit that Core XY program is installed), we could find the following menu.
1 2 3 4 5 6 7 8 9 10
MENU ............... menu G00 X## Y## ........ goto XY (pen-up) G01 X## Y## ........ goto XY (pen-down) T1 ................. move pen to 0,0 T2 S##.## .......... set drawing Scale (1=100%) T3 ................. pen up T4 ................. pen down T5 ................. test pattern: ABC T6 ................. test pattern: target T7 ................. test pattern: radials
Basically, we send these command to control Core XY machine, and each functions that corresponded to each commands are defined in the Arduino program. In the main loop, the following code detecting which command are sended via serial port.
We need to generate G-code that Core XY machine draws. What is G-Code? According to the Autodesk page:
G-code is a programming language for CNC that instructs machines where and how to move. Most machines speak a different “dialect” of g-code, so the codes vary depending on type, make, and model. Each machine comes with an instruction manual that shows that particular machine’s code for a specific function.
Seeing inside of G-Code, it is a plain text file and each line consisits of command sets and position data like the following:
G02 X50.752716 Y22.976260 I-3.135884 J-1.324038
Generating G-Code of Characters - How to.#
Generating G-Code itself is easy task. We can use Inkscape with intalling a plugin.
There are two problems I could find for generating G-Code by Inkscape.
Problem of Text-Font based character.
One is the probme of Text-Font based character. If we generate G-Code from text-Font based character (put the character and convert it to the path), it would be generated a G-code which is recorded outlines of the character. We want the machine write characters (not drawing characters). Moreover, stroke orders of Japanese (also Chinese) characters are very important to write. If we generate path from Text-based object, we cannot get the G-Code that considered these stroke orders.
Therefore, it is better to draw the path of the character with using “Draw freehand line” tool like the following. Drawing the line by stroke order, Inkscape can generates G-Code file that considered it.
Problem of XY Origin
Another problem of generating G-Code is XY origin. When generating G-Code by Inkscape, XY origin is defined in Left Bottom side. On the other hand, the Core XY program mentioned above defined XY origin in Left Top side. The origin is different in Inkscape generation and the Core XY program.
As a result, the output of the character became mirror writing.
Therefore, I fliped the path veritically each path and generate again.
To send an original G-code file data that I generated by Inkscape, I used CNC Gcode Sender, based on Processing program.
4. CoreXY BPM Prototype - Testing & Initial Review#
Partial success in initial run…
- The mechanical system, end effector and control program functioned (good news!)…but worked imperfectly (more work ahead)
- Everything works…but there are problems that needs to be addressed for the painting results we hoped for too be generated.
- At this time, the brush painting control is still far from the end goal.
Post Testing System Review
The mechanical system (Rico)
operated reasonably well. Some issues arose which will be addressed with redesign before Wednesday final presentation. Structural rigidity, belt tension management, and excessive ‘slop’ are the biggest issues to be solved.
The End Effector (Kae)… The rack and pinion mechanism appeared to work well when it was operated individually. However, when it was integrated into the machine, I found that the bottom of the brush swung horizontally while drawing. So I designed an additional holder at the bottom of the rack for the final machine, but the problem was not solved completely. For future development, we should change the holding position of the brush downwards to reduce the swing, and should improve the design to keep the rack more stable.
The Control Program (Yosuke)
The Control Program operated well. However, there are a couple of things we should consider to controle core XY. First is G-Code. G-Code is an essential factor to control as we want to write (or cut). Usually, we use some softwares or plugins to generate G-Code, but if we really want to control accurately, we should read generated G-code and add/revise it.
Also, we should consider the relevances between mechanical design and controlling. This time, we used bamboo as main material of the machine frame. But, the bamboo is sticky and joints made by 3D printer were sometimes catched up the bamboo frame. On the other hand, G-Code would be read, then send the data to the machine. In the end, the characters that the machine draw would be failed. It should be implemented some basic functions to stop the machine quickly when the trouble occur.
5. CoreXY BPM Final Machine#
This a video to introduce our MTM project result.
6. Future development#
The Kura BPM worked in the end…but not really to everyone’s expectations. The control program seemed to work very well, but the End Effector could be made to be more robust and hold the brush more firmly, to improve the painting results.
But overall we achieved the objective of sourcing local, sustainable materials to be meaningful in the machine construction. We also succeeded in combine some traditional techniques with technologically advanced ones.
In that respect, there is an opportunity to create even better, straighter rails with bamboo…borrowing from techniques utilized by Japan’s tradtional archery arrow makers. In Japan, there remain craftsmen who are expert with the techniques to make bamboo arrows for use by traditional Japanese archery practitioners.
A video going into detail about this still living traditional arrow making technique is here. What these craftsmen can do…is to straighten small diameter bamboo rods…using heating and bending techniques.
It is my thought that the precision of machines built with bamboo rods can be improved if we are able to apply this technique.
The Control Program (Yosuke)
- G-Code file that is generated by Inkscape
- Processing Program for interface
- Core XY Program by Arduino
End Effector ( Kae )
- Biometal Board (png)
- Biometal Board outline(png)
- Biometal Board (Eagle sch)
- Biometal Board (Eagle brd)
- Biometal Test code (Arduino)
- Rack and Pinion (Fusion f3d)
- Rack and Pinion Test code (Arduino)
Mechanical Design (Rico)