I haven’t progressed much with the makerbot in the last few weeks, still trying to get a hotter bed working. I’ve been playing around with making my own PCB’s via toner transfer and it works very well. I’m going to try to make a heated bed like the Makerbot V2 design with the heating coil etched directly into copper PCB. Whatever happens it will certainly test my etching skills.
In the meanwhile I was talking with a guy I sometimes work with who mentioned he collects yoyos. A quick search on Thingiverse found a design so I printed one for him. It came out quite well and worked first time. The small amount of warping is actually an improvement to the way it functions.
I was planning to test doing an acetone wash to make it more robust, but didn’t have time. I will test that later. A lot of my prints seem to have poor bonding between layers and I’m guessing that the adhesion can be improved by this method.
I had been trying for weeks to build a spool of some kind to hold my filament. I move my Makerbot occasionally and its not really convenient lugging around a huge loose coil of filament. After several failed attempts I was struck with a brilliant idea.
As you can see in the picture it is just 4 short pieces of PVC pipe bolted to the back frame. It holds about 200 grams or so of filament and takes only a minute or two to load.
Apart from the low capacity and manual loading, the other shortcoming is the material I used is not slippery enough. If the filament is pulled for long enough with consistent tension it gets tighter and might bind up. I think using rings of PTFE might solve that problem. The other idea I had was to put bearings on the inner edge of the spool for the filament to run along. That sounds like a lot more work and since the binding can be alleviated by jiggling the spool occasionally and I am not yet confident to print unattended anyway it’s not such a big problem.
I have successfully used the Atmega8 ICSP I programmed using the extruder controller to read back the flash and fuses on the extruder controller itself. The extruder controller can now go back to it’s old job. I might actually get back to printing stuff soon.
So having completed that part of the tool chain, next up is making a permanent board to mount the programmer on and start messing around with trying to load the Reprap firmware onto an ATmega32.
I tried for a while to install a boot loader on the m32 but it doesn’t seem to work and I’m not sure why. At the beginning I think I was writing it to the regular flash area and not the boot area. I’m pretty sure I fixed that problem but it still doesn’t work. Anyway since I now have a mostly functional programmer that’s not so important and I can just skip it.
I also managed to get an arduino core for the m32 working (from something I found on the net) and I’m using that in Eclipse. It seems to work quite well so far, compiles arduino code with very little modification and uploads via avrdude. So far I’m doing it the most basic and inefficient way I can think of, which is to put all the core files in an eclipse project and copy the arduino code into main.cpp. As a result the compiles take longer (not that a few seconds more matter) and the resulting files are huge. A simple program to blink one LED compiles to 8k.
I hope that’s all overhead and when I write longer programs it won’t grow much bigger. Perhaps if I had some idea of what I was doing instead of just pasting together other peoples work, I might figure out what I’m doing wrong.
It’s going to sound like I’m going around in circles now, but another step in the chain is to make another ATmega8 programmer so I can update and fix bugs in it without needing the extruder controller to program it again.
It looks like nothing except a fully operational battle station heated bed is going to solve my warping problems. The PVC tape just doesnt stick well enough to hold ABS down. If the temperature is too high or the nozzle is too close, the tape will melt and reduce the adhesion even more. The other failure mode is the raft, or the first few layers will rip away from the rest of the print resulting again in warping.
I still haven’t been able to find the right kind of thermistors locally, so I am thinking of using an LM35 temperature sensor chip. Now I just have to figure out how to integrate that into the chain. My preferred option is to “emulate” it with standard thermistor settings in Replicatorg. I’m not sure if it will be able to cope with a linear sensor. Otherwise it’s going to need some firmware hacking.
I built a new heated bed after my last attempt warped the acrylic build platform. The new one is made from a piece of very hefty heat sink with the fins cut off. It has more of the same heater wire from a hair dryer that I pulled apart and also has spring loaded mounts, courtesy of 4 now useless pens.
I still don’t have a controller, so I am measuring the temperature with the thermocouple that plugs into my multimeter. I have a whole bunch of high temperature thermocouple controllers, but they are all industial stuff and need 240v wiring. Since the current bed only gets to about 85 degrees if left on constantly I don’t think I need a controller yet.
Actually, after making the heater wire a bit shorter I can get 90 degrees, but from what I hear that’s still not hot enough for ABS. I need some insullation to retain more of the heat or maybe an even shorter wire. I don’t want to make it too much shorter for fear of overloading my mosfet.
I don’t think I will really need that much heat after all as I am thinking of not using kapton tape on the base. I found that simple PVC tape sticks better to ABS and should only need maybe 50 degrees to stop the warping.
I’ve stopped trying to setup my Makerbot for the last few weeks while I try to find an aluminium plate for the heated bed. Meanwhile, I pulled out most of the electronics to try another idea. I mention in an earlier post that one of the advantages of building a makerbot was as a way to get hold of some Arduino and other AVR stuff. I had used PIC microcontrollers a long time ago and wanted to get back into it.
After playing around with programming the extruder controller with other arduino code, the next step was to program it to act as an ICSP. There are a few reasons I wanted to go down this path, not wanting to order more stuff over the internet, I like doing things myself, to learn a little about programming, etc etc. I had a look at a few peoples work who have done this before and set to work on Randall Bonns mega-isp. It took a fair bit of messing with the code to get it to work, some of that was just because I don’t really know what I’m doing. Eventually I got it loaded onto the extruder controller and successfully used it to program a blank ATmega32 chip to do a simple LED flash.
The next step I had planned was to rewrite the Arduino AVRISP code to run on the ATmega32, but that is proving a little difficult. So instead I found another AVRISP clone from tuxgraphics that is written for an ATmega8 so I’ll just get one of them to program so I can put the extruder controller back in the makerbot. After that I can start working on getting reprap firmware onto an ATmega32. The reason I am doing that is simply because it’s available locally while the more advanced chips are not. Once I get a local Reprap community going I want people to be able to make the electronics from scratch using locally sourced materials.
Lets start this crazy idea with some possibly crazy assumptions.
1: Nobody wants to keep buying a $2/kg raw material in the form of $35/kg spools from small-scale suppliers.
2: Building a machine to convert plastic scrap or industrial pellets into 3mm filament is easier using a batch process than a continuous process. With a batch machine, you can just load a tube with whatever scrap you have and push it with a plunger. A continuous machine needs a properly designed screw to feed the material and is much more sensitive to particle size.
3: An average printer can process around 14 grams of plastic per hour.
So the question is, if your plastic filament comes in batches, how big does it need to be? My answer is 200g. That’s 14 hours of printing, which I think is a good balance point between printing time and size of machine needed to make filament. 200g of ABS is a hefty slug 30mm in diameter and 280mm long.
I had previously thought the easiest path to 3mm rod would be a 2 stage process, to melt whatever scrap or plastic source you have available into large-ish rods and then pushing them through a 3mm hole via a larger scale pinchwheel extruder. But thinking about it more, if you are satisfied with batches of 200g of stock, you can do it in one step directly from pellets with a plunger type extruder.
Though there might be a problem with trapped air getting into the extrusion and also with a variable thickness if your charge of plastic is not reasonably uniform. So perhaps a 2 stage process is better afterall.
I have mostly thought from the beginning that controller setup for the gen-3 electronics is less than ideal. Using another microcontroller for the extruder doesnt really add anything. As has already been discovered, it’s not suitable for driving a stepper based extruder anyway. The extruder controller seems very much a child of it’s environment, I can see where it came from but I also see no reason to keep using it.
Given the push toward multiple extruders, the current extruder controller is far to powerful and has too many features to repeat for each extruder. All that is needed for the extruder is one motor controller, one heater MOSFET and one temperature input. There will only ever be one heater and temperature for the heated bed so it doesn’t really need to be repeated on every extruder controller.
So what I plan to use instead is a motherboard that does everything and a “dumb” extruder controller with only the drive electronics, basically a stepper controller with a mosfet and a thermistor input. So the question comes down to what kind of motherboard to use. It should have a bare minimum of around 22 I/O pins, it should have atleast 32k of flash and be cheap and easily available.
And then I went to my local electronics shop and found they sell the ATmega32. After looking at the datasheet for a while I figured it might just work. It comes in a 40 pin PDIP package, it has 32 I/O pins, 4 PWM channels, 8 ADC channels, USART, SPI, 3 timers, JTAG, 3 external interupt pins, 32k flash and it costs $4.20. So I bought 2, one to make a into a programmer and another one to try making into a motherboard.
Now I just need some firmware that will run it. Thats a whole other kettle of autonomous swimming robots.
I’ve been thinking about automatic homing for my makerbot. It doesn’t have any endstops at all, which I might also install but just for safety.
The problem with using endstops for homing is that the Z endstop needs to be very accurately positioned if you want to put it at the bed end of travel. It must be low enough to have the nozzle in the right place but high enough that the nozzle wont crash into the bed. This leave maybe a few 10ths of a millimeter and it needs to be moved if the bed height changes. Another problem is if you home at the build surface you can leave lumps of plastic from contact if the extruder is warm.
The other option is to have the home at the top of the travel. This means moving the extruder all the way to the top to calibrate and then back to the bottom to start the print. I guess this is not really a huge waste of time but still not ideal. Also with home at the top of travel it is harder to check the height is correct. With home at the bottom you can see if it’s right or not.
Anyway, my idea for homing is a little bit different. I plan to install a sensor of some kind on the Z axis that is on for Z < +10 and off for Z > +10 or something close to that. The sensor could be an on optical endstop arranged for pass-through movement or a switch against a cam of some kind on the frame or even a reflective sensor against a marker on the inside of the frame.
Homing would then be acomplished by checking if the sensor is on or off and moving up or down as needed until the sensor changes. Using the fast then slow movement of the current homing system should get repeatable accuracy enough that adjusting the height during printing is not needed.
The other advantage of this system is being able to adjust the calibration in software without the need for moving the sensor hardware. Also having a home position at around Z+10 means you can to a test extrusion and start the print without the need for any other movement.
I printed my first actually useful piece today. It’s nothing more impressive than a y-bar-clamp but I was quite impressed. I have had a horrible time trying to cope with the warping.
I managed to print this by first printing a thick raft, stopping the machine, clamping the raft to the bed and then printing the part on top of another raft printed on top of that. It works ok but it’s slow and inconvenient and I think it will only be a temporary measure until I get a heated bed.
Also, for anyone out there who is actually reading this, you might or might not notice this is not a standard mendel part. I started designing a new mendel version but I don’t know if I will pursue it. I’m leaning toward making a much smaller mendel/makerbot hybrid design.