Showing posts sorted by date for query switches. Sort by relevance Show all posts
Showing posts sorted by date for query switches. Sort by relevance Show all posts

Sunday 21 March 2010

Making Mendel

I aimed to build my Mendel in time to show it at the Makerfaire in Newcastle but completely failed. I had two weeks to build it, which I thought was plenty. In actual fact it took closer to three weeks before I got it printing successfully. I had no major problems, just a few snags here and there and a severe underestimation of how long it would take on my part.

Printed Parts

Unlike when I printed two sets of Darwin parts, printing the parts was the easy bit. This was due to three breakthroughs I had at the beginning of the year: -
  • The heated Kapton bed removed the need for rafts, which not only take a significant time to print, but also can take a lot of manual work to remove.
  • The extruder fast reverse got rid of all the strings, which also took a long time to clean up, especially from inside the Darwin corner blocks.
  • The "no compromise" extruder is so reliable that I have the confidence to do multi-part, layer by layer builds, which gets a lot more on the table, allowing longer unattended operation.


I printed the parts with 0.4mm or 0.375mm filament and with 25% infill. For the larger parts I used two outlines for strength. Since the large parts don't need fine detail, I think printing them with 0.5mm filament and one outline would be quicker, but that would need a bigger nozzle.

The weight of the parts, not including the extruder, was only 730g. I printed the outlines at 16mm/s and the infill at 32mm/s, so it's hard to say the total time. Assuming an average speed of 24mm/s at 0.4mm diameter gives about 3 mm3/s. That would put the total time at about 65 hours. I did it as a background task over a few weeks. A lot of the parts were printed as experiments with heated beds.

Rods

I took me an evening to cut all the rods. The method I used was to nail a stop to my workbench to line up the rod against a metre rule.



I then lined a piece of masking tape up with the correct measurement and wrapped it round the rod to mark the place to cut. I also wrote the name of the rod on the tape to make it easy to identify later.



A Black & Decker workmate makes an ideal vice to hold the rods while sawing. I rotate the studding until the thread lines up with the edge of the masking tape. That guides the saw to start in exactly the right place.



I used BZP for all the studding except the z-leadscrews, for which I used A2 stainless steel because it is smoother and generally straighter. I bought the rods from Farnell and even the BZP studding was very straight, a lot better than the stuff you get in B&Q. I also used A2 for all the bars.

It was very hard work sawing the A2 until I switched to a new blade and used Trefolex cutting compound. I am not sure which made the most difference, but I could then cut the A2 much easier than I had been previously cutting the BZP. I wish I had done that earlier, it would have saved a few hours.



Thick Sheets

The thick sheet parts are not really suitable for making by hand, particularly the squashed frog. They have lots of slots, which are hard to make without a milling machine or a laser cutter, etc.



I am not sure exactly what the hole in the bed and the purge plate are for, so I made the bed a simple rectangle with four holes. I am using my own electronics, so I made the two circuit board plates to suite. I simply cut rectangles and I marked the holes and drilled them in the right place, so no need for slots. That just left the squashed frog.

I made a much simpler design with drill centres on it. There is no need for the bulging legs and sloping shoulders. I think they must be just to make it look more like a frog. Fine if you you are CNCing it, but a PITA if you have to make it by hand. Also the holes for the opto tab and the purge plate are mirrored for no apparent reason, so I made it chiral.



This just starts as a rectangle with some holes in it. Then the large slots are made with a saw thin enough to turn in the holes. The outer holes that mount the bearings can be round because they are in a a fixed place, dictated by the holes in the bed. The inner holes need to be slots because the bearings are adjustable. I just left them off the template and marked them with the bearings adjusted and in place.



I made the sheets from 3mm Dibond, which is below the recommended thickness, but seems stiff enough. It is also light weight and very easy to machine.

Thin Sheet

I didn't have any optos, so I used micro switches for my end stops, hence didn't need any thin sheet parts. I simply attached them to the bars of each axis with P-clips. A little RepRapped bracket would be better but I was building this in a hurry, so had gone into bodging mode at this point!







They seem to have sufficient repeatability and certainly will when I replace the electronics with my new design, which will know the motor phase, reducing the uncertainty by a factor of 32. It is the same switch that I have used on the z-axis of HydraRaptor, which has proven totally reliable. They seem to be this one from RS, not cheap.

Belts

These were easy enough to split but, because the reinforcing wires run in a spiral, the blade tends to follow one for a while before managing to cut through it. That leaves a ragged edge with a bit of wire sticking out.

I didn't understand the rationale for slackening the belts until you just don't see backlash when moving one motor detent. I am microstepping anyway, so a motor detent is not significant. I made my belts good and tight.

Snags

I had a few snags with the mechanical assembly: -

The x-axis spacers are too short. The STL files are 5mm shorter than the parts in the STEP assembly. That caused the motor to clash with the nuts on the 360 bearing.



The 180 bearing at the other end was about 10mm from where it should be.



A simple fix was to slide the axis along leaving a 10mm gap to the spacer, the only problem remaining is that the spacers rattle at certain step rates.



The STEP model shows this gap should be only 5mm, but I have been unable to find the discrepancy. My rods and inspection distances are correct and the ends of the rods are flush with the clamps, as they are in the model.

The bed springs seemed to be too long to compress to the length of the bed-height-spacer-31mm_1off, which is not actually 31mm, but 29mm, so I don't know what gives there, I just spaced them a bit higher.



The bolts in the z-bar clamps are too long to allow the bearing to be inserted. I replaced them with shorter ones.



Similarly the bolts in the x-carriage get in the way of the extruder I fitted.



The J3 jigged distance did not seem correct. The distance between the y-bars is set by the J2 distance and the 3 nut spacers.

Extruder

I used Wade's extruder design as I didn't have time to adapt any of my own.



The gears work well, with very little backlash, but the small one has some movement on the motor shaft. It is just a press fit with a flat on the shaft. I need to redesign it with a captive nut and grub screw.

I didn't have a suitable M8 shoulder bolt so I made one from brass by attaching a nut with a pin through it.



I hobbed it with an M3.5 tap. I haven't measured the grip, but I get the impression it is not as high as Wade gets, I am not sure why.

For the bottom half of the extruder I used some parts that Brian was looking for volunteers to test for him.



The insulator is made from PEEK with a PTFE liner. The idea being to get the strength of the PEEK and the slipperiness of the PTFE. It seems to work well with PLA, which is all I have run through it so far.

The barrel is long because it is designed to take nichrome, but I just screwed it into a block of aluminium with a vitreous enamel resistor in it.



This was left over from a previous experiment. I have now moved onto a smaller resistor size, so this block could be smaller. The barrel could be a lot shorter with this arrangement and that would give less ooze and less viscous resistance.

The extruder works well with PLA. The main problem with it is that it mounts at right angles to the x-axis, so the motor severely restricts the maximum height of the z-axis. Another issue is that to remove it you have to remove the motor to get at the bolts. To remove the motor you have to remove the big pulley to get at the motor's bolts, to do that you have to remove the pinch wheel assembly. I.e. to remove the extruder you have to completely disassemble it!

Electronics

To get up and running quickly I used the same electronics that I use on HydraRaptor. The only difference being that I used MakerBot V3 stepper drivers. These use the A3977 chip and give x8 microstepping. That gives an axis resolution of 0.025mm, but more importantly gives nice smooth running.

When the weather was exceptionally dry I found they are very sensitive to static. A discharge to any part of the machine would cause the A3977 to shut down its outputs and draw enough current from the 5V rail to cause the 100mA regulator to current limit. The red LED on the power rail goes dim. Powering off and on again fixes it and there doesn't seem to be lasting damage. I suspect that might not be the case if the 5V rail was not current limited. Apparently the only way to fix it is to add external Schottky diodes. That is very disappointing as one of the nice features of the chip is that it is supposed not to need them. I will investigate further to see if all eight diodes are needed before making my own board.

Firmware

I used the same firmware as HydraRaptor. I just added some compile time conditionals to cope with two pin outs and a different IP and MAC address for each machine. I also had to change from 16bit to 32 bit positional commands because the axes are bigger.

Software

I used the same Python software as HydraRaptor but I had to re-factor it quite a lot to support both machines. I added a class to represent the Cartesian bot which holds the axis resolution, direction, maximum speed and acceleration plus the IP address. I also added a class to represent the extruder controller as I have calibration values unique to each board. I already had classes to represent thermistors and extruders.

I can run both machines at the same time from one PC and, because I only use the Skeinforge output for the toolpath, I can use the same sliced files for either machine. This is despite the fact that they run at different speeds and are loaded with different plastic.

Results

So here is the finished machine: -



And here is a video showing it being tested: -


I am running the X & Y motors at about 0.75A and Z at about 1A. I have set the maximum XY speed to 100mm/s, but I think it could go a lot faster. Z only goes at about 5mm/s because not only is it a threaded rod drive, but it is geared down by the belt and pulleys!

I haven't printed a lot yet, but so far the results look as good as they do from HydraRaptor. The next thing to do is add a heated bed and try ABS.

Sunday 13 December 2009

Motoring on with the A3977

Previously I have blogged about how to set up the Allegro A3977 driver chip to suit a particular motor: -

hydraraptor.blogspot.com/2009/07/lessons-from-a3977
hydraraptor.blogspot.com/2009/08/motor-math
hydraraptor.blogspot.com/2009/08/mixed-decay-mixed-blessing

Most boards I have seen using the A3977 and similar chips just have a current adjustment, with all the other values fixed. Unless you strike lucky this is not going to allow accurate microstepping because the off time and PFD need to be adjusted to suit the motor and supply voltage.

A while ago Zach sent me samples of the prototype V3 stepper controller kits and the NEMA17 motors used on the MakerBot. I made up the board using my SMT oven (pizza oven controlled by HydraRaptor, more on that later).



It works well, but the initial component values are not optimum for the motor, so I decided to make a test bench from the older prototype board that I have been experimenting with. I RepRapped a chassis for it with a panel to mount some switches to vary the timing components.



The chassis is one of the biggest parts I have made, not in volume, but in overall expanse. It warped a little, despite being PLA, heated bed coming soon!



The switch on the left must be at least 20 years old and the one on the right more than 40 but they both still work fine. I save all this junk and eventually it comes in handy.

I also have potentiometers on V
ref and PFD, so together with a bench PSU and a signal generator I can vary every parameter.

I knocked up a label on a 2D printer, it's so much easier to make this sort of thing than it was when the switches were born!



Zach has updated the board to have four preset potentiometers to make it fully adjustable. There are test points to allow the pots to be set to prescribed values with a multi-meter.

Vref and PFD can be measured as a voltage, but the two RT values have to be set by measuring resistance with the power off. My multimeter seems to give accurate readings of these despite them being in circuit. A good tip is to measure the resistance with both polarities and if it reads the same either way round then it is most likely the chip is not affecting the reading.


So here is a list of motors and optimised settings: -

MakerBot Kysan SKU1123029 NEMA17





This is the motor that MakerBot use for the axis drive on the Cupcake, details here. It is actually a 14V motor, so is not ideally suited to being driven from a 12V chopper drive. You normally want the motor voltage to be substantially lower than the supply.

You can't run it at its full current because the duty cycle would tend to 100%. With a fixed off-time, the on-time tends towards infinity and the frequency drops into the audio range.
In practice I found the maximum current at 12V was 0.3A, any higher and the microstepping waveform was distorted on the leading edge due to the current not being able to rise fast enough.



To maintain the sinusoidal waveform at faster step rates requires the current to be lowered further, 0.25A gives a good compromise. It is not a bad idea to under run steppers anyway, otherwise they can get too hot for contact with plastic.

I used the minimum values for CT and RT, i.e. 470pF and 12K to keep the chopping frequency as high as possible, so that it is outside of the audio range. Not only is this a good idea to keep it quiet when idling, but also you want it much higher than your stepping frequency, otherwise they beat with each other.

The values give a minimum frequency of ~17kHz @ 0.3A and a maximum of ~150kHz on the lowest microstep value.
17kHz is not audible to me, but younger people might be able to hear it. There is still some audible noise at the point in the cycle when both coils have similar currents and so similar high frequencies. The beat frequency, which is the difference of the two, is then in the audio range. It isn't anywhere near as loud as when the chopping is in the audio range though.

I can't see any spec for the maximum switching frequency although a couple of parameters are given at less than 50kHz. I suspect 150kHz is a bit on the high side, which would increase switching losses, but with such a low current compared to the rating of the chip I don't think it is a problem.

One problem I had initially was that the switching waveform was unstable. It had cycles with a shorter on-time than required, which let the current fall until it then did a long cycle to catch up. The long cycle gave a low frequency that was back in the audio range.



I think it was a consequence of the motor needing a very short off-time in order to be able to have the duty cycle nearly 100%. The current hardly falls during the off period, so a little noise due to ringing can trigger it to turn off too early. It is not helped by using the minimum blank time. I fixed it by putting 1uF capacitors across the sense resistors.

The PFD value is best set to 100% fast decay with this motor.

It works better with a 24V supply. The full 0.4A current can be achieved (but it gets much hotter of course) and it maintains microstepping accuracy at higher step rates than it does on 12V.

MakerBot Lin SKU4118S-62-07 NEMA17





This is the NEMA17 that MakerBot used to supply. It is at the opposite extreme compared to the one above, i.e. it is a very low voltage motor, only 2V @ 2.5A. As mentioned before, this causes a couple of issues: -
  1. The inductance is so low that the ripple current is significant compared to the lowest current microstep, causing positional errors. OK at 2A, but gets worse with lower currents.
  2. It is difficult to get 2.5A from the A3977 without it overheating. The PCB layout has to be very good. The datasheet recommends 2oz copper and four layers. 2A is no problem and that is the maximum with the 0.25Ω sense resistors fitted to the board.
At 2A the motor runs at about 40°C, so just about OK for use with PLA. The chip gets a lot hotter, about 77°C measured on the ground pins.

I used a value of 56K for RT and 2.1V on PFD. To some extent the optimum PFD value depends on how fast you want it to go.

Motion Control FL42STH47-1684A-01 NEMA17





This is the recommended motor for the Mendel extruder, details here. After buying a couple of these a friend pointed out that Zapp Automation do the same motor with dual shafts for about half the price!

This is a high torque motor so it is longer and heavier than the previous two NEMA17s. Electrically it is in the sweet spot for the A3977 with a 12V supply. The A3977 can easily provide the full current and the switching frequency doesn't have wild fluctuations or drop into the audio range.

When microstepped at 1.7A it gets to about 43°C but the chip only gets to 56°C.

I used 39K for RT and 0V on PFD, i.e. 100% fast decay.

I have high hopes for this motor as a replacement for the one above that is in my extruder currently. It should give me almost twice the torque and has the correct sized shaft, i.e. 5mm. The Lin and Kysan motors both have imperial shaft sizes which caught me out as I drilled the worm gear for 5mm thinking NEMA17 specified that, but it must just be the frame dimensions.

MakerBot Keling KL23H251-24-8B NEMA23





This is the motor I used on my Darwin. It has 8 wires so it can be connected in bipolar serial or parallel. Series has the advantage that the full torque can be achieved with 1.7A which is easily within the range of the A3977. Parallel has one quarter of the inductance so torque will fall off with speed four times slower. To get full torque 3.4A is needed but I found 1A was enough for the X and Y axes. I think Z needs more torque but my z-axis uses different motors so I don't know how much.

An RT value of 56K is fine for currents in the range 1-2A. PFD is best at 0v, i.e. 100% fast decay.

Summary

Here is a summary of the motor specifications :-

Motor Resistance Max Current Voltage Max Power Holding Torque Inductance
LIN 4118S-62-07 0.8 Ohm 2.5 A 2.0 V 10.0 W 0.30 Nm
Kysan SKU 1123029 35.0 Ohm 0.4 A 14.0 V 11.2 W 0.26 Nm 44.0 mH
Motion Control FL42STH47-1684A-01 1.7 Ohm 1.7 A 2.8 V 9.5 W 0.43 Nm 2.8 mH
Keling KL23H251-24-8B Series 3.6 Ohm 1.7 A 6.1 V 20.8 W 1.10 Nm 13.2 mH
MakerBot Keling KL23H251-24-8B Parallel 0.9 Ohm 3.4 A 3.1 V 20.8 W 1.10 Nm 3.3 mH

Here are my suggested settings :-

Motor Current Vref CT RT PFD
Kysan SKU 1123029 0.25 – 0.3A 0.5 – 0.6V 470pF 12K 0
LIN 4118S-62-07 1 – 2A 2 – 4V 470pF 56K 2.1V
Motion Control FL42STH47-1684A-01 1 – 1.7A 2 – 3.4V 470pF 39K 0
Keling KL23H251-24-8B Parallel 1 – 2A 2 – 4V 470pF 56K 0

Sunday 9 August 2009

Mixed decay, mixed blessing

Having set the correct off time to suit my motor I can now micro step it with equal spaced steps, but only if I disable the mixed decay mode.


When the chopper switches off it can do it two ways. It can turn on both low side transistors. That short circuits the motor and lets the current recirculate. If the coil was a perfect inductor and the transistors perfect switches, the current would circulate forever and you would have a superconducting magnet. Real coils and transistors have some resistance, which causes the current to decay, but as these are relatively small the mode is called slow decay.

This is fine and efficient until you take the motor's back emf into account. During the rising part of the sine wave the magnet is moving towards the pole piece, so it generates a voltage that causes the current to fall faster. The on time gets longer to compensate and all is well.

On the trailing edge of the sine curve the magnet has gone past the pole piece and generates a voltage that increases the current in the coil. If it is going fast enough it can mean that the current doesn't fall at all during the slow decay period. As I showed previously that can cause a severely distorted waveform which makes the motor noisy.



The Allegro chips offer a mixed decay mode, where they switch to fast decay for part of the chopping cycle on the downward half of the sine curve. In fast decay mode one low side and one high side transistor turn on and reverse the voltage across the motor. That overcomes the BEMF and causes the current to fall much faster. It also returns current to the supply rail, which can upset some power supplies if there isn't some other load to absorb it.

Mixed decay gives a current waveform like this: -



The off time is fixed, so the current falls further making the ripple greater. If you set the percentage fast decay to give a clean waveform at your top speed, then the ripple increases at slower speeds. It is maximum when stationary, when there is no BEMF and fast decay is not required at all.

The problem is that the target current is the trip point of the comparator, so it is the peak of the chopping waveform. That means the average current is less by half the ripple current giving a positional error.

With the low inductance motor I am using, the ripple current has a large amplitude, so the error introduced when the motor is stationary is about the same as a micro step. That means the first step with fast decay is about twice as big as it should be and the last step is virtually zero.

With the A3977 I can disable fast decay and the steps are fairly even, but fast running is then distorted. The PFD setting needs to change with speed.

With the A3983 that I have used on my new extruder controller the PFD setting is fixed at 31.25%. That means I can't get evenly spaced microsteps with the NEMA17's that I have, when running slowly. Not a big problem with the extruder because I plan to gear it down 40:1, which means one micro step is only about 0.02mm. I am only using microstepping to give smooth motion rather than extra resolution.

The problem is exaggerated because not only am I using a low inductance motor, but I am also trying to run it at 1A, whereas it is rated for 2.5A. At 2.5A the off time would be about 2.5 times smaller, so the ripple would be 2.5 times less. The steps in the current waveform would be 2.5 times bigger, so the distortion would be reduced by 6.25 times. As it is about one microstep now, it would reduce to 1/6th of a microstep, so would be acceptable. The temperature rise would then be 6.25 times greater of course.

I was planning to use A3977s for my axis control though, where positional accuracy is important. I am beginning to think I will be better off just using dual H-bridges and doing the rest in software using a powerful micro with a fast ADC.

To be able to cope with a wide variety of motors you need to change the current, the off time setting and the percentage of fast decay. You also need to take the ripple current amplitude into account to control the average current, rather than the peak. All these things could be automated with a software solution.

Thursday 30 July 2009

Lessons from the A3977

Having established that I want to move to a stepper driven extruder I set about designing a new extruder controller for HydraRaptor. I fancied using one of the Allegro micro-stepping chopper drivers.

With these chips there are a few things you can adjust by changing component values, like the off time, minimum on time and percentage fast decay. The data sheet explains what they do and gives the formulas but it's not obvious what you should set them to for a particular motor.

Not having any previous experience with Allegro drivers I decided I needed to knock up an evaluation circuit. Fortuitously Zach had sent me some PCBs a long time ago that were his first version of the Stepper Motor Driver v2.0. They used the PLCC version of the A3977.

PLCC packages were a bit of a halfway house between through hole and surface mount. They have leads which come out of the side and then curl underneath.



They are handy for programmable devices because you can either surface mount them or put them in sockets (which can be either SMT or through hole). The problem with them in this application is that using a socket is not recommended for current and heat dissipation reasons.

That makes the package a worst of both worlds solution. It is big and bulky like through hole parts but still difficult to hand solder because the pins are underneath. The surface mount version of the A3977 is a fine pitch (0.65mm) TSSOP with a heat slug underneath, so again not easy to solder by hand, it really needs to be done by the solder paste and oven / hotplate method.

Zach moved to the A3982 on subsequent versions, which is easy to hand solder because it is in a SOIC package with 1.27mm pitch. It also has a lower external component count. The down side is that it does not do micro stepping and is only 2A rather than 2.5A. I will probably use the A3983 (which is like the A3982 plus micro stepping and in a TSSOP package).

I managed to hand solder the PLCC at my second attempt. My first attempt had a short, which damaged the chip. I damaged the board removing it (with a cutting disk), so I had to start again on a second PCB. Lots of cursing! The lesson is always to meter a PLCC for sorts before powering up as you can't see shorts underneath it.

Here is my test lash up: -



I can set the step rate with a signal generator, vary the supply voltage from 8 to 35V, see the temperature of the chip and look at the current waveform on a scope .

The initial results were disappointing due to a couple of problems: -

The first was that the chopping occasionally had glitches in it. With the motor stationary I could hear it clicking, and with a scope I could see some cycles shorter than they should be. It got worse with higher supply voltages. At low speeds it did not make much difference, but it did lower the maximum speed. I tracked it down to a lack of high frequency decoupling on the 12V rail. I added a 220nF de-coupler close to the chip and the problem went away. Adding it further from the chip actually made it worse.

The next problem was that the microstepping was very uneven. I had noticed that same effect with the z-axis of my Darwin using the $800 microstepping drivers (that I got cheap) that I use on HydraRaptor. At the time I put it down to the small, large step angle tin can motors I was using at the time not being very linear. When I moved to larger 7.5° tin can motors I still had the same problem, and even with the Keling NEMA23 1.8° motors it did not seem right. This puzzled me because they are very similar to the NEMA23 motors on HydraRaptor, which work well with the same drivers. The shaft encoders have the same resolution as the ×10 microstepping and they are always spot on or one count out, so pretty linear.

With the A3977 it is easy to get an idea of the current waveform of the motor by measuring the voltage on the sense resistors. It should be a stepped sine wave like this: -



Regardless of which way the coil is energised, the current flows to ground through the sense resistor, so the waveform looks like a full wave rectified sine wave. The current only flows in the sense resistor when the chopper is in the on state though. In the off state the current is circulating through the coil and the bottom two transistors of the H-bridge, so the current in the resistor is zero. That is why there is a bright line along the X-axis. On the falling edge of the wave you can see the sense current goes negative. That is because the chip switches to fast decay mode. When the chopper is in the off state, instead of short circuiting the coil, it reverses the voltage on it, causing the current to flow backwards through the sense resistor onto the supply rail. It only spends part of the switching cycle in fast decay so you see positive current, a lot of zero and some negative current, hence the relative brightness of the lines. This is a case where an analogue scope gives you more information than a digital one.

Initially the waveform looked like this, it was somewhat distorted: -



The current rises too quickly at the start of the waveform. The chopper has a constant off time (20uS in this case) and varies the current by changing the on time simply by turning it on until it reaches the target value. But, there is a minimum on time of about 1.4uS, called the blanking period. During that time it ignores the current sense signal to avoid false readings due to ringing on the switching waveform. That means there is a minimum mark space ratio of 1.4 : 21.4 in this case. That sets a minimum current, which also depends on the ratio of the supply voltage to the motor voltage. If this minimum current is more than the lowest microstep value (19.5% of the peak for 1/8 steps) then you get a distorted waveform as above, and the steps are uneven.

To fix it you can lower the supply voltage, raise the current setting or increase the off time. The latter reduces the chopping frequency. If it is below about 15 kHz it will be audible when the motor is stationary. It can also start to beat with the stepping frequency when running at high speeds, particularly when micro stepping, as the step rate is n times faster.

This form of distortion is analogous to crossover distortion on a class B audio amp. You can also get the equivalent of clipping if you use a high voltage motor on a low supply voltage. If the current setting is set to a value which is more than the motor will draw when connected to the supply, then the top of the waveform is flattened off and again the microsteps will be uneven.



Yet another form of distortion occurs when running at high speed: -



Here the back EMF from the motor acting as a generator is preventing the current from falling fast enough to follow the sine wave. This can be fixed by increasing the Percentage of Fast Decay, set by the voltage on the PFD pin. If there is too much you get excessive ripple as shown here: -



For a particular speed and motor there is a sweet spot which sounds audibly quieter: -



So setting up a microstepping drive is not straight forward unless you have an oscilloscope. You can tune the PFD by ear though, as this video demonstrates: -

Tuning PFD from Nop Head on Vimeo.

You can also see the other forms of distortion if you attach a long pointer and step it round slowly.

Another lesson is that you cannot simply just set the current to accommodate different types of motor. You really need to be able change the off time and the PFD as well, especially if you use different supply voltages.

So I solved the mystery of why microstepping does not work well with the expensive drives on my Darwin. They are rated at 7A but I am only using them at 1A, I am also using low voltage motors on a 36V supply. I bet it is a constant off time chopper and the minimum current is too high.

Friday 21 November 2008

Hat Rack

I came across this object designed by Gorg Huff in the RepRap objects wiki. It was such an interesting organic shape, completely different from anything else I have printed, that I had to try it.



It was a bit too big for my machine so I scaled it down and printed it diagonally.



It took about 4 hours plus an hour for the raft. Because the sides slope in quite quickly, Skeinforge switches to 100% fill for a lot of the layers because the edges don't have anything two layers above them. This can be fixed by selecting 3 extra shells on sparse layers. That means the infill starts far enough from the edge to have something two layers above it. You get a stronger object with less plastic that way.

Tuesday 26 August 2008

Bearing fruit

My wife has been asking me to make something to prop up the overladen branches of our dwarf apple tree for a few weeks now. I put it off while I was set up for ABS because I knew I did not have enough to finish my Darwin. Now that I have switched the machine to HDPE it is no problem, but it is now a few days late as one large branch has already snapped off!

We have lots of plastic covered metal poles so all I needed to do was make some Y-shaped end pieces. My first attempt went a bit chaotic while making the arms: -



I wasn't watching it but I figured it got too hot when doing the small pieces so I made the arms thicker.



Better but still very rough, it should look like this :-



I cleaned it up with a penknife and it was functional but it felt more whittled than extruded.



I made a couple more with even thicker arms but I was around to observe what was going wrong this time: -



When building the curved arms Enrique's software switches to 100% fill because it decides part of the layer is two layers from an outer horizontal surface, which a thin sliver down each side is. That would not be a problem in itself but because I have the infill overlap option set it ends up with slightly too much plastic on the 100% layers. As the height increases this excess builds up until the nozzle is actually submerged in the object while it is building it. Amazing that it manages to make anything resembling the correct shape!

What really needs to happen is that if the infill overlap parameter is set then the head needs to lay down the infill slightly faster so that the amount of plastic is still correct. I ran into the same problem with ABS when making an object with 100% fill.

I made a fourth version with the infill overlap set to zero and it was a lot better: -



Still very blobby but all the blobs are down to extruder overrun and easier to carve off. Overrun is worse with HDPE because it seems to be a more non Newtonian liquid than ABS. I.e. it compresses and expands more than ABS does, so when the extruder stops it oozes for longer.

I haven't tried anything to stop ooze yet. Simply stopping the extruder before the end of the line like the RepRap host does should improve it and is easy to do. Reversing the motor drive should also help. Simply stopping causes the extruder flow rate to fall exponentially but backing up a little should stop it completely in a finite time. The shaft encoder can then be used to go back at full speed to where it was before it backed up. There will still be some ooze without a valve but I think it could be a lot better.

Here is the final version cleaned up: -



And here is the tree with four crutches installed although only three are visible from this view though: -