Want to get your hamster from one end of his cage to the other in milliseconds? Here's what you need. And all for the cost and complexity of a new Ferrari.
The idea of a Hyper-loop, propelling people at high speed between San Francisco & LA in 1/2 hour, caught my attention. So as a Hyper-loop enthusiast, retired software geek, and odd project builder, I thought it would be cool to build a working model of the system. It should have as many of the technical facets of the real project as possible so as to be a proof of concept, add to the enthusiasm for the real project, and be a kinetic art piece that would amuse and amaze.
All this must be done without breaking the bank, though as in full scale projects, and as you can see if you read on, the cost and effort tended to creep up.
I proposed this idea to a friend who is a retired electrical engineer and he readily agreed to help. His electronics expertise has been crucial to the effort, and his continued enthusiasm and support have kept me going.
What are shown as "steps" below are are components in the system.
The car in its final form is about 15 inches long and two inches in diameter plus attachments. A ducted fan pulls air in at the front and pushes it out a set of feet. When running, air flows out through holes in the feet and into pockets. These pockets are the air bearings that eliminate friction and allow the car to glide over small bumps in the tube.
An Arduino Nano collects readings from a pressure sensor and acceleration/gyro sensor, and sends motor control signals to the fan speed controller. A Bluetooth module allows monitoring and control via Android phone.
General List of Miscellaneous Tools
. Set of drill bits . Cordless Drill . Fine blade hand saw . Lots of blue tape (temp labels, lines, holding) . Marking pens . Electrical tape (the black stuff) . Tape measure . Calipers . Soldering Iron, solder & shrink tubing . Misc hand tools . PC with Arduino IDE . Android phone with BlueTerm app
For the car housing, after initial attempts using 2 inch ABS plumbing pipe we settled on 2 inch clear acrylic tubing. Clear tubing lets you see what's inside, and it turned out that the next smaller size tubing (1 3/4 inch) slides closely inside the 2" OD tubing. This made for neat assembly of the car front and back. Fan motor housing on the front, and plug with small hole in the back are fitted with sleeves of smaller diameter tubing and are held in place with set screws.
The acrylic tubing machines well and can be cut with woodworking tools. We were able to drill holes, cut large slots using a Dremel saw tool, and use a tap to cut threads for attaching feet and magnets.
A warning to any who work with acrylic tubing. Do not use denatured alcohol to clean off marks, etc. Although normally fine for cleaning flat acrylic, there must be a styrene component in the tubing that causes cracks to form when holes or cuts are touched with the methanol. The cracks didn't hurt the structure, but marred the clean look.
List of Tools & Components
Tools o Cut-off saw - for accurate cutting lengths of acrylic tubes o Dremel rotary tool with saw blade - for large cuts in acrylic tube o Files - for cleaning up saw cuts and melted plastic o Step drill - for larger holes (large drill bits are a bad bet) o #4 - 40 tap - for threads in tube to attach feet and magnets o 2" Hole saw - for plug for back of car o Acrylic cement and applicator Components o 2" OD acrylic tubing - 12", 2", 1/2" lengths (body, front & back) TAP Plastics Store $15 o 1 ¾ OD acrylic tubing - 1" and ½" lengths (for sleeves to fit front & back of car ) - TAP $10 o 2" circle of 1/8" acrylic sheet - back of car (hole from hole saw is fine) - scrap from motor boxes o #4 - 40 flat head screws 3/8 long x 14 for magnets, x 16 for feet (Get spares. They're tiny) - $3
Air Bearings
Initially I had the notion of using compressed air captured in the car pushing out through the feet to form the air bearings. This was not feasible due to how much air it takes to make the car float. We quickly adopted the idea of a ducted fan at the front of the car. This aligns with the full sized hyper-loop design and provides a large volume of air.
Building the Feet
The four feet are affixed to the car at 90 angles and are built to conform to the convex curve of the car and the concave curve of the tube. There was a lot of trial and error getting the car to float successfully on it feet. After trying "flat" feet, we learned that air bearings need recessed pockets. This spreads out and contains the air that is compressed between the foot and the tube wall. Also, a large flow of air is more effective than a higher pressure jet.
Initially the car was concentric with the tube, but to make room for the linear induction motors, it was necessary to drop the car down a bit, still maintaining matching curves. This made the geometry a bit more complex, and left feet became different from right feet.
The feet were drawn in Sketchup and made in ABS plastic using my friend's 3D printer. This was a great technique since it allowed trial and error. In first attempts we glued the feet to the car. In the final design a flange was extended to allow the feet to be screwed onto the car. The Sketchup model had to avoid any unsupported horizontals for successful 3D printing.
List of Tools & Components
Tools o Sketchup PC program o 3D Printer o Full sheets sandpaper - for truing up foot bottoms (& tops) o 18" scrap of 4" ABS (or PVC) pipe - for sanding bottoms to shape o Length of 2" tubing - for sanding foot bottoms to shape Components o ABS filament for 3D printer about 250g - $7 (this is for many tries at getting it right)
I wanted to measure the acceleration of the car and also the air pressure in the car. I placed an Arduino Nano in the car with pressure sensor and acceleration sensor. Addition of a Bluetooth module, this also allowed the car system to be read and controlled from outside the tube (via Blue Term Android app).
List of Tools & Components
. Tools - see general tools list . Components o Arduino Nano V3 - Ebay $5 o 28 pin DIP Socket - Wide - (30 pin not available) Ebay $2 o Prototyping board - Ebay $3 o HC-06 Bluetooth Slave Module - Ebay $7 o BMP180 Barometric Sensor Module - Ebay $9 o MPU - 6050 3 Axis Gyro/Accel Module - Banggood China $3
I was able to buy a 40mm ducted fan that fit perfectly within the 2" OD acrylic tubing. The fan motor has a large high amperage wire for each of three phases. The power to the fan is provided by a specialized Electronic Speed Controller (ESC). The fan and its controller are model aircraft hobbyist technology, and because of this, are relatively inexpensive for being quite high tech gear.
To run the fan, initially we used a radio control transmitter and receiver. But the Arduino and its Bluetooth link to the outside world allowed us to have the fan motor under program control.
The Arduino uses a Servo library to send the ESC pulses of different microsecond durations to determine motor speed. We noticed that when the fan started and even as it ran, the floating car tended to twist in one direction. To minimize the start-up torque we had the Arduino ramp up the fan speed gradually. To counteract the ongoing torque we designed a backward fan and glued it in place behind the motor. This serves to counteract the twist the fan is putting on the column of moving air. We went so far at one point as to use the acceleration/gyro sensor to have the Arduino move a fin in response to car movement (yaw). Although a great learning experience, this was way too complicated and also ineffective. The most effective way to counteract the torque turned out to be a slot cut slightly offset in the bottom of the car so the heavy battery could project downward at an angle and act as ballast.
The fan and its controller (ESC) are a set of lore unto themselves. The ESC requires initialization to set the "servo angles" (actually the microsecond pulse widths) at which the motor is Off and at which the motor is at full speed. The ESC communicates via a series of beeps, amazingly using the fan motor itself as a speaker! The ESC is rated for 30 Amps. They get very hot and we burned up more than one ESC during the learning process - when the fan was obstructed for instance.
To power all this is a Lipo (Lithium Polymer) battery. We are using a 3 cell, 11.1 volt battery which promises 800 milliAmpereHours. The first battery we bought did fit in the car but at 1800 mAh was easily twice as heavy and quite a bit larger. Of course one needs a special charger and adapters for these rascals.
List of Tools & Components
Tools - see general tool list Components o Ducted fan - brushless motor - 40mm - Ebay $32 o Electronic Speed Control (30A for brushless motors) - Ebay $7 o EC3 Female to JST Male Battery Adapter Ebay $7 o 11.1V 25C 800MAh Lipo Battery - Ebay $9 o 15A Lighted Rocker Switch - auto parts store $5
For the car portion of the linear induction motor I attached two lines of permanent magnets at 90 degree angles. The magnets are Neodymium (rare earth), 5/8 inch diameter 1/8 inch thick with countersunk holes. The are mounted with alternating polarity. More on this in the section describing the linear induction motor.
List of Tools & Components
Tools - see general list Components o Niodymium Disc Magnets 5/8" dia 1/8" thick w hole 10N & 10S - AmazingMagnets.com $35
A linear induction motor is an electric motor set out in a line rather than turning around an axis. The are surprisingly few good examples on the web for us to shamelessly copy, so we were forced to do rather a lot of trial and error.
One of the few examples of linear induction motors we found used the motors to move a mag-lev car a short distance under joystick control. Our motor however needs to accelerate the car as quickly as it can so that the speed gained can carry it a distance through the tube. So the motor doesn't need to be the length of the tube, only long enough to get the car moving fast.
For early testing we used a little wooden car on wheels and a single set of coils. This proved that we could make it happen with our own coils and control logic.
The system we settled on uses independent sensor/coil pairs. When a sensor sees a permanent magnet (PM), its coil is energized (along with the matching coil on the other side of the tube) independent of all other sensor coil pairs. Spacing of PMs versus coils is arranged so that not all coils will come on at once. This makes power demands more manageable and smooths out forces applied to the car.
The motors we ended up with are two pairs of acrylic boxes, one pair about 12 inches by 1 inch wide by 3/4 inch deep, the other pair (our first attempt) about 8 inches long. Each motor pair has one box containing sensors and coils and another box containing coils only. The boxes are mounted in the tube so that the PMs on the car pass close to sensors and coils. An Arduino Mega and specially built power board respond to the sensors and send power to the coils to draw the PMs to the coils. When one PM is being drawn in, its predecessor PM is pushed away from the same coil (PMs are arrayed in alternating polarity).
We had to wind our own coils since there didn't seem to be any available for purchase. Note our funky setup for winding. Magnet wire (#30) was tensioned by a sewing machine bobbin winder and the winding is done with an electric drill controlled by a variac power supply to moderate the speed. Magnetic strength is a function of Amps and turns, so for uniformity we attached a bicycle speedometer to the drill hub to count the turns. Our coils have about 840 turns and measure 10-12 Ohms each.
Each coil is wound around a 1/4 inch ID brass tube 5/8 inch long. We applied super glue as we wound so the coil would stay together. The brass tubes worked well for mounting onto 1/4 inch OD acrylic rods, cemented into the motor boxes.
Coils with iron cores generate stronger magnetic fields, but we thought that the permanent magnets on the car would be drawn to the core whether the coil was turned on or not. So we went with hollow core "solenoid" coils.
When soldering leads onto the coil magnet wire it takes a bit of scraping to remove the insulation. It's important to color code the wires so wires from the same coil have the same color. Coil sequence and polarity can be figured out by testing later.
List of Tools & Components
Tools o Sewing machine - to dispense and keep tension on wire o Electric drill o Bicycle speedometer - to count revolutions (winds) o Variac - to control speed of electric drill while winding o Plastic or nylon disks 1 1/2" dia, 1/4" hole - temporary bobbin ends while winding coils o 1/4 diameter bolt and nut to hold bobbin together and for drill to turn Components o Magnet wire 30 AWG - 1lb (>3000feet) - Ebay $18 o ¼ OD brass tubing - cut to 5/8" for coil cores - $4 o White paper circles - glue to ends of coil while winding o Waxed Paper - prevent glue from sticking to nylon disks o Superglue - several tubes o #22 wire, at least 4 colors o Wire protector/wrap 1/4" - Harbor Freight $2
Initially we tried a three phase approach where three sets of coils would come on when called for by proximity of permanent magnets, but this made spacing critical and resulted in a complex system. It was a far simpler to have a sensor for each coil pair and energize the coil pairs independently.
The sensors are 3503 Ratiometric linear Hall Effect sensors. Ratiometric means the signal they generate varies depending on (the square of) the distance and that they distinguish North from South (via plus or minus readings).
It's important when soldering sensor leads to keep them skinny so they will fit into the hollow tube. It's also important for the sensors to use appropriately colored wires so when they're all bunched together you can tell which is 5v+, which is ground, and which is the signal. Which signal is which sensor can be figured out later in testing.
List of Tools & Components
Tools - see list of general tools Components o 3503 Hall Effect Ratiometric Sensors - x 8 - Ebay 10 for $2.50 o #22 wire, at least 4 colors o Wire protector/wrap ¼" - Harbor Freight $2
Acrylic boxes contain and organize the coils and sensors. The boxes (one 12 inch and one 8 inch) are in two pieces: a cover and a base. The cover has a 1" thin (1/16) strip of acrylic as the face cemented to two sides 3/4" (1/8) acrylic. The thin cover also has little pieces of thick (1/4) acrylic cemented in at the ends and center which are tapped to accept mounting screws. The base is 1/8 acrylic with 1/4 holes drilled to accept solid rod to hold the coils and 1/4 hollow tube to hold the sensors.
Our first motor (pair of boxes) has the coils spaced at 1 1/4 inch centers. In the second motor, the coils are spaced twice as far apart at 2 1/2. We don't think that this spacing is significant other than keeping it so permanent magnets on the car don't line up at the same time (PMs are at 1 1/2 inch centers).
List of Tools & Components
Tools o Table saw w fine tooth (plywood) blade for slicing acrylic o Acrylic cement and applicator Components (for 2 motors of 4 coil pairs each) o Acrylic sheet pieces for 4 boxes - scraps from TAP Plastics - $5 o 1/16 1" wide 12" long x 4 bottoms of boxes (face downward toward car) o 1/8 3/4" wide 12" long x 8 sides of boxes o 1/4 thick 3/4 x 1/2 x 12 - glued to center & ends of box bottoms to accept screws o 1/8 3/4 wide 12" long x 4 - base to hold rods for coils (& tubes for sensors) o 1/4 OD acrylic rod - cut to 5/8" x 16 - posts to hold coils - TAP $4 o 1/4 OD acrylic tube - cut to 5/8" x 8 posts to hold sensors - TAP $4
At first we used Adafruit Motor Controller shields to provide power to the coils. The Arduino digital output pins provide 5volts at a rather low current. The motor controller shield uses the small digital signal to send up to 1 Amp of power to motors, in this case our coils. To use the Adafruit boards we also used the library of Arduino code they provide. Although this did work and moved the car, it did not move it strongly.
Eventually we opted to build out own driver board using parts from electronic salvage stores in the area. With our own board, each coil's circuit can accommodate a peak of 8 Amps of current, and each driver can power the coils on both sides of the car that are activated together (wired in parallel). We had been using a 12 volt power supply. To increase the power to the coils we purchased a 10 Amp 24 volt power supply. They sell these quite cheaply online to power LED strips, and they work fine for our purpose.
For the final approach for controls we used an Arduino Mega since it had plenty of analog and digital pins available. The Arduino sketch (program) is rather simple in that it loops around looking at each sensor and deciding if there is a significant reading and if so, is it North or South. If it's North, that sensor's coil is turned on to South (so it will pull). And vice-versa.
For early testing we used a little wooden car on wheels and a single set of coils. At one point as it was starting to work, we observed "cogging", stuttering of the coils pulling on the magnets in an uneven way. In the Arduino sketch we had Serial.print commands sending readings to the console to see what was happening. Eliminating the Serial.print statements sped up the sketch so it moved the little wooden car nicely.
At another point in testing, we put in timestamps at the beginning and the end of the loop to see how long everything was taking. The loop took 20 to 25 milliseconds. This is way too slow to react to a car moving at our hoped for 20 feet a second. I tried taking out the calls to the Adafruit library and the time went down to between 0 and 1 millisecond. OK then. That confirmed the decision to make our own power driver.
List of Tools & Components
Tools - see general list of Tools Components o 24v 10A Power Supply - Ebay $22 o Arduino Mega - Ebay $20 o Toggle switch o Controller/Driver Board
Early in the design we settled on 4 inch corrugated drainage pipe (non perforated) as a reasonable tube for the
model. Rigid PVC or ABS plumbing pipe is more expensive and the joints between sections are not as even. Four inch clear acrylic tubing would be wonderful, but would be prohibitively costly.
The drainage tubing is not perfectly smooth inside due to the corrugations, but my assumption was right that the car does in fact ride above the bumps on its air bearings.
The drainage tubing is inexpensive and light, and I can visualize laying out a very long stretch of it to demonstrate speed. It is opaque however and it was necessary to cut viewing slots in various portions. For a vacuum, these will have to be covered with a transparent material and sealed.
To maintain a vacuum in the tube we will need an air lock. This would allow the car to be placed into the tube without losing existing vacuum. It would also simulate a real system with passenger stations. For an air lock door, we will try a "blast door" from a shop dust collection system. To pull the vacuum, we will initially use a shop vac. This moves a lot of air but does not bring the pressure down much. If the air lock system is successful, we will try an air conditioning system vacuum pump. As the reader might determine from verb tense, the vacuum portion of the project is still in the future.
List of Tools & Components
Tools - see general list of tools Components o 4" Drainage Pipe - 10 foot section - Home Depot $7
Coil pairs are wired in parallel. For each motor of 4 coil pairs, I brought together the same end (e.g. North) of each coil pair and soldered them to a single lead going to the control box. In that way, the number of wires going into the controller was cut in half. I kept all the North ends together, making one cable with the North leads for each of 4 coils. Same process for the South ends yielded a cable with South leads for the same 4 coils. Repeated for the second motor, gave a total of 4 4-wire cables heading toward the control box.
Cables from Sensors
The leads coming from the sensors contained 3 wires each: 5v+, Ground, and Signal. For each motor (4 sensors) I combined the 5v leads and combined the ground leads. This made a cable with only 6 wires going to the control box, this repeated for the second motor.
Jumpers From Arduino to Driver Board
For the 8 coil pairs (4 pairs in each "motor"), there are 16 Arduino pins that tell the driver board which coil to energize and which at what polarity. For example, for given coil, if the even numbered pin is set High (5v+) and the odd numbered pin set Low, the coil is turned on to North. It should never happen that both odd and even pins are both High, although there are extra transistors in the driver board to prevent disaster if this occurs. The 16 jumpers also have protection in the form of diodes, to prevent any damaging current from flowing toward the Arduino. We arrived at this cautious approach the hard way.
Control Box
To keep the electronics contained and neat I put them into a box I had from a previous decommissioned project. My goal was to make the whole system transportable and storeable. This required being able to unplug the electronics from the tube where the motors are mounted. The Arduino Mega, Driver Board, and Power Supply were mounted onto the 3/4 inch plywood base. The acrylic cover already had 3 4-pin jacks so I bought a 4th and that allowed all the coil cables to come in nicely. I bought two sets of 9-pin D-sub connectors (male & female) and soldered them onto the sensor cables. This is all on the "back".
On the from are the ammeter (useful to see what the coils are drawing), an On/Off power switch, and a button to trigger the interrupt that prints statistics.
List of Tools & Components
Tools - see general list of tools Components o Component Box left over from previous project o Plywood base to hold Arduino, Motor Controller Board, Power Supply o Acrylic Cover o 4 pin Microphone Jack and Socket x 4 - connect coils to Controller Board - Radio Shack $35 o 9 pin D-sub connectors (M & F) x 2 - connect sensors to Arduino Mega - Radio Shack $10 o Crimp lugs - connect wire ends to Controller Board - Hardware Store $5 o Wire - 4 colors o Jumpers to connect Arduino pins to Controller Board - $1 o Ammeter - with shunt added to handle 20Amps - from "inventory" o Toggle switch - also from inventory (previous projects) - $1 o Push button for interrupt - also from inventory
One of the requirements is that the car move slowly under fan power so it will move into range of the linear motors. The first video clip shows it needing a nudge.
Once it gets hold, the motor it really does shove the car quickly down the tube. This is prior to any tuning of sensor thresholds. Once the geniuses leveled the table so the car didn't have to start uphill it does move slowly on its own into the motor. Now the tuning begins.
Tuning consisted of establishing the best sensor thresholds for turning on and turning off the coils. The Arduino sketch that runs the coil records the time when each coil is first turned on and also when turned off. Looking only at the duration between coil 1 and coil 8 and also coil 5 and coil 8 we found that a sensor reading of 60 was best for the turn-on threshold. For the turn-off, the best sensor threshold was about 70. (60 and 70 are millivolts above or below the no-reading level (about 512) on the sensor Analog pins.
Since we were recording all coil Ons and Offs, I was curious to see if there were any surprises. The chart above shows the raw millisecond readings and some Excel arithmetic. There wasn't much acceleration for the final 3 coils. On the theory that the processor wasn't switching the coils fast enough we replaced the Mega with a much faster Due. There was not much difference in performance.
I think our approach to the linear induction motor ran up against some inherent limitations. That is, as the car accelerates, it spends less and less time being pulled by the coils. This reduces the force being exerted by each coil thereby reducing acceleration. If anyone out there has better ideas for using linear induction motors for acceleration, not just propulsion, I'd be happy to hear about them.
Overall however, even without trying to pull a vacuum in the tube, I feel the project was successful if not stellar. Fun too!