A new heater and better printing.

When I was ordering the parts for my reprap last year I accidentally ordered some thermistors that were only rated to 150°C rather than the 300°C of the recommended part.  I can’t remember if it was just an oversight or I was swayed by the fact that they were only £0.58 each as a opposed to £3.99.

After realizing my mistake I ordered the correct part but assembled an extruder using the thermistor at hand out of both curiosity and impatience.  The results of initial testing were quite good (see this post) and the initial prints seemed acceptable.  I decided after printing Adrian’s geared driver it would be a good time to rebuild the heater of the extruder using the glass bead thermistor.

Photo 1: The charred remains of a thermistor 100°C outside its comfort zone.

After removing the resistor from the charred heater (pictured above in Photo 1) one of my main concerns with the heater was that the polyimide tape was often melting and giving off fumes.  As I was only heating to 220°C at most according to the extruder control board then either my tape was not the Kapton™ tape it said it was or the thermistor was reading the wrong temperature.  I’m not sure that the wrong temperature was due to the bad thermal contact with the nozzle or the fact that I was operating outside the recommended temperature range.  The new thermistor is much much smaller (0.8mm diameter (Ø) as opposed to 6.3mm Ø) and so should be much closer to the heater barrel and able to achieve much better thermal contact.

Once rebuilt, tested, the extruder firmware reprogrammed for the new thermistor look-up table, and the sanguino motherboard reprogrammed for the new extruder drive I started printing some test parts.  The test parts are from a design I’ve started for an adjustable hub for use in feeding filament into the reprap.

Photo 2: The Hub-o-matic

I had found that with the previous heater I was able to extrude reliably at temperatures around 200°C – 220°C. With this new thermistor in place I needed to heat the system up to 250°C to get comparable results.  I hope to get a thermocouple sensor at some point to confirm the actual temperature of the nozzle.  My preliminary testing at temperatures below 100°C show the tip of the nozzle to be about 50°C below the temperature read at the thermistor.  I am unsure if this is due to sensor error or simply heat dissipation along the heater barrel.

Once up and running though I did get some parts printed, but only after a couple of runs that ran out of steam half way through.  The photos below show examples of the good and the bad prints.  To get a sense of scale the spindle is M8 threaded rod and the screws holding the struts to the bearing holders are all M3x20.  The bearings a 608ZZ (AKA skateboard bearings).  The usual problem I find with my prints going wrong is that they print perfectly for the first part and then the extruder just runs out of heat and the extrusion becomes quite lumpy.  This I normally try to fix by increasing the temperature.  This works to an extent but costs you in quality as the extruder begins to ooze uncontrollably or simply extrudes too much filament.

Photo 3: A good print of a 60mm x 10mm x 10mm strut for the Hub-o-matic
Photo 4: A bad print of a 60mm x 10mm x 10mm strut for the Hub-o-matic

After the initial prints I built up a second heater barrel using the same type of thermistor and confirmed the temperature behaviour and performance to be the same.

The new extruder driver certainly has plenty of torque and I feel it could almost push through the filament cold.  I must admit I had my doubts about the design when I first looked at it and printed out all the parts.  There didn’t seem to be enough parts to hold all the bearings in place, and the 55 tooth gear seemed a little loose and unconstrained in its positioning.  After building it and threading the filament through I am impressed.  The brass insert from Conrad Electronics really does grip the filament well and the gears mesh beautifully. It is also worth noting that I initially overlooked the last instruction in the build, to use some silicone grease on the gears, but it does make a dramatic improvement in the gears ability to mesh nicely, smoothly and quietly.

I did deviate from Adrian’s design slightly. As my motors have a 2mm Ø cross drilling on the end of the shaft, instead of filing the end of the motor shaft flat, I drilled a 2mm Ø hole through my drive gear and used a spring tension pin to retain it.  I’ve also made one other change to Adrian’s design.  I can’t stand using glue or epoxy for something like this so I retain my PTFE thermal barrier using two M3x20 screws through the base and thermal barrier (perpendicular to the direction of the filament and heater barrel).  This allows me to swap out extruder barrels quickly without cutting any tape when they give trouble or become blocked.

Building a new extruder driver.

While I am reasonably happy with my initial prints I have decided to build Adrians geared extruder driver to improve the consistency of the extrusion.

The three photos show my new extruder driver.  Although the printed parts look good enough to work in this situation a close inspection of the print show the extrusion tends to “bead” a little and on some prints just stop altogether.  I’m hoping a driver with more “torque” will improve this as well as better spool management.  I’m also building a new extruder head as well to improve the temperature stability.

If anyone has other ideas on how to better improve the print quality of my reprap I’d love to hear about them.

Reprap first print!

Mendel livesReprap Steper motor driver

After four months of soldering and mucking about with screws and metal things I finally have a working 3D printer.

This was built using Makerbot electronics and aluminium versions of the printed parts. I will publish the drawings of the machined parts as soon as I have 1) tidied them up, 2) fixed the mistakes I put on them and 3) confirmed the design actually works. I made a few changes from the designs released in November in order to make them machine-able, but for the most part they are true to the original designs and taken from the STEP files or the STL files converted back into CAD files.

I’ve deliberately mounted the electronics in an open fashion on standoffs on an aluminium base plate to facilitate testing as I plan to improve and refine the design. I’d like to improve the electronics, PCB design and location of boards with an eye towards EMC and proper shielding, but for moment they are open to allow scope and multimeter access. I hope to tidy up all the cables into tidy looms and things a bit once I’m happier with the performance and reliability. I had an opto-interrupter board fail on me which resulted in a couple of crashes so I’ve temporarily replaced them with some very cheap push buttons. Probably a short circuit on the veroboard versions I built up, that’ll teach me for being too cheap to pay $1 for a decent PCB.

Repraped Lego brick gear, brick and gear

I am reasonably happy with these prints as a first attempt. I think I really need to tweak the settings and the operation of the extruder to get things working better. (The part designs are from Thingiverse parametric spur gears, Thingiverse parametric Lego block)

I’m quite glad to notice the latest version of host software is functioning on OS X, it saves me having to boot up windows every time I want to print. I say functioning and not working as it doesn’t quite fit all the controls on the screen nicely and does odd things every now and then. But it is better than it was a couple of months ago and so it is looking good for the future.

Sadly I’m off home to NZ for a few weeks so wont get a decent chance to to get it all going properly till the end of the month. On the other hand the software may have moved forward another step by then as well and I might even take the time to read the instructions.

Arduino MP3 Rev B v0.0

Last week I managed to have some luck with my Arduino MP3 shield. The big hold up was caused by not having enough power from the FT232RL chip to supply the decoder and the memory card at the same time (50mA max d-oh). I also had a software issue, I had not altered the code to deal with the 16Mhz clock speed of the arduino from the 8Mhz I was using on the ButterflyMP3 project. The SPI clock was running at 8Mhz where it needed to be slower than 6MHz (to comply with the VS1011E datasheet). Once I had that sorted everything just popped into place and started working reliably.

I apologise in advance for the poor integration of the library examples. I have simply and quite roughly ported the minimal parts of my buterflymp3 project over to the arduino and this hardware. The examples will test reading FAT16 file system on the MMC/SD card, test the VS1011E decoder chip, and play the first mp3 file found on the memory card. I hope to get these tidied up later but have not had any time to do so lately.

The PCB has not actually been tested yet so I’d hold off building a million of these until after a successful test. There is unlikely to be much wrong with it though as I have simply added a voltage regulator and re routed a couple of signals to fix my earlier mistakes. ( I’d forgotten that I/O lines 0 and 1 are used by the uart on the arduino)

I have embedded the BOM below. ( The bom is here if you don’t see it below)

Here are all the files so far. These are all released under a Creative Commons 2.5 license .

EAGLE files are here

GERBER files are here

Arduino Library files are here

PDF of the schematic is here

To use the library simply put the “mp3” folder from the zip file inside the “libraries” folder in your arduino folder (create one if it doesn’t exist). Restart Arduino 018 or later and you should have “mp3” entries in the menus under examples and import libraries.

The BOM references a 2.8V LDO voltage regulator but the schematic shows a 3.3V. Either will work fine but the 2.8 will give you slightly lower power usage.

If you are interested in PCBs or kits, drop me a line at buy_pcbs@brokentoaster.com
As always any comments, suggestions or ideas are welcome.

Reprap extruder heater

My cheap polymide tape arrived from Hong-Kong yesterday so I was able to get the heater built on the extruder for the reprap. No problems with the construction of the heater itself, although after running some tests I discovered the thermistor I had chosen is only rated to 155 degreees Celcius. I obviously wasn’t looking very hard when I ordered it or perhaps it was just the fact that it was one tenth the cost of a more suitable device that convinced me to buy it. I should have a new thermistor in this week and replace this one.

Before going too far with my heater I wanted to test the system and check that the temperature measured was accurate. I ran three sets of tests. Using the Butterfly Logger with some DS18B20’s and a SHT71 I logged the temperature of the barrel at the edge of the extruder (see close up above). The SHT-71 was used to monitor the extruder temperature with the DS18B20’s monitoring ambient. The first test was logged at 10 second intervals with the later two logged each second.

The first test was a 0.2 deg C/s ramp from near ambient up to 75 deg C and then a step change to 100 deg C and then passive cooling. This is shown in the plot below. The period of 10 seconds seemed too slow to give me a good idea of the stability so n the following tests it was decreased to 1 second. This did show rough correlation between the set temperatures and the measured temperatures although not really as accurate as I had hoped.

This test was a controlled ramp of 0.2 deg C/s from near ambient up to 100 deg C. After holding at 100 deg C the system is passively cooled to 50 deg C. The system holds at 50 deg C momentarily before being given a step change to 100 deg C, after which the system is allowed to cool to ambient.
The better time resolution allows the system stability to be better assessed. The system looks reasonably stable at the 100 deg hold mark. Here it is cycling around 5 deg around the set point. The ‘stable’ temperature is slowly rising which I attribute to the thermal mass of the barrel and thermal barrier warming up. It is not 100 deg C as it is not measuring at the same point where the control thermistor is measuring. Looking at this initially lead me to check the characteristics of the thermistor I was using and is what lead me to discover that it was only rated at 155 deg C. In checking the data sheet I also noticed a diference in the Beta value fromt he look up table used in the extruder firmware. I recalculated the look up table accordingly and repeated the tests in test 3.

This was a repeat of the previous tests with the new lookup table ( Beta = 4400). This seemed to give a ramp rate twice of what was programmed (0.45 deg C/s compared to 0.2 deg C/s). The temperatures seemed hotter which is expected given the change in thermistor table for the control firmware.

The next test will of course be to see how the system performs when loaded i.e. extruding some plastic.

Reprap Electronics build

I ran out of time this weekend to get anything done on the MP3 shield or the MLMC projects. I did however manage to find time to solder up the electronics for my reprap I’m building. After a couple of hitches I also got the firmware on and up and running.I had to download the latest from SVN else I got a clash between the stepper-motor drivers and the servo motor drivers in the firmware for the extruder.

I built the mother board to use a standard PC power connector even though I’m building a reprap. It just seemed silly to power this PCB via USB and then rig the power-supply to power all the other boards. I temporarily used the USB 5V to power the PCB via a pin on the JTAG connector during programming the firmware. Before the firmware on the mother board was programmed the PC PSU wouldn’t fire up so I needed a temporary power supply.

I managed to test the extruder board with some test software I found at http://objects.reprap.org/wiki/Microcontroller_Firmware_Hints#Driving_Steppers_with_the_Extruder_Controller_V2.2_.28Arduino_inside….29. But I haven’t managed to get it working through the mendel firmware via the host software yet. The thermistor was working so I know the RS485 link is functioning properly. Probably just a configuration.h option I’ve over looked.

It took a couple of hours to get the three boards all soldered up and tested. I’ll post more when I have more done. I’ll probably be focusing on the mechanical side of building the Cartesian robot for now so not much electronics left to do, although I still have the firmware to sort through…

[EDIT] It turns out that I had overlooked the I2C connection between the motherboard and the extruder board. I should really have read the instruction.

New PCBs in from BatchPCB

My order of PCBs from BatchPCB arrived the week before Christmas so plenty of soldering and things to keep me busy over the holiday. I’ve also been distracted of late with building a reprap, although I’ve not got much further than amassing a number of PCBs, components and motors, watch this space for details as the build progresses.

My Batch PCB contained a new version of the Arduino MP3 board with provision for running from the 5V Duemilanove Arduino and a number of MLMC boards so I can string them together for testing. Unfortunately the ArduinoMP3 PCB had a couple of design errors, which is typical when your working on a design off and on over a course of months. The design will probably be released soon, but the libraries and demo code are also proving slightly more difficult.

Some changes to Hardware.
The basic design of the board is the same, VS1011 and SD card shared on the SPI bus with a 5 way Joystick on some digital lines.

I forgot about the TX/RX lines being shared with digital 0 and 1 on the arduino so I’ve had to re-route signals using those pins to the previously unused analog/general IO pins.

A couple of changes related to running the circuits on a 5V / 3V3 system. My Butterfly MP3 system that I based this on was powered from a single supply rail of 2.8V. The FTDI USB chip on the arduino was originally used to provide a 3V3 supply to the shield. I thought the 50 mA stated in the data sheet would be enough as my butterfly mp3 system only used about 50mA including processor and display. Unfortunately the is a large current draw when an SD Card is inserted causing the FTDI chip to reset and breaking connection with the PC. Although not a big problem I decided to add an LP2981 LDO regulator to supply a 100mA for the card and MP3 player circuits. If you don’t want to use this then you can not fit the parts and easily bypass with a jumper wire.

C++ing the libraries
I was hoping to use the existing libraries for the Arduino and SD cards to access the MMC/SD Cards and provide demo code to show using the shield. For an as yet unknown reason the existing libraries from Adafruit wave shield do not work. In order to test my hardware I have converted my MMC and FAT libraries from the ButterflyMP3 project to C++ for use with the Arduino system. I few teething problems and issues as I remember how C++ works and I now have a working SD Card system. Output from my current software is shown below

I’d like to use the already available libraries as they offer FAT32 and extended features over my bare bones implementation – so not quite ready to publish any finished code just yet.

Next step is adding the support for the VS1011. Again not quite as smooth as I’d hopped but moving along with the help of the old intronix logic port. Currently the VS1011 is not setting up correctly. Occasionally it plays OK but mostly nothing or a very slow version of a song, indicating to me the clock registers are not being set correctly.

I think another weekend or so of work and I’ll be there but if you’d like a copy of the current PCBs or Arduino files then just drop me an email or leave a comment.

Current Demo Software Terminal Output

MMC_RESET returned 0
MMC_SEND_STATUS returned 0
MMC_SEND_CID returned 0
0: FE 02 54 4D 53 44 30 31 47 28 9A CF 7B 33 00 7A ..TMSD01G(...3.z
1: 83 08 8E FF FF FF FF FF FF FF FF FF FF FF FF FF ................
MMC_SEND_CSD returned 0
0: FE 00 2D 00 32 5B 59 83 D6 7E FB FF 80 16 40 00 ..-.2[Y.......@.
1: FB 5E C9 FF FF FF FF FF FF FF FF FF FF FF FF FF .^..............
MMC_Capacity returned 1037952
MMC_Name returned 0 SD01G(
MMC_Read returned 0
MMC First Sector:
0: FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC .3........P.P...
1: BF 00 06 B9 00 01 F2 A5 EA 1D 06 00 00 BE BE 07 ................
2: B3 04 80 3C 80 74 0E 80 3C 00 75 1C 83 C6 10 FE ...<.t..<.u.....
3: CB 75 EF CD 18 8B 14 8B 4C 02 8B EE 83 C6 10 FE .u......L.......
4: CB 74 1A 80 3C 00 74 F4 BE 8B 06 AC 3C 00 74 0B .t..<.t.....<.t.
5: 56 BB 07 00 B4 0E CD 10 5E EB F0 EB FE BF 05 00 V.......^.......
6: BB 00 7C B8 01 02 57 CD 13 5F 73 0C 33 C0 CD 13 ......W.._s.3...
7: 4F 75 ED BE A3 06 EB D3 BE C2 06 BF FE 7D 81 3D Ou.............=
8: 55 AA 75 C7 8B F5 EA 00 7C 00 00 49 6E 76 61 6C U.u........Inval
9: 69 64 20 70 61 72 74 69 74 69 6F 6E 20 74 61 62 id partition tab
A: 6C 65 00 45 72 72 6F 72 20 6C 6F 61 64 69 6E 67 le.Error loading
B: 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65  operating syste
C: 6D 00 4D 69 73 73 69 6E 67 20 6F 70 65 72 61 74 m.Missing operat
D: 69 6E 67 20 73 79 73 74 65 6D 00 00 00 00 00 00 ing system......
E: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
F: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
11: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
12: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
13: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
14: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
16: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
17: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
18: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
19: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
1A: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
1B: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 ................
1C: 37 00 06 03 C3 E6 F3 00 00 00 0D B3 1E 00 00 00 7...............
1D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
1E: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
1F: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U.
FAT Init returned:0
FAT boot Sector info
FAT begins at sector 244
Clusters begin at sector 768
Sectors per cluster = 32
Root dir starts at sector 736
THESTR~1.MP3 00045 037A00 2E0F
THESTR~2.MP3 00124 03400 2E1A
THESTR~3.MP3 001F5 025C00 2E24
THESTR~4.MP3 0028C 030400 2E2E
TWINSE~1.MP3 0034D 051B249 2E39
THEWHI~1.MP3 00494 03867AF 2E45
THESTR~5.MP3 0057B 02FE00 2E51
THESTR~6.MP3 0063B 032B00 2E5C
THESTR~7.MP3 0079 034D00 2E68
BEASTI~1.MP3 007DD 02EC9A4 2E74
BEASTI~2.MP3 00899 02E93C3 2E80
BEASTI~3.MP3 00954 01F172F 2E8B
THESTR~8.MP3 009D1 03A300 2E95
THESTR~9.MP3 00ABA 02DC00 2E9F
THEST~10.MP3 00B71 02F00 2EA9
THEST~11.MP3 00C2D 026900 2EB4
05-ILE~1.MP3 00CC8 02E8C16 2EBD
BEASTI~4.MP3 00D83 03EF2C9 2EC8
Files: 18

STL to IGS (IGES) Conversion

I’ve been trying to get my models from Sketchup into a decent file format for use with different analysis engines and for producing drawings for machining.

After a week of playing about with different options I have managed to get from Sketchup files to IGES files.
I used BRL-CAD to convert from .stl to its native format and then exported as an .igs from there.
Below is a copy of the script i used to convert a whole directory of files.

# Convert an STL file to IGES format using BRL CAD

for file in *.stl
# Add the -b option or binary format stl files (aoi,solid edge etc)
# stl-g -b ${file} ${file}.g

# Use ascii format for exports from sketchup
stl-g ${file} ${file}.g

for file in *.g
mkdir ${file}.d
g-iges -m -o ${file}.d ${file} all
cp ${file}.d/*.igs ${file}.igs
rm -rf ${file}.d

I did run into an issue or two along the way. When initially export as iges with the command g-iges -o file.igs file.g all the file produced caused every program I tried to load it with to crash with the exception of BRL-CAD which loaded it just fine. I found that when I used the -m option and export all regions to a directory of iges files the files worked. The STL files produced by the STL output plug-in for sketchup produces STL files in the ASCII format some programs may produce files in binary format, in which case you will need to add the -b option to the stl-g command. I had to use this when converting the STL files from the reprap project to iges files.

Why IGES files? Because I couldnt get STEP files. While STL files are widely supported they are mesh files that describe surfaces only. Most professional mechanical CAD packages use constructive solid geometry (CSG) techniques and don’t like mesh files so much. That’s not to say I couldn’t load STL files into these packages but the loaded part was less useful when imported from STL as compared to IGES. An IGES file allows me to measure and convert to a solid object or more easily produce drawings for a machinist to work with.