Are you using a internal combustion engine in your model? Need to follow on engine rpm? Not getting motor rpm from your ESC?
MRPM2 was not out when this was done so I made one. Jeti has a Hall-sensor option now but it’s not a 5€ solution.
RC-Thoughts Hall RPM-Sensor
First, dive into ebay and digikey and get some parts:
- Arduino Pro Mini 3.3V 8Mhz (Example in ebay here)
- Omnipolar Hall-sensor that runs on 3.3V (Example link to Digikey here)
- One 2.4kΩ resistor
- A little 3-pole servo wire and heat shrink to wrap it up
- Neodymium magnets (Example link in ebay here)
About the actual hall-sensor
In order to make this to work reliably a omnipolar hall-sensor is recommended. If you use bipolar sensor you may need to adjust the code accordingly. This solution is done with inexpensive Honeywell SS451A hall-sensor. If yo use other sensor make sure it can operate on 3.3V voltage and test before final installation.
Usually two magnets are used in the rotating part just for balance. You could use one, two, three or four magnets, all according your own testing. This is easily set up via Jetibox in your transmitter (or a actual Jetibox).
Features are very simple:
- Measures revolutions per minute between 0 and 65535 rpm in steps of 60 rpm
- Installs as a normal sensor to transmitter
- Gives two RPM-values, RPM Motor and RPM Main
- All settings done with Jetibox
- Settings are stored on Arduino and stays there even if unpowered
- Update speed is really good
- Very reliable and steady when magnet / sensor installation is done properly
I have used Jeti MRPM with hall-sensor before, there was occasional issues with “spikes” in RPM-reading. I have not experienced that with this inexpensive solution.
This is perhaps the most easy sensor to make, in other words really simple. The Honeywell sensor does not need any capacitor or resistor in the circuit, testing shows these are not needed.
Connections are easy:
- Hall-sensor Vs -> Arduino VCC
- Hall-sensor GND -> Arduino GND
- Hall-sensor Signal -> Arduino pin 2
The Arduino-connection to receiver is same as always:
- Arduino pin 3 -> 2.4kΩ resistor AND receiver signal
- Arduino pin 4 -> 2.4kΩ resistor
- Arduino RAW -> Receiver positive
- Arduino GRN -> Receiver negative
Wired and soldered sensor could look like this. I’m using a 2.4kΩ SMD-resistor on the other side of Arduino so the resistor is “missing” between pins 3 and 4 in the picture below.
Connecting the 3-pole servo wire to the actual hall-sensor might be a bit tricky, it’s really is quite tiny. With some patience it can be done way prettier than in my demo:
Width of the sensor is 4mm (0.157″), you can compare it to servo wire. The sensors “shorter” side (facing you in the picture above) is the side that needs to be close to the magnet passing by. Distance should be just a few millimeters, the closer the better.
The way programming of Arduino is done we are counting how many times magnets are passing by each second, this result is then multiplied with 60 to get revolutions per minute. This means accuracy is 60 when one magnet is used. If you are using two magnets accuracy is 30 and with four it comes down to 15. Any of these should be enough, we have to remember that it’s a “five bucks solution”.
Set up RPM-Sensor?
Jeti Hall RPM-Sensor works as any other sensor. So head on to “Main menu” -> “Timers/Sensors” -> “Sensor/Logging Setup” and after powering model wait a while for the new sensor to pop up:
If you use one magnet and need just the motor rpm you do not need to set anything up. If you want to measure something else go to Jetibox in “Main Menu” -> “Applications” -> “Jetibox” and in there to “MX”. Press down until you see the RPM-Sensor.
NOTE: Due the way Arduino counts revolutions you may need to press RIGHT several times to access first screen. After you are in the RPM-sensors settings menu the rpm-counting is stopped for 5 minutes or until you power-recycle the sensor after you have set everything up. Settings needs to be done only once or after change in gearing or magnets.
Press right to see the info-screen:
Here we can see a example setup from a heli, we have one magnet and sensor is installed to motor, pinion is 18 teeth and main gear is 172 teeth. This would give us motor revolutions as “RPM Motor” and headspeed as “RPM Main”. Press right to change settings:
First we need to select where sensor is installed, it can be installed on motor (nitro for example) or on the main gear. Change with UP/DN buttons, press next to right when ready.
This is simple, set the amount of magnets you have. 2 is preferred over 1 for balance. Press again to right for next screen.
If you have geared equipment set the motor gear tooth count here. If you have straight drive set this to 1. Pressing UP adds one tooth, pressing DOWN adds 10, pressing UP and DOWN adds 50. Pressing LEFT and RIGHT resets value to 1. Press right to next screen when ready.
If you have geared equipment set the main gear tooth count here. If you have straight drive set this to 1. Press right to next screen for saving.
To save press UP and DOWN buttons at the same time. You will see a confirmation screen:
Pressing LEFT here will get you back to info-screen. You are done with setup.
After this you can use the sensors telemetry display on main screen as any other sensor. You can set alarms etc, the rpm-values can also be logged as with any other sensor.
- 1.0 Initial release
- 1.1 Added second RPM-value and settings via Jetibox
Always make sure everything works as it should. Do not use faulty devices. Neither RC-Thoughts and/or me are in any way liable or responsible for anything you do with your equipment or to others with equipment used as described here. You should never use Lua-apps for operation-critical functions.
If you find something that is not working or is behaving strangely please let me know. I’m a car-mechanic by training, not a programmer-geek :)
Most Important thing
Is to have fun building, this will not bankrupt you in any way :)