Advice for my First Quadcopter?

Hello,

I'm Sander and recently I came up with the idea of making a quadcopter. I was looking for a new RC project because I had as good as finished my last one: Controlling my RC car and have FPV from the car. Now I want to take FPV to the air. Well I've searched for information for over a month or so, and I came up with this configuration. I want to program the drone myself so I as flight controller I went for the Arduino in cooperation with the Raspberry Pi. If I fail to do this, or it is way to hard, I can decide to buy another flight controller like the KK2.0. Here's my List:

Frame:

Reptile 500

€20,49

485 gram (With landing gear attached which I don't want to use)

Flight Controller:

Raspberry Pi + Arduino

73 gram

Motor:

4 x SunnySky X2212 Kv980

€78,90

4 x 56 = 224 gram

Battery:

MultiStar 4000mAh 10C

€19,59

244 gram

ESC:

Afro Slim

€44,08

4 x 14 = 56 gram

Transmitter / Receiver:

Turnigy 9X 9Ch

€48,95

19 gram

Propellors:

10x4.5

€5,10

28 gram

IMU:

SparkFun 9DOF

€49,95

No weight found

Camera:

ContourHD 1080p

123 gram

Total:

1252 grams; 1,252 kg; 44.163 oz

€252,60; $298.89

I think this is a big price tag for my quadcopter. I want to try to bring it down but I can't find much places where I can. Could you give feedback on the parts or/and give advice to let me save some money. Also 1.3 kg is a bit much for a quadcopter I think, is there any way I can bring this number down?

Thanks!

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  •   The 10C, 4000mAh battery is fine for powering the 4x motors he has selected (40A average current).  If he was doing larger motors or more than 4, then it would be an issue.

      The frame seems rather heavy for those motors, unless that is the shipping weight and not the actual weight.

      I programmed my own flight controller from the ground up (and my degree is in mechanical engineering, not computer science).  I learned a huge amount doing it, and I recommend it to anyone who wants to learn.  If all you want to do is fly, then buy your flight controller.  I would get a 10DoF sensor (MPU6050, HMC5883L, MS5611) which should cost under $15 delivered from china.  I like the MPU6050 a lot more than the Accel+Gyro on the sparkfun stick (It's also much faster to get data from the MPU6050 as both the gyro and accelerometer data can be read in a single long read, instead of needing to communicate with two different sensors for the same data.  I wrote my own library to make this as fast as possible.)  Make sure you run the I2C buss at 400kHz.    

      I'm not sure what the RasPi is for as the Arduino can easily handle all the work required of a normal flight controller.

      Have fun.  Regards,

    Phillip

    • Hi Philip,

      Thanks for your reply!

      As I explained to Micheal, it is indeed a good idea to buy a bit of a better battery, because my motors run at 13A full throttle, that makes I wouldn't have the 12 necessary amps to go full throttle.

      Thanks for your feedback on the IMU, this is the first project I work with IMU's and I didn't know what to choose. I do have a question: On which board did you program your multicopter? Also I thought of buying two IMU sticks so the RasPi can update the Arduino about the gyroscope if one of two is drifting. Is this necessary or not? And if I get stuck in programming, or it is way too difficult, would it be an option that I can use your library? That would really be great. 

      For my RasPi and Arduino I thought the Arduino would control the IMU and balance the quad. The RasPi will control the more 'heavy' stuff like the receiver, a camera and GPS. I don't want the Arduino to deal with the receiver because I'm thinking of using interrupts so I don't have to check every time if there's a signal. The Arduino UNO only has two interrupt pins so it's not an option for the receiver which has 9 channels. Tthe RasPi will send information to the Arduino either using I2C or serial.

      The frame seems heavy indeed because the landing gear is attached which is not light. I've searched again for the weight for only the weight of the reptile 500 without landing gear, it's 325 gram. Is this okay for a quadcopter frame?

      Thanks again,

      Sander

      •   The 10C batter can deliver over 10C for short bursts, so full throttle would not really be a problem unless you need to fly at full throttle for extended periods.  In any case, your new battery will work fine as well.  You will want to design your copter to hover at 50% throttle or less.  Use eCalc.ch to get a good estimate of how your weight will effect you "hover time" and current draw ( and ignore the "flight time" estimate, it is really time at 100% throttle, which is almost worthless).  With what I see above, you'll get about 8.5 min of hover time.

          The Arduino can use pin change interrupts (PCINT) for your RC inputs.  If you're using an Atmel 328P, almost all of the pins can be used for this.  Just google "arduino PCINT" for examples.  This method requires very little processing time, can happen in the background while the rest of the control software does it's thing and avoids the need to poll inputs.  If you use PPM you should only need a single input for all of your channels.

          Since the serial input to an Arduino is buffered, dealing with a GPS is not too difficult.  You just have to check the buffer every so often to see if a new position has been received, and then process it when a new one arrives.

          If you're using the RasPi for the camera to do FPV over wifi, that should work well.  If you want to do object recognition, get an Odroid.  They are much more powerful.  

          I'll see about uploading my MPU6050 library to my git account.  I might have to clean it up a bit for public consumption.

          

        • Yes Philip, I indeed hadn't looked into the difference between PWM and PPM because I knew PWM from my RC car and just assumed PPM wouldn't be that different. Now I know it is, I've made a little script with the Arduino to practice with the interrupts in advance.

          What I found out too, is that my Turnigy 9X transmitter isn't native compatible with PPM. So I wanted to take a look at other transmitter. It wasn't easy to find one, so my question is: Which transmitter/receiver did you use with your Android controlled drone?

          Also I've looked up more info about GPS and Arduino, and it indeed turns out to be much easier as I thought. I started out with RasPi and then I moved on to the Arduino, so still a lot to learn! Speaking about GPS, what GPS module/antenna did you use in your project? And was it good/stable?

          Thanks for thinking about putting your code online!

          I've looked into eCalc.ch also, but not all my parts are supported, so I need to manually add them, and the more I do that, the more I realise I don't know nothing about it haha.

          Sander

          • I think the 9X receiver does support PPM output, but I don't have one to test.  The output type is only dependent on the receiver not the transmitter.

            I use a Spektrum DX6i transmitter which I've had for a long time (not really an amazing quadcopter transmitter, but it's what I have and it works).  My current projects use traditional PWM receivers, so I use 6 inputs with interrupts on my Arduino pro minis.  I just got an Orange R615X receiver that supports PPM, so that will be going into my next quad.  I wrote my own CPPM library for that last night, but I haven't tested it yet.  My next project will also use a Teensy3.1 as I want to use the extra processing power to try to perform automatic PID tuning.

            My current GPS is an rather dated GPS that uses the Locosys LS20031 chip.  I have a GPS based off of the Neo-M8N that I will be using for my next prject.  At some point I may do a side by side comparison of the two as the Neo-M8N should be significantly better.

            When using eCalc, don't worry about getting the exact match for ESC or battery size/rating, just get as close as you can.  They will be close enough to get you reasonable numbers.  The most important thing is getting the exact match on the motor, and final weight.  Your motor is in the database, although I had to log in to find it.  It's nice if you can find your exact propellers, but even using the correct diameter and pitch will get you a close estimate for starters.  Once you're reasonably happy with what you're seeing, going in and making everything match perfectly may be worth your time.  You'll probably also have enough experience by then that entering in data by hand for non-matching items will be much less daunting.

            Good Luck.

            Phillip

            • Hi Philip,

              I searched the Internet, but they only mention that the PPM/PWM only decides how the transmitter sends the data to the receiver, but this is not what I want; I want to get PPM from my receiver to my Arduino.

              I've taken a look at your Orange R615X receiver, and I think it's a really nice one. Not sure if that one is the right one for me because the 6 channels limits the programming possibilities. 

              I think I'll go with the MPU-9150 IMU, because it's Accel + Gyro + Magnometer in one so less soldering. Did you use a Kalman filter? If yes, did you program it yourself or was it already online? About the MS5611, how do you connect it to the Arduino? I couldn't find reliable examples on the Internet.

              I decided to go with a HobbyKing Power Distribution Board so I won't have to solder a wiring harnass and I will have less wiring. I want to power the Arduino and a voltage alarm from the battery, what's the best way of doing this?

              Used eCalc again, and I get about a 15 minutes flying time, which I think is enough.

              • I think the information is a little out of date, but it's something:

                http://planner.ardupilot.com/wiki/common-pixhawk-and-px4-compatible...

              •   The MPU-9150 should work fine.  Just keep in mind that the magnetometer that is built into it is actually completely independent of the accel+gyro (Invensense basically glued two sensors together and put them in a single package).  This isn't a problem, you will just need to access the accel+gyro to get those readings and then access the mag to get its readings.  You will treat the mag as if it was a separate sensor even though it's looks like it's in the same chip.

                 The MS5611 supports both I2C or SPI interface.  The breakout board you get may only allow one or both.  If you do I2C then it will use the same four wires that the MPU-9150 uses (power, ground, SCL, SDA).  SPI is faster to access, but requires more wires.  Not a big deal either way.  As a side note, I would ignore this sensor to begin with as it is really not important until everything else is working well.

                  Here's my recommendations for how to develop your flight controller in smaller "blocks" that should make it more manageable than doing everything at once:

                1.) Fly with manual control using only the gyro for stability.  The gyro is used for the inner stability loop of the controller.  If you can't fly manually using only the gyro, don't even bother adding any more sensors or features.  This is critical.  This flight mode is often referred to as "acro" mode.

                2.) Add auto leveling.  Create the code that estimates the aircraft orientation (or borrow it).  At this stage I'd suggest only using the gyro and accel to keep things simple if you are writing your own orientation estimate code.  This is the outer control loop amd the error in between the desired orientation and the estimated orientation is then feed to the inner stability control loop to correct for orientation errors.

                3.) Add the magnetometer.  This will prevent the estimated heading from drifting over time and is required for using a GPS to navigate.

                4.) Add the GPS.  This where things can get scary fast.  I would recommend always having a dedicated transmitter switch to kill the copter if there's a bug in your code and it it goes nuts.  Also test a long ways from people and breakable things.

                5.) Add other sensors like air pressure altimeters, distance finders, optical flow, etc...

                6.) Think of the thousands of hours of time you have spent to get to this point...  I enjoy developing, experimenting, writing code and learning more than I enjoy flying, so it has totally been worth it for me.

                  It is not possible to run a real Kalman filter on an Arduino fast enough to be useful.  I programmed my own quaternion based adaptive complimentary filter that runs very fast and gives performance that is similar to a Kalman filter.  Many people who do not want to completely write their own orientation estimation software will use the work of Sedgwick and Mahony to perform that function.

                  You can measure battery voltage by using a resistor voltage divider that feeds into one of the analog inputs on the Arduino.  This will allow you to "see" the battery level in your software.

                Good luck,

                Phillip

  • Well, the first thing I noticed is the 10C battery... I did not see a quadcopter fly with a 10C... even the lightest quads have 20C.

    On my DJI F550 hexacopter, I first had 45C battery, and I loved it, then I got 25C because I thought it will give me better flight time, and yes it did, but the responsiveness of my hexa is way down, so I am going back to the 45C battery.

    So I suggest at least a 30C battery.

     

    Second... what's with the Raspberry Pi + Arduino + SparkFun 9DOF ? are you a programmer? if "yes", then you must be really good, because it's not easy to write the code for a flight controller.

    For flight controller I suggest the Naze32, it's an awesome FC, just check the reviews...

    • Hi Micheal,

      Thanks for your advice about the battery 

      I came up with this battery : Zippy Flightmax 2800mAh 3S1P 30C

      My motors run at full throttle 13A, so 13A * 4 = 52A.

      My battery can give 2.8 * 30 = 84A and if necessary they can burst to 40C which is 112A.

      But for my ESC, 112 / 4 = 28A per ESC. Is this okay for them? They are 30A so should I pick 40A ESC's?

      I suppose this is enough? Or am I wrong here?

      Yes, I am a programmer, I chose the Raspberry Pi and the Arduino because first, I've got them already laying around and I wanted to give programming my quadcopter a shot. Honestly, I don't think I will succeed in this, because I am only programming for since March 2014, but it is an opportunity to learn more from both of the boards. I watched a couple videos about the naze32 and it is indeed a good flight controller. Thanks for the advice Michael!

      Sander

This reply was deleted.

Activity