Pololu Blog »
New product: Motoron M3H256 Triple Motor Controller for Raspberry Pi
Our Motoron M3H256 Triple Motor Controller for Raspberry Pi is now available! The M3H256 is a stackable I²C motor controller that can drive up to three brushed DC motors bidirectionally at voltages between 4.5 V and 48 V and continuous currents up to 2 A per channel. Unlike its M3S256 sibling, which is designed as a shield for an Arduino, the Motoron M3H256 is intended to stack on top of a Raspberry Pi (Model B+ or newer), similar to a HAT (Hardware Attached on Top). With an I²C address that can be configured uniquely for each board, a stack of Motorons let you control many motors at once without taking up lots of GPIO pins and PWM outputs from the Pi.
A robot with three omni wheels and motors controlled by a Raspberry Pi with a Motoron M3H256 Triple Motor Controller. A D24V22F5 regulator powers the Raspberry Pi.
If you decide not to plug it into a Raspberry Pi, the Motoron M3H256 can also be used in a breadboard or another custom setup with your own wiring:
The Motoron M3H256 is available in three different configurations similar to its Arduino shield counterpart: you can get one fully assembled with stackable headers and terminal blocks already soldered, a kit that lets you pick which of the included connectors to solder in yourself, or the board alone if you already have or don’t need connectors and standoffs.
And to help you get started using the Motoron with a Raspberry Pi, we have a Python library you can use to configure the M3H256 and send it commands:
import motoron mc1 = motoron.MotoronI2C(address=17) mc2 = motoron.MotoronI2C(address=18) # Clear reset flags to allow Motorons to run mc1.clear_reset_flag() mc2.clear_reset_flag() # Set up acceleration limits for Motoron #1 mc1.set_max_acceleration(1, 200) mc1.set_max_acceleration(2, 200) # Set up acceleration and deceleration limits for Motoron #2 mc2.set_max_acceleration(1, 75) mc2.set_max_deceleration(1, 250) mc2.set_max_acceleration(2, 80) mc2.set_max_deceleration(2, 300) mc2.set_max_acceleration(3, 75) mc2.set_max_deceleration(3, 250) # Drive the motors mc1.set_speed(1, -100) mc1.set_speed(2, 100) mc2.set_speed(1, 300) mc2.set_speed(2, 200) mc2.set_speed(3, 50)
We’re sure there are plenty of applications where the convenience and scalability of Motorons will be useful. What kind of projects can you think of that would make good use of one (or several)?
For more information about the Motoron M3H256, see the product pages and the comprehensive user’s guide.
The Motoron controllers do not have any special support for processing encoder signals, so while it can be used to drive motors with encoders, you would need to process those signals separately.