Blog y Tutoriales

Kit Brazo Robótico Impreso en 3D

Componentes

Componentes incluidos en el kit (Además de las piezas impresas en 3D)

Circuito

Esquemático
Circuito

Código

Para este proyecto tenemos 3 archivos distintos de Arduino

  • Servo_Posicion_Inicial – Utilizado para calibrar los servos a 90° antes de instalarlos.
  • Servo_Control_Pot – Con este programa controlamos manualmente cada uno de los servomotores con su potenciómetro.
  • Servo_Auto_Move – Con este programa podemos programar una secuencia automática para que el robot la siga.

Conclusión

En este proyecto construimos un brazo robótico el cual se encuentra listo para programarse. Al tener 3 ejes de rotación + un gripper (intercambiable) las posibilidades son limitadas únicamente por tu imaginación!

Nos encantaría ver lo que logras hacer, si tienes un video de tu robot en acción nos lo puedes compartir en los comentarios de abajo! Saludos!

Control PID con Arduino y Matriz de LED 8×8

En este proyecto vamos a utilizar el Arduino para demostrar el control con PID. Para el ejemplo vamos a utilizar una fotoresistencia la cual medirá la intensidad de luz (Process Variable – PV) y la vamos a controlar por medio de una Matriz de LED 8×8 (Output – OP). Le agregamos un potenciómetro al proyecto para poder modificar el Setpoint – SP y poder evaluar el desempeño de nuestro control PID. En este tutorial mostramos el circuito de conexión y anexamos los código de ejemplo.

La matriz de LED nos permite de una manera muy visual representar la variable de salida OP del control PID y por medio del IDE Arduino podemos visualizar las gráficas de las variables en tiempo real.

Componentes

  • Arduino UNO
  • Matriz de LED 8×8 con controlador
  • Fotoresistencia
  • Potenciómetro
  • Resistencia 470 Ohms
  • Capacitor 2200 uF
  • Protoboard
  • Jumpers
  • Base sujetadora impresa en 3D para Matriz y Fotoresistencia Descargar .stl
Listado de componentes

Instalar Software Arduino

El primer paso es instalar el software y los drivers en tu PC. Te invitamos a ver el siguiente video para hacerlo. Después puedes pasar al armado del circuito.

Circuito

Una vez instalado el software puedes pasar al armado del circuito.

Esquemático Control de PID con Arduino
Circuito Control de PID con Arduino. Recuerda que la terminal negativa del capacitor (indicada con una franja blanca y el símbolo de – ) debe ir a GND.

Código

Proporcionamos 3 programas.

  • Matrix_Escalon.ino – Lo utilizamos para realizar la prueba escalón con la que podemos determinar el comportamiento de nuestra planta.
  • Matrix_PID.ino – Con este programa podemos ahora sí realizar el control con PID. En el código podemos modificar las variables de kp, ki, kd y observar los resultados en las gráficas. El Setpoint se puede ajustar por medio del potenciómetro.
  • Matrix_PID_Criterio.ino – Este programa es idéntico al anterior, pero ahora en lugar de ajustar el Setpoint con el potenciómetro, éste se determina en código por medio de las variables sp_inicial y sp_final. El programa comienza con el Setpoint = sp_inicial y después de 1000ms cambia a sp_final.

Funcionamiento

Una vez armado el circuito y descargado el código podemos proceder a ver el video que muestra cómo correr los programas y cómo configurar nuestro controlador PID.

Conclusión

Este proyecto es una manera sencilla de demostrar el Control con PID con Arduino. Aunque tiene sus limitantes funciona como base para explicar los conceptos básicos del Control con PID.

Esperamos que el tutorial haya sido de tu utilidad si tienes dudas o comentarios nos puedes contactar en la sección de comentarios aquí abajo.

Si deseas adquirir este kit puedes solicitarlo aquí (sujeto a disponibilidad)

Saludos!!

TUTORIAL: Cómo correr un script de Python al iniciar el Raspberry Pi

Acabas de armar tu robot y programar tu Raspberry Pi para controlarlo. Ya tienes tu programa en Python y corre perfectamente pero necesitas que ahora corra automáticamente cada vez que inicies tu Raspberry Pi. Llegaste al tutorial correcto.

Vamos a ver cómo hacer que cada vez que se inicie tu Raspberry Pi se corra un script Python (o cualquier otro comando en la terminal de hecho).

Para lograr nuestro objetivo vamos a utilizar el comando de linux systemd, o “System and Service Manager”.

Vamos a suponer que tienes un script Python que deseas correr con el nombre “robot.py”. Vamos a crear un archivo de servicio que tendrá las instrucciones de lo que queremos correr.

Para esto abrimos el editor y vamos a crear un archivo en lib/systemd/system/robot.service

Y pegamos el siguiente código dentro del archivo

[Unit]
Description=Mi Servicio para Robot
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/pi/robot.py

[Install]
WantedBy=multi-user.target

Este archivo lo que hace es crear un servicio llamado “Mi Servicio para Robot” y básicamente le estamos diciendo que corra después de que el ambiente de multi-user este disponible.

El parámetro ExecStart indica los comandos que queremos correr, en este caso es nuestro script de Python, pero en realidad podemos agregar cualquier comando que deseemos (como si lo corriéramos en la terminal). El Type como “idle” se asegura que se corra el comando una vez que el Raspberry haya terminado de cargar todo después de la secuencia de inicio.

Nuestro archivo debe tener el permiso como 644 para poder ejecutar:

sudo chmod 644 /lib/systemd/system/robot.service

ahora que está definido vamos a utilizar systemctl para configurar que el script se corra al inicio

sudo systemctl daemon-reload
sudo systemctl enable robot.service

Listo, ahora puedes reiniciar tu Raspberry y comprobar que se haya corrido. Una vez reiniciado tu Raspberry puedes revisar si tu script corrió con la siguiente línea

sudo systemctl status robot.service

Si estás utilizando el Raspberry para controlar un robot y no tienes conecado un monitor no podrás saber si ya terminó de reiniciarse, por lo que puedes agregar una línea en tu código que encienda un LED en un pin GPIO para indicarte que ya está cargado tu programa.

Fuente:  https://www.raspberrypi-spy.co.uk/2015/10/how-to-autorun-a-python-script-on-boot-using-systemd/

Drivers para Arduino Compatible (Genérico) para Windows 7, 8, 10, macOS

Los drivers vienen incluidos en el Software Arduino IDE o se descargar automáticamente por el Sistema Operativo, pero en caso de que no se reconozca correctamente el Arduino se pueden instalar manualmente

 

DESCARGAR DRIVERS WINDOWS

 > VER TUTORIAL DE INSTALACIÓN WINDOWS <

 

DESCARGAR DRIVERS MAC OS CATALINA

DESCARGAR DRIVERS MAC OS MOJAVE

> VER TUTORIAL DE INSTALACIÓN MAC OS MOJAVE< 

**NOTA: SI TU ARDUINO SIGUE SIN APARECER, INTENTA PROBAR CON OTRO CABLE USB QUE SÍ FUNCIONE PARA COMPROBAR QUE EL CABLE ESTE BUENO. SI ES EL CABLE Y COMPRASTE EL KIT CON NOSOTROS TE LO REPONEMOS SIN COSTO.

 

DESCARGAR DRIVERS MAC OS HIGH SIERRA

DESCARGAR DRIVERS MAC OS SIERRA

DESCARGAR DRIVERS MAC OS EL CAPITAN

  > VER TUTORIAL DE INSTALACIÓN MAC OS < 

En algunas Mac hay que darle permiso al Driver de ser ejecutado. Para esto seguir las siguientes instrucciones DESPUÉS de haber instalado los drivers:

 

Dudas o problemas nos puedes contactar en chips@mecatronium.com

TUTORIAL MOTOR DE PASOS 28BYJ-48

Paso #1 Descripción

Este motor es un motor de pasos del tipo bipolar, útil para aplicaciones que requieran de precisión y alta repetitividad.  El motor además cuenta con un engrane de reducción acoplado al eje de salida. Este engrane nos permite tener un mayor torque de salida y tiene una relación de 1:64; es decir, el engrane tiene que dar 64 revoluciones para que el eje de 1 revolución. Observando la hoja de datos este motor tiene un ángulo de paso de 5.625°. Esto quiere decir que para que el engrane gire 1 revolución requiere dar 360°/5.625° = 64 pasos. Pero como se tiene una relación de 1:64 (1 vuelta el eje; 64 vueltas el engrane); entonces para que el eje del motor gire 1 revolución son necesarios 64*64 pasos, es decir 4096 pasos.

Por lo tanto el eje requiere de 64 vueltas de 64 pasos = 4096 pasosEl engrane tiene que dar 64 vuelta para que el eje de 1

El engrane requiere 64 pasos para 1 vuelta

Es importante saber que este valor que se indica es cuando se opera el motor en Paso Medio (Half Step). Si se trabaja en Paso Completo (Full Step) entonces solo se requieren 2048 pasos.

Paso #2 Características

  • Voltaje Nominal: 5VDC
  • Numero de Fases: 4
  • Relación de Velocidad: 1/64
  • Angulo de Paso: 625°
  • Frecuencia: 100Hz
  • Resistencia DC 50Ω±7%(25℃)
  • Torque >34.3mN.m(120Hz)

Paso #3 Componentes

  • Arduino Uno
  • BYJ48 Motor de Pasos 5v
  • ULN2003 Motor driver Module
  • 5v fuente de poder externa mayor de 300Ma
  • Cable Jumper

Paso #4 Descripción del Tutorial

La actividad a realizar es controlar la velocidad de un motor de pasos con velocidad mediante un potenciómetro conectado al puerto análogo A0 del Arduino.

Paso #5 PinOut

Pines de Tarjeta ULN2003

Descripción

1N1

Fase 1 Azul

1N2

Fase 2 Rosa

1N3

Fase 3 Amarillo

1N4

Fase 4 Naranja

GND

+

5V Fuente externa

 

Paso #6 Hardware

 

Paso #7 Librerías

Existen muchas maneras de controlar los motores de pasos, afortunadamente existe una librería ya incluida en el ambiente de programación de Arduino que utilizaremos para hacernos la vida más fácil. Para esto es necesario únicamente inicializar correctamente el motor con la siguiente función:

Stepper (steps, pin1, pin2, pin3, pin4)

Esta función está especificada en Paso Completo (Full Step) por lo que indicamos el número de pasos completos para dar 1 revolución. En el caso de nuestro motor estos son 2048 pasos. Los siguientes parámetros son los 4 pines a los que tenemos conectados cada uno de las 4 fases de nuestro motor.

Observando la conexión de nuestro motor se conectaron todos los cables en el mismo orden en que vienen del conector. Siguiendo esta configuración el pin2 y pin3 están invertidos, pero los podemos invertir desde el código.

A continuación se especifica la velocidad del motor en RPM con la función, la cual debe ser siempre positiva.

setSpeed(rpms)

Y finalmente se mueve el motor con la siguiente función:

step(steps)

Es importante notar que esta función bloquea la ejecución del programa, es decir, no se podrá hacer ninguna otra operación mientras el motor se esté moviendo, lo cual puede ser importante dependiendo de la aplicación que estemos implementando. Lo que podemos hacer es mover el motor pocos pasos a la vez y mandar llamar esta función continuamente para así poder ejecutar operaciones mientras se mueve el motor.

Si deseamos que el motor gire en sentido contrario simplemente enviamos un número negativo de steps en la función step. No se permite definir una velocidad negativa.

La tarjeta contiene un Circuito Integrado ULN2003 contiene 7 pares de Arreglos Darlington, que simplemente son 2 transistores conectados en cascada con el propósito de permitirnos controlar una corriente más alta con corriente baja. Es decir con la baja corriente del Arduino podemos controlar la alta corriente que exige el motor.

La tarjeta además incluye unos LEDs para saber en qué paso se encuentra el motor.

 

Paso #8 Software


#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
int stepCount = 0;  // numero de pasos el motor a dado

void setup() {
Serial.begin(9600);
}

void loop() {
// Lee el valor del sensor:
int sensorReading = analogRead(A0);
int motorSpeed = map(sensorReading, 0, 1023, 0, 20);
Serial.println(motorSpeed);
if (motorSpeed > 0) {
myStepper.setSpeed(motorSpeed);
myStepper.step(stepsPerRevolution / 1000);
}
}

Paso #9 Video

Si gustan ver una explicación MUY detallada pueden observar este video. https://www.youtube.com/watch?v=B86nqDRskVU