Intro Animatronics

Anuncio
Intro Animatronics
Boris Cofré Alvarado
[email protected]
1. Control de servomotor con arduino
Esquema de conexión
Código
#include <Servo.h>
Servo servo1; // Crea un objeto servo para controlar el servomotor
void setup()
{
servo1.attach(3); // asocia el servo conectado al pin 3 al objeto servo
}
void loop()
{
servo1.write(0); // fija la posición del servo de acuerdo al valor (ángulo)
delay(800); // espera a que el servo se posicione
servo1.write(180);
delay(800);
}
En caso de que nuestro motor sea de giro 360º
Modificamos la ultima parte de nuestro código
void loop()
{
servo1.write(0); // fija la posición del servo de acuerdo al valor (angulo)
delay(1300); // espera a que el servo se posicione
servo1.write(360);
delay(1300);
}
*Recuerda que debes incluir la librería SERVO.
cuando la importes te saldrá en la primera línea (destacada en amarillo en el ejemplo) como
#include <Servo.h>
EJEMPLO:
Código para controlar 2 o más motores servo
//#include <Servo.h>  recuerda insertar esta librería
Servo servo1; // Crea un objeto servo para controlar el servomotor
Servo servo2;
// Servo servo3;
// Servo servo4; … /* recuerda que vía usb puedes alimentar máx. 3 servomotores,
lo ideal es subir el código y luego conectar el cargador de Arduino */
void setup()
{
servo1.attach(3); // asocia el servo conectado al pin 3 al objeto servo
servo2.attach(4);
//servo3.attach(5);
//servo4.attach(6); …
}
void loop()
{
servo1.write(0); // fija la posición del servo de acuerdo al valor (ángulo)
servo2.write(0);
//servo3.write(0);
//servo4.write(0); …
delay(800); // espera a que los servomotores se posicionen
servo1.write(180);
servo2.write(180);
//servo3.write(180);
//servo4.write(180); …
delay(800);
}
2. Servomotor controlado por un potenciómetro (resistencia variable)
Para esto necesitamos :
- Un potenciómetro lineal de 10k (B10k)
- Protoboard
Esquema de conexión:
Código:
#include <Servo.h>
Servo servo; // Crea un objeto servo para controlar el servomotor
void setup()
{
servo.attach(9); // asocia el pin 9 digital al objeto servo
}
void loop()
{
int val = analogRead(3);
// lee el valor del potenciómetro (analog in pin 3)
val = map(val, 0, 1023, 0, 179); /* escala el valor para usarlo con el servo (valor
entre 0 y 180) */
servo.write(val);
// fija la posición del servo de acuerdo al valor escalado
delay(15);
// espera a que el servo se posicione
}
Código para controlar servo motores con un potenciómetro (2 o más motores)
// #include <Servo.h>
Servo servo1; // Crea un objeto servo para controlar el servomotor
Servo servo2;
int val;
void setup()
{
servo1.attach(9); // asocia el pin 9 digital al objeto servo
servo2.attach(10);
}
void loop()
{
val = analogRead(3);
// lee el valor del potenciómetro (analog in pin 3)
val = map(val, 0, 1023, 0, 179); /* escala el valor para usarlo con el servo (valor
entre 0 y 180) */
servo1.write(val);
// fija la posición del servo de acuerdo al valor escalado
delay(15);
// espera a que el servo se posicione
val = analogRead(0);
// lee el valor del potenciómetro (analog in pin 0)
val = map(val, 0, 1023, 0, 179); /* escala el valor para usarlo con el servo (valor
entre 0 y 180) */
servo2.write(val);
/* fija la posición del servo2 de acuerdo al valor escalado */
delay(15);
}
Motor de corriente continua
El motor de corriente continua (DC direct current) es una máquina que
convierte la energía eléctrica continua en mecánica, provocando un movimiento
rotatorio.
Algunos ejemplos de motores DC
a) Todo tipo de
juguetes móviles
simples.
b) Principalmente en
radios con casetera.
c) Ventiladores y piezas
móviles que requieran
mayor fuerza ejem:
impresoras.
EJERCICIO 1
Aceleramos y desaceleramos el motor usando Arduino
Los motores DC posen dos cables de conexión. Uno positivo (+) y otro
negativo (-)
Para el siguiente ejercicio es necesario un motor que utilice como máximo 9v.
Uno de los cables debe ir conectado al pin digital 9 y el otro a GROUND (GND)
*El orden en que se coloquen los cables en la placa Arduino (incluso directo en una
batería o pila) afecta el sentido en que gira nuestro motor.
Esquema de conexión
Código
int motorPin = 9; // PIN DIGITAL 9 (MOTOR DC)
void setup()
{
pinMode(motorPin, OUTPUT);
}
void loop()
{
int delayTime = 50;
for(int i = 0; i < 256; i++){ //aceleramos
analogWrite(motorPin, i);
delay(delayTime);
}
for(int i = 255; i >= 0; i--){ //frenamos
analogWrite(motorPin, i);
delay(delayTime);
}
}
EJERCICIO 2
Usamos ahora un potenciómetro para variar la velocidad del motor. El
potenciómetro se conecta de la siguiente forma, extremos a 5v y Gnd y el pin de
control (Señal) al pin 0 de las entradas analógicas de Arduino.
Esquema de conexión
Código
int motorPin = 9; //CONECTAMOS EL MOTOR al PIN DIGITAL 9
int potPin=0; //CONECTAMOS LA SEÑAL DEL POTENCIOMETRO al PIN
//ANALOGO 0
int potValue;
void setup()
{
pinMode(motorPin, OUTPUT);
}
void loop()
{
potValue = analogRead(potPin) / 4;
analogWrite(motorPin, potValue);
}
----------Estos ejercicios están disponibles en la web
http://www.tecnosalva.com/pr%C3%A1cticas-3-y-4-arduino-control-motor-yservomotor
- http://www.hispavila.com/3ds/atmega/introduino.html
+info. sobre servomotores
- http://robots-argentina.com.ar/MotorServo_basico.htm
-
Descargar