Ballscrew Stepper Motor Control with L298N Arduino Santiapps

Arduino Honduras Santiapps Marcio Valenzuela

Simple Tutorial Stepper Motor con L298N

Eventualmente nuestros proyectos pueda que requieran dexteridad como la de un brazo robótico.  Para ello podemos hacer uso de un motor que sea mas preciso, mas responsive y mas fino en su movimiento.  Es decir, los motores DC son potentes pero no muy precisos para arrancar o detenerse en ciertas posiciones.  Los servos son precisos pero no tienen mucho torque y tardan en responder o cambiar de rumbo.

En este tutorial exploramos los servos.  Los servos son interesantes porque nos permiten mover componentes revés y derecho como un brazo que sube y baja o una mano que abre y cierra.  También si lo combinamos con 2 dimensiones, podemos hacer que un componente se mueva de izquierda a derecha y de arriba a abajo, como una CNC o una impresora.

Hay bastante teoría sobre motores steppers ya que son motores mucho mas complejos que los simples DC.  Referencia (http://homepage.cs.uiowa.edu/~jones/step/).  Básicamente hay 2 tipos, unipolares y bi-polares.  Lo peculiar sobre los motores en general es:

P = t * s (Power = torque x velocidad)

t = P/s (es decir, el torque es 1/∝ a la velocidad)

t ∝ Amperios-vueltas

L ∝ Hz * s

I = V/R

I = V/(Hz * s)

I 1/∝ s (es decir, la corriente es 1/∝ a la velocidad)

t ∝ Amperios-vueltas

Amperios 1/∝ s

t 1/∝ s

I ∝ t

En fin, a velocidad s=0, t & I = ∞!  Esto es importante porque significa que debajo de cierta velocidad, la torque y por ende la I suben tanto que pueden dañar el motor.  Es por ello que para poder operar steppers se usan stepper drivers como el A4988 o DRV8825:

Arduino IoT Simple Tutorial Stepper Motors L298N drv8825 A4988 Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N drv8825 A4988

a4988

La función principal de estos drivers es que limitan la corriente para proteger el motor.  Debido a que muchas veces los motores mas potentes son de mayor voltage y los queremos operar con el mayor torque posible, necesitamos que el driver limite la corriente que estos motores quieren demandar a la fuente de poder.  Si los motores requieren demasiado torque, pueden demandar demasiada corriente y arruinarse!

Sin embargo también se requiere la funcionalidad de un H-bridge para hacer que el torque se mueva en diferentes direcciones.  En nuestro tutorial usaremos un L298N driver board. En realidad este es un h-bridge y no un stepper driver, por ende no protegerá nuestro motor, pero ya que el motor que usamos esta calificado a 12V y 400mA mientras que usaremos una fuente de poder de 9V, es muy improbable que el motor obtenga mucha mas corriente de la que pueda demandar al driver.  Ademas solo alcanzaríamos máximo torque con una carga pesada que lleve el motor a su maxima corriente.  Pero como no vamos a cargar el motor para este tutorial, estamos seguros.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO o equivalente.
  3. L298N driver board
  4. Stepper 12V & 400mA bi-polar (30Ohm por fase)
  5. Battery pack de 6 batteries AA en serie
  6. 6 baterias AA
  7. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El H-bridge que usaremos es el siguiente.  Es capaz de suplir hasta 2A pero nuestro motor solo demandara 400mA:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N

El motor es el siguiente:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela

Hacemos nuestras conexiones así:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N

El alambrado es basicamente asi:

L298N——————————

Out1 & Out2 ————-2 cables de 1 winding del stepper

Out3 & Out4 ————-2 cables del otro winding del stepper (bi-polares solo tienen 4 cables)

In1,In2,3&4  ————- Pines digitales 8,9,10 & 11 de la Arduino UNO

Vcc ———————— + de 9V

GND ———————- GND de Arduino UNO

5V ————————- 5V de Arduino UNO

[GND de Arduino UNO a – de 9V]

Al final se mira asi:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N

Y con la Arduino UNO:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N

Y el coding es el siguiente:

[pre]
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println(“counterclockwise”);
myStepper.step(-stepsPerRevolution);
delay(500);
}
[/pre]

Este es el código de stepper_oneRevolution incluido con el Arduino IDE.  Simplemente hace que el motor se mueva en una dirección, se detenga y luego se mueva en la otra dirección y continua en ese loop indefinidamente.  El resultado es el siguiente:


Ahora veamos como controlar un stepper con un driver un poco mas seguro, un L293D motor shield, el cual si limita la corriente a 600mA para mas seguridad.  Finalmente veremos como usar un stepper driver para estar 100% seguros de proteger nuestro stepper.  Al final, sera cuestión de armar el robot ya con la carga que va a tener que soportar y poder así medir la corriente que demandará el motor como máximo para saber cual escoger.

Leave a Reply