Wednesday, August 17, 2016

Q3 2016 Rocket active stabilization system update, complete hardware redesign of fin drive system with bonus sketches and a needed disclaimer

The old and new designs, massive improvements to the overall design
Update time has rolled around again now that a good chunk of progress is completed on the Arduino based rocket stabilization system. This has taken a while since I've been busy with not only work but also getting the A+ certification in computer repair and completely reworking my current workstation. After much discussion with several other rocket tinkerers, the conclusion was reached that stresses on the servo spline itself would be quite considerable and may result in damage or inoperability. Based on force distribution I surmised that flanged bearings embedded in the system shroud tube would function as not only supports but also as smooth rotation points. With the challenge of a new fin drive train in mind, I set to brainstorming. My first thought was to use linkages connecting the servo to the actuation shaft, though it would increase the diameter of the system unless the servos were staggered which would also increase the overall height of the system. Stepper motors were considered, however as I was unable to find suitably sized units and the common 28byj-48 had too low precision and torque this too was eliminated from consideration. After those two ideas were discarded, it was relegated to the back burner while I had work. The breakthrough was about a week later, while browsing patents looking at missile fin drives I noticed an old Raytheon control segment used bevel gears to transfer the motion and that became the seed for the new design. 
As a reminder, this project MAY fall under ITAR restrictions and as I do not have the funds to file for verification, I am playing it safe by not sharing code or CAD. This system is not designed nor intended to be used as a weapon, rather just keeps a high-power sport rocket flying vertical.  No I will not help you port my work to be used in mortars/missiles (yes people have seriously asked this). I am doing this project as a personal challenge to learn new skills, processes and to broaden my project scale horizons, I harbor no malicious intent. 
Original sketch for a new design using pushrod linkages and servos, eventually scrapped

Initial sketch of DC motor and bevel gear based drive system
With bevel gears as the motion transfer solution in mind, I thought back to motors and remembered that there are small diameter low voltage geared motors with micro encoders available on Pololu and the other usual sites. I did consider using high end Faulhalber motors with built in encoders but gave up when I saw the prices were $25 a piece, completely out of my price range. With that sorted I roughly sketched a layout for the system. Once the motors were sorted, then came the second biggest challenge; the bevel gears. I tried the usual distributors, McMaster, KHK, Robotshop, RS and eBay all to no avail. Motionco did sell acetal(plastic) gears but in this case metal is the way to go and they were UK based. I called several gear manufacturers but their quotes ranged from the low to mid hundreds which is WAY out of my price range. Slightly disheartened I turned to the last place I could think; Aliexpress. Thankfully, there are gears available though they are a bit expensive ($16/pair of which $4 is shipping that cannot be combined for some reason). The geartrain ratio between the motor and the fin output is 1:1 as is standard with most bevel gear configurations. Now that the basics for the power transfer system were locked in, I drew block diagrams and crunched the numbers for the encoder precision which came out to be .3deg/pulse on the output on the 1:100 geared 6V motor. Bearings were much easier since 3mm bores are a common dimension, a quick eBay search yielded a bag of ten 3x6x2.5 flanged bearings for well under $20.
Basic system block diagram with in-progress notes [Blackbox project note censored for safety]
Armed with the sketches and an idea of the final goal, I set to constructing CAD models for future 3D printing. In the first revision I decided to try making it air frame compatible with the current system for drop-in usability and interchangeability. However, once the model was complete I noticed that there was a LOT of room for miniaturization with all the space between the motors, output shaft and side walls. In total, I was able to carve off 28.5mm bringing the total diameter down to 47.72mm(1.879in) which is 62% smaller than the initial version. The smaller diameter means that cheaper blue tube air frames can be used in the flight and testing versions. Another aim of shrinking the size and weight is so that smaller and cheaper engines are able to be used that also do not require a L2+ high power rocket certification. After asking around and talking to none other than George Gassway (Sun-based stabilization) I found out that I CAN launch at NAR sites and not have to head out to the desert to fly.
First version of gearmotor design, prior to miniaturization
Closeup of miniaturized version, still needs a few tweaks.
Post-miniaturization I realized that using motors with encoders will result in relative positional control compared to the absolute positional control that the prior servo version had. Thinking on the problem led me to use potentiometers to supplement the encoders so I don't get off-center fins on startup leading to air frame destruction. The addition of the potentiometers adds an additional layer of complexity to the already highly involved code that will be controlling 6 PID loops for the motors and stability control. The code will be the biggest challenge for this whole project, combining Kalman filters, multiple PID loops, a whole control system and then on top of all that, a telemetry down link. For the positional motor control, I came across HomoFaciens' incredible videos on discrete servosarduino based servos and encoder digital servos of which I will be forking his code into my system. It's currently quite a bit out of my comfort zone, though I am studying control theory on my own, taping code examples together and hoping I have it right since I do not have any hardware in front of me due to costs. Speaking of costs, crappy back of the napkin math prices this new system around $170(if all parts are bought from China) whereas the servo based version would be nearly $240 if I were to buy all the parts new, a whopping 75% savings. Each of the Hitec HS-82MG servos I used previously are about $20 each at standard market rates while the motors with encoders are going for $9.50 each thanks to the far east's cloning. If all the motors, encoders and drivers were purchased on Pololu the cost for that alone would be $99.05, and that does not include the microcontrollers, 8 bevel gears or the potentiometers, but would have known quality parts. That option is too expensive for a testing version but may be justified for the flight rated system stack. Unfortunately, due to being hit with an unexpected car repair bill among other expenses on my student budget has put buying parts for the project temporarily out of the question. I've been tempted to start a GoFundMe or Patreon to offset the costs of the projects but I always stop short of launching because I feel like a dick asking for other people's money to fund my personal projects. If readers want to donate to help offset the costs of development, there is a button in the left sidebar if they so desire. 
Thanks for reading this update, as a bonus I've included more process sketches and as a special treat; a scan of the notebook page that started this whole project.

CAD assembly of new gearmotor based design
Full CAD mockup of the complete servo based stabilization system. Diameter 3 in
Size comparison of the current servo drive system with a 3D printed mockup of the gearmotor system.
Previous fin design process sketches, more blackbox project censoring
The original sketches that started the whole project, rocket fuel formulas visible through the back


  1. Hello,

    I am an aerospace engineering student at Texas A&M on the Sounding Rocketry team, I've been following your project since early last year as I try to learn all of the controls theory that I would need to start working on a similar project of my own. I would love to ask you some questions about your design if you have the time.

    Would I be able to send you some quick questions to your email? I would ask here but I'm certain that ITAR wouldn't want us talking about some of my questions. Thank you for your time

  2. can you guide me for this project.what should study and i'm an arduino beginner.i want to make arduino controlled rocket.thank u.

  3. Hello, do you know what I should study/learn in order to undertake this project? I am a student and my email is

  4. Great work and very inspiring..

  5. Hi I'm Gonna rocket auto stabilization system My build will help me to thank you

  6. Were to get coding of this i am using arduino pro mini

  7. hi everyone, i am trying to stabilize my rocket to make it fly as perpendicular as possible, i bought an mpu6050 and i used a kalman filter to combine the angular position obtained from the gyroscope with that obtained from the accelerometer, i have not yet had a way to test the rocket, however I noticed that as soon as I shake theboara little the roll and pitch values go up, someone has some advice.
    any comments will be valuable to me, thanks in advance