Encoders and Hall Effect Sensors

Hi all! First time posting - please excuse if this is the wrong spot, and let me know where I should look instead.

I have a project I’m doing where each ODrive (I have a few) will control 2 Brushless DC Motors. I have several questions, and I’ll try to break them up…

  1. It is my current understanding that the hall effect sensors in BLDC motors help them with startup / low-speed operation. Is this true, or will an absolute/incremental encoder on the motor solve this problem too?

  2. Is it possible to use hall effect sensors (for startup / torque control) as well as absolute or incremental encoders on each motor (for speed / position control)?

  3. Does the ODrive support absolute encoders in general? Or are there supported incremental encoders that have a physically defined “0” (don’t just reset to 0 based on where they are turned on)? I need to be able to tell my on of my motors per ODrive to turn on and go to 0 degrees at startup, and from there assign different angles.

I’m new to the world of using encoders in electronics that aren’t just built-in to motors, so please bear with me as I learn, haha! Thanks in advance!

An incremental/absolute encoder also solves this problem. Hall sensors are basically just really cheap low quality encoders.

No, but you don’t need the halls at all (see #1)

Yes! We support certain absolute encoders. We also support resetting the “0” position of the axis with an external signal - so you could use an index pin from an incremental encoder with index, or a homing switch, etc. The absolute encoder’s the easiest.

This is an incomplete list of the supported encoders: ODrive encoder guide - Google Sheets

Gotcha. My only experience with sensored BLDC’s so far is in eSkate, and there we tend to just use hall sensors. Wasn’t sure if it was something intrinsic to the motor or not :slight_smile: Makes sense then that I don’t need the hall sensors at all if I’m using actual encoders.

Sweet! I actually have some REV through bore encoders (last on the google sheet) through my robotics team. So you’re saying that I could use these in either absolute or incremental mode, and still use the factory “0” in either case? Granted, that will still only get me to the “0” position within one rotation of the motor, so any gearing would not be accounted for if there is a non-zero gear ratio between the encoder shaft and the final output shaft.

Is there any documentation on how to use the REV Through-Bore “Duty-Cycle” style absolute encoder? Here are the specs from REV:

  • Absolute Pulse Output (Duty Cycle):
    • Output Period: 1025μs
    • Output Frequency: 975.6Hz
    • Minimum Pulse (0°): 1μs
    • Maximum Pulse (360°): 1024μs
    • Pulse Resolution: 10-bit
      (Link: Through Bore Encoder - REV Robotics)

Thanks again for all your help!