Skip to content
Python library for the Pololu Dual MC33926 Motor Driver for Raspberry Pi
Branch: master
Clone or download
Pull request Compare This branch is 34 commits ahead of pololu:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cpp
python
.gitignore
LICENSE.txt
README.textile

README.textile

Python library for the Pololu Dual MC33926 Motor Driver for Raspberry Pi

Version: 2.0.0
Release Date: 2016-05-04
www.pololu.com

Summary

This library runs on the Raspberry Pi (Model B+, A+, Pi 2, or Pi 3) and provides functions for controlling both channels of the Pololu Dual MC33926 Motor Driver for Raspberry Pi. This library supports both Python 2 and Python 3.

Programs that use this library will need to be run as the root user so they can access the GPIO pins.

A Java port of this library is available at ~vorburger/dual-mc33926-motor-driver-pi4j.

Getting Started

Installation

This library depends on WiringPi and WiringPi-Python. The instructions below explain how to install these prerequisites.

These instructions assume you are using Raspbian, Debian, or some other distribution that provides the apt-get command for managing packages. If you do not have apt-get, you will need to use a different method to install the required packages.

These instructions also assume you will use Python 2. If you want to use Python 3, you will need to replace python with python3 in the names of the apt-get packages below, and use the python3 command instead of python for running Python scripts, and use the pip3 command instead of pip to install pip packages.

First, to download and install WiringPi-Python, run:

sudo apt-get install python-dev python-pip
sudo pip install wiringpi

Finally, to download and install the dual_mc33926_rpi library, run:

git clone https://github.com/pololu/dual-mc33926-motor-driver-rpi
cd dual-mc33926-motor-driver-rpi
sudo python setup.py install

Running the example program

This library comes with an example program that drives each motor in both directions. To run the example, navigate to the dual-mc33926-motor-driver-rpi directory and run:

sudo python example.py

Library reference

This library uses ultrasonic 20 kHz PWM to drive the motors.

Motor speeds in this library are represented as numbers between -480 and 480 (inclusive). A speed of 0 corresponds to braking. Positive speeds correspond to current flowing from M1A/M2A to M1B/M2B, while negative speeds correspond to current flowing in the other direction.

The library can be imported into a Python program with the following line:

from dual_mc33926_rpi import motors, MAX_SPEED

After importing the library, you can use the commands below to enable the motors and set motor speeds:

- motors.enable(): Enable both motor 1 and motor 2.
- motors.motor1.enable(): Enable motor 1.
- motors.motor2.enable(): Enable motor 2.
- motors.disable(): Disable both motor 1 and motor 2.
- motors.motor1.disable(): Disable motor 1.
- motors.motor2.disable(): Disable motor 2.
- motors.setSpeeds(m1_speed, m2_speed): Set speed and direction for both motor 1 and motor 2.
- motors.motor1.setSpeed(speed): Set speed and direction for motor 1.
- motors.motor2.setSpeed(speed): Set speed and direction for motor 2.

For convenience, a constant called MAX_SPEED (which is equal to 480) is available on all the objects provided by this library. You can access it directly by just writing MAX_SPEED if you imported it as shown above, or it can be accessed in the following ways:

- motors.MAX_SPEED
- motors.motor1.MAX_SPEED
- motors.motor2.MAX_SPEED

If you are controlling multiple motor drivers, you might prefer to import the library using import dual_mc33926_rpi, which requires the commands listed above to be prefixed with dual_mc33926_rpi..

Version history

  • 2.0.0 (2016-05-04): Updated the library code and instructions to work with WiringPi-Python instead of the deprecated WiringPi2-Python.
  • 1.0.0 (2015-07-14): Original release.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.