croma 2014 ses i on 3 practica
TRANSCRIPT
-
7/21/2019 Croma 2014 Ses i on 3 Practica
1/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Sesin 3 (Prctica) Sensores
Actuadores
-
7/21/2019 Croma 2014 Ses i on 3 Practica
2/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
ndice
1. Sensoresa. Infrarrojosb. Ultrasonidos
2. Actuadoresa. Servomotorb. Motores
3. Comunicacin
a. Infrarrojos (mando a distancia)a. Control de actuadores
b. Bluetooth (AppInventor)a. Sensores adicionales
-
7/21/2019 Croma 2014 Ses i on 3 Practica
3/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Referencia
Para dudas referentes a cmo usar unafuncin o a qu funciones hay disponibles http://arduino.cc/en/Reference/HomePage
http://arduino.cc/en/Reference/HomePagehttp://arduino.cc/en/Reference/HomePagehttp://arduino.cc/en/Reference/HomePage -
7/21/2019 Croma 2014 Ses i on 3 Practica
4/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin 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)
-
7/21/2019 Croma 2014 Ses i on 3 Practica
5/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin 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 lospines A3, A4 y A5 de la Sensor Shield
-
7/21/2019 Croma 2014 Ses i on 3 Practica
6/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
InfrarrojosCdigo Lecturas Analgicas#include
#define IR_LEFT 3
#define IR_CENTER 4
#define IR_RIGHT 5
int L,C,R;
void setup() {
Serial.begin (57600);}
void loop() {
//read the input
L = analogRead(IR_LEFT);
C = analogRead(IR_CENTER);
R = analogRead(IR_RIGHT);
//print the values
Serial.print (L);
Serial.print(",");
Serial.print (C);Serial.print(",");
Serial.println (R);
}
Sensores
Qu lecturas tenemos en el terminal Serie?
Qu ocurre si ajustamos el potencimetro?
-
7/21/2019 Croma 2014 Ses i on 3 Practica
7/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
InfrarrojosCdigo Lecturas Digitales (cambiar pines a D9, D10 y D11)#include
#define IR_LEFT 11
#define IR_CENTER 10
#define IR_RIGHT 9
int L,C,R;
void setup() {
Serial.begin (57600);pinMode (IR_LEFT,INPUT);
pinMode (IR_CENTER,INPUT);
pinMode (IR_RIGHT,INPUT);
}
void loop() {
//read the input
L = digitalRead(IR_LEFT);
C = digitalRead(IR_CENTER);
R = digitalRead(IR_RIGHT);
//print the values
Serial.print (L);
Serial.print(",");
Serial.print (C);Serial.print(",");
Serial.println (R);
}
Sensores
Qu tenemos que hacer para seguir una lnea?
-
7/21/2019 Croma 2014 Ses i on 3 Practica
8/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Sensores
Ultrasonidos Sensor HC-SR04 Cuatro pines
Tierra (GND) Alimentacin (VCC) Disparador o trigger(Trig) Receptor (Echo)
Especificaciones ngulo efectivo: 15 Rango distancia: 2-500 cm Resolucin: 1 cm Frecuencia del
ultrasonido: 40 kHz
-
7/21/2019 Croma 2014 Ses i on 3 Practica
9/26 ETSIIUCLM 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
Necesita dos pines digitales: triggerenva un
pulso, mientras que echolo lee Conectamos el pin de trigger a D9 y el echo a D10
ftp://imall.iteadstudio.com/Modules/IM120628012_HC_SR04/DS_IM120628012_HC_SR04.pdfftp://imall.iteadstudio.com/Modules/IM120628012_HC_SR04/DS_IM120628012_HC_SR04.pdfftp://imall.iteadstudio.com/Modules/IM120628012_HC_SR04/DS_IM120628012_HC_SR04.pdfftp://imall.iteadstudio.com/Modules/IM120628012_HC_SR04/DS_IM120628012_HC_SR04.pdfftp://imall.iteadstudio.com/Modules/IM120628012_HC_SR04/DS_IM120628012_HC_SR04.pdf -
7/21/2019 Croma 2014 Ses i on 3 Practica
10/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Librera Ultrasonic
Fichero de cabecera http://imall.iteadstudio.com/electronic-
components/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
http://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.htmlhttp://imall.iteadstudio.com/electronic-components/sensor/distance-sensors/im120628012.html -
7/21/2019 Croma 2014 Ses i on 3 Practica
11/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Ultrasonidos Cdigo comprobacin de funcionamiento
#include
#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);
}
Sensores
Vale para algo el retardo del final? Qutalo a ver qu pasa
Une este cdigo al de IR para mostrar ambas medidas
-
7/21/2019 Croma 2014 Ses i on 3 Practica
12/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Sensores
Por si se os queda corto http://dx.com/p/arduno-37-in-1-sensor-
module-kit-black-142834(36,28)
http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834http://dx.com/p/arduno-37-in-1-sensor-module-kit-black-142834 -
7/21/2019 Croma 2014 Ses i on 3 Practica
13/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin 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: 055
Rango de giro: 180 Giro de barrido del sensor de ultrasonidos
-
7/21/2019 Croma 2014 Ses i on 3 Practica
14/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Actuadores
Servomotor Librera standard Servo.h. Atencin:
The Servo library supports up to 12 motors on most Arduinoboards and 48 on the Arduino Mega. On boards other thanthe Mega, use of the library disables analogWrite() (PWM)functionality on pins 9 and 10, whether or not there is a Servoon those pins.
Slo necesita una salida digital Conectar en pin D8 (naranja)
-
7/21/2019 Croma 2014 Ses i on 3 Practica
15/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Control de posicinEjemplo knobmodificado para usar puerto serie
#include #include #define SERVO_US 8
Servo myservo; // servo objectint 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);
}}
Actuadores
Aade un retardo que tenga en cuenta cunto tiempo
tardar el servo en llegar a la posicin indicada. Pista:
debers hacer uso de la funcin myservo.read()
-
7/21/2019 Croma 2014 Ses i on 3 Practica
16/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
BarridoEjemplo sweepmodificado para no bloquear tareas mientras barre
#include #include #define SERVO_US 8 // Pin servo
Servo myservo; // servo object
int val = 0;int inc = 1;
void setup()
{myservo.attach(SERVO_US);}
void loop(){myservo.write(val);delay(5);// Vemos si hay que cambiar
la direccionif (val==180) {inc = -1;}if (val==0) {inc = 1;}// Actualizamos la posicion
val += inc;}
Actuadores
Monitoriza la posicin del servo por puerto serie
Aade el sensor de rango para encontrar el ngulo en que
se encuentra el objeto ms cercano (Difcil)
-
7/21/2019 Croma 2014 Ses i on 3 Practica
17/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Actuadores
Motores DC Polaridad de los motores
No provoca daos en el motor, pero cambia elsentido de giro
Indicar movimiento continuo hacia delante Si alguno de los motores gira hacia atrs, tiene la
polaridad al revs
Sin colocar an las ruedas!!!
-
7/21/2019 Croma 2014 Ses i on 3 Practica
18/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Motores (conexin)
SensorShield
MotorController
D2 IN4D5 (PWM) ENB
D4 IN3D3 IN2
D6 (PWM) ENA
D7 IN1
Cuidado conlos colores:MarrnD5AmarilloD3
-
7/21/2019 Croma 2014 Ses i on 3 Practica
19/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Comprobacin de polaridadMovimiento 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 5void setup (){
pinMode (DIR1MA, OUTPUT);... // Todos en modo OUTPUTpinMode (ENABLEB, OUTPUT);
}void loop (){
avanza();
}
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);
}
Actuadores
-
7/21/2019 Croma 2014 Ses i on 3 Practica
20/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin 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 para1. Mover el robot alternativamente hacia delante y
hacia atrs cada segundo
2. Mover el robot describiendo un cuadrado1. Aadir dos funciones para girar a izquierda y a
derecha2. Calcular el tiempo que tarda en girar 90 en cada
sentido
-
7/21/2019 Croma 2014 Ses i on 3 Practica
21/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Actuadores
Motores DC Control de velocidad mediante modulacin de
ancho de pulso(PWM) Arduino no tiene salidas
analgicas (caras) ENAcontrola la velocidad
del motor A ENBcontrola la velocidad
del motor B Duty Cycle (porcentaje de
ciclo en nivel alto)
-
7/21/2019 Croma 2014 Ses i on 3 Practica
22/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Motores DCEjemplo usando salidas PWM
// Motor A#define DIR1MA 7#define DIR2MA 3#define ENABLEA 6
// Motor B#define DIR1MB 4#define DIR2MB 2#define ENABLEB 5void setup (){pinMode (DIR1MA, OUTPUT);
... // Todos en modo OUTPUT}void loop (){
avanza(180); delay(1000);retrocede(180); delay(1000);
}
void avanza(int speed){
digitalWrite(DIR1MA,LOW);digitalWrite(DIR2MA,HIGH);
digitalWrite(DIR1MB,LOW);digitalWrite(DIR2MB,HIGH);analogWrite(ENABLEA,speed);analogWrite(ENABLEB,speed);
}void retrocede(int speed){
digitalWrite(DIR1MA,HIGH);digitalWrite(DIR2MA,LOW);digitalWrite(DIR1MB,HIGH);digitalWrite(DIR2MB,LOW);analogWrite(ENABLEA,speed);analogWrite(ENABLEB,speed);
}
Actuadores
-
7/21/2019 Croma 2014 Ses i on 3 Practica
23/26 ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Motores DCEjemplo 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 directionif (1 == dir) {
digitalWrite (DIR1MA, LOW);
digitalWrite (DIR2MA, HIGH);digitalWrite (DIR1MB, HIGH);digitalWrite (DIR2MB, LOW);
}else {
digitalWrite (DIR1MA, HIGH);digitalWrite (DIR2MA, LOW);digitalWrite (DIR1MB, LOW);digitalWrite (DIR2MB, HIGH);
}if (millis () - time> 3000) {time = millis ();speed += 20;
if (speed> 255){speed = 0;}
if (1 == dir){dir = 0;}
else{dir = 1;}
}
}
Actuadores
-
7/21/2019 Croma 2014 Ses i on 3 Practica
24/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Infrarrojos (Mando a distancia): Control de movimiento// Librerias#include #include // 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 IRIRrecv irrecv(RECV_PIN);decode_results results;long lectura=0;// Variables USServo myservo;void setup(){pinMode(LED, OUTPUT);... //Todos los pines digitales a OUTPUT
myservo.attach(US_SERVO);
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) { ... }
Comunicacin
-
7/21/2019 Croma 2014 Ses i on 3 Practica
25/26
ETSIIUCLM Curso de Robtica Mvil con Arduino, 3 Edicin Febrero 2014
Proyecto
Navegacin autnoma El robot debe moverse hacia delante,
buscando obstculos con el sensor deultrasonidos
Si encuentra un obstculo, retrocedeligeramente y gira 90
El robot sigue movindose hacia delante
-
7/21/2019 Croma 2014 Ses i on 3 Practica
26/26
Fin de latercerasesin de
prctica
FIN