This article is another piece in our series about using “Arduino with parts and sensors.” This time, we will try using a stepper motor, which is often used in robot arms and wheeled robots tires. What kind of new possibilities open with a stepping motor? We will operate the stepper motor while learning about its properties and try to figure out what ways it can be used.
Stepper motors are different from the servomotors and standard motors we have introduced until now. By sending electronic signals into the motor, we can control the motor’s rotation. Looking generally at the motor characteristics, we get something like:
Motor: just rotates after applying an electrical current
Servomotor: can rotate from 0 to N degrees in response to a signal
Stepper Motor: complete control of the motor in response to a signal
How does this stepper motor operate? Let’s check Wikipedia.
Stepper Motor – Wikipedia
A stepper motor or step motor or stepping motor is a brushless DC electric motor that divides a full rotation into a number of equal steps. The motor’s position can then be commanded to move and hold at one of these steps without any feedback sensor (an open-loop controller), as long as the motor is carefully sized to the application in respect to torque and speed.
This electronic signal called a “pulse” is the key to operating our stepper motor.
What Is the Pulse Needed to Move a Stepper Motor?
The keyword “pulse” is a word most people have heard of one place or another, but not necessarily when dealing with electrical circuitry. When talking about circuits, pulse typically refers to periodically spaced square wave pulses, which are waves produced from the on-off or high-low variations in power.
Figure1 An example of a pulse signal
By switching power on and off at a fixed width, a variety of parts can be moved. This process is called PWM (Pulse Width Modulation); it is an often-heard keyword when working with electrical motors. The commonly-used analogWrite() function for the Arduino is produced by PWM signals.
How Works the PWM from the AnalogWrite Function?
Figure2 PWM signal
We used analogWrite() earlier in this series to control the brightness of LEDs. The maximum output voltage per pin for the Arduino UNO is 5V, but the output value (0-255) designated by analogWrite(pin, value) does not actually produce 5V divided into 256 parts. Instead, the Arduino’s pulse cycle takes an average of 5V time and 0V time to generate a pseudo-output similar to analog voltage. Until now, we have been using PWM without knowing it.
* For example, an input of analogWrite(PIN, 128) does not produce a voltage of 2.5V from the pin. Instead, half of the cycle period is at 0V and the other half is at 5V for an average of 2.5V.
Stepper Motor Driver Kit L6470
The stepper motor itself can be controlled simply with PWM, but it is difficult to directly send signals from the Arduino to a stepper motor. Today we will be using a motor driver kit called L6470 to easily control the stepper motor.
Picture2 L6470 Motor Driver Kit
Picture3 Parts Set
This driver kit set requires several parts to be soldered onto a circuit board. If you follow the accompanying manual, it should not be a problem.
After soldering, we connect Arduino, the stepper motor and the driver kit. This time, we attached a 12V 1.5A AC adapter to the 8V-48V part of the motor.
Figure3 Stepper Motor Circuit
Operating the Stepper Motor
After connecting Arduino, the stepper motor and the driver kit, we can then prepare our program.
In today’s sample program, the entire set of command functions are input by a file in a separate tab in Arduino, so when making programs using files, don’t forget to add this command file.
Stepper Motor Operation Program
// Define pins.
#define PIN_SPI_MOSI 11
#define PIN_SPI_MISO 12
#define PIN_SPI_SCK 13
#define PIN_SPI_SS 10
#define PIN_BUSY 9
MsTimer2::set(50,fulash);//Interrupt serial monitor timer