Hi, my name is Graham H, I am a rising junior at Phillips Exeter Academy, and over the past six weeks at Bluestamp Engineering I have constructed a MagLev tube system. I chose this project over the ones in the Bluestamp projects book, meaning that from the code to the circuitry, each part of the design is of my own design. I was inspired to build this project after hearing of the Hyperloop, a concept idea by Elon Musk, a world renowned entrepreneur, businessman, and inventor. (more information here) I already was knowledgeable on the subject of magnetism prior to constructing this project, but through building this project, I learned much about designing circuitry, writing code, and problem-solving with electrical engineering.
My project functions by moving a three inch neodymium magnet (picured above on the bottom left) through the section of the tube encased in copper wire. These coils of copper wire act as solenoids when current flows through them, meaning that they create a magnetic field inside the tube when the current is turned on. Of my total 24 solenoids, I have organized them into 12 “units”. Each unit consists of two adjacent solenoids, with their connections soldered together so that they are powered in series. They also are wired so that their magnetic fields point oppositely to each other when current is applied, meaning that they either push a magnetic pole away from the center of the two solenoids, or pull a magnetic pole towards the two solenoids, depending on the direction of the current. Of these twelve solenoid pairs, each of them is wired in series with the pair six ahead of it, so that the first and seventh, second and eighth, third and ninth, etc units are wired in series with each other. This allows for my twenty four solenoids to only be controlled through six separate channels.
Driving these solenoids is my control circuit, consisting of one Arduino Uno, and six Arduino shields. My Arduino, which is essentially a programmable microcontroller for electronics prototyping, essentially serves as the computer controlling the current flowing through my solenoids. The circuit takes in 10V, and up to 3A of power from an external power supply through two jumper wires protruding through my 3D printed case. This current is directed into the Arduino Uno’s external power supply, and powers the three Seeedstudio motor shields added on top of the Arduino. These motor shields take in the voltage from the external power supply, and direct it out through the jumper wires to the solenoids. In between my motor shields, I have two Go-Between shields, which allow me to take the current from one pin on the arduino, and direct it onto another. Finally, the topmost shield in the stack is a proto-shield, which is essentially a blank circuit board. Onto it, I have soldered six power resistors, which are wired in series with the solenoids. Also, I have soldered two screw potentiometers, to serve as inputs to my Arduino.
By using the program that I have written and uploaded to the Arduino, I can control the direction and intensity of the current that flows into the solenoids. Using my code, I am able to easily control the movement of the magnet through the tube, by changing the direction and amount of current flowing through the solenoids. I can use the two screw potentiometers on the top of the circuit board to control the position of the magnet, in addition to how fast the magnet moves through the tube.
BOM: Bill of Materials Final
Schematic: Maglev Tube Track Circuit_schem_final
3D printed SketchUp case: Maglev Tube Arduino Case final
Arduino Code: magnet_tube_controller_v2_0
Solenoid Library: Solenoid
After three weeks, I have reached the second milestone in my main project. This milestone was to complete the circuitry through which my Arduino Uno board will control the solenoids. My Arduino board is will be the controller that will be controlling the polarity of the solenoids, however, it cannot output enough current to the solenoids to move the magnet. So, I decided to power the solenoids using motor shields for my Arduino. Each of these motor shields uses an H Bridge (a microchip designed to control the direction of motors) to direct the flow of current, coming from the lab’s power supply, across two of my solenoid units. The Arduino then uses data pins to control the H Bridge circuit on the shield. The Arduino is able to control the polarity, and intensity of up to six solenoids at once using this setup.
In addition to the electrical aspect of this milestone, I have also completed some of the basic control code for my Arduino. I first created a library for my Arduino code. The Solenoid library I have created allows me to perform basic functions such as set the polarity of the solenoid unit, set the amount of current flowing through them, or get the current polarity of the solenoid unit with only one line of code. Then, in the actual Arduino code, I have an array of six Solenoid objects, each representing each of the individual solenoid units. I use one of three, six unit long boolean arrays, representing the polarity of the respective Solenoids, to control the polarity of the solenoid units. Each of these pieces will be implemented into my final code to smoothly control the movement of the magnet.
To do reach this milestone, I had to learn much about electrical engineering. After attaching jumpers from the pins in the Arduino board to the corresponding pins on the shields, powering the entire circuit proved to be the greatest challenge in this milestone. At first, the shields would not output equal amounts of power to each of the solenoids, and after much troubleshooting, I discovered the problem: that too much power was being diverted to powering the solenoids, and not enough was going to the circuits controlling the H Bridge, which controlled the polarity and intensity of the solenoid units. To solve this, I first changed the wiring of the shields, so that they were wired in parallel to the external power supply, and then I added resistance of 10 ohms in series to each of the solenoid units, so that enough power would be diverted to the shield’s internal circuit. This solution proved to work, and allowed for me to get .6 Amps flowing across each solenoid pair, and wiring the shields in parallel allowed me to supply only 8V of power across the entire circuit, which added to the safety and integrity of the circuit.
In addition to many challenges in electrical engineering, I also learned through this process how to create a library in C++. When I created my library Solenoid, I modeled it after the library supplied to me with the motor shields. I modeled the basic structure of the motor shield library in my Solenoid one, and then wrote my own constructor and other functions, which helped me simplify my code in Arduino.
My next goal will be to finish constructing the remaining solenoid units. In addition, I hope to add to my Arduino code, so that I can more easily control the movement of the magnet through the tube.
After a week and a half, I have reached the first milestone in my main project. This milestone was to complete six of my “solenoid units,” which I will use to move my neodymium magnet through my PVC tube. These solenoids will be the base unit with which I control my magnet as it moves through the PVC tube. These six solenoids, pictured in my first milestone video, are actually two separate solenoids that I have attached together. They are each two separate coils taped together, and their connections are soldered together so that when current flows through the unit, the magnetic fields of the individual solenoids are oppositely facing. Depending on the direction of the current, I can cause a magnetic charge to either be attracted to the middle of the two solenoids, or be repelled from the middle. Using this effect, I will switch the current in the individual units, so that my three inch neodymium magnet can travel through the tube.
To build these solenoids, I had to learn how to use the lab’s power supply to test the solenoids. Since I had already learned how solenoids create magnetic fields through their centers in Physics class, I simply had to learn how to wire up the solenoids so that they produced the effects I predicted would occur in my notebook. The instructors taught me how to set the power supply to emit a certain current, which was important to my project, as magnetic force is directly proportional to current. After I learned how to use the supply, I simply attached the ends of the solenoids together in such a way so that the magnet would be held in the tube, as I showed in my video. In addition, I used some of the skills I picked up making my starter project just a couple weeks before, such as soldering. To complete my solenoid pairs, which function as the base unit of my project, I had to construct two separate solenoids. I then taped them together, and had to solder the connections of the two together.
Over the next few weeks, I will be working towards my next milestone. This milestone is to construct the control circuit, which I will use to drive the individual solenoid units through an Arduino, so that I can automatically move the magnet through the tube.
Over the first two days I’ve been at BlueStamp, I have completed my starter project, an ultrasonic parking sensor. This device works by emitting ultrasonic waves from the leftmost sensor, and measuring the time that it takes for the wave to be received by the rightmost one. By measuring this time, the device can determine whether an object is within a certain distance of the sensor. The device conveys this information through emitting sound from the speaker on the other board. The difference in time between the beeps from the speaker tells the user how close the object is to the sensor.
To build this project, I learned on the first day how to solder. I had no previous experience with soldering, but after a demonstration, and a few attempts under supervision, I was quickly able to solder the rest of the project on my own. In addition, I learned how to remove solder from the board. I used this technique once or twice on the board after I had added too much solder to one point. In addition, once I had completed the soldering, I had to troubleshoot my device. At first, the device would not make any noise, so I checked the wired connections to the power supply with a digital multimeter. After determining that all of the wired connections were working properly, I inspected the back of the boards one more time, and determined that I had forgotten to solder one jumper wire on the main board. After I had soldered this wire down, the sensor functioned properly.
Next., I hope to get started on my main project, a magnetic messenger system. Over the next few days, I plan to go through the theoretical aspects of my main project on paper, such as determining the force of friction on certain surfaces, and the magnetic forces necessary to move the magnet down the tube.