Saturday, June 9, 2012

On exactly how one goes about motorizing one's feet

This is the post where I give more detail about my design.
First of all, the wheels. The intent is to use four hub motors, so that the blades are powered from both the front and the rear. I intend for all four to have the same characteristics - torque, voltage, amperage, and RPMs. Parts:
  • 65 mm outer diameter, 34 mm thickness, 18-tooth stators from GoBrushless. This gives: m 6 , R stator 32.5 mm , and L slot 34 mm
  • 10 pole pairs = 20 poles, each a metamagnet. each metamagnet will be 4 pieces that are 2 mm thick by 5 mm wide by 17 mm long, arranged 2x2. These will need to be custom-made.
  • A rotor with an inner diameter of 70 mm , yielding an air gap of about 0.4106 mm .
  • A metric assload of 21-gauge magnet wire. Unfortunately, I live in the United States of Antiquated Measurement Systems, so I'll need to convert to Imperial arseloads.
This results in a dLRK winding of AaABbBCcCAaABbBCcC, and should be pretty decent in terms of cogging considering Teeth 2 Poles will be 0.9 . It will also be relatively easy to wind in terms of complexity. My calculations:
  1. I weigh 160 lb , which if I convert to metric and round up (for pessimism) gives me mass 75 kg .
  2. The necessary linear force needed from the wheel can be found with F motive mass gravity θ .
  3. Therefore, F motive 75 kg 9.8 m s 2 5.5 ° 70 N when rounded up for pessimism.
  4. The necessary torque can be found using the formula Torque F motive r wheel .
  5. Thus, Torque 70 N 12 cm 8.4 J are needed. Note that this is a horrendous overdesign, since this is making one motor haul my ass up the hill, when there will be four of them in the actual skates. If I ever run these things at full power, you'll probably find me in low earth orbit.
  6. In order to figure out the power draw of moving up that incline at a certain speed, one uses the formula P F motive velocity .
  7. So, P 70 J 5 m s 350 W
  8. And using I P V , we can calculate that I 350 W 26 V 13.5 A if we assume a 26 V supply.
  9. I'm going to assume that B 1 T at the surface of the stator. Since the N50 magnets listed on the site I'm using claim a surface remnance of between 1.42 T and 1.45 T , are 2 mm thick, and I have an air gap of 0.4106 mm , this actually has some safety margin due to the remnance at the stator being defined as B stator B 0 Thickness magnet Thickness magnet Thickness airgap
  10. Now, the formula for calculating the properties of a brushless motor is as follows: Torque 4 m N turns I B L slot R stator . We've already defined m , I , B , L slot , and R stator , and now all we need to do is solve for N turns .
  11. Like so: N turns Torque 4 m I B L slot R stator .
  12. Then plug in the values: N turns 8.4 J 4 6 13.5 A 1 T 34 mm 32.5 mm 23.462376 turns.
  13. With a safety margin of 1 3 , we multiply N by 4 3 , giving N turns 31.283169 turns. This safety margin is at the outer edge of pessism, since the rule of thumb is that nonideality losses are somewhere between 1 5 and 1 3
  14. By using the photo on the GoBrushless site and scaling it until the diameter was 65 mm , I was able to determine that the space for winding is approximately 13 mm .
  15. Checking the Wikipedia AWG table, 21-gauge has a diameter of 0.723 mm . 13 mm 0.723 mm 17.980636 , which is 112% of 16, indicating that even if insulation adds 12% to each wire's thickness it should still work to wind 16 strands on each layer.
  16. The spacing between the teeth should leave enough room for two layers, yielding N turns 32 . This is convenient, because powers of two are the easiest thing ever, and two layers mean that if the windings start at the hub, they'll finish there too which should help keep it tidy.
  17. 21-gauge copper has a resistance of 42 m .
  18. Now for some power dissipation calculations. Given the N turns and L slot we arrived at previously, in calculating the length of the wire wrapping a single tooth we get L wire 34 mm 2 32 2.176 m
  19. Therefore, a single-strand winding around one tooth would have a resistance of R tooth 42 m 2.176 m 91.392 .
  20. Via P Joule_heating I 2 R , the power dissipation will be 16.656192 W at 13.5 A per tooth. However, since there are 18 teeth, the total power dissipation will be 18 16.656192 W 299.81146 W
  21. To convert to °K s of heating, we need several pieces of information. While we already know the resistance of the wire on a tooth, we still need: m stator , the mass of the stator; c stator , the specific heat of the stator; m wire , the mass of the wire; and c wire , the specific heat of the wire. Note that I did not mention the specific heat of the rotor: because the magnets are heat-sensitive and reside between the stator and the rotor, I will not rely on the rotor to act as a heatsink for these calculations.
  22. c stator and c wire are relatively easy to find. The stator can be treated as though it were iron, resulting in c stator 0.13 J g °K and the wire is copper, so c wire 0.386 J g °Kelvin .
  23. Finding the mass is slightly more involved. 21-gauge wire has a diameter of 0.723 mm , which means the cross-sectional area is Area wire_xsection π 0.723 mm 2 2 0.4105504 mm 2 . We can then multiply this by the per-tooth wire length we calculated earlier of 2.176 m , and we arrive at a volume of Vol wire_tooth 0.4105504 mm 2 2.176 m 893.35766 mm 3 . However, there are 18 teeth, so the total volume of copper is Vol wire 18 893.35766 mm 3 16080.438 mm 3
  24. From the density of copper being 8.94 g cm 3 , we get the mass of copper being m wire 16080.438 mm 3 8.94 g cm 3 143.75912 g
  25. The stator's an even worse pain. First, we'll find the surface area of a circle of the same radius: A circle π 32.5 mm 2 3318.3072 mm 2 .
  26. Next, we calculate the area of a circle with the same radius as the central hole of the stator, and subtract it: A center π 14 mm 2 615.75216 mm 2 ; A ring 3318.3072 mm 2 615.75216 mm 2 2702.5551 mm 2 .
  27. Then, measure the area of the slots, multiply by the number of slots, and subtract that. I measured the slot as A single_slot 71 mm 2 . Multiplying by the number of slots gets us A all_slots 18 71 mm 2 1278 mm 2 . Finally, subtracting that from the total so far yields a final cross-sectional area of A cross_section 2702.5551 mm 2 1278 mm 2 1424.5551 mm 2 .
  28. Fortunately for my patience, finding the volume from here is a simple matter of multiplying by L slot . This gives us Vol stator 34 mm 1424.5551 mm 2 48434.873 mm 3
  29. Finally, we multiply by the density of the steel used in the stator, which is 7.65 g cm 3 . This gives us a stator mass of m stator 48434.873 mm 3 7.65 g cm 3 370.52678 g .
  30. Using the formula ΔT P Joule_heating mass i c i to calculate the change in temperature each second, we get ΔT 299.8 W 143.8 g 0.386 J g °K 370.5 g 0.13 J g/ °K 2.89 °K s .

The outer diameter of the tire is 12cm, and I'm designing for a wall thickness of 3mm on the rotor.
Motor controllers:
  • Controlled wirelessly, probably via an XBee. Control scheme will be sending bytes in the range [0,240] representing a target speed, or [241,255] representing some sort of control sequence.
  • Configured differently between front and back, as opposed to the hub motors themselves which are identical. When the wheels are rotating faster than the desired speed indicated by the wireless controller, the behavior of the wheels will differ. The front controllers will be configured to 'freewheel' in this situation, whereas the rear controllers will brake. The intent is to reduce the risk of having a toe catch so as to prevent gratuitous faceplanting.
  • Rear controllers will eventually perform regenerative braking, allowing me to get some use out of the fact that the area in which I live is covered with hills.

Wireless control system:
  • Puck-shaped, with a strap that goes around the back of the hand. Speed control is by squeezing along the diameter, where greater force translates into greater speed. The purpose of this design is that completely releasing the controller, such as in the case of instinctual "oh shit" bracing for impact, will activate the braking routines. Similarly, if the user does fall, the flat side of the puck will be what strikes the ground. The control interface described would not register any input from such an event, improving safety.
  • Additionally, there will be a recessed potentiometer only accessible via Allen wrench. The purpose of this potentiometer is to set a maximum permitted speed, in order to reduce the likelihood of accidentally zooming off at Ludicrous Speed with the result of Ludicrous Gibs.
  • Finally, the puck will have an off switch. In the 'on' position, both wheels will provide forward impetus if the current speed is less than the target speed. If the current speed is greater than the target speed, the front wheel will spin freely while the rear wheel brakes according to an easing curve. The 'off' position completely deactivates the motor controllers, allowing both wheels to spin freely in either direction so that they can be used as a pair of relatively normal skates. If the puck does not send a keepalive signal at least every two seconds, the motor controllers will deactivate as if the switch was in the 'off' position. The puck will be configured to send a keepalive signal slightly more frequently than once per second in order to have a healthy safety margin.

Signalling scheme:
  • Byte values in the range [0,240] indicate a target speed. They will be calibrated such that 0 is an unmoving state and 240 is the maximum permitted speed (as set by the protected potentiometer). This permits a tradeoff where lowering the top speed gives finer-grained control of what speed is used within that range. These values map linearly to speeds.
  • Bytes with values in the range [241,255] are for control sequences. On receiving a byte in that range, further bytes may be read as parameters. Specific commands are:
  • 241: Set maximum speed. Takes a one-byte parameter in the range [0,240], where 240 maps to the hardcoded maximum speed ever permissible. I'll need to figure out what to define that as.
  • 242: Shutdown. No parameter. This is sent when the remote's 'off' switch is flipped.
  • 255: Keepalive. No parameter.

The shafts will be made from 7075 aluminum. I will need to drill out the center and make an aperture in the sidewall for wiring. This, along with the fact that it needs to fit the stator, will necessitate some time in a machine shop. The ends will have two flatted sides to ensure stability in the frame. Since each will only be supporting a quarter my weight most of the time, with a max of half, using a thickness around 1.5centimeters should be fine.

There is a small part that will sit below the shaft in the frame, serving to lock the shaft in place. This is intended to be secure against jostling and such, yet reasonably simple to remove using minimal tools.

As far as batteries go, if I use eight of the A123Systems 18650 cells (3.3V, 1.1Ah) in series I get a voltage of 26.4V. That's right around 26V, which is what I calculated for. Conveniently, they have a diameter of 18mm, so I can fit a block of four into the cross-section of the skate, and their 65mm length means that I can fit four such blocks and still have plenty of room left for control circuitry. (The skate itself has a 72cm wheelbase, and about 55 to 60cm of usable internal space. I could definitely add 8 more cells, and maybe even double the number entirely, but I want to keep this simple for now.) That'll put about 58Wh of battery in each skate. With two motors per skate, each drawing 87.5W for a total draw of 175W per skate, the batteries will last about 20 minutes.

The primary building material will be 1/8" thick 6061 aluminum sheet, with some structurally-critical parts of the frame being made of two sheets sandwiched together. I'm intending to make this whole thing by having flat parts cut, and then joining them together using tabs, T-nuts, and so forth. I'll be sealing anything that should never be separated with Plasti-Dip (as well as coating any flat surfaces), and anything that may need opened in the future will get rubber seals.

The frame itself is tilted forward in the current design; this may change after I see how standing like that feels.

The flat area the shoe will attach to is essentially a simple plate of 6061. It will, however, have several strap attachment points.

The curved upright at the back of the boot is attached to the main frame by a rod through the bottom of the two holes; this rod is not intended to be removable. However, the upright can pivot on the lower rod when the upper rod is removed, allowing the upright to lay flat for transportation. The rear edge of the upright will have a cable sleeve with a charging port at the top to support my later plans for operation while charging, and there will be several slots to which straps may be attached.

Features necessary before I am willing to ride these:
  • Braking
  • Gradual braking, since I don't want releasing the throttle to glue my feet to the ground at 10mph
  • The ability to set a speed cap on the remote
  • Having passed a realistic arificial load test without blowing up, such as on a treadmill.
  • Testing all identifiable boundary cases of the motor controllers
  • Testing all identifiable boundary cases of the remote control system

Features necessary before I consider the project complete:
  • Ability to operate while hooked up to an external power source (Backpack O' Batteries, yet to be built)
  • Regenerative braking
  • Sufficient battery life to use these for daily travel
  • Make sure the magnets I've used can stand up to whatever temps the motors will experience. This may require instrumenting the interior of the motor with a thermistor or something, and could even include switching to SH or UH magnets if neccessary (with the associated loss in magnetic field strength). These need to be reliable.
  • Silly optimizations, like using cobalt laminations (holy crap) for the stator and such. Generally, the project will never be complete.

This post brought to you by Content MathML, along with an XSLT stylesheet to transform that into Presentation MathML because browsers are still stupid when it comes to rendering any MathML that actually carries semantic meaning rather than just looking pretty.

No comments:

Post a Comment