全文转载自:Maglev Hover Racer: Design and Fabrication
The first thing I did was make a spreadsheet to calculate eddy current power dissipation and surface penetration. Inputs were number of magnets, magnetic ring area, RPM, neodymium magnet grade (ex N48), distance from plate, thickness of plate, temperature of plate, etc. Output was power dissipation in the plate. I also added some basic motor/battery sanity calculations. I made one a cleaned up version available here . Here are some useful links: 1 , 2 …those guys also have pretty good deals on neodymium magnets.
- SLICK 220mm Quadcopter Frame Kit (fiberglass)
- 4x NTM Prop-drive 28-26A, 1200kV short shaft brushless outrunner motors – lift
- Q Brain 4x 25A Quad ESC
- 2x C2230 brushless outrunner motors, 1780kV – for thrust
- 2x 10A Brushless Car ESCs (hobbyking brand)
- 3x Zippy flightmax 2200mAh , 2S1P LiPo packs
- Turnigy 9XR Pro transmitter
- OrangeRx 2.4GHz transmitter module
- OrangeRx 2.4GHz 6 channel receiver
- NanoWii flight controller
- Spare motors, spare batteries, charger, wires, plugs, etc. (hobbyking)
- screws, nuts, tubing, etc from McMaster
- M3 screws and locknuts for the chassis (frame kit comes with these), thruster mount to chassis, and lift motors to chassis
- M2.5 flat head screws for securing lift rotors to lift motors
- M2 screws for securing thrust rotor to thrust motor
- M2 screws and nuts for securing thrust motor to mount
- 8978K26 tube for lift hoop rings
- 8978K24 for thrust hoop rings
- low carbon steel 0.06″ thick for thrust motor mounts
- 64 1/4″ cube N50 magnets from Amazon
- 48 1/2″x1/8″x1/8″ magnets from K&J Magnetics
First Rendering |
Top center: Buckled plastic |
Crunchy |
Crumbly |
Using super glue this time |
One almost done. |
Mounted on aluminum test bracket. Black electrical tape around rotor for temporary magnet restraint until the new larger tubing came in. |
I tested the above setup on a 1/4″ aluminum plate/scale. It produced ~150g of lift, and the thrust was definitely noticeable. Since the force vector should be a 45 degree angle, the thrust should have been about 150g, too. Good, so that plan for producing thrust should work. Now I just need to take it off of the test mount and…crap. The tiny M2 screws stripped because I superglued the nuts (because I did NOT want this rotor coming off the mount during testing). I ended up drilling, milling, and hacking the screws apart until I got the motor off.
Endmill screw = screw – screw head |
cut up screws |
I then finished gluing in the magnets to both rotors. Next, the aluminum tube came for the containment rings (as mentioned previously, this is to prevent catastrophic structural failure of the plastic rotors at high RPM). Damn…I didn’t make the magnet holes deep enough and the new aluminum tube didn’t fit on it. I had to bring it the machine shop and bore out (lathe) about 0.018″off the diameter. I also used the lathe to make nice, even cuts, but a hacksaw could have been used to cut the rings, too. I then hammered/pressed the rings on both thrust cylinders. YAY, I’m done! Or so I thought. A guy in lab has one of those cool magnetic field viewer card things; they allow you to visualize a magnetic field. I held it up to my rotors spun them around, and…damn. I messed up 1 magnet out of the 100 I set that day. I had to cut off the aluminum ring, chisel out the super glued magnet, flip it over, glue it back in, make a new aluminum ring on the lathe, then press the new aluminum ring on. Phew…
Cut off the aluminum ring super carefully with a dremel. The culprit is marked by sharpie. |
Finally: Finished thrusters |
The lift rotors were built next. Again, I didn’t leave enough tolerance on the motor can diameter, so I had to hand-mill (my term for drillpress endmill hand holding the part) a few mills of plastic off the diameter. I got the magnet holes about right this time, though. I also had to use a razor blade to clean up some of the plastic…3D printers aren’t exactly the most accurate machines. I then went magnet by magnet, (somewhat carefully) hammering them in. AFTER I checked to make sure all of their orientations were correct, I super glued them in.
Rings on. These rings were cut on a lathe. |
Various tabs/notches/holes for interfacing with motor can. The outer set of holes are for pushing out magnets that I set wrong. |
Placing magnets |
I then had to make the thrust motor mounts. As mentioned earlier, these are made out of low carbon steel sheet. I designed them using Solidwork’s sheet metal tools, which allowed me to “unfold” them and print out a template. I taped the template to the metal sheet, punched all the hole locations, drilled all of the holes, deburred all of the holes, and then band-sawed them apart. I then used a vice, a plastic mallet, and a protractor to bend them.
The little ones mount underneath the chassis as lower magnetic flux guards. |
I turned the lift rotor rings that day, too. |
They came out surprisingly accurate. I didn’t have to do any hole corrections. I then followed a similar process for putting holes in the chassis.
As you can see in the bottom pic, it didn’t turn out as well. I had to hand-mill some of the holes into slots. Oh well, it works.
Next, I assembled the quadcopter frame, zip tied/screwed/taped things to it, and (drumroll please)…
I coiled the long ESC wires instead of cutting them because I want to use this ESC for a real quadcopter build one day. |
NanoWii partially connected. |
Receiver-ESC connections (no flight controller). |
I first tried it with the flight controller setup in quadcopter mode. I calibrated everything, had all the right settings, blah blah blah… Like I guessed, it didn’t work at all. The dynamics are completely different from a quadcopter. So I took the flight controller out and plugged the ESC’s directly into the receiver. No thrust motors at this point, I simply wanted to get it hovering.
It worked!! It has probably 1kg of extra lift at full throttle. It hovers about 5mm from the surface. Due to slight differences in the motors/rotors, there is a small net torque in the clockwise direction that causes it to want to spin, but I should have no problem trimming that out when I bring the flight controller in the loop. Also, the plate in the video is a lot thicker than necessary (but it’s what we had in lab). Assuming my skin depth calculations are correct, I should see negligible change in lift on a 1/4″ plate.
I managed to make the rotors similar enough to not need trim for pitch or roll. In fact, the thing is so stable that I don’t think I’ll even need a control loop for pitch and roll. Yaw will need to be trimmed, but it may not need a control loop either. In fact, I’m not even sure a real controller is necessary. You could probably get away with a fancy transmitter and/or channel mixer. I’m going to stick with the flight controller for now, though.
To-do List:
- Software modifications
- Take out pitch and roll command and control
- Add in thruster command (could drive directly from Rx with a signal splitter)
- Put lift throttle on a transmitter knob
- Put thrust throttle on pitch stick
- Obtain a large sheet of aluminum
- Lots of testing
- Finish everything by Dec. 16th
- upload CAD files, code, etc. to my public google drive
Yeah…I’m not sure I’ll make that deadline. I have finals next week that I need to study for. We’ll see!
Maglev: Control System 1
I screwed the thrusters to the hover racer. They were a bit too high to produce thrust, so I had to bend their mounts down until they stuck a few mm below the plane of the lift rotors (and thus 1-2mm above the aluminum when hovering).
Final assembly system weight: 1337g.
Next, I attempted to make a control system work. First thing I did was put the lift motors on one of the knob (pot) channels on my Tx (by messing with Tx mixing). This was to prevent accidental lift changes during yawing (rudder stick movement).
The first system I tried was just yaw control (no thrusters yet). I did this by having a custom mixing .h file and adding in rcCommand[YAW] into the lift rotor’s mix. I didn’t want to mess with PID yet, so the flight controller was just acting like a mixing board. Yaw control works like this, but it is very sensitive. Yaw trim didn’t work very well, though. I can trim out the yaw, but then two of the motors (diagonal) start spinning quite slow and the quad drifts to the rear left. In my previous maglev posts, I claim that propulsion shouldn’t be possible with this configuration, so why was it translating? That got me thinking that maybe I could propel it with small pitch and roll commands. I tried adding rcommand for roll and pitch. When I tested it, I could hear the motors changing speed, but no direction changes or propulsion. Unfortunately, the pitching caused one of the rotors to contact the aluminum, which smoked it (stalling for a couple seconds = death). For some reason, the ESC didn’t register a prop strike. I’m not overpowering the motors because the other motors didn’t even get warm. Oh well… I put in the spare motor I used for single rotor testing and kept going. Lesson learned: I should add a small bead to the center of the rotors to allow them to spin relatively friction-less if they contact the surface. That would prevent motor burn outs.
I then took the pitch and roll out, but left the yaw control. The different motor didn’t change the yaw untrim or rate, so I’m guessing the yaw untrim is coming from the rotors not being completely level (because the frame is pretty flexible. ~2-5mm deflection just from weight) and the rotors not being exactly the same (they are all unequal ellipses from 3D print warping). There may not be much I can do about that. An extra motor/rotor (like the lift rotors, but smaller) could be mounted in the center under the chassis to provide trim and yaw or just trim. That would leave the lift motors completely out of the control system, which would probably be good.
Next, I tried adding in the thrusters connected through the flight controller. These proved very difficult because of the reverse functionality of the ESC’s. They need to initialize to 1500us, but when you arm single direction motors (like the lift motors), you want them armed to ~900-1000 with minimum throttle around 1000. There is no “min throttle” for bidirectional because ~1000 corresponds to full reverse and ~2000 corresponds to full forward. I figured out I could modify the loops in output.cpp that set minthrottle and mincommand by limiting them to the first 4 motors, but that’s a pain. It’s much easier to just take the thrusters off the flight controller and mix the two using the Tx and the elevator and aileron channels on the Rx, so I did that.
Link to public google drive with the final MultiWii config.h file, mixing table .h file, and pin assignments.
Now I needed a larger sheet of aluminum to test on. The FIT machine shop happened to have a 2’x4′ 1/4″ thick aluminum sheet! Videos below:
(684) Maglev Control Test Session 1 – YouTube
(684) Maglev Hover Racer with control: Test1 – YouTube
A few notes from the tests:
- Yaw trim is still a problem (discussed above).
- Yaw is a bit screwy. While it will obey yaw commands and turn the direction I want it to, when I bring the stick back to neutral, it will turn back some. I guess that kind of makes sense from a torque perspective, and a PID loop on yaw would help with that. If it starts spinning too fast, I lose yaw authority completely (first video). There is something weird going on that might be related to the trim problem.
- You can see the ESC registered a prop strike near the end of the first video (1 motor stopped).
- The thrusters aren’t particularly useful for changing direction. They have to stop rotating before the ESC will reverse its direction. Due to the high inertia of the rotors, this takes awhile, which allows the hover racer to drift a long ways before reverse thrusting. This makes it hard to control. Making them closer to the surface would help them brake faster, but there will still be a delay. I don’t think a ducted fan on a servo would be much better because of the time it takes to rotate the servo. Anyone have any better (non-contact) propulsion ideas?
- Judging by final charge of batteries, it probably has about 4-5 minutes of flight time per charge
- Definitely need a kill switch and to add braking to the lift motors.
- The magnets got pretty scraped up: a very thin sheet of protective acrylic/polycarbonate would probably be a good idea.
- The motor bearings are starting to sound bad. They really aren’t meant for spinning large unbalanced masses. Machining the rotors (plastic or aluminum) would probably have been better than 3D printing: it would have removed the warping and they would probably come out better balanced.
Please leave your control system ideas/tips in the comments. I need suggestions on how to trim the extreme yaw imbalance and get more thrust authority.
To do:
-Make a better control system
-Add a kill switch and braking to lift motors
-Add a bead/round head screw to centers of lift motors (see above)
-Upload (fixed) CAD to google drive
Maglev Mark1 CAD upload
The Mark1’s CAD is on my public google drive now. Sorry for the odd part names; just start with the full assembly and figure out what I called what. Here’s a screenshot of the final configuration:
The corrections discussed in an earlier post to the 3D printed rings/magnet holders are incorporated in those CAD models. I also made the thruster motor mount slightly long so that thrusters sit a few mm more below the plane of the lift rotors.
I also updated the hardware list in the fabrication post to include the screws and nuts you’ll need.
I’ll probably start work on a Mark1b over the next few weeks.
Maglev: Control System 1
I screwed the thrusters to the hover racer. They were a bit too high to produce thrust, so I had to bend their mounts down until they stuck a few mm below the plane of the lift rotors (and thus 1-2mm above the aluminum when hovering).
Final assembly system weight: 1337g.
Next, I attempted to make a control system work. First thing I did was put the lift motors on one of the knob (pot) channels on my Tx (by messing with Tx mixing). This was to prevent accidental lift changes during yawing (rudder stick movement).
The first system I tried was just yaw control (no thrusters yet). I did this by having a custom mixing .h file and adding in rcCommand[YAW] into the lift rotor’s mix. I didn’t want to mess with PID yet, so the flight controller was just acting like a mixing board. Yaw control works like this, but it is very sensitive. Yaw trim didn’t work very well, though. I can trim out the yaw, but then two of the motors (diagonal) start spinning quite slow and the quad drifts to the rear left. In my previous maglev posts, I claim that propulsion shouldn’t be possible with this configuration, so why was it translating? That got me thinking that maybe I could propel it with small pitch and roll commands. I tried adding rcommand for roll and pitch. When I tested it, I could hear the motors changing speed, but no direction changes or propulsion. Unfortunately, the pitching caused one of the rotors to contact the aluminum, which smoked it (stalling for a couple seconds = death). For some reason, the ESC didn’t register a prop strike. I’m not overpowering the motors because the other motors didn’t even get warm. Oh well… I put in the spare motor I used for single rotor testing and kept going. Lesson learned: I should add a small bead to the center of the rotors to allow them to spin relatively friction-less if they contact the surface. That would prevent motor burn outs.
I then took the pitch and roll out, but left the yaw control. The different motor didn’t change the yaw untrim or rate, so I’m guessing the yaw untrim is coming from the rotors not being completely level (because the frame is pretty flexible. ~2-5mm deflection just from weight) and the rotors not being exactly the same (they are all unequal ellipses from 3D print warping). There may not be much I can do about that. An extra motor/rotor (like the lift rotors, but smaller) could be mounted in the center under the chassis to provide trim and yaw or just trim. That would leave the lift motors completely out of the control system, which would probably be good.
Next, I tried adding in the thrusters connected through the flight controller. These proved very difficult because of the reverse functionality of the ESC’s. They need to initialize to 1500us, but when you arm single direction motors (like the lift motors), you want them armed to ~900-1000 with minimum throttle around 1000. There is no “min throttle” for bidirectional because ~1000 corresponds to full reverse and ~2000 corresponds to full forward. I figured out I could modify the loops in output.cpp that set minthrottle and mincommand by limiting them to the first 4 motors, but that’s a pain. It’s much easier to just take the thrusters off the flight controller and mix the two using the Tx and the elevator and aileron channels on the Rx, so I did that.
Link to public google drive with the final MultiWii config.h file, mixing table .h file, and pin assignments.
Now I needed a larger sheet of aluminum to test on. The FIT machine shop happened to have a 2’x4′ 1/4″ thick aluminum sheet! Videos below:
(681) Maglev Hover Racer with control: Test1 – YouTube
A few notes from the tests:
- Yaw trim is still a problem (discussed above).
- Yaw is a bit screwy. While it will obey yaw commands and turn the direction I want it to, when I bring the stick back to neutral, it will turn back some. I guess that kind of makes sense from a torque perspective, and a PID loop on yaw would help with that. If it starts spinning too fast, I lose yaw authority completely (first video). There is something weird going on that might be related to the trim problem.
- You can see the ESC registered a prop strike near the end of the first video (1 motor stopped).
- The thrusters aren’t particularly useful for changing direction. They have to stop rotating before the ESC will reverse its direction. Due to the high inertia of the rotors, this takes awhile, which allows the hover racer to drift a long ways before reverse thrusting. This makes it hard to control. Making them closer to the surface would help them brake faster, but there will still be a delay. I don’t think a ducted fan on a servo would be much better because of the time it takes to rotate the servo. Anyone have any better (non-contact) propulsion ideas?
- Judging by final charge of batteries, it probably has about 4-5 minutes of flight time per charge
- Definitely need a kill switch and to add braking to the lift motors.
- The magnets got pretty scraped up: a very thin sheet of protective acrylic/polycarbonate would probably be a good idea.
- The motor bearings are starting to sound bad. They really aren’t meant for spinning large unbalanced masses. Machining the rotors (plastic or aluminum) would probably have been better than 3D printing: it would have removed the warping and they would probably come out better balanced.
Please leave your control system ideas/tips in the comments. I need suggestions on how to trim the extreme yaw imbalance and get more thrust authority.
To do:
-Make a better control system
-Add a kill switch and braking to lift motors
-Add a bead/round head screw to centers of lift motors (see above)
-Upload (fixed) CAD to google drive