I am using DRV10970 for precision speed control of a three phase BLDC motor (FaullHauber 2610B). The motor has the following specifications:
Motor Torque Constant: 8.8 mNm/A
Rotor Inertia: 7.9 gcm^2
Phase to phase Resistance: 6.97 ohm
Phase to phase Inductance: 486 uH
The voltage provided to the driver is 5V and the exact configuration can be seen in the schematic attached.
Current Limit : 100mA
Retry Time = 250ms
Fig. 1: Schematic of DRV 10970
During our preliminary testing, it was observed that if we toggle FR (Direction Reversal) pin when the motor was running braked instantly (Dynamic Braking). According to the datasheet, the driver should brake the motor based on the BRKMOD setting and then reverse direction which we were able to observe correctly.
We intend an extended use of the FR pin for speed control since the PWM has a resolution of 0.4% duty cycle and has a deadband in the region +-10% duty cycle. We were planning to overcome this limitation by applying either a 100% or a floating voltage to PWM pin and applying a PWM signal to the FR pin to modulate motor speed keeping the BRKMOD to dynamic braking. Plan was to achieve low motor rpm and fine control by toggling FR at a suitable frequency like a Class-A chopper. We attempted the same at a wide range of frequencies, 100Hz to 50kHz. At 100 Hz the motor didn’t respond to duty cycles above 0 and 100%, effectively in high and low states for FR. At higher frequencies, the RPM stayed constant in one direction from duty cycles 0 to 30(for 50 KHz) and in other direction from a Duty Cycle of 70 to 100 but didn’t respond in the intermediate range.
Fig.2: 50 KHz – 10 DC at FR
Fig.3: Hall switching Frequency with FR at 10% DC
Fig 4. 50 KHz – 70 DC at FR
Fig.5: Hall Switching Frequency with FR at 70% DC
Fig.6: 50 KHz-90%DC on FR
Fig.7: Hall Switching Frequency with FR at 90% DC
In our actual system, a flywheel of significantly higher MOI than the rotor would be attached to the motor shaft and any ripple in the rpm due to the toggling would be significantly reduced. Could you guide or point to what we did wrong, or if we cannot use FR for such implementations?