6
\$\begingroup\$

Is it possible to control a NEMA Stepper motor directly from an FPGA without a separate Motor Driver Circuit?

I have the following setup:

The pins that the motor is connected to provide 3.3v and the FPGA has been programmed in Verilog to step a sequence of 'phase' changes.

My question really comes down to:

  • Is this possible?
  • Do I need to provide a higher voltage than 3.3v ?
  • Do I need a separate controller circuit, if so, why?

TinyFPGA to NEMA

\$\endgroup\$
3
  • 3
    \$\begingroup\$ pololu.com/product/2966 \$\endgroup\$ Sep 13, 2021 at 3:21
  • 2
    \$\begingroup\$ 3.3v is not the problem (though read your motor spec sheet to know what voltage it was designed to run at). The problem is the motor consumes a huge amount of current. This is like asking can I use a tap to control a river? -- no, you need a dam \$\endgroup\$
    – slebetman
    Sep 14, 2021 at 3:17
  • \$\begingroup\$ This is the best abuse of the plumbing analogy ever! Love it. \$\endgroup\$
    – johnnymopo
    Oct 13, 2021 at 1:28

2 Answers 2

26
\$\begingroup\$

No. Just like a microcontroller, an FPGA pin will provide nowhere near enough current to drive a motor.

If you're lucky you might get 20mA out of an FPGA pin, in practice most I've come across are limited to much less than that (2-8mA range). Looking at the datasheet, yours appear to be rated for +/-8mA output current. Your stepper motor will require orders of magnitude higher currents. Trying to drive the stepper directly from the microcontroller will at best do nothing and at worst fry the IO pin.

That's also before you even start considering the inductive kickback you'll get from the motor. High voltage spikes from switching the inductive load will certainly fry the ESD protection on the IO pin.

You will need some form of stepper motor driver which takes a 3.3V logic level input (e.g. one of the Pololu stepper breakout boards) and a suitable power supply.

\$\endgroup\$
2
  • \$\begingroup\$ Thanks for the info! I don't have enough reputation to vote up \$\endgroup\$
    – nthState
    Sep 12, 2021 at 18:33
  • 3
    \$\begingroup\$ You can probably fry the FPGA pins just by turning the NEMA motor shaft, the way you have it wired up in the piccture. (In case you thought you were safe because nothing is plugged in to power.) \$\endgroup\$
    – DMPalmer
    Sep 13, 2021 at 21:54
4
\$\begingroup\$

No, not possible to drive motors directly from an FPGA.

The FPGA IO pins are logic level signals. While perhaps they can be quite strong for logic level signals, they are not strong enough to provide anywhere near the required current to drive a motor.

Most likely the motor needs higher voltage to operate as well.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.