In a few days I will start to play with the Odrive Board v3.6 and I will connect a BLDC motor with HALL sensors without encoder.
red Motor winding ----- Connect to M0 - A
black Motor winding ----- Connect to M0 - B
white Motor winding ----- Connect to M0 - C
yellow Hall sensor 1 ----- M0_ENC_A (pin 9 - Header 12)
brown Hall sensor 2 ----- M0_ENC_B (pin 10 - Header 12)
grey Hall sensor 3 ----- M0_ENC_Z (pin 11 - Header 12)
blue GND ----- GND (pin 12 - Header 12)
green VHall 3…24 ----- VCC (pin 7 - Header 12)
The question is… doesn’t matter where the halls sensors are connected? Or maybe I will need to swap the Hall wires to work properly?
Thanks for your support!
It doesn’t matter what order you connect the sensors or motor wires. Calibration will figure it out. If you prefer positive direction to be one way or the other, then you can swap any two motor wires or sensor wires and run calibration again. Best to turn power off when changing wires.
Hall sensors usually need 5V, so if the VCC pin you’re using is 3.3V then you’ll probably need to change that.
Good luck! The getting started guide worked well for me a few days ago. If anything, use lower voltage/current limits at first to be on the safe side. If changing values doesn’t seem to work, try saving configuration and rebooting. I had to do that when turning up the current limit after getting it fairly well tuned. PID tuning is difficult even if you’ve done it before on other systems. I’m still having trouble with velocity windup (after running the motor under resistance for a while, setting speed 0 continues turning slowly for 10-20 seconds, I think due to the integral term having accumulated to a large value). Maybe the vel_integrator_limit will help…
EDIT: Turns out I needed much higher vel_integrator_gain. It responds much more quickly now, although it’s also started oscillating at velocity 0. But since I want it to relax when stopped rather than resisting motion, that won’t be a problem in my case.
If you want the motor to not resist movement when stopped, you need to put the ODrive into idle, maybe with an external microcontroller or something like an Arduino. If the ODrive is in closed-loop velocity control mode, it’ll always try to servo the motor’s velocity to the desired velocity no matter what.