Conectar hasta 16 servos con Micro:bit

Microbit y 16 servos

En artículos anteriores hemos visto como conectar un servo a nuestra placa Micro:bit. Se podría conectar hasta 3 servos en nuestra placa. Pero si necesitamos manejar más servos es complicado.

Afortunadamente en el mercado una placa que permite conectar y gestionar hasta 16 servos. Es la placa PCA9685. Esta placa dispone conexión para 16 servos, y se conecta a la placa Micro:bit por medio del bus I2C.

El bus I2C en la placa Micro:bit

El bus I2C usado dos pines. Los pines 19 y 20 de la placa Micro:bit. El pin 19 se denomina SCL, y el pin 20 llamado SDA.

Fuente: https://makecode.microbit.org/device/pins

Como se puede ver en la imagen, los pines en la placa Micro:bit, son pequeños y conectar cables en ellos es difícil. Por ello usaremos una placa de expansión. Esta placa nos permite tener mejor acceso a todos los pines de nuestra placa.

Existen gran cantidad en el mercado, así que cualquiera, con la que más a gusto te sientas con ella, puede servir.

La placa PCA9685

Esta placa dispone de conexión para 16 servos, además tiene 6 pines en la parte lateral dónde se encuentra los pines del bus, pines de alimentación y un pin para para desactivar todas las salidas.

PinDescripción
V+Este pin sirve para alimentar los servos, pero es mejor usar el conector destinado para ello.
VCCPor este pin se alimenta el integrado PCA9685, la tensión debe ser entre 3,3 voltios y 5 voltios.
SDAPin de conexión del bus I2C
SDLPin de conexión del bus I2C
OEPoniendo tensión, la misma que en el pin VCC se ponen todas las salidas a cero
GNDPin de tierra o cero voltios.

Aparte de estos pines, existe un conector con tornillos, de color verde, por el cual se alimenta los servos.

Conectando la placa Micro:bit a PCA9685

Para esto necesitamos cuatro cables tipo dupon, hembra hembra y una placa de expansión.

Localizar los pines SCL y SDA en tu placa de expansión. Conecta un cable en cada pin, y el extremo contrario conectarlo a los pines SCL y SDA en la placa PCA9685.

Ahora vamos a alimentar la placa. Para ello conecta un cable en el pin 3v3 de la placa Micro:bit, y el extremo contrario en pin VCC de la placa PCA9685.

Por último conecta un cable en el pin GND de la placa Micro:bit y el otro extremo en el pin GND de la placa PCA9685.

La siguiente

Micro:bitPCA9685
3v3VCC
SDASDA
SDLSDL
GNDGND
Tabla de conexión entre Micro:bit y PCA9685

Importar bloques PCA9685

Ahora que tenemos todo conectado vamos a programar nuestra placa Micro:bit.

Crea una nuevo proyecto y llamalo, por ejemplo, PCA9685. Para mover los servos con la placa PCA9685 debemos usar la extensión PCA9685. Desde el menú Advanced selecciona Extensions. En el buscador introduce PCA9685.

Selecciona pca9685. Ahora ya tenemos listos los bloques para usar la placa.

Programación

Para probar la placa, vamos a usar dos servos del tipo MG965R, los cuales los conectaremos los primeros pines. Fíjate en los colores del cable de los servos, que debe coincidir con los de los pines. Alimenta la placa PCA9685 con 4 pilas tipo AA.

Vamos a mover los dos servos, de manera que si dejamos pulsado el botón A el servo número 1 girará un grado, así hasta que alcance los 180 grados. Cuando ocurra esto empezará a girar un grado menos, de manera que cuando llegue a 0 grados, volverá a empezar girar hacia a 180 grados.

Si mantenemos pulsado el botón B, nuestro programa hará los mismo pero con el servo número 2.

Y si mantenemos ambos botones pulsados, A+B, giran ambos servos a la vez.

Bloque On Start

Empezamos creando una variable llamada Controller. Esta variable identificará nuestra placa. Así que la ajustaremos al resultado de iniciar nuestra placa con la dirección 0x40 usando el bloque chip address.

Cómo la conexión a la placa se realiza por medio de un bus. Esto es usando un par de cables, y puede haber más de una placa conectada hay que identificarla con un número. En este caso 0x40 que es un número en Hexadecimal, que es según el fabricante el valor que trae por defecto.

Tras ello, debemos indicar la frecuencia a la que funcionan nuestros servos. Según la ficha técnica del servo Mg996R, la frecuencia es 50hz que es la más común en los servos. Para ello usamos el bloque Init.

Cómo vamos a mover dos servos y queremos saber en que dirección van. Osea si debemos sumar o restar grados, crearemos dos variables llamadas DireccionServo1 y DireccionServo2. Las cuales iniciamos al valor 1.

Evento On Start

Bloque forever

En esta parte vamos a comprobar que botón pulsamos. Comprobamos que pulsamos el botón A y no el B. En ese caso llamamos a la rutina CalculaServo1, para actualizar la posición del servo 1, la cual se guarda en la variable PosicionServo1. Y luego se ejecuta el bloque Set servo position. El cual le indicamos el servo que queremos mover. En este caso es el servo número 1. Se le indica la posición en grados que está contenido en la variable PosicionServo1, y la placa dónde está conectado este servo, que está indicado por la variable Controller. Recuerda que esta variable la inicializamos en el evento OnStart.

Cuando pulsamos el botón B y no esta pulsado el botón A, se llama a la rutina CalculaServo2, para actualizar la posición para el servo 2, la cual se guarda en el variable PosicionServo2. Después se ejecuta el bloque Set servo position. Pero indicando el servo 2 y el ángulo que está en la variable PosicionServo2. La placa dónde está conectado es controller.

Por último comprobamos si ambos botones están pulsados. En ese caso se ejecutan las rutinas de cálculo de ambos servos y se actualiza la posición de los dos servos.

La rutina CalculaServo1

Esta rutina se encarga de calcular una nueva posición para un servo. Lo que hacemos es sumar el valor de la variable DirecionServo1 a la posición del servo. Si el valor de la variable PosicionServo1 es mayor de 180 grados, entonces la variable DireccionServo1 pasará a ser negativo. así la próxima al realizar el cálculo de la nueva posición iremos restando, y el servo irá girando hacia cero grados.

La función CalculaServo2 es exactamente igual, pero realiza los cálculos para el servo 2.

Ya solo queda cargar el programa en nuestro Micro:bit y probarlo.

Aquí os dejo el código fuente.

Saludos

Micro:bit y los servos ( 3 de 3 )

Continuamos aprendiendo a conectar servos a nuestra placa Micro:bit. En el artículo anterior hemos visto como conectar un servo de poca fuerza o micro servo. Pero si necesitamos conectar un servo con mas fuerza necesitamos alimentar el servo desde una fuente externa o un pack de baterías.

La placa Micro:bit debe tener cargado el programa del artículo anterior. Lo puedes descargar de aquí.

Si aún no sabes como crear un programa puedes revisa el artículo: Micro:bit. Mi primer programa.

Material necesario.

Aprenderemos a conectar un pack de baterías con un servo , y que lo controle nuestra placa. En este artículo usaremos un porta pilas de cuatro pilas tipo AA y un servo Mg996R.

Necesitamos 3 cables dupon macho macho, como en el artículo anterior. Además necesitamos 4 cables tipo cocodrilo.

Conectamos los cables dupon al servo.

Ahora alimentaremos el servo con el porta pilas. Para ello usando dos cables cocodrilo conectaremos la alimentación del servo. Recuerda que el cable rojo, el del centro en el conector del servo, va al polo positivo del porta pilas, que suele tener un cable rojo y/o el signo +. El cable marrón, en el conector del servo irá el polo negativo, que suele tener un cable negro, y/o el signo -.

El cable restante, que el de color naranja irá conectado al pin 0 de nuestro Micro:bit. Pero lo más importante es que debemos unir el pin Gnd de la placa Micro:bit con el polo negativo del porta pilas. Para ello usaremos otro cable de tipo cocodrilo.

La siguiente imagen muestra un diagrama de como se debe conectar todo. Lo más importante cuando se usa una fuente de energía externa (porta pilas, etc.) es que el polo negativo o «Gnd» de la placa y el de nuestra fuente de energía externa deben estar unidos.

Ahora solo queda enchufar nuestro Micro:bit y probar el programa.

Saludos

Micro:bit y pantalla OLED

Las pantallas OLED en el mundo maker se han popularizado mucho en los últimos años. Existen multitud de ellas en el mercado, pero las más comunes, para proyecto caseros, son las pantallas de 0,96 pulgadas. Son pequeñas, aproximadamente unos 28 milímetros de ancho por uno 19 de alto. Aún así son capaces de mostrar información de una manera muy nítida.

Se puede controlar con Micro:bit de una manera muy sencilla.

El modelo de pantalla que vamos a usar es SSD1306. Se puede encontrar en multitud de tiendas online. Tiene 128 pixel o puntos, por 64 de alto. La conexión con es usando el bus i2c.

El bus I2C usado dos pines. Los pines 19 y 20 de la placa Micro:bit. El pin 19 se denomina SCL, y el pin 20 llamado SDA.

Fuente: https://makecode.microbit.org/device/pins
PinDescripción
VCCEste pin sirve para alimentar la pantalla OLED
SDAPin de conexión del bus I2C
SDLPin de conexión del bus I2C
GNDPin de tierra o cero voltios.
Tabla de conexiones

Empezando

Crea un nuevo programa. Llámalo, por ejemplo, Pantalla.

Si aún no sabes como crear un programa puedes revisa el artículo: Micro:bit. Mi primer programa.

Para poder usarla en nuestro programa debemos añadir una extensión. Desplegamos la categoría Avanzado y abajo de todo seleccionamos Extensiones.

Buscamos la librería SSD1306, y seleccionamos la librería Oled-ssd1306

Una ves añadida, encontraremos en la lista de bloques, uno llamado OLED, en la cual encontraremos los bloques necesarios para usar nuestra pantalla.

Un sencillo programa

Vamos a realizar un pequeño programa, el cual mostrará un barra de progreso, y luego un pequeño texto. Tras esperar unos segundos, volverá al principio.

Para empezar a usar la pantalla lo primero que debemos hacer es inicializarla, indicando su tamaño. Esto se realiza con el bloque initialize OLED with width 128 height 64.

Este bloque lo colocaremos en el bucle OnStart. Indicando el ancho y el alto, en pixel, de nuestra pantalla. En nuestro caso, la pantalla tiene 128 pixel de ancho y 64 de alto. Así que no necesitamos modificar nada.

En el bucle Forever, lo primero que haremos en borrar la pantalla usando el bloque Clear OLED display.

Luego dentro de bloque For, desde 0 hasta 100 que puedes encontrar en la categoría Lógica. Colocaremos el bloque draw loading bar at. Este bloque dibuja la típica barra de carga que aparecen en muchos programas. Para que no se muestre a toda velocidad y no se vea bien, podremos una pausa.

De nuevo borramos la pantalla de nuevo, Mostramos el texto Hola Mundo, insertamos dos líneas vacías y escribimos otro texto.

Solo queda esperar un tiempo y ya tenemos listo nuestro programa.

Más posibilidades

Este ha sido un ejemplo rápido. Pero si exploraras la categoría OLED verás que puedes hacer líneas, y rectángulos. Con lo que podrás dibujar lo que quieras.

En este enlace os dejo el código fuente.

Saludos

Micro:bit y los servos ( 2 de 3 )

Hoy vamos a ver como hacer un programa en nuestro micro:bit para mover un servo a tres posiciones, pulsando los botones.

Además aprenderemos a conectar un servo a nuestro bit.

Empezamos programando.

Crea un nuevo programa y llámalo Servos2, por ejemplo.

Si aún no sabes como crear un programa puedes revisa el artículo: Micro:bit. Mi primer programa.

Vamos a ello. Desplegamos la categoría Avanzado y abajo de todo seleccionamos Extensiones.

Estos nos llevará página nueva. En esta nueva página seleccionamos la librería Servo.

Al pulsar volveremos al editor de código. Y en las categorías ya tenemos añadida la categoría Servos.

Nuestro programa moverá el servo a tras posiciones, 0, 90 y 180 grados. De manera que al pulsar el botón A, el servo se moverá a la siguiente posición mayor que en la que estaba. Por ejemplo, si el servo está a 90 grados, al pulsar el botón A, este se moverá a 180 grados.

En el caso que esté a 180 grados, el servo no se moverá. Para ir a la posición anterior debemos usar el botón B, de manera que al pulsarlo el servo irá a la posición anterior.

Lo primero es crear una variable que se llame Posicion.

Crear variable

En el bloque al iniciar estableceremos su valor a 0. Después usaremos el bloque Set servo P0 to angle 0 pero en lugar de el número cero, le indicaremos que use vaya al la posición indicada por la variable Posicion.

Ahora en el bloque para siempre, añadiremos un texto que muestre número. Que será el contenido de la variable posición.

Ahora vamos a programar los botones. Empecemos por el botón A, el cual al pulsarlo moverá el servo a la posición siguiente.

Arrastra un bloque al presionar el botón A, e introduce dentro de el un bloque, e introduce dentro de él, un bloque condicional si. Dentro del bloque condicional comprueba si el valor de la variable posicion es igual a 0. Entonces estableceremos el valor de la variable posicion a 90. Sino es así comprobaremos si el valor de la variable posición es igual a 90, entonces establecemos el valor de la variable a 180.

Fuera de los bloques condicionales, colocamos el bloque set servo P0, para que el servo se mueva al valor indicado por la variable posición.

Ahora coloca el bloque al presionar el botón B, y haz lo mismo pero comprobando los valores 180 y 90. Al valer 180 la variable posicion, estableceremos la variable a 90, si vale 90 la establecemos a 0.

Ya tenemos nuestro programa funcionando. Comprueba su funcionamiento en el simulador antes de conectar un servo.

Aquí os dejo el código fuente.

Conectando un servo

Vamos a conectar un servo a nuestro micro:bit. Hay que tener en cuenta que la placa no tiene suficiente fuerza para mover cualquier servo sin una batería o pilas. Primero vamos a conectar un servo con poca fuerza que si puede mover Micro:bit sin usar ninguna batería o pila externa. Usaremos un servo Sg90.

Micro Servo  Sg90
Micro Servo Sg90

Para conectarlo a nuestra placa vamos a usar cables de tipo «cocodrilo» y cables tipo «dupon». Los cables tipo cocodrilo son cables que en la punta tienen un pinza que se asemeja a la boca del cocodrilo. Los cables tipo «dupon», son cables que en los extremo tienen un conector tipo «dupon». En este caso usaremos unos cables que son macho macho.

Vamos a realizar la conexión. Fíjate en el conector del servo. Tiene tres cables. El cable cable marrón lo conectaremos, usando un cable dupon y el uno cocodrilo, dónde pone GND en nuestra placa Micro:bit. El cable rojo (que está en el centro del conector) lo conectaremos dónde pone 3V, y el cable naranja lo conectamos dónde pone 0 en la placa Micro:bit

Con esto ya tenemos nuestro servo funcionando. Solo queda alimentar la placa Micro:bit bien con el cable usb, o con su pack de batería.

Saludos.

Micro:bit y los servos ( 1 de 3 )

Servo

Los servos, también conocidos como servomotores, son unos pequeños motores muy utilizados en radio control. A diferencia de los motores convencionales, que giran su eje en un sentido u otro indefinidamente. Un servo gira su eje a un posición determinada, indicada por grados. Lo normal es que giren entre 0 y 180 grados. Aunque también los hay que giran hasta 230 grados.

En esta sería de entradas primero aprenderemos a mover un servo de manera simulada, usando el simulador de micro:bit. Luego aprenderemos a conectar un servo a nuestro micro:bit, realizaremos un programa para mover el servo a dónde nosotros queramos, y por último veremos como conectar múltiples servos a nuestra placa.

Continuar leyendo «Micro:bit y los servos ( 1 de 3 )»

PRINT 2 PAINT Anycubic Photon

Anycubic Photon en nuestras manos, sin duda una de las mejores, mas extendidas y accesibles impresoras de resina DLP del mercado, una vez mas ponemos a prueba esta impresora perfecta explicada de forma simple como imprimir miniaturas, figuras «minis», sin duda el resultado y su resolución es mas que optimo a vista comparada a la impresión de filamento FDM.

Nueva impresora puesta a prueba, nuevo video en nuestra sección PRINT 2 PAINT colaboración dentro del canal del increíble Angel Giraldez.

PRINT 2 PAINT Impresión 3D con Resina DLP

Este viernes se publico uno de los videos que hemos grabando en Colaboración con Angel Giraldez, un pintor profesional de miniaturas, tipo Warhammer.

Nuestra parte como Makers experimentados desde hace años en la impresión 3D, era explicar de cero como funcionan estas impresoras de una forma facil y simple ademas ponerlas a tope imprimiendo sin parar, el resultado nos gusto mucho, la resolución de 50 micras de base, la mitad que nos permite la impresión de filamento FDM, resalta el detalle en las figuras minis que probamos, no se ve el paso de capa a capa, a no ser que lo pases por una lupa de 10 aumentos, IMPRESIONATE!

Por otro lado, se pierde el encanto de ver los ejes mover al que estabamos acostumbrados, son muy silenciosas y los precios de hoy, hacen que sean accesibles para el usuario normal.

Esperamos que os guste el video, la próxima semana publicamos el siguiente!