Jeti Hall RPM-Sensor

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.

About magnets

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

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
  • RPM Monitorin available in 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.

Schematic

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 GND -> Receiver negative

NOTE: Some boards have GRN where my boards have GND. Do NOT use GRN, use GND!

If you wan’t to use Arduino Nano, read this post.

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.

Installation of magnets

Even when the actual hall-sensor is omnipolar and works with both south-pole and north-pole of magnet in the same way there is one thing to look after. A user approached me and said he has strange rpm-readings. At first I could not reproduce it, then suddenly I could but I did not understand why. Then it dawned to me and after testing I found a simple solution. Install the magnet correctly:

Make sure the magnets side facing the sensor is either north- or south side, not both, not even slightly. Also if using two (or more) magnets make them same pole facing to sensor. (The circle in picture is for example a spinner with magnets facing the sensor.) Especially if you are using neodymium magnets that are quite “strong” they can cause havoc to hall-sensor and confuse the amount readings.

Accuracy?

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”.

Programming RPM-Sensor

Go and get the RCT-RPM.ino file from my Github here. You need to use the libraries included in Github repository. For info on how to use these look in RFID-sensor how-to here.

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 setting-screens. 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 RPM-Monitoring, values are updated in real-time:

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.

Telemetry

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.

  

Version history

  • 1.0 Initial release
  • 1.1 Added second RPM-value and settings via Jetibox
  • 1.2 Added RPM-monitoring to Jetibox

Disclaimer

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 :)