Brushless DC motors are synchronous - the fundamental freq of the current/voltage going into the motor is proportional to the speed of the motor. Depending on the switching method used by the controller, the current may be a simple square wave, or a PWM signal that mimics a sine wave (I'm not sure which is typically used in ESCs).
So, I'm guessing that the system you mentioned works in this way. It would measure the voltage on one of the motor leads, filter that signal, and calculate the frequency of the signal.
If you have a multimeter that measures frequency, you could stick one lead on the motor terminal, the other on the negative battery terminal, and see if it seems to measure the frequency correctly.
Hmm, I don't think the motor phases are referenced to the battery ground. However, if you hooked your frequency meter (or an oscilloscope) between any two of the wires going to the motor, there should be a signal.
I'm not an EE, but id probably start with a voltage divider and filter to get the signal to something I could safely input to an Arduino pro mini. I'd use one of the digital inputs as a comparator, and do the timing and conversion in software. Serial out to the rest of my system.
The Eagle Tree rpm sensor requires tapping into any two motor leads, as Mike Bakula states, probably measuring the timing between the two signals.
When I found that out, I was going to design and build one. Then I saw their price of 10 bucks and decided time and parts would far exceed that. That's cheaper than a pressure transducer and I'm not about to try to build one of those!
I was wondering about that too, but not sure if the Eagle Tree rpm sensor would connect to ArduPilot without some hacking into it to get to the signal. I think it was designed to work with their data logger/telemetry moduels.
If the principle of operation is detecting frequency difference, I was thinking that ArduPilot can act as a frequency comparator or have a simple frequency comparator chip supply a signal to a pin at ArduPilot and the software would take care the rest of it. Wonder if that's plausible...
I am new to the site and don't have a uav project yet, but I do have an eagletree brushless rpm sensor. In fact you typically only need to hook up one of the two sensor wires to one of the three motor phases. The instructions state only to hook up the second sensor wire if you are having trouble getting an accurate reading and for most motor/esc combinations you are better off just using one.
Thanks Doug. I am leaning towards just making an optical sensor that would be easier to interface, because I am lacking any detailed literaure on the Eagle Tree sensor. Do you know what signal does it put out? I do not want to buy a $60 Eagle Tree logger just be be able to read the $12 sensor later.
It's very simple, if you can get hold of a old ball mouse inside is a optical pickup an a wheel with all the electronics, you just have to apply 5V If you turn the wheel you get a increase in frequency It should be easy to translate that to RPM with Arduino. You can also use an old processor fan inside is a magnetic pickup which they use to measure rpm with
Sorry I don't know what signal the rpm sensor puts out. If I had a scope I'd look for you, but I don't....
Eagletree also has an optical rpm sensor by the way. I have found it much easier to set up the brushless sensor. The optical can be a bit of a pain to get mounted close enough to the prop. Another trick I have seen, although I haven't used it myself, is that if you are using an outrunner motor you can paint appropriate stripes on the can and mount the optical sensor to see the stripes on the can rotate past. I have used the optical sensor in a similar manner on a heli with it mounted to see sectors painted on to the main gear.
While the ESC probably needs to sense feedback in order to sync, the eagle tree, is really just measuring the intentions of the ESC, and not the effect on the motor.
The ESC is a simple H Bridge (Actually 3 simple H Bridges.) Which pulses the outputs at a much higher frequency than rpm. ~100khz
If you simply connect 1 wire as an input (through a safety resistor ie 10Kohm), you'll get information - but you'll probably get the High Freq signal. add a small cap to the uController side of the resistor to create an RC filter and you will get an easy signal s that relates to rpm = s/number of windings.