How do I use closed-loop (Velocity Mode) with a propeller that isn’t listed in the IQ Control Center?
We’ve gotten this question from several backers, so we wanted to give you a thorough answer!
If you switch to Velocity Mode in the IQ Control Center, you need to make sure you have the correct "Max Velocity" setting. If this is set too high, your motor could overheat, and if it is set too low, your quad will feel underpowered. It’s important to note that the units of Max Velocity in the IQ Control Center are in radians/second, which is RPM*2*PI/60. There are several ways to find the correct Max Velocity setting:
We used a force-torque sensor to do our testing (ATI Nano17), and you can do similar tests with a thrust stand with torque sensing like RC Benchmark 1580 series Dynamometer. After attaching a propeller to the motor, we spun the motors up to speeds that generate 130 mNm of torque (30 motor amps). Beyond that torque output, the motors generate too much heat if held there for any amount of time. So, whatever speed made 130 mNm of torque was the Max Velocity of the propeller.
Not everyone has these fancy stands though. There are some back of the envelope ways to figure out max speed. The first is to try to use someone else’s testing info. Mini Quad Test Bench has a lot of info about motors and props. You can try to find a similar motor on their website (we recommend the T-Motor F40 Pro II 2400 kv, DJI Snail 2305 2400 kv, and Emax TS2306 2300 kv). When looking through the data you want to find a propeller/motor combination that makes 30 A or less at 100% throttle. If it is less than the 30 A current limit, then check out the average RPM in that row. Convert this to radians/second (RPM*2*PI/60) and use that as your max speed. If your prop makes more than 30 A at 100%, then move down to the 75% throttle and look for 22.5 A or less. If that still doesn’t work, go to 50% throttle and look for 15 A or less. Still no, then 25% and 7.5 A.
Still not finding the right prop speed? You might have to write an Arduino program. First, be safe! You’ll have to spin up a motor and propeller to do this test. Your motor and propeller must be securely fastened to something immovable. Please keep your hands away from the test, wear goggles, and have a method to cut power easily and safely should something bad happen. Once your setup is safe, you can ask the motor its speed and estimated motor current (BrushlessDrive->obs_velocity and BrushlessDrive->est_motor_amp) in your Arduino program. You’ll have to ramp up the speed (you can use PropellerMotorController->ctrl_velocity, PropellerMotorController->ctrl_volts, PropellerMotorController->ctrl_pwm in order of preference) until the average current is reading 30 A or less. You should definitely use some filtering or averaging here on both the speed and the current readings. When you’ve found the proper speed, bring the motors to a safe stop by commanding PropellerMotorController->ctrl_coast.
Finally, if none of that works for you, you’ll just have to guess and check. Start with something slow. For most 5 or 6 inch props “slow” is 20,000 RPM (2100 rad/s). Fly with it and if everything’s fine, then you’re done. If it’s underpowered and the motors are cold then turn it up a bit (please don’t use your fingers as thermometers since these motors can get up to 120 degrees C). The motors also have thermal limiters. If you see/feel the vehicle suddenly losing thrust or altitude you’ve probably hit a thermal limit and will have to bring the speed back down.