Delta Robot Blog
Back to Main Page
Here is a link to my last Arduino software that may be of use to someone.
Delta Robot Software
The last few nights have been spent refining the firmware. I have now simplified the main routines and have eliminated the wandering of the linear moves. There is still a little more work and I have posted the equations on the reprap forum to see if there are any bright sparks that can simplify it still further. Testing the robot now is very pleasing as the travel is very smooth. The next job is to eliminate the lead screws. I have completed some CAD work and it seems that the two linear rail positions one behind the other do not suit belt drive, so this may require more work to put them side by side. I should really have done this in the first place, but as usual these things only become apparent when you have built the first prototype.
12/12/2010 MK2 build has begun.
The weekend has seen steady progress on the HF Delta Robot. To address the two fundamental flaws in the MK1 design, namely the errors in the tool paths and the lead screw speed limitations, I have spent some time looking at both. I have completed large amounts of CAD work and incorporated a toothed belt pulley to replace the lead screws. This means relocating the motors to the top of the machine in order to ensure gravity acts with the design to naturally tension the belt. I also completed the work on the idler pully at the bottom and I just need to redesign the moving carriage to give some method of clamping the belt. In between this work I have also tried a few things in code to ensure the robot travels in straight lines between start and end points. Its actually quite hard to do and I am struggling to achieve what I want. I may try a method where I divide the long G1 code linear moves into smaller sub steps, this will approximate a straight line by telling the robot some intermediate XYZ points. If I make the steps small (say 1mm) the deviations from true will be so tiny they will be negligible.
Not too much progress tonight as I have been busy videoing the robot and uploading it to Youtube. I put the robot through some larger moves and noticed that the moves are not linear, but arc gently as the robot travels. This is because the stepper motor intervals are not uniform unlike a cartesian robot is when doing diagonals. I'm not sure, but they are probably sinusoidal or parabolic step intervals. It makes no difference what they are as the way I will be calculating them will be based on travel time and then predicting the XYZ location. This means I need some additional maths each cycle to calculate intermediate points as I go along. More work, but now I know how to do it, I'm hoping it will be a little easier to do this time around. Here is the uploaded video, the robot is a little slow and shaky, but it does at least prove that it works.....Verdict should be:- A good start with room for improvement!
08/12/2010 Its Alive!
I finally cracked the stepper motor timing problem today. I completely rewrote the stepper pulse cycle by calculating the time elapsed from the start of each move and then checking if each motor is behind the expected number of steps at that point in time. This way the motors stay on time and the robot head takes a direct line to each target point. I got the machine drawing some boxes and filmed a video of the robot in action. I will try to upload it to Youtube soon. Conclusions I have made so far are as follows.
1) Home made lead screws from M8 threaded bar are a complete waste of time. The traverse is so slow that it is only suitable for milling work. If you increase the speed there is high resistance in the lead screw nuts, which skips the motors. An additional problem is that any slight bend in the lead screws transfers a pulsed load to the central head. This causes the lines that it draws to have a slight wobble in them. I may change the design to use vertical toothed belts or possibly try M10 or M12 threads as these may be straighter and have an larger pitch.
2) The frame needs to be set up perfectly otherwise straight lines are bowed slightly and squares may be trapezoid in shape. I have thrown the frame together and not yet checked any alignment, so with an hours work I think I can get the frame dialed in so this goes away.
3)When programming an Arduino, the very first thing you should attach to it is a LCD display. You can then use this to output various variables whilst you are debugging the code. Without this I would have been working blind and it would have taken me weeks to iron out the bugs.
I have ironed out the motor direction error and I now have a robot that is capable of drawing simple shapes on a sheet of paper. All the transform algorithms work as expected, but I am getting the robot wander off the direct route to the target points. This means the shapes it draws are akin to what a small child may do whilst learning to write! This is due to the steppers not finishing their moves at the same time. Having a look in the code there is a routine for calculating a delay in the stepper motor pulses so this should not happen. I worked through a simple move calculating each code line by hand and I think there may be a rounding error. As I'm 16th stepping the motors, even a small error over that many pulses can mount up to a half second or so. I tried a routine which recalculates the delay after each move, but this didn't work too well. I'll have to try something else tomorrow.
All parts have now been printed and the mechanical assembly is complete. This includes the sprung loaded pen holder. The elctronics have been completed on a breadboard and I have included a LCD screen to enable easier debugging. I am using some old firmware that I used for my cartesian robot which is based on the Hydra MMM firmware by Clayton Webster. I have stripped out all the extruder an acceleration routines and added a delta transform routine to calculate all the positions for the vertical lead screws. So far these are working correctly and I am using the LCD screen to report back the calculated values with each G1 code move. This confirms that my delta algorithms are correct. Its just a case now of debugging the stepper motor direction routines and I should have a working robot.
The magnets for the Makerbot heated bed finally arrived today. This was good news and tonight after about an hour of tinkering the machine was back in production. The new heated bed and extruder worked very well and as a little test I made a Z axis knob for the Delta Robot. The part is the best quality I have ever made, with good fill and no warping at all. The extra heat I can now generate in the base of the parts really helps avoid warping (Measured at an actual 127 degrees C). I hope to have time tomorrow to restart printing the last large parts part for the Delta robot build.
There is still no sign of the magnets which are the final piece to get my Makerbot working again. Whilst waiting I have been working on the electronics for the delta robot. I am going to make this on strip board as this will be quick and doesn't fully commit any are the major parts if there are any changes. It looks like the stripboard design will be simple enough but I want to be able to change the microstepping on the boards, this means incorporating some jumper pins or easily desoldered connections. Initially there will be no end stops, but 4 motor drivers for the 3 vertical towers plus one for the extruder.
My Makerbot is still not back together, so there has been little progress on the delta robot. Good news is that I have totally rebuilt the Makerbot extruder from aluminium and also took the time to refurbish the heated bed. It now runs using resistors not nichrome wire and is fully controlled by the firmware. To do this I had to use some strip board and mount some components which was good soldering practice. I just need to mount it up and add a few magnets to the heated bed and then hopefully this week back to printing parts. Whilst waiting for the Makerbot I have also been reaquainting myself with the Arduino Mega and stepper control. I quite like the Generation 6 single board solution, but as I have a Mega and some pololu stepper drivers lying around I will use those.
I'm continuing to improve the delta robot an printing updated parts. Two corners now have the extra bearings fitted and the third is due soon. Each corner has a slightly different design and I will use this to evaluate the best concept. Unfortunately my Makerbot extruder has packed up again and this time its more serious as I haven't any spare parts. It looks like tomorrow will be spent in the garage making some new bits by hand. Then I suppose I should print off a new extruder before getting back on the delta. Whilst putting the robot together I have noticed that some parts could be combined to save bolts and print time, so I will do this as I go along. It will make my robot non uniform at each corner, but thats OK as long as it works.
Mechanically the robot is now complete with all parts printed, however after examining the assembly I wasn't happy with the twist in the central carriage. I have now redesigned each corner to have an extra rail outside the first and two extra bearings at each corner. Unfortunately this means redesigning and reprinting several of the parts, but I am almost complete. Hopefully this weekend I will be back where I was about 10 days ago, but with a much more robust design, then I can get on with the electronics. I will build these on a bread board to start with and get the motors moving with normal reprap software, then start to modify it to interpret delta moves. Whilst the parts are printing I am also making a new heated bed for the makerbot. As I have been doing so many prints lately this has given me the chance to modify the print parameters progressively with each print and gradually improve the parts. They are now really quite good and the last major hurdle is to get rid of the warping aat the corners. My bed runs at around 105 - 110 degrees C, but uses nichrome wire and I think there are cold spots on the base. I'm making a 6mm aluminum bed powered by resistors inspired by Nopheads larger sized design.
I made good progress today rapid prototyping some additional parts for the robot. The Makerbot started OK and I only had one aborted print. I now have all the parts for the additional frame bracing and have a few vertical carriage parts printed off. This evening I carried on with the design for the central tool carriage and I think I have now settled on the design I want to go with.
I am now in the final design stages and am working on the central tooling platform. I have split the part into several smaller pieces so that it can be produced easily on a Makerbot which has a small build platform. Large parts are OK, but as the print time incresaes, so does the likelyhood of producing a scrap part. Hopefully tomorrow I can get on and print a few more parts. My Makerbot hasn't been run for a while so I am hoping it will work first time.
I am continuing to work on the website to upload information and also updated the CAD assembly to add in additional braces to the frame. This will also require a reshape of the base plate to clear the ends of the new parts.
There has been some developments on the design. It appears that whilst I have been focusing on other projects the German Reprap Forum has been continuing the development. They have taken my initial design and made significant progress and also developed some software. I am supporting them as much as possible with the designs I have and it has encouraged me to get back into it some more. As you can see the site now has a new look and I have uploaded the main rapid prototype models.
I have had trouble with my Makerbot machine so printing of the delta robot parts was halted for a week. I ordered and recieved a new extruder motor and the parts for the delta frame have been printed off. During the printing I had a few failures of the largest part so I redesigned the part again to make it smaller still. The frame seems quite stiff, but may require further cross bracing or wooden sides to improve stiffness.
Progress on printing the first tower is underway. I have had some problems accomodating the size of the parts on the bed of my Makerbot, but with a little redesign of the parts I managed to print a set off.
There is was a small amount of lifting/ warp on the large parts, but nothing to prevent the part function. The motor mount is the largest part I have printed so far and took over 4 hours to print. Unfortunately the M8 threaded bar and 10mm diameter bars from my last robot are too short to be recycled, so I will have to buy some more stock tomorrow. I was going to test one tower before printing them all, but it seems that the frame needs assembling as one unit so I may just bite the bullet and print the parts for all three towers.
The design is complete and I have started printing the parts on my Makerbot.
The parts are printed on my simple heated bed made from nichrome wire between two sheets of steel. The bed is covered with Kapton tape. The bed runs without any control software at 110 degrees.. The parts are printed at 0.5mm layer width which makes them a little rough but perfectly usable for most of my projects. There is very little warping of the part and as I am not printing with a raft they are easy to clean up. I do run my Makerbot quite slow as that way I can almost guarantee that I get a part off every time. This part took 1 hour 41 minutes to print.
Completed the calculations I will need to calculate the movements of the vertical axes when the robot is supplied with cartesian coordinates via G code. An Excel spreadsheet can be found of the calculations Here or from the link on the left menu.
Designs are now well advanced for the delta robot design. The CAD models are nearly all complete, so it is just a case of reprapping the parts for a single axis and then testing it before printing the rest. The working envelope will be a cylinder of diameter 200mm and a height of 200mm. I am developing the CAD model so that I can check any clash conditions in the working envelope limit. The clearance is particularly tight around the rose joints.