Editing Motor driver

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 6: Line 6:
 
* DC motor controller ("brushed")
 
* DC motor controller ("brushed")
 
* AC motor controller ("brushless")
 
* AC motor controller ("brushless")
* BLDC motor controller ("brushless DC"), often called an "ESC"
 
 
* ... (todo: fill in the other kinds) ...
 
* ... (todo: fill in the other kinds) ...
  
Line 15: Line 14:
 
A DC motor controller that is 'reversible' generally uses an 'H bridge'.  This 'H-bridge' uses four output drivers in a configuration that resembles an H where the load is the cross bar in the middle.  The lines on either side of the load (the downward strokes in the H) represent a series connection of a pull-up driver and a pull-down driver.  This allows each terminal of the load to be connected to either the positive supply rail, or the negative supply rail.  This allows a positive, negative or zero voltage difference across the load.  This load voltage is then utilized to provide the desired control required of the motor.  The various combinations can give a 'forwards' torque on a DC motor, a 'backwards' torque on the same motor, can allow the motor to free-wheel (without any applied torque) or can provide a locking of the motor such that it resists any attempt to rotate it.
 
A DC motor controller that is 'reversible' generally uses an 'H bridge'.  This 'H-bridge' uses four output drivers in a configuration that resembles an H where the load is the cross bar in the middle.  The lines on either side of the load (the downward strokes in the H) represent a series connection of a pull-up driver and a pull-down driver.  This allows each terminal of the load to be connected to either the positive supply rail, or the negative supply rail.  This allows a positive, negative or zero voltage difference across the load.  This load voltage is then utilized to provide the desired control required of the motor.  The various combinations can give a 'forwards' torque on a DC motor, a 'backwards' torque on the same motor, can allow the motor to free-wheel (without any applied torque) or can provide a locking of the motor such that it resists any attempt to rotate it.
  
A single phase AC motor is generally driven in the same way as a DC motor, however instead of operating the motor drive as a constant DC voltage (in either the 'forward' or 'reverse' direction) the AC motor is driven by an approximation to a sinewave.  This approximation is created using the H bridge and driving it with a PWM input <s>such that both the positive and negative voltage periods are the same</s>.  This is normally achieved either using a sawtooth waveform compared against a sine wave reference, or is done using a lookup table in a microcontroller.
+
A single phase AC motor is generally driven in the same way as a DC motor, however instead of operating the motor drive as a constant DC voltage (in either the 'forward' or 'reverse' direction) the AC motor is driven by an approximation to a sinewave.  This approximation is created using the H bridge and driving it with a PWM input such that both the positive and negative voltage periods are the same.  This is normally achieved either using a sawtooth waveform compared against a sine wave reference, or is done using a lookup table in a microcontroller.
 
 
<pre>
 
      +Vhigh      +Vhigh
 
      |          |
 
...-o[pFET  pFET]o-...
 
      |          |
 
      +--(motor)--+
 
      |          |
 
...-|[nFET  nFET]|-...
 
      |          |
 
      GND        GND
 
 
 
      H bridge built from 2 nFETs and 2 pFETs.
 
</pre>
 
  
 
[[Image:pptrans.png | frame | Push Pull Transistor Circuit: one half-bridge. (Fixme: show the flyback diodes, and convert to the more common MOSFET drive transistors ... also replace the resistive "load" with a (M) motor symbol.)]]
 
[[Image:pptrans.png | frame | Push Pull Transistor Circuit: one half-bridge. (Fixme: show the flyback diodes, and convert to the more common MOSFET drive transistors ... also replace the resistive "load" with a (M) motor symbol.)]]
Line 40: Line 25:
  
 
((fill in more details here...))
 
((fill in more details here...))
 
 
== BLDC ==
 
 
It appears that most modern small electric aircraft, such as [[multi-rotor]] helicopters, use so-called [[motors#Brushless_Motors | "brushless DC motors"]], each one driven by its own "BLDC ESC". (These are easily recognized -- BLDC motors have exactly 3 equally-fat wires that go into them, which come from the BLDC ESC -- as opposed to most electric aircraft a few years ago, which used brushed DC motors with exactly 2 equally-fat wires).
 
 
While it is probably not cost-effective to build your own BLDC motor or BLDC ESC, many of us are insatiably curious about what goes on inside these things, and so build one anyway:
 
* "Proposal for a high-speed serial (spi/i2c) arduino-based ESC for quadrotor/[[multi-rotor]] projects": designed specifically for academic research in stability and controls analysis of quadcopters. The goals are apparently (a) open-source and easy to reprogram, so other academics can replicate the experiments and make improvements, (b) low-latency quick response for (hopefully) better quadcopter stability, (c) lower cost than an Open-BLDC.[http://diydrones.com/forum/topics/proposal-for-a-highspeed]
 
* Open-BLDC Project wiki: "a completely Open-Source BrushLess Direct Current motor controller also known as Electronic Speed Controller (ESC)." "Open-BLDC has ... many additional sensors to make Vector control possible. The goal is also to make the best possible controller and not the smallest or cheapest." http://open-bldc.org/
 
* [http://en.wikipedia.org/wiki/brushless_DC_electric_motor Wikipedia: brushless DC electric motor]
 
* [http://www.atmel.com/dyn/resources/prod_documents/doc8012.pdf Atmel AVR444: Sensorless control of 3-phase brushless DC motors] using ATmega48 (also works without change for ATmega88 and ATmega168). Assumes you've already read [http://www.atmel.com/dyn/resources/prod_documents/doc2596.pdf Atmel AVR443: Sensor-based control of three phase Brushless DC motor]
 
* [http://www.atmel.com/dyn/resources/prod_documents/doc8138.pdf AVR194: Brushless DC Motor Control using ATmega32M1]: BLDC motor control application using Hall effect position sensors to control commutation sequence.
 
* MikroKopter brushless motor controller: was designed to give lower latency than off-the-shelf PWM ESCs.[http://www.mikrokopter.de/ucwiki/BrushlessCtrl]
 
* OpenServo Brushless DC Servo: "The thing that will make our board different from other ESC's is that we are closing the feedback loop with a ... outside position reference." [http://www.openservo.com/forums/viewtopic.php?t=972]
 
* the [http://blog.spingarage.com/reintroducing-the-froboard-better-and-more-fr FroBoard design] (brushless DC motor control) seems to be open hardware.
 
  
 
== noise control ==
 
== noise control ==
  
 
Many motors make sparks when the brushes make or break contact.
 
Many motors make sparks when the brushes make or break contact.
This causes lots of electrical noise ("brush noise").
+
This causes causes lots of electrical noise ("brush noise").
 
Your TV-watching neighbors won't be happy if you allow this noise to leak out.
 
Your TV-watching neighbors won't be happy if you allow this noise to leak out.
  
Line 69: Line 39:
 
HydraRaptor: [http://hydraraptor.blogspot.com/2007/09/dc-to-daylight.html "DC to daylight"]. More details:  
 
HydraRaptor: [http://hydraraptor.blogspot.com/2007/09/dc-to-daylight.html "DC to daylight"]. More details:  
 
HydraRaptor: [http://hydraraptor.blogspot.com/2007/10/gm3-motor-suppressor.html "GM3 motor suppressor"]
 
HydraRaptor: [http://hydraraptor.blogspot.com/2007/10/gm3-motor-suppressor.html "GM3 motor suppressor"]
 +
  
 
== current sense ==
 
== current sense ==
Line 103: Line 74:
 
* You want a hardware-enforced blanking time as alluded to earlier.
 
* You want a hardware-enforced blanking time as alluded to earlier.
  
There are many "MOSFET driver" chips designed to drive the gate pin of large discrete MOSFET transistors.
 
In no particular order, a few such MOSFET driver chips are:
 
Microchip TC4423A, TC4424A, TC4425A, MCP1407,
 
On Semi ADP3120A,
 
Fairchild FAN73711,
 
etc.
 
  
  
Line 114: Line 79:
  
 
A random collection of semi-related links in no particular order (please prune out the irrelevant ones):
 
A random collection of semi-related links in no particular order (please prune out the irrelevant ones):
 +
*[http://www.wzmicro.com/ WZMicro]: has many low cost single stepper motor driver, Dual stepper motors controolers, and Microstepping motor driver at affordable price and many [http://www.wzmicro.com/projects.htm/ Stepper Motor DIY projects ].
  
* [https://hackaday.io/project/7841-mongoosedc-high-current-motor-driver "MongooseDC :  High Current DC Motor Driver"] based around the [http://www.st.com/web/catalog/tools/FM116/SC1041/PF259612 ST Micro VNH5019] which is rated to deliver a continuous 12 A per channel.
 
*[http://www.imagesco.com/articles/picstepper/06.html The UCN 5804 Stepper Motor IC]
 
*[http://www.wegatech.com/motor_controller.html Motor controller design]: Custom make motor controller.
 
 
* Avayan Electronics has many bipolar microstepping stepper motor driver boards and DC motor H bridge drive boards (up to 40A continuous). Many (all?) of them are open source. Avayan sells insanely cheap empty PCBs [http://www.avayanelectronics.com/Products/products.html] [http://www.avayanelectronics.com/Buy_NOW_/buy_now_.html].
 
* Avayan Electronics has many bipolar microstepping stepper motor driver boards and DC motor H bridge drive boards (up to 40A continuous). Many (all?) of them are open source. Avayan sells insanely cheap empty PCBs [http://www.avayanelectronics.com/Products/products.html] [http://www.avayanelectronics.com/Buy_NOW_/buy_now_.html].
 
* [http://www.avrstmd.com/ AVRSTMD]: AVR-Based Microstepping Bipolar Chopper Stepper Motor Driver (STMD). Based on two National Semiconductor LMD18245T 3A, 55V DMOS Full-Bridge Motor driver chips and a Atmel AVR ATMega48. Drives one stepper motor. Optically isolated so you can connect directly to your printer port. Open Source - The schematic, parts list, and software are all freely downloadable. Easily repaired -- removable screw terminals; all parts are through-hole; etc.
 
* [http://www.avrstmd.com/ AVRSTMD]: AVR-Based Microstepping Bipolar Chopper Stepper Motor Driver (STMD). Based on two National Semiconductor LMD18245T 3A, 55V DMOS Full-Bridge Motor driver chips and a Atmel AVR ATMega48. Drives one stepper motor. Optically isolated so you can connect directly to your printer port. Open Source - The schematic, parts list, and software are all freely downloadable. Easily repaired -- removable screw terminals; all parts are through-hole; etc.
 
* [http://www.robotpower.com/products/osmc_info.html Open Source Motor Control (OSMC)]: The OSMC is a high-power H-bridge circuit designed to control permanent magnet DC motors. It was designed expressly as a motor control for robot combat. Supply voltage: 13V to 50V (36V max battery rating). Output Current (continuous): 160A. Uses 4 MOSFETS (IRFB3207) in each leg of the H bridge, for a total of 16. Bridge Driver: Intersil HIP4081A
 
* [http://www.robotpower.com/products/osmc_info.html Open Source Motor Control (OSMC)]: The OSMC is a high-power H-bridge circuit designed to control permanent magnet DC motors. It was designed expressly as a motor control for robot combat. Supply voltage: 13V to 50V (36V max battery rating). Output Current (continuous): 160A. Uses 4 MOSFETS (IRFB3207) in each leg of the H bridge, for a total of 16. Bridge Driver: Intersil HIP4081A
* [http://reprap.org/wiki/StepperMotor RepRap: Stepper Motor] lists some stepper motors and stepper motor drivers, including:
+
* [http://reprap.org/wiki/Stepper_Motor_Driver_2_3 RepRap stepper motor driver] is based around the Allegro A3982 bipolar Stepper Motor Driver with Translator (up to 35 V and up to ±2 A). Like all the RepRap electronics, it is open-source and available on the [http://sourceforge.net/projects/reprap/files/Electronics/ Sourceforge RepRap project files]. You can buy the fully assembled board from (among other places) [http://store.makerbot.com/electronics/assembled-electronics/stepper-driver-v2-3-fully-assembled.html MakerBot Industries]
** [http://reprap.org/wiki/Stepper_Motor_Driver_2_3 RepRap stepper motor driver] is based around the Allegro A3982 bipolar Stepper Motor Driver with Translator (up to 35 V and up to ±2 A). Like all the RepRap electronics, it is open-source and available on the [http://sourceforge.net/projects/reprap/files/Electronics/ Sourceforge RepRap project files]. You can buy the fully assembled board from (among other places) [http://store.makerbot.com/electronics/assembled-electronics/stepper-driver-v2-3-fully-assembled.html MakerBot Industries]
 
** [http://forums.reprap.org/read.php?13,5128 Reprap: Arduino] has a long side-thread on various motor driver chips.
 
** [http://www.rrrf.org/2009/04/02/kit-available-stepper-motor-driver-v23/ this RepRap Stepper Motor Driver] was developed by the RRRF as an open source stepper driver. If you are interested in manufacturing/selling the boards, please feel free to do so.
 
 
 
 
 
 
* [http://groups.yahoo.com/group/GoBox GoBox: a group designing motor driver electronics], a charge controller to optimize getting energy from a variety of energy sources (MTTP solar, wind, water, etc.), and related devices. "The designs and programs are released under a Hardware Open Source License."
 
* [http://groups.yahoo.com/group/GoBox GoBox: a group designing motor driver electronics], a charge controller to optimize getting energy from a variety of energy sources (MTTP solar, wind, water, etc.), and related devices. "The designs and programs are released under a Hardware Open Source License."
 +
* [http://www.bobblick.com/techref/projects/hbridge/hbridge.html H-Bridge by Bob Blick]
 
* [http://groups.yahoo.com/group/osmc/ the Open Source Motor Controller Project]
 
* [http://groups.yahoo.com/group/osmc/ the Open Source Motor Controller Project]
 
* [http://massmind.org/techref/io/stepper/linistep/ LiniStepper] $30 each; Open Source! Circuit Diagram, PCB (Board) Layout, and PIC Software all available. Nice photos of the LiniStepper at http://www.piclist.com/techref/io/stepper/linistep/lini_bld.htm .
 
* [http://massmind.org/techref/io/stepper/linistep/ LiniStepper] $30 each; Open Source! Circuit Diagram, PCB (Board) Layout, and PIC Software all available. Nice photos of the LiniStepper at http://www.piclist.com/techref/io/stepper/linistep/lini_bld.htm .
Line 148: Line 107:
 
* SN754410 quadruple half-bridge driver is pin-compatible with the L293. DIP package. 1 A per bridge continuous (2 A peak) with thermal shutdown protection, 4.5 V to 36 V. Requires external flyback diodes (preferably Schottky).
 
* SN754410 quadruple half-bridge driver is pin-compatible with the L293. DIP package. 1 A per bridge continuous (2 A peak) with thermal shutdown protection, 4.5 V to 36 V. Requires external flyback diodes (preferably Schottky).
 
* STMicroelectronics L6506 is designed to work with a L293 or L298 dual bridge drivers to form a constant current drive for the (inductive) stepper motor. This chip senses the current in each load winding (with an external sense resistor); if either winding exceeds the desired current (also programmed with external sense resistors), the L6506 unconditionally turns off that coil. (This chip would presumably fit in-between a microstepping stepper motor controller and the dual bridge chip).
 
* STMicroelectronics L6506 is designed to work with a L293 or L298 dual bridge drivers to form a constant current drive for the (inductive) stepper motor. This chip senses the current in each load winding (with an external sense resistor); if either winding exceeds the desired current (also programmed with external sense resistors), the L6506 unconditionally turns off that coil. (This chip would presumably fit in-between a microstepping stepper motor controller and the dual bridge chip).
* STMicroelectronics made fully integrated H-bridge motor driver VNH3SP30. It has only one disadvantage: too low frequency (10 kHz max). But its enough for many automotive applications.
 
  
  
Line 159: Line 117:
 
* [http://www.nanotec.de/page_product__smc11__en.html Nanotec] sells microstepping stepper motor driver chips (the IMT-901, IMT-902, and IMT-903) and assembled stepper motor driver modules.
 
* [http://www.nanotec.de/page_product__smc11__en.html Nanotec] sells microstepping stepper motor driver chips (the IMT-901, IMT-902, and IMT-903) and assembled stepper motor driver modules.
 
** NANOTEC - IMT-901[http://www.newark.com/nanotec/imt-901/ic-motor-driver-stepper-1-5a-sip/dp/17M9708?Ntt=IMT-901]: microstepping constant current stepper motor driver. 1.5 A continuous, 2.5 A peak. Up to 40 V. Selectable full step, 1/2 step, 1/4 step, 1/8 step. Requires 4 external flyback diodes (apparently has the other 4 flyback diodes built in?).
 
** NANOTEC - IMT-901[http://www.newark.com/nanotec/imt-901/ic-motor-driver-stepper-1-5a-sip/dp/17M9708?Ntt=IMT-901]: microstepping constant current stepper motor driver. 1.5 A continuous, 2.5 A peak. Up to 40 V. Selectable full step, 1/2 step, 1/4 step, 1/8 step. Requires 4 external flyback diodes (apparently has the other 4 flyback diodes built in?).
 +
* [http://forums.reprap.org/read.php?13,5128 Reprap: Arduino] has a long side-thread on various motor driver chips.
 
* Ardumoto - Motor Driver Shield[https://www.sparkfun.com/commerce/product_info.php?products_id=9213]: has one L298 dual H-bridge and the 8 necessary Schottky diodes; can drive up to 2 amps per channel.
 
* Ardumoto - Motor Driver Shield[https://www.sparkfun.com/commerce/product_info.php?products_id=9213]: has one L298 dual H-bridge and the 8 necessary Schottky diodes; can drive up to 2 amps per channel.
 
* lots of [http://octopart.com/search?q=stepper+motor+driver&c=0&d=0 stepper motor driver chips]
 
* lots of [http://octopart.com/search?q=stepper+motor+driver&c=0&d=0 stepper motor driver chips]
Line 218: Line 177:
  
 
=== further reading ===
 
=== further reading ===
 
* [[Driving Large Loads with the Arduino]]
 
  
 
* [http://en.wikibooks.org/wiki/Robotics/Components/Actuation_Devices/Motors Wikibooks: Robotics motors]
 
* [http://en.wikibooks.org/wiki/Robotics/Components/Actuation_Devices/Motors Wikibooks: Robotics motors]
Line 227: Line 184:
 
* [http://www.robotroom.com/Flip-Flop-74HC74-Back-And-Forth-Robot5.html The Flip-Flop Robot] uses the IXDN404 chip as a single-chip H bridge motor driver for 1 small motor.
 
* [http://www.robotroom.com/Flip-Flop-74HC74-Back-And-Forth-Robot5.html The Flip-Flop Robot] uses the IXDN404 chip as a single-chip H bridge motor driver for 1 small motor.
 
* [http://www.robotroom.com/Joystick2.html the Joystick controlled robot] uses a FAN8200 motor driver chip as a single-chip H bridge motor driver to drive 2 small motors.
 
* [http://www.robotroom.com/Joystick2.html the Joystick controlled robot] uses a FAN8200 motor driver chip as a single-chip H bridge motor driver to drive 2 small motors.
 +
* [http://www.rrrf.org/2009/04/02/kit-available-stepper-motor-driver-v23/ this RepRap Stepper Motor Driver] was developed by the RRRF as an open source stepper driver. If you are interested in manufacturing/selling the boards, please feel free to do so.
 
* [http://techref.massmind.org/techref/io/stepper/linistep Linistepper open source microstepping controller / driver for stepper motors]. Has PMinMO standard connections.
 
* [http://techref.massmind.org/techref/io/stepper/linistep Linistepper open source microstepping controller / driver for stepper motors]. Has PMinMO standard connections.
 
* [http://techref.massmind.org/techref/io/motors.htm Massmind: motors] has links to general information about various kinds of motors and motor controllers
 
* [http://techref.massmind.org/techref/io/motors.htm Massmind: motors] has links to general information about various kinds of motors and motor controllers
 
* [http://micah.navi.cx/2010/01/diy-sewing-machine-retrofit/ DIY Sewing Machine Retrofit]: Micah mentions "The LMD18200 is an amazingly versatile and robust little chip." -- the LMD18200 has one H bridge (4 MOSFET transistors) on one chip (3A continuous; up to 55V), plus "Thermal warning flag output at 145°C" and "Thermal shutdown (outputs off) at 170°C". ''(is this better, worse, or simply different from the LMD18245T ?)''.
 
* [http://micah.navi.cx/2010/01/diy-sewing-machine-retrofit/ DIY Sewing Machine Retrofit]: Micah mentions "The LMD18200 is an amazingly versatile and robust little chip." -- the LMD18200 has one H bridge (4 MOSFET transistors) on one chip (3A continuous; up to 55V), plus "Thermal warning flag output at 145°C" and "Thermal shutdown (outputs off) at 170°C". ''(is this better, worse, or simply different from the LMD18245T ?)''.
 
* Acroname: [http://www.acroname.com/robotics/info/articles/drivers/drivers.html "Driving Loads with High Current"] discusses relays, transistor H bridges, and RC motor controllers, and a few tips for using them.
 
* Acroname: [http://www.acroname.com/robotics/info/articles/drivers/drivers.html "Driving Loads with High Current"] discusses relays, transistor H bridges, and RC motor controllers, and a few tips for using them.
* "Stepper Motors and Control: Part III - Current Control of Stepper Motors"[http://www.stepperworld.com/Tutorials/pgCurrentControl.htm]
 
* "you get best microstepping response from motors when the voltage of the power supply is from 1.3 to 5 times the 'nominal' voltage for the motor.  Your highest speeds are attained in the range of 3 to 8 times the 'nominal' voltage for the motor."[http://www.stepperboard.com/UCC30xxCurrentRequirements.htm]
 
* LMD18200 LMD18201: 3 A, 55 V H-bridge, including 4 MOSFETs, each with a protection diode. The LMD18200 is identical to the LMD18201 except for current sensing: If you want to measure the current through the LMD18201, you must use a shunt (current sense resistor) (0.1 Ω or less), which subtracts from the available voltage drive to the motor. If you want to measure the current through the LMD18200, you use a (much larger) resistor connected to a separate current sense pin. (Is this a current mirror?). However, if you merely want to turn off all the transistors when an output short occurs or a locked-rotor occurs, both devices automatically do that through their thermal overload protection, with no current sense resistor necessary. digital inputs: direction/brake/PWM; digital output: thermal warning flag.
 
* Jose I Quinones has posted schematics for several open hardware motor driver designs online: a [http://ebldc.com/ robotics blog], a [http://robot-talk.com/ robot discussion forum] discussing some of the finer point of motor driver design, and [http://www.avayanelectronics.com/Products/products.html motor drivers].
 
  
 
----
 
----
  
 
[[Category:Projects]]
 
[[Category:Projects]]

Please note that all contributions to OpenCircuits may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see OpenCircuits:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)

Template used on this page: