Probamos el Trinket con un microservo

Foto del Trinket 5V se aprecian los pines
Foto del Trinket 5V se aprecian los pines

El Trinket de Adafruit es una pequeña maravilla, empaquetaron un microcontrolador ATtiny85 de Atmel con el bootloader y la circuitería apropiada lista para realizar proyectos impensados para un formato tan portátil.

En este post revisamos un sketch muy simple que permite al trinket controlar un micro servo

Materiales

  • Trinket 5V de Adafruit
  • Micro servo SG90
  • Protoboard
  • Cables protoboard
  • Cable USB
  • Notebook Win7 64bits, con arduino IDE instalado (especial para trinket)
  • Acceso a internet

Procedimiento

Preliminares

Antes de partir se debe leer el tutorial de inicio para trinket, donde hay mucha información sobre las pines y el software. Por el lado del software les hago una síntesis, después de varias pruebas decidimos instalar el Arduino IDE especial para trinket, que en el caso de Windows se baja desde este link

Se deben modificar algunas algunos seteos en el Arduino IDE,

Tools->Board->Adafruit Trinket 8MHz
Tools->Programmer->USBTinyUSB

También es un poco distinto cargar el sketch, cuando se conecta el Trinket con el cable USB el led rojo parpadea se debe presionar y soltar el botón que esta en un extremo y en ese momento se dispone de 15s aproximademente para cargar el sketch.

Instalando la Biblioteca para Servo

Luego debemos instalar la biblioteca de soft_servo de Adafruit que esta disponible en este link

Esta carpeta se descomprime en la carpeta libraries y luego se puede acceder al ejemplo desde File->examples->Adafruit_SoftServo nosotros nos basamos en ese ejemplo para escribir el sketch que se muestra mas adelante

Conectando el Hardware

El hardware se conecta como se muestra en la foto

conexión de hardware. La micro SD esta referencia para notar el tamaño del conjunto
conexión de hardware. La micro SD es referencia para notar el tamaño del conjunto

Las conexiones son las siguientes, USB+ va al cable rojo, GND va al cable cafe, PIN0 va al cable naranja de señal para el Servo.

Software probando el sketch

El sketch que usamos es una versión mas simple del ejemplo que hay aquí

#include <Adafruit_SoftServo.h>  // SoftwareServo (works on non PWM pins)

#define SERVO1PIN 0   // Servo control line (orange) on Trinket Pin #0

Adafruit_SoftServo myServo;  //create servo object

int angle = 0;   
void setup() {
  // Set up the interrupt that will refresh the servo for us automagically
  OCR0A = 0xAF;            // any number is OK
  TIMSK |= _BV(OCIE0A);    // Turn on the compare interrupt (below!)

  myServo.attach(SERVO1PIN);   // Attach the servo to pin 0 on Trinket
  delay(200);                    // Wait 15ms for the servo to reach the position
}

void loop()  { 
  for(angle = 10; angle < 130; angle += 1)  // goes from 10 degrees to 130 degrees    {                                  // in steps of 1 degree      myServo.write(angle);              // tell servo to go to position in variable ‘angle’      delay(20);                       // waits 20ms for the servo to reach the position    }    for(angle = 130; angle>=10; angle-=1)     // goes from 130 degrees to 10 degrees 
  {                                
    myServo.write(angle);              // tell servo to go to position in variable ‘angle’ 
    delay(20);                       // waits 20ms for the servo to reach the position 
  } 
}

// We'll take advantage of the built in millis() timer that goes off
// to keep track of time, and refresh the servo every 20 milliseconds
// The SIGNAL(TIMER0_COMPA_vect) function is the interrupt that will be
// Called by the microcontroller every 2 milliseconds
volatile uint8_t counter = 0;
SIGNAL(TIMER0_COMPA_vect) {
  // this gets called every 2 milliseconds
  counter += 2;
  // every 20 milliseconds, refresh the servos!
  if (counter >= 20) {
    counter = 0;
    myServo.refresh();
  }
}

En el sketch hay que hacer algunas pruebas modificando los valores de ángulos, que pueden variar según cada servo. Con esto tenemos una prueba de funcionamiento para el Trinket y para un micro servo. Lo que sigue es integrar algun sensor específico para que el motor sea la respuesta a estímulos externos.

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *