I am trying to use the VNH2SP30 Motor Driver Carrier MD01B to control a Peltier. I am not an expert, and I am observing unexpected behavior with the current as I vary the PWM duty cycle: details below…
I read that the PWM frequency should be high when one uses an H-Bridge to control current flow through Peltier elements. I chose the VNH2SP30 since the datasheet says it can handle PWM up to 20 kHz.
An Arduino (Atmega 328) is controlling the MD01B. Prior to hooking up the Peltier, I have measured the PWM frequency with an oscilloscope. I can heat or cool one side of the Peltier depending on the IN_A and IN_B pins.
My Peliter is rated for Vmax = 15.4V and Imax = 4A, so my power supply is dialed to 15V max. The power supply shows the current draw, and I can also monitor the voltage across the Peliter.
At low PWM frequency, i.e. 250 Hz, the current increases (approximately) linearly as I increase the duty cycle. However, since I want high PWM frequencies, I tried to increase this, and weird things start to happen. For example, at 500 Hz, the current flattens out at around 70% duty cycle, and then jumps to full current at 100% (but not even at 99% duty cycle). At 2kHz, something incomprehensible happens – it stays at 0.4A all the way from 10% to 99% duty cycle and then jumps to 3.1A at 100% duty cycle. At 2.5kHz, the behavior is quite different from 2kHz. The current is linear, but only reaches 1/2 max at 90% duty. At 20kHz, the current doesn’t even reach 1/10th max at 90% duty.
current draw at various PWM
duty 250Hz 500Hz 1kHz 2kHz 2.5kHz 5kHz 10kHz 20kHz
10% 0.38A 0.39A 0.39A 0.39A 0.21A 0.14A 0.09A 0.05A
20% 0.72A 0.73A 0.75A 0.40A 0.38A 0.27A 0.17A 0.07A
30% 1.05A 1.06A 1.09A 0.40A 0.58A 0.39A 0.24A 0.09A
40% 1.37A 1.39A 1.43A 0.40A 0.75A 0.52A 0.31A 0.11A
50% 1.67A 1.68A 1.72A 0.40A 0.93A 0.64A 0.39A 0.15A
60% 1.95A 1.97A 1.83A 0.40A 1.10A 0.76A 0.39A 0.17A
70% ~2.2A ~2.3A ~1.8A 0.40A 1.27A 0.87A 0.39A 0.18A
80% ~2.45A ~2.3A ~1.8A 0.40A 1.43A 0.91A 0.39A 0.20A
90% ~2.7A ~2.3A ~1.8A 0.40A 1.50A 0.91A 0.39A 0.22A
100% ~3.1A ~3.1A ~3.1A ~3.1A ~3.1A ~3.1A ~3.1A ~3.1A
These measurements are all approximate.
Can someone please help me understand what is going on and suggest pointers on how to proceed so that I can linearly vary current over the full range at 10 or 20 kHz PWM?
Thank you for your assistance.
BTW, I reproducibly get a DIAG_B error at 2.5kHz with 99% duty cycle or at 5 kHz with 98% duty cycle or at 10 kHz with 96% duty cycle, i.e. when the PWM pin is off for 4 microseconds. After this error, the pin states are: IN_A = 1, IN_B = 0, DIAG_A = 1, DIAG_B = 0.