In my previous update I made a light that will turn its self off after a few mins. Now its time to make a case for it so my 2 year old can play with it.
Here is what I came up with.
In my previous update I made a light that will turn its self off after a few mins. Now its time to make a case for it so my 2 year old can play with it.
Here is what I came up with.
So what are you to do if you have only one print head like my replicator 2 has but you want to print two colors? Some may give up and say “ya just can’t”. I have already show that is not entirely true. Remember my two color business cards? http://www.3dprintmd.com/print/printed-business-cards/
Ok well some may say that this is cheating and this is not really two color printing. It is merely using z-stop and changing colors. Ok fine I get that, and I was not really satisfied with it either.
Lets take this concept one step farther. How about printing around another object instead of on top of it? Turns out, yep, you can do that that too. It turns out to be relatively easy but with a ton of caveats.
First a word of warning. If you do not pay close attention to what you are doing you could damage your printer. Printing on top of another printer is not recommended for the inexperienced and it could cause your print head to crash into the first print or worse strip a belt or cause other damage. I am not responsible for if you break your things.
Now with that mombo jumbo is out of the way…
Here is the goal: I am printing a case for a usb adapter for the Old skool Sidewinder Joystick (http://www.descentbb.net/viewtopic.php?f=8&t=19061&sid=3da4f9e4089d6418b7a500aeab2aaa0c&start=160)
We didn’t want just any old case naw, that would be too easy. How about one with a logo inlaid into the top. Wells that’s easy enough if you have a two head printer. But you only have one print head? Well then challenge accepted!
Whats the problem you say with just printing one piece then printing another around it you may ask? Well the problem comes when the second piece is printing the slicing engine does not know that it should not crash into the piece already printed. Its needs to stay out of that area but there is no way for it to know how to do that. It turns out that there is a happy accident awaiting to be discovered.
First prepare the model. This is easy enough.
I have only done one of these and it is possible that I just simply got lucky with the design. The design needs to be simple and should not have any holes in the middle of it. Other design limitation may exist but I have not done enough of them to know for sure. The design will play out in the next several step to see if its a viable option. Please note that the inlay is exactly .6mm thick. I will be printing with .3mm layer height and this will amount to exactly 2 layers being printed. I would NOT go any higher than this. The nozzle is an upside down cone shape and therefore gets bigger the farther away from the build pate you go limiting how close you can get to the first print.
Set up the slicer.
Here is what NOT TO DO and the reason why
Makerware is not an option for printing since the tool path algorithm likes to use any empty space round the object being printed.
If we slice with makerware there is nothing you can do to get the travel moves to not cross into what would already be printed. Remember that we will be printing the logo first and the box around it must not cross into the logo area. Otherwise, the print head will crash into it.
So what can we do instead? ReplicatorG to the rescue. I know what your are saying ugg not RepG that thing is so hard to understand and confusing. Yea I get that too but in this case there is a happy accident in the slicing engine that is going to save the day.
It turns out that when RepG slices it tends to only follow the perimeter (in this case interior) of the object when doing travel moves. Why it does this is somewhat of a mystery to me but, at least for this object it works out perfectly.
First edit your slicing profile to show the tool paths (or to make it easy you can copy mine. Replicator 2 – 340 micron)
In order to make sure that the travel moves don’t go where they should not go. Go to the Craft tab and activate Skeinlayer
Then go to the Export tab and enable Analyze Gcode
Now when you slice you will get a Skeinlayer popup.
When you open you stl files make sure that if you change the location on the build platform you make the exact same changes to both the logo and the top. These parts must be exactly aligned.
VERY IMPORTANT Pay very close attention to the grey lines. These are travel moves and the MUST NOT cross into the Logo area.
Now that we have the top sliced we can slice the logo with the same settings then print.
First load the logo color and print the logo as normal. I am using the wipe in my profile so I need to peal that away before the next print.
wipe removedNow change filament colors and print the top.
Print complete and it looks great. The bond is amazing. It looks as of it was printed all in one piece.
Here is black on red
Wow that was a long post. Thanks for sticking with me. Hopefully I have proved that you can do two color with a single print head.
Back in July I back a project https://www.indiegogo.com/projects/fuse-welding-filament-clamp-for-3d-printers. This looked like a neat idea. Basically it has a heater in the center of a Teflon block and a 1.75mm hole in it.
You put one end of filament in one side and another piece in the other push it through and it welds the two pieces together.
I received my Fuse today. Here is what I got.
Overall construction is good, no issues there. It looks well machined and assembled. Of coarse the next step it to plug it in an give it a try.
This is my first attempt. It looks pretty ugly. The filament squished out into the slit around the 1.75mm channel. I had the screws tightened by hand the best I could. I did not try tightening them with pliers since I did not want to damage the thumb screws.
Needless to say its not idiot proof as it take some getting used to. Eventually after some practice I did start to get some usable joins. This is one of the better ones that I was able to do.
Same join as above compared to another one that is poor. You can see that the white part is bulged out.
Initial reaction based on 1 hr of use (yes I know that hardly makes me an expert).
The idea is solid;melt the ends and jam them together. This is a bit more challenging to pull off than you might think. To be fair I am using PLA which is probably the most difficult material to work with due to its low glass transition temperature. I found that the melting was difficult at best to control. PLA just loves to melt and deform as I learned from my experience with the http://www.filastruder.com/. This does not mean that I don’t think it can work. It does take some practice and lots of retries but with time I think that I can do much better. Unfortunately, due to its difficulty of use (right out of the box with no experience) I don’t think that we will see wade spread use of this product.
My next step will be to make some multicolored filament and do some printing with it. I am somewhat concerned with how the printer will handle the transition, especially when the filament is not perfectly consistent in diameter. From everything I know and read I dont think its going to be a big deal, assuming that there are not any bulges that make the filament jam in the hot-end.
More post on this topic to come.
I posted a while ago about the kick starter I backed the Spark Core. I finally got around to making it useful. Stick with me this is a long post.
Over the last few months one of my filament spools kersploded
Turns out that humidity causes PLA to become brittle and break apart like this especially when its on a small diameter spool. I always new that PLA was susceptible to humidity but I generally ignored it so I guess I deserve this. Now based on a suggestion on how better to store my PLA. https://groups.google.com/d/topic/makerbot/Rdx2ZnJeQzs/discussion
long story short I am now using this http://www.westmarine.com/buy/iris-usa-inc–62-8-qt-water-tight-storage-box-clear–14018642
I also put two of these in the box http://amzn.com/B000H0XFCS
And to monitor the humidity levels one of these http://amzn.com/B0013BKDO8
Not bad. The box started out at a startling 45% humidity and quickly dropped to 20-22%. Since I was monitoring the levels manually I though why not make a wireless sensor to monitor the levels auto-magically.
This brings me back to my spark core I mentioned earlier. I went bought one of these https://www.sparkfun.com/products/10167
For the sensing part and quickly and easily plopped it on a breadboard. I connected this to a 10 ah battery I have to make it wireless.
Then uploaded some code.
// This #include statement was automatically added by the Spark IDE.
#include "idDHT22/idDHT22.h"
#include ;
// declaration for DHT11 handler
int idDHT22pin = D4; //Digital pin for comunications
void dht22_wrapper(); // must be declared before the lib initialization
// DHT instantiate
idDHT22 DHT22(idDHT22pin, dht22_wrapper);
char message[50];
double Humidity =0;
double degF = 0;
double degC = 0;
double DewPoint = 0;
double DewPointSlow = 0;
int result;
int led = 0;
void setup()
{
pinMode(led, OUTPUT);
Spark.variable("message", &message, STRING);
Spark.variable("Humidity", &Humidity, DOUBLE);
Spark.variable("degF", °F, DOUBLE);
Spark.variable("degC", °C, DOUBLE);
Spark.variable("DewPoint", &DewPoint, DOUBLE);
Spark.variable("DewPointSlow", &DewPointSlow, DOUBLE);
}
// This wrapper is in charge of calling
// mus be defined like this for the lib work
void dht22_wrapper() {
DHT22.isrCallback();
}
void loop()
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
DHT22.acquire();
while (DHT22.acquiring());
result = DHT22.getStatus();
switch (result)
{
case IDDHTLIB_OK:
//Serial.println("OK");
break;
case IDDHTLIB_ERROR_CHECKSUM:
//Serial.println("Error\n\r\tChecksum error");
break;
case IDDHTLIB_ERROR_ISR_TIMEOUT:
//Serial.println("Error\n\r\tISR Time out error");
break;
case IDDHTLIB_ERROR_RESPONSE_TIMEOUT:
//Serial.println("Error\n\r\tResponse time out error");
break;
case IDDHTLIB_ERROR_DATA_TIMEOUT:
//Serial.println("Error\n\r\tData time out error");
break;
case IDDHTLIB_ERROR_ACQUIRING:
//Serial.println("Error\n\r\tAcquiring");
break;
case IDDHTLIB_ERROR_DELTA:
//Serial.println("Error\n\r\tDelta time to small");
break;
case IDDHTLIB_ERROR_NOTSTARTED:
//Serial.println("Error\n\r\tNot started");
break;
default:
//Serial.println("Unknown error");
break;
}
Humidity = DHT22.getHumidity();
degF = DHT22.getFahrenheit();
degC = DHT22.getCelsius();
DewPoint = DHT22.getDewPoint();
DewPointSlow = DHT22.getDewPointSlow();
sprintf(message, "{\"Humidity\":%f,\"degF\":%f,\"degC\":%f,\"DewPoint\":%f,\"DewPointSlow\":%f}", Humidity, degF,degC,DewPoint,DewPointSlow);
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(30000);
}
Ok great now to get the data. This is where the Spark Core is cool. The Spark.variable makes that var available via the web api.
Very cool. Now to the logging part.
Initially I tried using google docs per this post https://community.spark.io/t/example-logging-and-graphing-data-from-your-spark-core-using-google/2929 but I was having problems. I will continue to make this work as I like the idea of making the data available anywhere.
In the mean time I setup my pc to log the data using powershell
#put you id and access token in the url string
$url = "https://api.spark.io/v1/devices/xxxx Core ID xxxxxx/message?access_token=xxxx Access Token xxxxx"
while($true){
# First we create the request.
$HTTP_Request = [System.Net.WebRequest]::Create($url)
# We then get a response from the site.
$HTTP_Response = $HTTP_Request.GetResponse()
# We then get the HTTP code as an integer.
$HTTP_Status = [int]$HTTP_Response.StatusCode
If ($HTTP_Status -eq 200) {
Write-Host "Site is OK!"
}
Else {
Write-Host "The Site may be down, please check!"
}
$requestStream = $HTTP_Response.GetResponseStream()
$readStream = new-object System.IO.StreamReader $requestStream
$wrs = $readStream.ReadToEnd()
$readStream.Close()
$data = $wrs|ConvertFrom-Json
$data = ((($data.result.Split(",")).replace("}","")).replace("{","")).split(":")
$Humidity = $data[1]
$degF = $data[3]
$degC = $data[5]
$DewPoint = $data[7]
$DewPointSlow = $data[9]
$object = New-Object –TypeName PSObject
$object | Add-Member –MemberType NoteProperty –Name date –Value (Get-Date)
$object | Add-Member –MemberType NoteProperty –Name Humidity –Value $Humidity
$object | Add-Member –MemberType NoteProperty –Name degF –Value $degF
$object | Add-Member –MemberType NoteProperty –Name degC –Value $degC
$object | Add-Member –MemberType NoteProperty –Name DewPoint –Value $DewPoint
$object | Add-Member –MemberType NoteProperty –Name DewPointSlowC –Value $DewPointSlow
$object |Export-Csv "C:\TempatureData.csv" -Append
# Finally, we clean up the http request by closing it.
$HTTP_Response.Close()
Start-Sleep -Seconds 600
}
This code logs the date and the data into a csv.
date | Humidity | degF | degC | DewPoint | DewPointSlowC |
7/6/2014 11:48 | 38.700001 | 73.4 | 23 | 8.177205 | 8.207732 |
7/6/2014 11:58 | 38.700001 | 73.4 | 23 | 8.177205 | 8.207732 |
7/6/2014 12:08 | 39.599998 | 73.76 | 23.2 | 8.694606 | 8.725507 |
7/6/2014 12:18 | 39 | 73.76 | 23.2 | 8.469035 | 8.499937 |
7/6/2014 12:28 | 38.599998 | 74.3 | 23.5 | 8.583681 | 8.615134 |
7/6/2014 12:38 | 38.599998 | 73.76 | 23.2 | 8.31695 | 8.347849 |
7/6/2014 12:48 | 37.5 | 73.76 | 23.2 | 7.89145 | 7.922324 |
7/6/2014 12:58 | 31.299999 | 73.58 | 23.1 | 5.177949 | 5.207903 |
Now I just need to place this in the box and I can remotely monitor and log the conditions in my filament storage box.
Item | Location | Price |
Spark Core /u.fl connector | https://www.spark.io/ | $39 |
2.4GHz Antenna – Adhesive (U.FL connector) | https://www.sparkfun.com/products/11320 | $4.95 |
Humidity and Temperature Sensor – RHT03 | https://www.sparkfun.com/products/10167 | $9.95 |
Breadboard – Self-Adhesive (White) | https://www.sparkfun.com/products/12002 | $4.95 |
10k ohm resistor | ||
small led (optional) | ||
470 ohm resistor (optional) | ||
Jumper wires |
There you have it. This is just a quick and dirty solution. I am sure it can be done cheaper and easier. This was done with the items I already had on hand with the exception of the DHT22.
Been a while since I posted but I have been busy. My printer has been busy also.
These are just some of the recent part I have been printing. I got the largest order I have ever had from makexyz. I did some design an a prototype of a guy a few weeks ago and now he wants 50 of each of the two design (100 items total). That is over 40 hrs of printing wow!
In other news I have heard some buzz about this kickstarter
I backed it because it looks promising. I print on blue painters tape and it works great. I don’t really need a new solution but this one is interesting and only cost $39. I need the 12×12 custom one since my printer has the jetguy heated build plate http://bctechnologicalsolutions.com/hbp/index.html. Delivery is not until Oct 2014 so I will wait patiently.
How do you do design when you are unsure of what the final product looks like? In a word (or two or an acronym and a word or whatever) “3D printer”
The problem:
Child safety locks for drawers are quite limited when on drawer/cabinet design. Some cabinets do not have a cross member above the drawer to attack the latching part of the lock. So how do you lock these drawers you improvise with you 3D printer.
Getting to the solution:
I had some ideas on what I wanted the design to look like. There is room on the side of the drawer in this case to allow for a lock. In this case instead of thoroughly thinking through all the potential pitfalls in the design I just started testing ideas. Here is my iterative process of design.
Step1: Rough out the idea on what I want it to be. This puts something physically in hand to see if the idea has any hope of working. This one seems like it could work and it has the flexibility that could work without breaking.
Step 2: The first prototype was way too short. It was not able to be depressed by hand when the drawer was closed.
Step 3: Wow I nearly tripled the length from step 1 to 2 but it’s still way to short. Also I question why it was so wide when clearly other locks are much skinnier.
Step 4: This is getting closer; I added the hook at the end. This is actually where something interesting and unexpected happened. The lock was behaving with an extra benefit. When locked (drawer all the way in) and the drawer was pulled on without releasing the lock by depressing it, the lock hook end actually deformed a bit to form a wedge that secured the drawer in place even more than just the hooking action I expected. This one was also a bit too tall.
Step 5: Shortened the height to give a bit of wiggle room for the drawer. I also extended the shape on the wedge on the end to take advantage of the unexpected behavior.
Step 6: Final design. I made the long extension a bit thicker to increase rigidity and prevent de-lamination of the top and bottom.
Here is the final design installed in the cabinet.
Well there you have it. The process of design with a 3D printer can be iterative because why not. To print successive designs takes only time and a few pennies of material.
I am not sure why there is not a large crayon sharpener (up until now) on the thingiverse.
http://www.thingiverse.com/thing:273589
I obviously have the need for one so I designed and printed it. I am using a standard razor blade and a screw I had laying around.
In case you are wondering… Nope, I don’t get it perfect the first time here is my first and second attempt. The third one works great though.