High Power DSMC

I recently experimented with the Dual Serial Motor Control PIC driving a discrete MOSFET H Bridge. The H Bridge was made of two IPS0551 and two IPS5551 MOSFET switches. The only other parts used were four 1k ohm resistors, one on each MOSFET input. A BS2 was used to create the Serial Out commands to the PIC. Here is what I found:

  1. The PIC outputs float during the serial communications.

  2. Two pins (13, 14) on my BS2 are burned out.

  3. The PIC doesn’t respond at Baudmode = 32 (19.23 Kb/s), but works flawlessly at Baudmode = 33 (18.87 Kb/s) or Baudmode = 34 (18.52 Kb/s).

  4. Turning the motor on, off or reverse at 12, 24, or 36 volts works great.

  5. I tried the example speed up/speed down/reverse speed up/reverse speed down routine. The motor that I was using is a new, 12 volt DC automotive power window motor with worm drive. The motor “sings” at any speed less than about 80% of max. During the “singing” the MOSFET switches generate a lot of heat.

  6. The thermal shutdown on the MOSFET switches works!!! They reset during the standard PWM “off” states or when the BS2 sending data to the PIC.

  7. The “singing” of the motor is the result of the relatively low PWM frequency of 600 Hz for the PIC.

  8. I tried a smaller motor at 24 volts. The speed up/speed down routine didn’t generate any “singing” but resulted in a very smooth speed transition

  9. Conclusion: smaller motors will work better with the 600 Hz PWM frequency than larger motors.

  10. I tried our big sumo motors (Peg Perego). They “sang” at speeds under 10% of max. Using 12 volt power, the Peg Perego motor drew 2.30 amps and combined high side and low side H Bridge voltage drop was .024 volts. Using 24 volt power, the motor drew 4.00 amps and combined high side and low side H Bridge voltage drop was .044 volts. Using 36 volt power, the motor drew 6.20 amps and there was .070 volts total drop in the H Bridge. This calculates out to about .005 to .006 ohms per MOSFET switch. This correlates nicely with the MOSFET specifications.

Rick Brooks


Thanks for posting all of your interesting results.

The PIC outputs don’t float during serial communication, though. I’ve checked both the code and the outputs on an oscilloscope, and there is no indication of the output pins floating.

You can send the PIC uninterrupted serial data, and the motors keep running correctly. Perhaps there is something else in your circuit not working correctly, or just a bad measurement? Did you see the floating pins in a very specific situation?

- Jan


I must have been doing something crazy like doing a hard reset before each serial message. I tried and couldn’t duplicate my previous traces.

I was primarily interested in transitions from [$80, 0, 0, 127] to [$80, 0, 1, 127]. It appears that the transition of one PIC pin from +5 Volts to 0 Volts and the next PIC pin from 0 Volts to +5 Volts occurs simultaneously immediately after the serial command is complete.