First of all wanted to say that I am very impressed by what you have built here with the VESC tool.
My team and I are currently involved in a time-sensitive robot project. In essence this is a large (25KG, 600x500mm base) line-follower robot with infrared sensors. We're using an Arduino Mega with an expansion board. The board powers 7 separate Infrared sensors for the line detection along with a small LCD display. For motors, we are using 4 X 350W/36V 6.5" Hub motors from two identical hoverboards (same brand, internals and everything).
We completed Motor wizard, FOC/Hall calibrations separately for each motor. Each motor parameters varied some, but as I understand this is completely normal as no motor is the same, essentially.
We then calibrated the PPM input by programming the arduino to modulate a PPM signal between 1000 > 1500 > 2000 ms. After refreshing the values and applying them, we confirmed that the Arduino modulated signal corresponds with Max, Min and Center values in the live data of the VESC tool. Since we need active braking as well as reversing function to be available, DUTY CYCLE was chosen for all 4 motors.
At this point we let the motors run at different PPM values and monitored the NO LOAD RPM and DUTY CYCLE %. What surprised me was that with the same PPM value, the VESC displayed a varied Duty Cycle % (+/- 5%) between the motors. At low NO LOAD RPM the motor RPM would vary by ~5RPM. We also tried putting the robot on a flat surface and it would veer to one side about 30cm after traveling about 5 meters. This meant that even with load the motors varied enough to be unacceptable. We then made a graph of the differences on excel, noting that in slow speeds the RPM varies the most, while in the higher speeds it evens out (btw, higher speed was still within SENSORED ERPM). We also noticed that when the duty cycle is reversed, the RPM difference is even greater and motors run more poorly.
I'd like you to give our process summary a good read and maybe you could see what we're doing wrong.
I would also like to know whether it's possible to use PWM instead of PPM as I believe it's more accurate and reliable?
Also, during all of this we noticed some fluctuations in the RPM depending on whether the FSESC was connected to arduino with all three pins (black, white, red) or only via signal pin (white). Seems like a great mess of issues and at this point my knowledge of this stuff has reached it's limit.
Any help appreciated, thanks!