Go Down

Topic: Controlling current serialy or other wise for a quadrocopter (Read 609 times) previous topic - next topic

We are beginning work on a senior project for my Computer Tech class and I recommended a quadro-copter. One thing that we couldn't quite figure out was how to use the arduino board to control the resistance to the individual motors. Is there some serial device or anything we can do to solve this problem? 

retrolefty


We are beginning work on a senior project for my Computer Tech class and I recommended a quadro-copter. One thing that we couldn't quite figure out was how to use the arduino board to control the resistance to the individual motors. Is there some serial device or anything we can do to solve this problem? 


Now a days almost all electric motors used in quad type aircraft use brush-less DC motors that have to each have their own properly sized electronic speed controller (ESC). Esc are interfaced to a controller just like any standard hobby servos, so one uses a standard servo software library to control them.

You have picked a difficult project as a quad requires many sensors, pretty complex software to work out all the tasks required to keep a quad in the air and controllable. There are several quad specific forum sites that can probably give you much more detailed help then this site, but lets see what others recommend.

Lefty

Thank you very much. Do you know if the servo shield can control a motor the same way an ESC can?

Retroplayer

A typical ESC uses the same control as a servo, so a servo shield should control it just fine.

And just to answer your initial question, applying a voltage (actually really a current through a bias resistor) to the base of a BJT transistor controls the current through the collector to emitter. It's isn't really a "resistance" but it will act like one as far as this application is concerned. There is more going on than that, but put simply, the higher the voltage at the base, the higher the current through the transistor. This makes it *appear* as a voltage controlled variable resistor (that is not technically how it works though.) A FET more directly immitates a variable resistor and is voltage controlled versus current controlled, but I will leave that for your research. In practical purposes a BJT transistor would do the trick but with heat generation and some power loss.

As mentioned by retrolefty, it is more than just losely controlling speed. You need to monitor the actual speed and ensure that they are synchronized exactly. If one motor is spinning even a little faster than another, it will tilt. One way to do this is to measure the current through each motor. Though no two motors are exactly the same and the current is not a true indication of actual speed. Using brushless motors means you have acces to individual 'phases' which allows you to synchronize the motors.

In pratical application, you can get away with some fairly loose control using DC motors, transistors and monitoring current, but it will increase the complexity of your code and will not be a perfectly smooth ride. More like a toy.

To pre-empt what is probably your next question: How to you measure the current? By having a known resistance in series with the motor to ground, you measure the voltage drop across that resistor and use ohms law to translate that into current. You typically use a very very low resistance with a very precise resistor. A low resistance so it doesn't interfere with the motor. The wattage rating of the resistor also needs to exceed the max amount of current that will be running through the motor.

MarkT

Quad copters are normally actively balanced using rate gyros and PID feedback loops.  Most are not designed to be
inherently stable without this control.  With 4 motors you have 4 degrees of freedom, enough to simultaneously handle
lift, x and y axis tilt and z-rotation (yaw).  2 motors are CW and 2 are CCW, this provides the reaction forces to achieve yaw
without needing steerable thrust.
[ I won't respond to messages, use the forum please ]

Go Up