Archivo de la categoría: Taller Arduino Ingenia

Motor Paso a Paso con Arduino

Un motor paso a paso es un dispositivo electromecánico que convierte pulsos eléctricos en movimientos mecánicos discretos. El eje de un motor paso a paso gira en incrementos discretos cuando impulsos de mando eléctrico se aplican a él en la secuencia correcta.

La secuencia de los pulsos aplicados se relaciona directamente con la dirección de rotación de ejes motor. La velocidad de la rotación de los ejes motor está directamente relacionada con la frecuencia de los pulsos de entrada y la duración de la rotación está directamente relacionada con el número de pulsos de entrada aplicada.

Una de las ventajas más importantes de un motor paso a paso es su capacidad para ser controlado con precisión en un sistema de lazo abierto. Control de lazo abierto significa que ninguna información de retroalimentación de posición es necesario. Este tipo de control elimina la necesidad de costosos dispositivos de detección y regeneración como codificadores ópticos.

Esquema eléctrico:

El motor paso a paso del kit es 28BYJ-48 y los parámetros del motor paso a paso son:

  • Modelo: 28BYJ-48
  • Tensión nominal de entre 5V y 12 V.
  • 4 Fases.
  • Resistencia 50 Ω.
  • Par motor de 34 Newton / metro más o menos 0,34 Kg por cm.
  • Consumo de unos 55 mA.
  • 64 pasos por vuelta (con medios pasos).
  • Reductora de 1 / 64.
  • Ángulo de paso: 5,625 °
  • Frecuencia: 100Hz
  • Resistencia de la C.C.: 50Ω±7 %(25 ° C)
  • En tracción par > 34.3mN.m(120Hz)
  • Posicionamiento automático par > 34.3mN.m
  • Par de fricción: 600-1200 gf.cm
  • Resistencia de aislamiento > 10MΩ(500V)
  • Aislantes de electricidad : 600VAC/1mA/1s
  • Grado de aislamiento : A
  • Subida de temperatura < 40K(120Hz)
  • Ruido < 35dB (120Hz, No carga, 10cm)

El 28BYJ-48 tiene un paso de 5.625 grados (64 pasos por vuelta usando half-step). El reductor interno tiene una relación de 1/64. Combinados, la precisión total es de 4096 pasos por vuelta, equivalente a un paso de 0.088º, que es una precisión muy elevada.

Datasheet: http://robocraft.ru/files/datasheet/28BYJ-48.pdf

Más información sobre motores paso a paso: https://dronebotworkshop.com/stepper-motors-with-arduino/

Driver para Motor Bipolar 28BYJ-48

Driver del motor

  • Tamaño: 42mmx30mm
  • Chip de controlador de uso ULN2003, 500mA
  • LEDs A, B, C, D indica las cuatro fases las condiciones de trabajo motor paso a paso.
  • Conector blanco estándar motor paso a paso.
  • Pines de alimentación separados

Conexiones de la placa de driver:

El motor de pasos bipolar tiene generalmente cuatro cables que salen de él. A diferencia de los motores PAP unipolares, steppers bipolares no tienen ninguna conexión común de centro. Tienen dos juegos independientes de bobinas en lugar de otro. Se pueden distinguir de steppers unipolares midiendo la resistencia entre los cables. Debe encontrar dos pares de cables de igual resistencia. Si tienes las puntas de su medidor conectado a dos cables que no están conectados (es decir, no conectada a la bobina del mismo), debería ver resistencia infinita (o sin continuidad).

Modos de control:

Full-step, Half-step y microsteps: https://www.rs-online.com/designspark/stepper-motors-and-drives-what-is-full-step-half-step-and-microstepping

Vamos a usar la secuencia de medios pasos. Con esta secuencia conseguimos una precisión de la mitad del paso. El par desarrollado varía ya que en algunos pasos activamos dos bobinas y en otras solo una, pero a la vez el giro se encuentra más “guiado”, por lo que en general ambos efectos se compensan y el funcionamiento es bueno, salvo en aplicaciones donde estemos muy al límite del par máximo.

arduino-motor-paso-paso-secuencia-medio-paso

Expresando la secuencia en forma de tabla resulta:

Medio-pasoABA’B’
1ONOFFOFFOFF
2ONONOFFOFF
3OFFONOFFOFF
4OFFONONOFF
5OFFOFFONOFF
6OFFOFFONON
7OFFOFFOFFON
8ONOFFOFFON

Modo de medio paso: secuencia de señal de control 8 pasos (recomendada) 5.625 grados por paso / 64 pasos por una revolución del eje del motor interno. Relación de transmisión 64. Total 64 x 64 = 4096 pasos.

Modo de paso completo: secuencia de señal de control de 4 pasos 11.25 grados por paso / 32 pasos por una revolución de la interna eje de motor. Relación de transmisión 64. Total 64 x 32 = 2048 pasos.

Ejemplo 1 – Uso Arduino con Motor 28BYJ-48 sin librería

Esquema de conexión:

Ejercicio basado en http://www.prometec.net/motor-28byj-48/

Otros tutoriales:

Solución: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_half_step/stepper_half_step.ino

Para ver los pasos que da, los grados y las bobinas activas ver: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_ver_pasos/stepper_ver_pasos.ino

Ejemplo 2 – Uso Arduino con Motor 28BYJ-48 y Librería Stepper

La otra manera de programar un motor 28BYJ-48 es utilizar la librería Steper que viene incluida con el entorno de desarrollo oficial de Arduino. Esta librería nos facilita el uso de este tipo de motores y viene adaptada para motores bipolares. En este caso la librería stepper usa el modo de paso completo en lugar del medio paso. En este caso el nº de pasos por vuelta es 2048.

Llevando esta secuencia de encendido a una tabla, que posteriormente usaremos para el código, la secuencia quedaría de la siguiente forma:

PasoABA’B’
1ONOFFOFFOFF
2OFFONOFFOFF
3OFFOFFONOFF
4OFFOFFOFFON

Código para mover el motor:

#include &lt;Stepper.h&gt;
#define STEPS 2048
Stepper stepper(STEPS, 8, 9, 10, 11);

void setup() {
&nbsp;stepper.setSpeed(10);
}

void loop() {
&nbsp;stepper.step(2048);
}

Ejecutar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_oneRevolution/stepper_oneRevolution.ino

La librería de pasos por defecto que viene pre-instalado con el Arduino IDE sólo admite el método de paso completo y ha limitado características.  No se ejecuta el motor 28BYJ-48 de manera muy eficiente y conseguir que dos de ellos se muevan al mismo tiempo para un robot de accionamiento diferencial es un poco más difícil. Se encuentran ejemplos de código que utilizan el método de medio paso, sin bibliotecas adicionales como hemos visto anteriormente.

Existe una librería para half-step: https://www.arduinolibraries.info/libraries/half-stepper

Para mejorar el rendimiento disponemos de la biblioteca AccelStepper https://www.arduinolibraries.info/libraries/accel-stepper. Se ejecutan los motores por pasos 28BYJ-48 steppers de manera muy eficiente y también es compatible con la aceleración (que permite el paso a paso para llegar a una velocidad más alta).

Servo con Arduino

Servo es un tipo de motor DC con reductora que sólo puede girar 180 grados. Se controla mediante el envío de impulsos eléctricos de Arduino. Estos pulsos le dice al servo a qué posición se debe mover. El Servo tiene tres cables, marrón es el cable a masa y debe conectarse a GND, el rojo es el cable de corriente y debe conectarse al puerto de 5v y el naranja es el cable de señal y debe conectarse al pin #9.

Se usa la librería Servo https://www.arduino.cc/en/Reference/Servo instalada por defecto en el IDE de Arduino.

Instalar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/05-Servo/servo/servo.ino

Ver en Serial plotter el ángulo en el que se mueve y cambiar el delay para que vaya más rápido o lento.

Teclado Arduino

Para este proyecto, el tipo de teclado que usamos es un teclado matricial. Este es un teclado que sigue un esquema de codificación que le permite tener mucho menos pines de salida que las claves.

Opción con un pin analógico:

Conexión Arduino:

Instalar librería Keypad del gestor de librerías. Más información http://playground.arduino.cc/Code/Keypad

Cargar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/04-Teclado/custom_keypad/custom_keypad.ino

Al final, cuando todo está conectado correctamente y programado, cuando se pulsa una tecla, se muestra en el Monitor Serial en su ordenador.

Mando a Distancia IR con Arduino

Los detectores infrarrojos son pequeños microchips con una célula fotoeléctrica que están configurados para recibir a la luz infrarroja. Casi siempre se utilizan para la detección de control remoto como en cualquier TV.

Detectores infrarrojos tienen un demodulador para señales IR moduladas a 38 KHz. Si sólo brilla un LED IR no detectada nada, tiene que ser PWM intermitente en 38 KHz. Las fotocélulas no tienen ningún tipo de demodulador y puede detectar cualquier frecuencia (incluyendo CC) dentro de la velocidad de respuesta de la fotocélula (que es aproximadamente 1KHz)

Los detectores infrarrojos tienen una salida digital, si detectan señal 38KHz IR salida LOW (0V) o no detecta nada y salida HIGH (5V). Las fotocélulas actúan como resistencias, los cambios de resistencia dependiendo de cuánto se exponen a la luz

Cómo funciona:

Control remoto:

Key Code
CH- 0xFFA25D
CH 0xFF629D
CH+ 0xFFE21D
<< 0xFF22DD
>> 0xFF02FD
>|| 0xFFC23D
0xFFE01F
+ 0xFFA857
EQ 0xFF906F
100+ 0xFF9867
200+ 0xFFB04F
0 0XFF6897
1 0xFF30CF
2 0xFF18E7
3 0xFF7A85
4 0xFF10EF
5 0xFF38C7
6 0xFF5AA5
7 0xFF42BD
8 0xFF4AB5
9 0xFF52AD

Features:

  • NEC modulation works with ‘irremote’ library
  • Pocket size with numeric keypad
  • Easily add IR control to your next project with XC4427

Conexión:

Instalar librería IRremote desde el gestor de librerías. Más información https://github.com/z3t0/Arduino-IRremote

Cargar el programa que detecta el botón pulsado: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/03-Mando_Infrarrojos/IR_Receiver_Module/IR_Receiver_Module.ino

Cargar el programa para detectar los datos de cualquier mando: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/03-Mando_Infrarrojos/IRrecvDump/IRrecvDump.ino

Más información: http://www.circuitbasics.com/arduino-ir-remote-receiver-tutorial/

Joystick Arduino

Módulo de joystick XY:

El módulo tiene 5 pines: VCC, masa, X, Y, pulsación. La salida X, Y es analógica, además, puede presionar el joystick hacia abajo para activar la salida digital.

Cuando el joystick se encuentra en la posición de reposo o medio, debe devolver un valor de aproximadamente 512.

Tenemos que usar pines Arduino analógicos para leer los datos de los pines X / Y, y un pin digital para leer el botón. Para obtener lecturas estables del pin Key / Select, debe conectarse a VCC a través de una resistencia pull-up. Las resistencias incorporadas en los pines digitales de Arduino se pueden utilizar (INPUT_PULLUP).

Conexión Arduino:

Usar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/02-Joystick/Analog_Joystick/Analog_Joystick.ino

Abrir el monitor serie y el serial plotter para ver los valores de salida del joystick.