You are on page 1of 30

TALLER DE ARDUINO

BSICO
SERVOMOTORES
Carlos Prez
www.TecBolivia.com

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

MOTORES
Los motores son actuadores que transforman la electricidad

en movimiento.
Existen tres tipos principales de motores que trabajan en

corriente contnua:
Motores DC (2 cables)
Motores Paso a paso o de pasos (3 cables)
Servomotores (4 cables)

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SERVOMOTORES
Bsicamente son motores

DC con una placa de


control.

Capacidad de ubicarse y

mantenerse estable en
cualquier posicin dentro
de su rango de operacin

Rango de operacin

normalmente es menor a
360

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SERVOMOTORES
Tienen un torque muy

fuerte.
Puede trabajar ms all

de los 360, en este


caso se controla la
velocidad.
Los que trabajan en

ms de 360 no tienen
control de posicin.
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SERVOMOTORES
ESTRUCTURA INTERNA
Un servomotor se compone de:
Motor DC: alta velocidad bajo

torque
Caja reductora: juego de engranajes,
reduce la velocidad y aumenta el
torque
Potencimetro: alineado con el eje
del motor para el control de la
posicin.
Tarjeta controladora: con los datos
del potencimetro mueve el motor
DC
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SERVOMOTORES
CABLE DE CONEXIN
Los servomotores

tienen tres cables:


alimentacin, tierra, y
seal.

Cables de Alimentacin:
La tensin de

alimentacin puede
variar de 4 a 8 voltios
(dependiendo del
servo), vara velocidad y
torque.

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SERVOMOTORES
FUNCIONAMIENTO
Cable de Seal:
La posicin del motor

se define por el ancho


de pulso de una seal
PWM.
Los servomotores de

rotacin continua utilizan


la seal PWM para variar
la velocidad de rotacin
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERAS
Una librera es un programa que contiene funciones las

cuales pueden ser utilizadas por otros programas para su


utilizacin.
Para llamar a una librera, se coloca al inicio del Sketch la
palabra de invocacin seguido del nombre de la librera:
#include <Servo.h>

Un objeto es una variable que contiene todas las

especificaciones de la librera, algunas libreras requieren que


sean creadas:
Servo nombre_servo;

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERVO
El Arduino UNO deshabilita la funcin analogWrite() en

los puertos 9 y 10.


Los servos consumen energa de manera considerable, se

recomienda el uso de fuentes externas alimentando


directamente los cables de alimentacin de los servos.

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERVO
attach(): Asocia la variable servo a un pin
nombre_servo.attach(pin)
nombre_servo.attach(pin, min, max)

min: ancho de pulso ngulo mnimo (544)

max: ancho de pulso ngulo mximo (2400)

detach(): Desasocia la variable servo de un pin


nombre_servo.detach(pin)
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA SERVO
write(): Ajusta el eje al ngulo deseado
nombre_servo.write(ngulo)

read(): Lee el ngulo Actual del servo


nombre_servo.read()

attached(): Devuelve TRUE si la variable servo est

asociada a un pin
nombre_servo.attached()
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CIRCUITO SWEEP

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SWEEP
#include <Servo.h>

// Llamada a la librera Servo

Servo myservo;

// Creacin del objeto tipo Servo

int pos = 0;

// Variable donde se guarda la


// posicin del servo

void setup()
{
myservo.attach(9);

// Se asocia el servo al pin 9 (PWM)

}
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

SWEEP
void loop() {
// Se hace el recorrido total en ambas direcciones
for(pos = 0; pos < 180; pos += 1){

myservo.write(pos);
delay(15);

// Retardo de 15 ms para el movimiento del motor

}
for(pos = 180; pos>=1; pos-=1){
myservo.write(pos);
delay(15);
}
}
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CIRCUITO KNOB

2011 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

KNOB
#include <Servo.h>

Servo myservo;
int potpin = 0;

// Pin del potencimetro

int val;

// Variable lectura potencimetro

void setup(){
myservo.attach(9);
}
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

KNOB
void loop()
{

val = analogRead(potpin);

// Lectura potencimetro

// Mapeo a rango de 0 a 180


val = map(val, 0, 1023, 0, 179);

myservo.write(val);

// Mover servo

delay(15);

// Retardo movimiento

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

TALLER DE ARDUINO
BSICO
PREGUNTAS
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

TECLADO MATRICIAL
Su disposicin en forma de matriz facilita el uso de cada tecla.
La cantidad de pines depende del nmero de filas y columnas.

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

TECLADO MATRICIAL
3X4 & 4X4

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA KEYPAD
La librera keypad se puede descargar del

siguiente enlace:

playground.arduino.cc/code/Keypad
La carpeta de la librera debe ser instalada en

la direccin donde se instal el IDE de


Arduino:
..\Arduino\libraries\

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ARRAY
Un array (arreglo) es una coleccin de

variables que se almacenan en posiciones


sucesivas, determinadas por ndices
numricos.
Para la creacin de un arreglo se usa la

siguiente expresin:
tipo_elemento nombre_array[numero_elementos];
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ARRAY
Puede obviarse el nmero de elementos.

Pueden ser definidos de las siguientes

maneras:
int numeros[5] = {0,1,2,3,4};
int numeros[] = {2,1,0};
int numeros[8];

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

ARRAY
Las posiciones de un array empiezan en cero.

Es decir que la ltima posicin es el tamao


del array menos uno.
Para acceder a un elemento de la matriz slo

hay que indicar la posicin del elemento:


char letras[4] = {'a','b','c','d'};

letras[3] = {'d'};
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

MATRIZ
Se puede crear arrays de ms dimensiones

(matrices).
En una matriz cuadrada es un array en otro array

donde se declara primero la fila luego la columna:


char letras[2][3] = {{'a','b','c'}, {'d','e','f'}};

El acceso a la matriz es el mismo que el acceso al

array.
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

OBJETO KEYPAD
const byte ROWS = 4;

// Nmero de filas

const byte COLS = 4;

// Nmero de columnas

char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},

{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};

// 1ra 2da 3ra 4ta filas

byte colPins[COLS] = {5, 4, 3, 2};

// 1ra 2da 3ra 4ta columnas

Keypad customKeypad = Keypad(makeKeymap(hexaKeys),rowPins,colPins,ROWS,COLS);


2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

LIBRERA KEYPAD
char getKey():
Devuelve el valor tipo caracter de la tecla

presionada, definida en la matriz del objeto de


tipo keypad

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CIRCUITO KEYPAD

2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CUSTOM KEYPAD
#include <Keypad.h>
int num;

// Variable para guardar el caracter convertido en nmero entero

const byte ROWS = 4;

// Nmero de filas

const byte COLS = 3;

// Nmero de columnas

char hexaKeys[ROWS][COLS] = {
{'1','2','3'},

{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};

byte rowPins[ROWS] = {8, 7, 6, 5};


byte colPins[COLS] = {4, 3, 2};

// Pines de entrada filas


// Pines de entrada columnas

Keypad customKeypad = Keypad(makeKeymap(hexaKeys),rowPins,colPins,ROWS,COLS);


2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

CUSTOM KEYPAD
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
num = customKey '0';

if (customKey){

// Caracter en entero

// Si hay caracter se imprime

Serial.println(customKey);
}
}
2014 RAL LVAREZ TORRICO - WWW.TECBOLIVIA.COM

You might also like