Académique Documents
Professionnel Documents
Culture Documents
Sensores
Actuadores
ETSII UCLM
Febrero 2014
ndice
1. Sensores
a. Infrarrojos
b. Ultrasonidos
2. Actuadores
a. Servomotor
b. Motores
3. Comunicacin
a. Infrarrojos (mando a distancia)
a. Control de actuadores
b. Bluetooth (AppInventor)
a. Sensores adicionales
ETSII UCLM
Febrero 2014
Referencia
Para dudas referentes a cmo usar una
funcin o a qu funciones hay disponibles
http://arduino.cc/en/Reference/HomePage
ETSII UCLM
Febrero 2014
Sensores
Infrarrojos
Tres mdulos KY-033
Emisor-Receptor de infrarrojos
Potencimetro para sensibilidad del sensor
Resistencia variable de Puente de Wheatstone
Pines
Tierra (G)
Alimentacin (V+)
Seal (S)
ETSII UCLM
Febrero 2014
Sensores
Infrarrojos (Instalacin y conexin)
No hay hoja de caractersticas en internet
Suelen ser sensores analgicos
Conectamos los pines de seal del sensor a los
pines A3, A4 y A5 de la Sensor Shield
ETSII UCLM
Febrero 2014
Sensores
Infrarrojos
Cdigo Lecturas Analgicas
#include <SoftwareSerial.h>
#define IR_LEFT
3
#define IR_CENTER 4
#define IR_RIGHT 5
void loop() {
//read the input
L = analogRead(IR_LEFT);
C = analogRead(IR_CENTER);
R = analogRead(IR_RIGHT);
int L,C,R;
void setup() {
Serial.begin (57600);
}
}
Febrero 2014
Sensores
Infrarrojos
Cdigo Lecturas Digitales (cambiar pines a D9, D10 y D11)
#include <SoftwareSerial.h>
#define IR_LEFT
11
#define IR_CENTER 10
#define IR_RIGHT
9
void loop() {
//read the input
L = digitalRead(IR_LEFT);
C = digitalRead(IR_CENTER);
R = digitalRead(IR_RIGHT);
int L,C,R;
void setup() {
Serial.begin (57600);
pinMode (IR_LEFT,INPUT);
pinMode (IR_CENTER,INPUT);
pinMode (IR_RIGHT,INPUT);
}
Febrero 2014
Sensores
Ultrasonidos
Sensor HC-SR04
Cuatro pines
Tierra (GND)
Alimentacin (VCC)
Disparador o trigger (Trig)
Receptor (Echo)
Especificaciones
ETSII UCLM
ngulo efectivo: 15
Rango distancia: 2-500 cm
Resolucin: 1 cm
Frecuencia del
ultrasonido: 40 kHz
Curso de Robtica Mvil con Arduino, 3 Edicin
Febrero 2014
Sensores
Ultrasonidos (Instalacin y conexin)
ftp://imall.iteadstudio.com/Modules/IM120628012_
HC_SR04/DS_IM120628012_HC_SR04.pdf
ETSII UCLM
Febrero 2014
Librera Ultrasonic
Fichero de cabecera
http://imall.iteadstudio.com/electroniccomponents/sensor/distance-sensors/im120628012.html
/* Ultrasonic.h - Library for HR-SC04 Ultrasonic Ranging Module.
Created by ITead studio. Alex, Apr 20, 2010.
iteadstudio.com */
#ifndef Ultrasonic_h
#define Ultrasonic_h
#define CM 1
#define INC 0
class Ultrasonic
{
public:
Ultrasonic(int TP, int EP);
long Timing();
long Ranging(int sys);
private:
int Trig_pin;
int Echo_pin;
long duration,distance_cm,distance_inc;
};
#endif
ETSII UCLM
Curso de Robtica Mvil con Arduino, 3 Edicin
Febrero 2014
Sensores
Ultrasonidos
Cdigo comprobacin de funcionamiento
#include <Ultrasonic.h>
#define US_TRIG
9
#define US_ECHO 10
Ultrasonic ultrasonic(US_TRIG, US_ECHO);
void setup() {
Serial.begin(57600);
}
void loop() {
Serial.print(ultrasonic.Ranging(CM));
Serial.println(" cm");
delay(100);
}
Febrero 2014
Sensores
Por si se os queda corto
http://dx.com/p/arduno-37-in-1-sensormodule-kit-black-142834 (36,28)
ETSII UCLM
Febrero 2014
Actuadores
Servomotor
Tower Pro SG90
Peso: 9g
Dimensiones: 23x12.2x29mm
Torque: 1.8kg/cm(4.8V)
Velocidad de operacin: 0.1sec/60degree(4.8v)
Voltaje de funcionamiento: 4.8V
Rango de temperaturas: 0 55
Rango de giro: 180
ETSII UCLM
Febrero 2014
Actuadores
Servomotor
Librera standard Servo.h. Atencin:
The Servo library supports up to 12 motors on most Arduino
boards and 48 on the Arduino Mega. On boards other than
the Mega, use of the library disables analogWrite() (PWM)
functionality on pins 9 and 10, whether or not there is a Servo
on those pins.
ETSII UCLM
Febrero 2014
Actuadores
Control de posicin
Ejemplo knob modificado para usar puerto serie
#include <Servo.h>
#include <SoftwareSerial.h>
#define SERVO_US 8
Servo myservo; // servo object
int val; // value from serial
void setup()
{
// Indica el pin del servo
myservo.attach(SERVO_US);
Serial.begin(57600);
Serial.println("Ang(0-180)");
}
void loop()
{
if (Serial.available())
{
val = Serial.parseInt();
Serial.print("Recibido: ");
Serial.println(val, DEC);
myservo.write(val);
}
}
Febrero 2014
Actuadores
Barrido
Ejemplo sweep modificado para no bloquear tareas mientras barre
#include <Servo.h>
#include <SoftwareSerial.h>
void loop()
#define SERVO_US 8 // Pin servo {
myservo.write(val);
Servo myservo; // servo object
delay(5);
// Vemos si hay que cambiar
int val = 0;
la direccion
int inc = 1;
if (val==180) {inc = -1;}
if (val==0)
{inc = 1;}
void setup()
// Actualizamos la posicion
{
val += inc;
myservo.attach(SERVO_US);
}
}
Febrero 2014
Actuadores
Motores DC
Polaridad de los motores
No provoca daos en el motor, pero cambia el
sentido de giro
ETSII UCLM
Febrero 2014
Motores (conexin)
Cuidado con
los colores:
Marrn D5
Amarillo D3
Sensor
Motor
Shield Controller
D2
IN4
D5 (PWM)
ENB
D4
IN3
D3
IN2
D6 (PWM)
ENA
D7
IN1
ETSII UCLM
Febrero 2014
Actuadores
Comprobacin de polaridad
Movimiento de los cuatro motores en el mismo sentido
// Motor A
#define DIR1MA 7
#define DIR2MA 3
#define ENABLEA 6
// Motor B
#define DIR1MB 4
#define DIR2MB 2
#define ENABLEB 5
void setup ()
{
pinMode (DIR1MA, OUTPUT);
... // Todos en modo OUTPUT
pinMode (ENABLEB, OUTPUT);
}
void loop ()
{
avanza();
}
ETSII UCLM
void avanza()
{
digitalWrite(DIR1MA,LOW);
digitalWrite(DIR2MA,HIGH);
digitalWrite(DIR1MB,LOW);
digitalWrite(DIR2MB,HIGH);
digitalWrite(ENABLEA,HIGH);
digitalWrite(ENABLEB,HIGH);
}
void retrocede()
{
digitalWrite(DIR1MA,HIGH);
digitalWrite(DIR2MA,LOW);
digitalWrite(DIR1MB,HIGH);
digitalWrite(DIR2MB,LOW);
digitalWrite(ENABLEA,HIGH);
digitalWrite(ENABLEB,HIGH);
}
Febrero 2014
Actuadores
Motores DC
Ejecuta el cdigo y comprueba la polaridad
Coloca las ruedas y asegrate de que no rozan
con la estructura
Antes de poner el robot en el suelo (se
estrellara), cambia el programa anterior para
1. Mover el robot alternativamente hacia delante y
hacia atrs cada segundo
2. Mover el robot describiendo un cuadrado
1.
2.
ETSII UCLM
Febrero 2014
Actuadores
Motores DC
Control de velocidad mediante modulacin de
ancho de pulso (PWM)
Arduino no tiene salidas
analgicas (caras)
ENA controla la velocidad
del motor A
ENB controla la velocidad
del motor B
Duty Cycle (porcentaje de
ciclo en nivel alto)
ETSII UCLM
Febrero 2014
Actuadores
Motores DC
Ejemplo usando salidas PWM
// Motor A
#define DIR1MA 7
#define DIR2MA 3
#define ENABLEA 6
// Motor B
#define DIR1MB 4
#define DIR2MB 2
#define ENABLEB 5
void setup ()
{
pinMode (DIR1MA, OUTPUT);
... // Todos en modo OUTPUT
}
void loop ()
{
avanza(180); delay(1000);
retrocede(180); delay(1000);
}
ETSII UCLM
Febrero 2014
Actuadores
Motores DC
Ejemplo con velocidades variables: Qu hace el programa?
// Motor A
...
unsigned long time;
int speed;
int dir;
void setup ()
{
pinMode (DIR1MA, OUTPUT);
...
time = millis ();
speed = 0;
dir = 1;
}
void loop ()
{
analogWrite (ENABLEA, speed);
analogWrite (ENABLEB, 255-speed);
// set direction
if (1 == dir) {
digitalWrite (DIR1MA, LOW);
}
ETSII UCLM
Febrero 2014
Comunicacin
Infrarrojos (Mando a distancia): Control de movimiento
// Librerias
#include <IRremote.h>
#include <Servo.h>
// Motor A
#define DIR1MA 7
#define DIR2MA 3
#define ENABLEA 6
// Motor B
#define DIR1MB 4
#define DIR2MB 2
#define ENABLEB 5
// Ultrasonidos
#define US_SERVO 8
// Infrarrojos (PINES ANALOGICOS)
#define IR_L 3
#define IR_C 4
#define IR_R 5
// Otros pines
#define LED
13
#define RECV_PIN 11
// Variables IR
IRrecv irrecv(RECV_PIN);
decode_results results;
long lectura=0;
// Variables US
Servo myservo;
void setup()
{
pinMode(LED, OUTPUT);
... //Todos los pines digitales a OUTPUT
myservo.attach(US_SERVO);
ETSII UCLM
Serial.begin(57600);
Serial.println("Aceptamos barco:");
irrecv.enableIRIn(); // Start receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value!=0xFFFFFFFF) {
lectura = results.value;
}
switch(lectura) {
case 0xFF6897:
digitalWrite(LED, HIGH);
break;
case 0xFF9867:
digitalWrite(LED, LOW);
break;
case 0xFF629D:
avanza(200);
delay(200);
break;
default:
detente();
diqueno(3);
}
irrecv.resume(); // Receive the next value
}
}
void avanza(int vel)
{ ... }
void detente()
{ ... }
void diqueno(int veces) { ... }
Febrero 2014
Proyecto
Navegacin autnoma
El robot debe moverse hacia delante,
buscando obstculos con el sensor de
ultrasonidos
Si encuentra un obstculo, retrocede
ligeramente y gira 90
El robot sigue movindose hacia delante
ETSII UCLM
Febrero 2014
FIN
Fin de la
tercera
sesin de
prctica
ETSII UCLM
Febrero 2014