This morning, the Raspberry Pi Foundation announced availability of their new board—the Raspberry Pi 3. We’re excited to have Windows 10 support the new board via a new Windows 10 IoT Core Insider Preview update available for download today. The new Raspberry Pi 3 board is available now in the Microsoft Store online.
Optimized for connected things and smaller devices with or without a display, Windows 10 IoT Core brings the power of Windows, including enterprise grade security and servicing, automatic updates through Windows Update when connected to the Internet and the rich Universal Windows Platform (UWP) APIs that give apps easy control over system management features.
Since we first announced Windows 10 support for Raspberry Pi last year, your feedback has been driving how we continue improving our platform enabling more and more Raspberry Pi capabilities on Windows 10 IoT Core. We’ve made it easier to connect your Windows 10 IoT Core device to the Internet by adding support for the official Raspberry Pi Wi-Fi dongle and other common Wi-Fi dongles. Also, we brought you full support for the TX/RX pins enabling easy access to the UART by simply calling GetDeviceSelector (“UART0”) method on the SerialDevice class. In the new Insider Preview build available today, we are enabling support for the new Raspberry Pi 3 board and we’re working to bring you more features in the coming weeks.
The Easy Driver gives you the capability to drive bipolar stepper motors between 150mA to 700mA per phase. To follow along with this tutorial, we recommend you have access to the following materials. You may not need everything though depending on what you have. Add it to your cart, read through the.
Commercialization & Customization With the popularity of the Raspberry Pi, many customers have asked about commercializing with the platform. We are working with element14 to provide customers with the option to choose Windows 10 IoT Core as part of their Raspberry Pi Customization Service. OEMs will now be able to build versions of the Raspberry Pi that meet their unique requirements, use the open source BSP that Microsoft has released and deploy with Windows 10 IoT Core. The interoperability, coupled with the power of the Microsoft Azure IoT Suite to drive meaningful action across devices, further extends the value that Microsoft delivers to our customers.
The new Raspberry Pi 3 is faster, more powerful and the first out of the box IoT ready Raspberry Pi. We’re thrilled to deliver the power of Windows 10 on the new board and your feedback continues to help us improve Windows 10 IoT Core. Here’s a sneak peek at what you’ll be able to make in the coming weeks.
Install the new Insider Preview update available today via Download or through the newly supported Raspberry Pi installer (NOOBS), start building with the Raspberry Pi 3 and tell us about your experience. We can’t wait to see what you make!
≡ PagesFavoritedFavorite7Introduction
The Easy Driver gives you the capability to drive bipolar stepper motors between 150mA to 700mA per phase.
EasyDriver - Stepper Motor Driver
ROB-12779Materials Required
To follow along with this tutorial, we recommend you have access to the following materials. You may not need everything though depending on what you have. Add it to your cart, read through the guide, and adjust the cart as necessary.
You can either solder directly to the Easy Driver, or use headers for attaching power supplies, motors, etc. The best option for you will be dependent on your application.
User Manual Template
Suggested Reading
If you aren't familiar with the following concepts, we recommend reviewing them before beginning to work with the Easy Driver.
How to Solder: Through-Hole Soldering
Battery Technologies
How to Power a Project
Working with Wire
Installing Arduino IDE
Motors and Selecting the Right One
Hardware Overview
The Easy Driver is designed by Brian Schmalz, and is designed around the A3967 IC. This IC enables you to drive bipolar stepper motors that are 4, 6, or 8-wire configurations. The board can either work with 3.3V or 5V systems, making it extremely versatile. Two mounting holes on-board give the user the option to mechanically stabilize the Easy Driver.
Pin Descriptions
Let's take a look at all of the pins broken out from the A3967 IC on the Easy Driver.
Board Top Pins
If you look across the top of the board, you will see several pins.
They function as follows:
- Coil A+ - H-Bridge 2 Output A. Half of connection point for bi-polar stepper motor coil A.
- Coil A- - H-Bridge 2 Output B. Half of connection point for bi-polar stepper motor coil A.
- Coil B+ - H-Bridge 1 Output A. Half of connection point for bi-polar stepper motor coil B.
- Coil B- - H-Bridge 1 Output B. Half of connection point for bi-polar stepper motor coil B.
- PFD - Voltage input that selects output current decay mode. If PFD > 0.6Vcc, slow decay mode is activated. If PFD < 0.21Vcc, fast decay mode is activated. Mixed decay occurs at 0.21Vcc< PFD < 0.6Vcc.
- RST - Logic Input. When set LOW, all STEP commands are ignored and all FET functionality is turned off. Must be pulled
HIGH
to enable STEP control. - ENABLE -Logic Input. Enables the FET functionality within the motor driver. If set to
HIGH
, the FETs will be disabled, and the IC will not drive the motor. If set toLOW
, all FETs will be enabled, allowing motor control. - MS2 -Logic Input. See truth table below for HIGH/LOW functionality.
- GND - Ground.
- M+ - Power Supply. 6-30V, 2A supply.
Bottom Board Pins
There are also pins across the bottom of the board. Their functions are described below.
- GND - Ground.
- 5V -Output. This pin can be used to power external circuitry. 70mA max is required for Easy Driver functionality.
- SLP - Logic Input. When pulled
LOW
, outputs are disabled and power consumption is minimized. - MS1 - Logic Input. See truth table below for HIGH/LOW functionality.
- GND - Ground.
- STEP -Logic Input. Any transition on this pin from
LOW
toHIGH
will trigger the motor to step forward one step. Direction and size of step is controlled by DIR and MSx pin settings. This will either be 0-5V or 0-3.3V, based on the logic selection. - DIR -Logic Input. This pin determines the direction of motor rotation. Changes in state from
HIGH
toLOW
orLOW
toHIGH
only take effect on the next rising edge of the STEP command. This will either be 0-5V or 0-3.3V, based on the logic selection.
MS1 | MS2 | Microstep Resolution |
---|---|---|
L | L | Full Step (2 Phase) |
H | L | Half Step |
L | H | Quarter Step |
H | H | Eigth Step |
Solder Jumpers
There are two solder jumpers on board. These provide the following features to the user:
- 3/5V - This jumper allows the user to set the configuration of VCC between 3.3V or 5V. With the jumper open, VCC will be 5V. If the jumper is closed, VCC is 3.3V.
- APWR - This jumper allows the user to source Vcc on the 5V/GND pins to external hardware.
Potentiometer
The potentiometer on board is included to allow users the ability to select the max current provided to the motor. It ranges from 150mA to 750mA. This will require you to be aware what current range your motor can handle -- check the motor’s data sheet for the current settings.
If you can’t find this information, have no fear – you can still find the proper setting for the potentiometer. First, set it to the lowest setting of the potentiometer. Keep in mind that the potentiometer is delicate, so be careful to not force the potentiometer past the mechanical stops when turning it. Once you have the motor being driven at a slow, yet steady speed, slowly turn the potentiometer and pay attention to the motor’s behavior. You should find a sweet spot where the motor doesn’t skip or jerk between steps.
Hardware Hookup
Connect Motor Coil Wires
You will need to determine the wire pairs for each coil on the motor you plan to use. The most reliable method to do this is to check the datasheet for the motor.
However, if you are using a 4-wire or 6-wire stepper motor, it is still possible to determine the coil wire pairs without the datasheet.
For a 4-wire motor, take one wire and check its resistance against each of the three remaining wires. Whichever wire shows the lowest resistance against the first wire is the pair mate. The remaining two wires should show similar resistance between the two of them.
For a 6-wire motor, you will need to determine which of three the wires go together for one coil. Pick one wire, and test this against all other wires. Two wires should show some resistance between them and the first wire picked, while the other three will show no connection at all. Once the three wires for one coil have been determined, find two of the three that show the highest resistance between them. These will be your two coil wires. Repeat for the second group of three wires.
Once you have determined the coil wire pairs, you will need to attach them to the Easy Driver. The first coil pair should be plugged into Coil A+ and Coil A-, while the second coil pair plugs into Coil B+ and Coil B-. There is no polarity on the coils, so you don’t need to worry about plugging in a coil backwards on the board. In our example, we are using a 4-coil motor. The connections between the Easy Driver and motor are as follows.
Easy Driver → Motor
- A+ → Green Wire
- A- → Red Wire
- B+ → Blue Wire
- B- → Yellow Wire
Connect a Power Supply
Once your motor is connected, you can then connect a power supply to the Easy Driver. You can use any kind of power supply (desktop, wall adapter, battery power, etc.), but verify that whatever choice you go with is capable of providing up to 2A and falls in the range of 6V to 30V.
Connect the power supply to M+ and GND. REMEMBER to disconnect the power before connecting/disconnecting your motor.
Connect a Microcontroller
For this example, we will be using the SparkFun RedBoard. However, any microcontroller that works at 3.3V or 5V logic and has digital I/O with PWM capability will work for this example.
Here are the following pin connections for our example.
RedBoard → Easy Driver
- D2 → STEP
- D3 → DIR
- D4 → MS1
- D5 → MS2
- D6 → ENABLE
Final Circuit
Once you have everything connected, your circuit should look like the following:
Arduino Code
Basic Arduino Code Example
Now that you have the hardware hooked up and ready to go, it's time to get the code uploaded. For the most up-to-date code available, please check the GitHub repository. First, download and unzip the example sketch. Navigate to Easy_Driver >Firmware >SparkFun_Easy_Driver_Basic_Demo >SparkFun_Easy_Driver_Basic_Demo.ino example and open it in the Arduino IDE.
The first section of the sketch defines all of the pin connections between the RedBoard and the Easy Driver. It also sets these pins as outputs, and puts them to the proper logic levels to begin driving the motor.
One thing worth noting is that the code also initializes the serial connection at 9600 bps. This enables the user (you!) to control the motor's functionality and debug your circuit if needed.
The main loop of the code is pretty simple. The RedBoard scans the serial port for input from the user. When it is received, it's compared to the four possible functions for the motor, which are triggered from user input. If no valid input is received, the RedBoard prints an error over the serial port. After the requested function is completed, the pins on the Easy Driver are reset to the defaults.
Driving Stepper Motor in Forward
The first of the four functions this demo sketch enables is a basic example to show the motor spinning in one direction. The direction pin is held LOW
, which for our sketch, we define as the 'forward' direction. The sketch then transitions the step pin HIGH
, pauses, and then pulls it LOW
. Remember, the motor only steps when the step pin transitions from LOW
to HIGH
, thus we have to switch the state of the pin back and forth. This is repeated 1000 times, and then the RedBoard requests more user input to determine the next motor activity.
Driving Stepper Motor in Reverse
The reverse function works exactly the same as the forward function. The only difference is that instead of pulling the direction pin LOW
, we set it HIGH
, thus switching the direction of the motor spin. One thing you can try on either of these first two functions is modifying the motor speed by changing the value in delay()
. It is currently set to 1 microsecond, making each step pulse take 2 microseconds. Increasing the delay will slow down the motor, while decreasing the delay will speed up the motor.
Microstepping
The third function shows off the different microstepping functionality that the Easy Driver provides. To enable the motor to step in 1/8th microsteps, we must set MS1, and MS2 HIGH
. This sets the logic of the board to 1/8th microstep mode. If you want to have the motor step at a different microstep mode, change the settings for one of the MS# pins. Check the truth table in the Hardware Overview section, if you need a reminder of what settings are enabled by the various pin states.
Forward and Reverse
The final motor function available shows how the motor can change direction on the fly. The function works just as the forward and reverse functions above, but switches between states quickly. This example will step the motor 1000 steps forward and then reverse 1000 steps. This allows you to precisely move something with the motor in one direction, and return to the starting position exactly. Precise position control is a great benefit of stepper motors!
Once the requested action is completed, the pins must be set back to the default state to prevent unexpected or unwanted motor behavior. We use the resetEDPins()
function to achieve this.
Additional Examples
In addition to the example here, you can also install the AccelStepper Library. There are some additional examples with this library that may be beneficial to you for use with your Easy Driver. Download this and install the library in your Arduino libraries directory.
You can also find some additional examples on Brian's Easy Driver examples page.
Resources and Going Further
User Manual For Iphone
Check out these additional resources for more information and other project ideas.
- Schmalz Haus Easy Driver Homepage
Once you've successfully gotten your Easy Driver controlling stepper motors, it's time to incorporate this into your own project! Will it be your own CNC machine? Or perhaps a remote controlled turning art installation? Let us know! Looking for inspiration, check out some of these blog posts.
The Great American Tweet Race Presents Itself at Fuse at the Riverside in Boulder
Arduino Controlled Ouija Board
If you have any feedback, please visit the comments or contact our technical support team at TechSupport@sparkfun.com.
Comments are closed.