Compluarm puesta en marcha

Para controlar nuestro brazo robótico necesitamos realizar un programa en Arduino. Nuestro controlador de servos se conecta a nuestra placa Arduino mediante el puerto I2C, para facilitar su uso y configuracion vamos a usar unas librerias.

Estas librerias estan hechas por Adafruit y se pueden descargar desde aquí.

En este ejemplo tenemos un codigo para controlar todos los servo del brazo de una forma suave. Un ajuste a tener en cuenta son los valores máximos y minimos que pueden tener nuestros servos, estos ajustes dependen del monaje del brazo y de los propios servos. Lo primero que debemos hacer es ajustar dichos parámetro para que el brazo funcione adecuadamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//////////////////////////////////////////////
//    -test movimientos brazo 01-
//
//    Programa de prueba para CompluARM
//
//    En este programa se prueban secuencialmente
//    los servos del brazo robótico CompluARM
//
//    04/06/2018
///////////////////////////////////////////////

//Incluimos las librerias de "wire" para usar el I2C y las del controlador de servos de adafruit
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

int pos_ant[6] = {0, 0, 0, 0, 0, 0};
int pos_min[6] = {110, 125, 600, 600, 600, 110}; //Estos parametros sirven para ajustar las posiciones iniciales y finales del brazo
int pos_max[6] = {460, 410, 140, 140, 140, 220}; //dependen de como hayas montado el brazo

//Definimos el controlador de servos
Adafruit_PWMServoDriver control_servos = Adafruit_PWMServoDriver();

void setup()
{
  control_servos.begin();         //Iniciamos el controlador
  control_servos.setPWMFreq(60);  //Definimos la frecuencia de refresco de los servos a 60 HZ

  inicio_brazo(); //ponemos el brazo en la posicion inicial
  delay(2000);
}

void loop()
{

  mover_servo(0, 180);    //secuencia de ejemplo
  mover_servo(0, 0);
  mover_servo(4, 180);
  mover_servo(4, 0);
  mover_servo(5, 180);
  mover_servo(5, 0);
  while (true);
}

void mover_servo(int servo, int pos) //funcion para mover el brazo, hace un desplazamiento suave entre dos posiciones
{                                    //El servo va de 0 a 5 y la posición de 0 180
 
  #define NUM_PASOS 100 //controla el numero de pasos entre un punto y otro
                        //cuanto mayor sea este numero el brazo se movera mas sueve, pero tardara mas
 
  if (pos > pos_ant[servo])
  {
    for (int p = pos_ant[servo]; p < pos; p += (pos - pos_ant[servo]) / NUM_PASOS)
    {
      control_servos.setPWM(servo, 0, map(p, 0, 180, pos_min[servo], pos_max[servo]));
      delay(10);
    }
  }
  else
  {
    for (int p = pos_ant[servo]; p > pos; p -= abs((pos - pos_ant[servo]) / NUM_PASOS))
    {
      control_servos.setPWM(servo, 0, map(p, 0, 180, pos_min[servo], pos_max[servo]));
      delay(10);
    }
   
  }
  control_servos.setPWM(servo, 0, map(pos, 0, 180, pos_min[servo], pos_max[servo]));
  pos_ant[servo] = pos;
}


void inicio_brazo() //funcion que pone el brazo en posicion inicial
{
  for (int i = 0; i < 6; i++)
  {
    control_servos.setPWM(i, 0, pos_min[i]);
    delay(200);
  }
}
Volver página principal Compluino 03
Share Button
Follow us on Facebook Follow us on Twitter
  • SUSCRIBETE

    Suscríbete a nuestro boletín informativo para estar puntualmente informado de nuestros cursos, talleres, eventos y novedades.
  • Próximos eventos

    1. Campamentos de robótica semana del 25 de junio al 29 de junio

      junio 25 @ 10:00 - junio 29 @ 14:00
    2. Campamentos de robótica semana del 2 de julio al 6 de julio

      julio 2 @ 10:00 - julio 6 @ 14:00
    3. Crumble – Aula robótica (14ª Edición)

      julio 2 @ 16:00 - julio 6 @ 20:00
    4. Campamentos de robótica del 9 de julio al 13 de julio

      julio 9 @ 10:00 - julio 13 @ 14:00
    5. LEGO Education Academy – LEGO WeDo para formadores

      julio 9 @ 16:00 - 20:00
    6. Curso de especialización en robótica con Arduino

      julio 9 @ 16:00 - julio 13 @ 20:00
    7. LEGO Education Academy – LEGO WeDo 2.0 para formadores

      julio 10 @ 16:00 - 20:00
    8. Empezando con LEGO Mindstorms EV3 para formadores

      julio 11 @ 16:00 - 20:00
    9. Proyectos y desafíos con LEGO Mindstorms EV3 para formadores

      julio 12 @ 16:00 - 20:00
    10. Proyectos avanzados con LEGO Mindstorms EV3 para formadores

      julio 13 @ 16:00 - 20:00

A ver si adivinas que utilizamos en este sitio? Aquí tienes el ladrillo en cuestión por si quieres leerlo