Linear Actuator

Many linear actuators work by using a standard electrical motor and converting that rotational motion into linear motion. Instead, I am trying to make an actuator whose motion is entirely linear by unwrapping the traditional rotary stepper design into a flat row of coils traversed by a magnetic cart. I am using the vinyl cutter to cut these coils out of flexible copper sheets, so coils made in this way can be bent and stuck onto surfaces.

Cutting Coils

Cutting the coils with the vinyl cutter was quite challenging. Cutting coils presents certain problems that circuit boards do not, because you want many coils to come out (not just one, which can be helped along by hand) and you want the traces as narrow as possible.

Vinyl Cutter Process

The process on the vinyl cutter is to cut out a shape on the adhesive backed copper, then apply a not too sticky transfer tape to the result. This allows you to peel off the backing from the copper, and stick it to the final surface. At that point you can peel off the transfer tape, leaving the copper on the surface. Finally, you must "weed" out the copper bits you don't want by pulling them up with tweezers. This is the part where your cut settings make or break the process - if everything is cut cleanly the copper will come right up, otherwise it may be very difficult (or impossible, with very fine traces)

Peeling backing off of copper after transfer tape is applied


Peeling transfer tape off of copper once copper is stuck to final surface


Weeding of a well cut spiral should be easy (weeding.mov, weeding.mpg) - try to pull opposite the direction of the trace instead of straight up, this helps keep the surrounding traces down. If it is not as well cut, you must hold down the surrounding traces as you pull back on the one you're removing.


Spiral after successful weeding.


Trophies of successful weeding.



Spiral Patterns


I started off with square spirals, but these were often not fully cut through in the corners, so I switched to circular. Switching to circles made weeding much easier. I also found that having a solid center was better than continuing the spiral all the way, as the point where the knife changes direction to come back out the spiral is where snags often happen, and a solid block helps anchor the copper. I also found that adding a few extra lines to guide the tricky parts of the weeding process helped a lot.

I did a number of experiments at different settings try to find the perfect coil. It is important that the coils weed in one piece, both because there are so many coils, and because it is quite difficult to start the weed from inside the spiral without damaging it. I found that my weeding was greatly accelerated once I added some weed-assist lines to my file, to guide the tears into the spiral (visible in the circular spiral pattern above).

In order to test different combinations, I wrote a python script that generates coils based on parameters such as trace width and gap width. It also can generate the cut patterns for the layers of insulation that go between the coils (copper_spiral.py ). The pattern I used alternated clockwise and counter-clockwise coil layers, and alternated whether the coils connected in the middle or at the edge - this makes each stack of coils into one long coil with a consistent direction of current flow. Below is the 8 patterns required for a 4 layer stack of 4 spirals, alternating between copper and insulating layers.


(click for a larger view)

Resolution

I found that you can actually make spirals down to about 10 thousands of an inch trace width (and space width). I also found that it is so hard to get the settings right for such a delicate shape is because the knives wear quite quickly. On the first row of spirals after installing a knew knife some weedable 10mil spirals are possible, but after that it will not be easy. The primary way to compensate for blade sharpness is through the force setting of the cutter. The problem is that the blade properties change so quickly it is somewhat of a moving target. Here is an example log of use after installing a new blade.

row#force#cutsresult
148 2 PERFECT, one shot weeding, allows for very fine spirals
248 2 result too connected to use
349 2 result too connected to use
449 2 result too connected to use
549&50 3 result too connected to use
651&522result too connected to use
7551 too heavy, tears copper
8542 decently weedable
9542 weedable, but a bit tricky.

An observation about vinyl cutter - if you hit stop on the machine, also control-c your job, as otherwise it will start cutting again (but not where your shape was, as some data got dumped in that interaction).

After some experimentation, I ended up using 20 mil traces. These are still reasonably thin, but possible to hand weed if the trace doesn't come up cleanly. Also, though they require some careful weight values, they do not require a brand new blade to be cut properly.


Assembled, with coils and insulation applied.

Circuit

To drive a stepper, you need two h-bridges or equivalent. I constructed a circuit using tiny13's and mosfets to approximate the behavior of a h-bridge, then controlled two such circuits from a third tiny13. I made a number of errors, but eventually got it working. First I thought that the p-type mosfets I had turn on with high voltage at the gate, but in fact their operation is reversed. I was able to salvage my existing circuit to work with these kind of mosfets with a few jumpers, but the layout is not ideal. With the mosfets I thought I had, I had a scheme to switch the fets with just two pins (can turn on/off simultaneously the different circuits (diagonal fets in the standard h-bridge layout)), since the n's and p's would both switch on if I provided +v and off at Gnd. However, with the p type fets this wouldn't work. I settled on a 3-pin control scheme, where one pin controls the two left fets, swapping them between p-on, n-off and p-off, n-on. 2 other pins control the two right fets, and can pwm them to control current in either direction. This still means there is a race condition when switching direction (the left fets only change for a direction change), since the p might turn on before the n turns off, etc., but i didn't have any other spare pins on the tiny since I was using two for input (pwm, direction) and this seemed to work fine.

Next, I did not consider that programming the chip is somewhat like turning the mosi, miso, and sck pins on and off randomly - thus the programming process of my h-bridge tiny's usually resulted in turning on the wrong combination of mosfets, shorting the power to ground and resetting the chip, causing programming to fail. I needed to disconnect power to the mosfets to program the chip.

I also had the circuit set up to allow for a different voltage going to the mosfets than to the tiny, so they would not have to draw current through the regulator. In order to switch the p-types, however, their gate voltage must get up close to their source voltage. Since the tiny can only provide an output of 5v, I set up the circuit with a pull-up resistor between the p-type gates and their source, and connected the gate also to the pin of the tiny, with the plan to have the tiny's pin be at either ground, and thus the gate would be at ground, or tri-stated, and thus have high impedance and let the pull-up move the gate to the same voltage as the source. However, I forgot that in tri-state mode the pin is actually an input, and to protect the chip it clamps the input voltage to about 5v. Thus this strategy cannot work, since the pull-up cannot pull above 5v. To get around this without make a whole new circuit, I used an external voltage of 5v to power the whole circuit.

Finally it seemed that because of the very low resistance of my coils (about 3 ohms) even the short on-time provided by pwm caused a sag in the voltage going to the tiny13's. I added a 100 micro-farad capacitor between the power going to the fets and ground to help even it out, and it seemed to work. In operation the circuit uses a maximum of about 1 amp.

linear.schSchematic of board before above changes made
linear.brdLayout of board before above changes made
linear_main.asmMicrocode of main controller chip
hbridge.asmMicrocode of hbridge controller tiny13's

Conclusion

It works!

Movies:
moving.mov(moving.mpg)Moving along
moving_relative.mov(moving_relative.mpg)Moving along, shows the relative nature of stepper control

The coils are actually reasonably strong. I ended up with 6 layers of 9 coils, and powered (manually) straight off of a 9v battery they pull the shuttle along easily. Using the circuit I designed they can pull the shuttle along with a peak of 1 amp (at 5v). In my first designs I always envisioned needing to use walls to constrain the motion, but it turns out that this is not necessary because only attractive force is used (not repulsive) which adds to the ease deployment.

These coils were fairly time consuming to make, but I did feel like they were easier to reproduce once I got the hang of the weight settings. To make them easy to mass produce on a larger scale, it would be nice to find a knife that could hold a consistent edge for longer.

edit