Micro Foundry Progress – Crucibles

Casting Group Pic

I have been sporadically experimenting with my electric micro foundry setup for almost a year.  Recently I have been trying different crucibles.  My first crucible was a mini terracotta pot.  (I don’t know where the pot I used came from but I have not been able to find another one the same size without a drainage hole.)   I have also used a porcelain crucible (from Ax-Man) and a ceramic shot glass that I picked up in Las Vegas.  The terracotta pot has some significant cracks and chipping after a couple of furnace runs so it has been retired from use.  The porcelain crucible shows some chipping on the top edge.  Probably from being manhandled by a pair of pliers during the pour.  The ceramic shot glass seems to be holding up the best so far.  I don’t see any structural damage after a couple of runs in the furnace.  Before I used it I was a little concerned about the design on the side of the shot glass being a starting point for a crack but so far so good.

Casting small parts in sand is a little more sensitive that larger parts.  At least it seems that way since the small imperfections are a more significant portion of the end casting.  I tried the small toy airplane (red) in the picture above a couple of times.  both times the plane was only partially formed.  The tails were too short on one and the wingspan was too short on the other.  I will see if I can’t work out some of the bugs in the future.  Below are some pictures of my micro furnace in action and some in process pictures of a Yoda and toy plane.  I am using old aluminum nails, that I was given, for the raw material in my my micro foundry.  Most of my other scrap aluminum would need to be cut down significantly to fit.

Running Furnace Yoda in Sand Yoda W/Sprue

 

Newton’s Cradle

Newtons Cradle GIF

Over the Memorial Day weekend I made this newton’s cradle for my kids.  I used some 5/8 inch ball bearings I had left over from another project.  Instead of trying to drill into the bearings I choose to injection mold a plastic ring around the bearing.  This allowed me to tie the strings to the injection molded plastic part rather than directly to the ball bearing.  Below is a picture of one of the ball bearings with the ring molded around it (and the aluminum mold).  The plastic was molded right onto the bearings inside the mold.

Newtons Cradle Mold

I used fishing line to tie the bearings to the frame.  The fishing lines for each bearing are passed through a small holes in the top board and wrapped around a screw.  Turning the screws on the top board adjusts the length of the strings to fine tuning the alignment of the bearings.  Aligning the bearings is critical to getting good performance from the newton’s cradle.

Newtons Cradle Closeup

The injection molded collar for the bearings was designed on my Android phone using ScorchCAD while I was at one of my kids baseball practices.  I exported and STL file for the mold from ScorchCAD and created the g-code file for my CNC mill using MeshCAM.  So unless someone protests I am claiming I made the first physical part from a part designed from start to finish on a smart phone using ScorchCAD.  A screenshot of the ScorchCAD part is shown below.

Newton ScorchCAD

Hot Glue Injection Molding

Hot Glue Injection Molded Parts

I thought it would be interesting to see how well a simple hot glue gun with standard hot glue could produce injection molded parts.  Although the parts did not all turn out perfect I thought the results were pretty impressive considering the simplicity of the method used.  Here is a video of my trials.

After my initial trials I poked around on the web a bit and found that this is nothing new. There is even a company that sells an “Injection Moulding Pack” Mind Sets Online.   The description of this You Tube Video even talks about polyethylene in the shape of glue sticks.

For more details on the molds I used for these tests and to find out about my homemade plastic injection molding machine see my Home Injection Molding web page.

 

ScorchCAD Released on Google Play

ScorchCAD_444

ScorchCAD (A clone of OpenSCAD for Android devices) is now available on Google Play: ScorchCAD.  There is also a new ScorchCAD webpage here: ScorchCAD Web Page.  I will continue to work on supporting more features in future releases.  below are the details from the Google Play listing.

ScorchCAD is a clone of OpenSCAD written for Android devices.  This program executes OpenSCAD code and displays the resulting 3D model.  ScorchCAD aims to provide the same functions as OpenSCAD but it does not use the same source code. Most of the basic features are currently working. Additional features will be supported in future updates.

Features currently supported (fully or partially):
- Shapes: cube, cylinder, sphere
- Transformations: translate, rotate, scale, color
- Boolean Operations: union, difference and intersection
- File Import: DXF and STL (ASCII and binary)
- User defined variables and special variables : $fa, $fs and $fn
- User defined functions and Math functions

ScorchCAD is still a work in progress here is a partial list of the OpenSCAD features not yet supported:
rands, min, max, multmatrix, hull, minkowski, polygon, polyhedron, intersection_for, assign, projection, surface, render, children, lookup, str, search, version, version_num, norm, cross, parent_module, Modifier Characters (* disable, ! show only, # highlight, % transparent)

shot_000005

ScorchCad Preview (Update 2)

 

This is my second short update of my progress on ScorchCAD (A clone of OpenSCAD for Android devices).  I am slowly adding more features and improving the user interface.  I have also been testing with some of the sample files provided with OpenSCAD (see the animated GIF) Here are some of the recent improvements:

  • Separated the input editor from the viewer screen and added a separate console screen  for messages.
  • Added support for FOR loops
  • Read and write STL files (see the frog in the GIF animation)
  • Read 2D DXF files and extrude 2D shape into 3D shape
  • Zoom and pan support for the viewer window

Using F-Engrave with GRBL

F-Engrave

I have had some feedback from ShapeOko users indicating that there are some issues using the default F-Engrave output with GRBL.  I thought I would take some time and describe the problems that people are having and discuss the F-Engrave settings needed to produce g-code that GRBL can run.

First, F-Engrave defines variables for the feed rate and engraving cut depth that are not compatible with GBRL.  This problem can be solved by checking the “Disable Variables” check box in the F-Engrave Settings window.  This will prevent F-Engrave from writing the incompatible variables to the g-code output file.

Second, F-Engrave uses incremental distance mode for arcs.   In order to ensure that g-code interpreters read the data correctly the code G91.1 is set in the g-code output (setting the arc distance mode to Incremental).  Unfortunately GRBL does not support reading the G91.1 code. To eliminate the incompatible G91.1 code from the F-Engrave output F-Engrave users need to un-check the “Enable Arc Fitting” option in the F-Engrave Settings window.  (Alternatively the G91.1 code can be manually removed from the g-code file.)

Update: Apparently GRBL misreading the G91.1 code also results in the next g-code line, which set the units (in or mm), being skipped/misread.  I also see there is some discussion about fixing the G91.1 g-code problem on the ShapeOko forum.

I recently updated F-Engrave to suppress writing the G91.1 code when arc fitting is disabled so be sure to use F-Engrave version 1.34 or higher to make sure the G91.1 is not written by F-Engrave.

In summary, to generate g-code compatible with GRBL:

  • Select the “Disable Variables” check box in the F-Engrave Settings window
  • un-select the “Enable Arc Fitting” check box in the F-Engrave Settings window
  • Use F-Engrave version 1.34 or higher

These settings (and all of the other settings) can be saved and loaded every time F-Engrave starts up.  See the F-Engrave Manual for more details on the F-Engrave configuration file.

G-Code to DXF with G-Code Ripper

G-Code Ripper

G-Code Ripper Version 0.05 is now available.  The new version can export tool paths read from a g-code file to a DXF or CSV (Comma Separated Value) file.  The new features are located under a new G-Code Operations option called “Export”.

In the exported DXF file rapid moves and controlled moves are written to different layers with different color indexes. The rapid moves can also optionally be omitted from the G-Code Ripper DXF output.

All of the arcs (G2/G3 moves) are converted to multiple linear segments for now. I will include arc output to the DXF file if there is interest as time permits.

 

ScorchCad Preview (Update 1)

ScorchCAD Demo ScorchCAD Snowman ScorchCAD Lego

This is a quick update of my progress on ScorchCAD (A clone of OpenSCAD for Android devices).  I am slowly adding features.  So far I these are the items that are working:

  • Basic shapes (cube, sphere and cylinder)
  • Basic boolean operations
  • Colors
  • OpenSCAD file opening and saving using file dialogs
  • Support for variables is partially complete (I need to make set at compile time as are in OpenSCAD)

The pictures above are small models that I made using ScorchCAD while I was waiting for my kids hockey games to start.

Simple File Dialog For Android Applications

Since there isn’t a built in file dialog interface for android development I have been searching for one that I could use without starting from scratch. I did eventually find a Simple Directory Chooser with a very lenient license (The Code Project Open License (CPOL) 1.02). The directory chooser I found uses a dialog interface so there is no need to create an additional activity to use it.

The directory chooser was great but I needed a file dialog for choosing files for opening and saving not a directory chooser. To get the file dialog I needed I modified the original directory chooser adding to it as needed to create a Simple File Dialog for my own use. I thought I would post my modified version here for others to use or build on.

The file dialog code consists of a single file and uses standard Android resources. This file dialog code should be very portable and easily inserted into any project to add menu driven file selection within Android.  Screen shots of the three file dialog modes (Open, Save, and Folder Select) are shown below. The “Save” and “Folder Select” modes include a button for adding a new folder to the file structure.

Open Dialog save folder

The code can be downloaded here: SimpleFileDialog.java and MainActivity.java

Bare Bones Application Using the Simple File Dialog

This is a very bare bones application with three buttons that call the Simple File Dialog in all three modes (Save, Open and Folder Select). To make this application I just started a new Android Application Project in Eclipse. Edited the Layout to add three buttons and edited the MainActivity.java file. The finished MainActivity.java file is shown below.

Demo Screen

//MainActivity.java
package com.scorchworks.demo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;

import android.widget.Button;
import android.view.View.OnClickListener;
import android.widget.Toast;

//import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		//Button1
		Button dirChooserButton1 = (Button) findViewById(R.id.button1);
		dirChooserButton1.setOnClickListener(new OnClickListener() 
		{
			String m_chosen;
			@Override
			public void onClick(View v) {
				/////////////////////////////////////////////////////////////////////////////////////////////////
				//Create FileOpenDialog and register a callback
				/////////////////////////////////////////////////////////////////////////////////////////////////
				SimpleFileDialog FileOpenDialog =  new SimpleFileDialog(MainActivity.this, "FileOpen",
						new SimpleFileDialog.SimpleFileDialogListener()
				{
					@Override
					public void onChosenDir(String chosenDir) 
					{
						// The code in this function will be executed when the dialog OK button is pushed 
						m_chosen = chosenDir;
						Toast.makeText(MainActivity.this, "Chosen FileOpenDialog File: " + 
								m_chosen, Toast.LENGTH_LONG).show();
					}
				});

				//You can change the default filename using the public variable "Default_File_Name"
				FileOpenDialog.Default_File_Name = "";
				FileOpenDialog.chooseFile_or_Dir();

				/////////////////////////////////////////////////////////////////////////////////////////////////

			}
		});

		//Button2
		Button dirChooserButton2 = (Button) findViewById(R.id.button2);
		dirChooserButton2.setOnClickListener(new OnClickListener() 
		{
			String m_chosen;
			@Override
			public void onClick(View v) {
				/////////////////////////////////////////////////////////////////////////////////////////////////
				//Create FileSaveDialog and register a callback
				/////////////////////////////////////////////////////////////////////////////////////////////////
				SimpleFileDialog FileSaveDialog =  new SimpleFileDialog(MainActivity.this, "FileSave",
						new SimpleFileDialog.SimpleFileDialogListener()
				{
					@Override
					public void onChosenDir(String chosenDir) 
					{
						// The code in this function will be executed when the dialog OK button is pushed
						m_chosen = chosenDir;
						Toast.makeText(MainActivity.this, "Chosen FileOpenDialog File: " + 
								m_chosen, Toast.LENGTH_LONG).show();
					}
				});

				//You can change the default filename using the public variable "Default_File_Name"
				FileSaveDialog.Default_File_Name = "my_default.txt";
				FileSaveDialog.chooseFile_or_Dir();

				/////////////////////////////////////////////////////////////////////////////////////////////////

			}
		});

		//Button3
		Button dirChooserButton3 = (Button) findViewById(R.id.button3);
		dirChooserButton3.setOnClickListener(new OnClickListener() 
		{
			String m_chosen;
			@Override
			public void onClick(View v) {

				/////////////////////////////////////////////////////////////////////////////////////////////////
				//Create FileOpenDialog and register a callback
				/////////////////////////////////////////////////////////////////////////////////////////////////
				SimpleFileDialog FolderChooseDialog =  new SimpleFileDialog(MainActivity.this, "FolderChoose",
						new SimpleFileDialog.SimpleFileDialogListener()
				{
					@Override
					public void onChosenDir(String chosenDir) 
					{
						// The code in this function will be executed when the dialog OK button is pushed
						m_chosen = chosenDir;
						Toast.makeText(MainActivity.this, "Chosen FileOpenDialog File: " + 
								m_chosen, Toast.LENGTH_LONG).show();
					}
				});

				FolderChooseDialog.chooseFile_or_Dir();

				/////////////////////////////////////////////////////////////////////////////////////////////////

			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}
//

For the New Folder button to actually create a new folder in the demo you need to include the following line in the Manifest file to give the app permission to write to the SD Card.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

None of this code would have been possible without the jump start I got from the Simple Directory Chooser