T6 Robotica
T6 Robotica
TEMA 6: ROBÓTICA
La robótica es la rama de la tecnología que se dedica al diseño y construcción de robots,
Un robot es una máquina formada por sensores y actuadores controlados por un ordenador y programada
para moverse y realizar diferentes tareas.
1. Partes de un robot:
Sensor
Estructura: es el cuerpo o carcasa del robot donde se alojan
sus componentes.
Actuadores: motores y mecanismos, para el movimiento
del robot.
Sensores: son los sentidos del robot. Capturan la
información que rodea al robot. Son circuitos electrónicos
que mediante sensores detectan la posición, velocidad,
temperatura, luz, etc.
Sistemas de control: son placas o tarjetas controladoras Actuador
que se programan (software) para que tomen las decisiones
de actuación del robot.
Control
Sensor
2. Control de un robot:
Los robots se controlan mediante circuitos electrónicos analógicos y digitales, y programación mediante
ordenador.
La electrónica se divide en dos grupos: electrónica analógica y electrónica digital.
La electrónica analógica trabaja con valores reales y se introduce la información mediante
sensores que pueden tomar muchos valores (diferentes velocidades de un motor, sensor que
detecta diferentes temperaturas, …).
En la electrónica digital la información está en forma binaria (0 y 1) y sólo hay dos valores
de tensión:
- HIGH (5V, 1 binario, ON, pasa corriente)
- LOW (0V, 0 binario, OFF, no pasa corriente).
En un robot los sensores toman información del exterior mediante circuitos electrónicos y la mandan a la
tarjeta controladora. La tarjeta procesa la información y manda las ordenes de funcionamiento a los
actuadores.
La tarjeta tiene que ser previamente programada mediante el ordenador.
1
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
SENSORES: ACTUADORES:
Sensor de luz,Sensor de Tª, Pulsador,... Motor, Lámpara, Zumbador,...
CIRCUITOS ELECTRÓNICOS
TARJETA CONTROLADORA
PROGRAMACIÓN
ORDENADOR
Conector USB
Microcontrolador
Tensión + = PIN 5V
PIN de tierra GND = Tensión -
PINES de
alimentación
Pines de alimentación: proporcionan la corriente continua necesaria para que funcionen los
sensores y actuadores (motores,...)
Pin de alimentación positiva a 5 V
Pines de alimentación negativa o tierra o GND a 0 V.
14 pines para entradas/salidas digitales (pines del 0-13). En ellos se conectan los sensores y
los actuadores. Trabajan con valores binarios (1 ó 0, HIGH o LOW):
Se prefiere no utilizar los pines 0 y 1, para no equivocarnos con los valores lógicos binarios 0 y 1
Es necesario conectar la placa mediante USB para cargar los programas. Después se puede
desconectar el USB y alimentar la placa mediante una pila o fuente de alimentación.
2
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
Abrir
Guardar
En la función void setup() se configuran los pines digitales como de SALIDA o ENTRADA de
información a la placa.. Para ello usamos la función pinMode y la instrucción OUTPUT o INPUT.
Se trata de la primera función que se ejecuta en el programa.
pinMode(ledverde, OUTPUT); (establece el led del pin7 como salida)
3
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
La función void loop() incluye el programa o código que debe ser ejecutado continuamente. Es
un bucle que se ejecuta continuamente después de ejecutarse el void setup.
Marcas de puntuación:
Las llaves { }. Se usan para indicar el principio y final de una función.
Los paréntesis ( ) se utilizan para escribir funciones dentro de nuestros programas.
Cada instrucción debe acabar con ;
Los comentarios se indican con //. Se pueden introducir bloques de comentarios con // ... . Los comentarios
no son obligatorios.
if (condición SI): Comprueba si una condición se cumple. La función se escribe entre llaves { }
if (x > 120) { digitalWrite (ledPin, HIGH); }
Puede utilizarse con uno o más operadores de comparación:
== igual que != diferente que
< menor que > mayor que
<= menor o igual que >= mayor o igual que
if…else: SI…..SINO
if (x > 120) { digitalWrite (ledPin, HIGH); }
else { digitalWrite (ledPin, LOW); }
4
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
6. Ejercicios
1 .- Encender un led de forma intermitente
int ledRojo = 7; // LED que se conecta al pin 7
void setup()
{
pinMode(ledRojo, OUTPUT); // El p1n 7 será una salida digital
}
void loop()
{
digitalWrite(ledRojo, HIGH); // Enciende el LED
delay(1000); // Pausa de 1 segundo
digitalWrite(ledRojo, LOW); // Apaga el LED
delay(1000); // Pausa de 1 segundo
}
ESQUEMA
2 .- Encendido secuencial de 3 leds: encender 3 leds (V,R y A) de forma secuencial (primero un led
rojo 2 segundos, luego el led amarillo 2 segundos y luego se enciende el led verde durante 4
segundos), se apagan los 3 leds y el programa vuelve a comenzar
void setup()
{
pinMode(led, OUTPUT); // El p1n 7 será una salida digital
pinMode(pulsador, INPUT); // El p1n 2 será una entrada digital
}
void loop()
{
valorPulsador=digitalRead (pulsador);
5
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
{
digitalWrite(led, HIGH); // Enciende el LED
delay(5000); // Pausa de 5 segundos
digitalWrite(led, LOW); // Apaga el LED
}
}
ESQUEMA La conexión del pulsador debe
hacerse conectando solo 2 patas
y en diagonal
Minipulsador CI 4 patas
ESQUEMA
Conexión a 5V y GND
int ir = 2;
int led = 8;
int irValor =0; //Creamos la variable "VALOR del sensor ir",
que comenzará en 0
void setup()
{
pinMode(led, OUTPUT);
pinMode (ir, INPUT);
}
void loop()
{
irValor= digitalRead (ir);
if (irValor == HIGH)
{
digitalWrite(led, HIGH);
delay(2000);
}
6
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
else
{
digitalWrite(ledPin, LOW);
}
}
V+
GND V+
OUT
GND GND
V+
6.- Encendido de un led rojo y un zumbador cuando alguien se acerca. Si no hay nadie se
encenderá un led verde
0º 90º 180º
Cuando programamos con arduino debemos incluir una librería llamada “servo.h”. Y creamos un
objeto “Servo” con el nombre que queramos dar a nuestro motor.
7
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
void setup() {
motor1.attach(8); //coloca el servo en el pin 8
pinMode(ir, INPUT); //define el pin del sensor ir como de entrada
}
void loop() {
valorIR = digitalRead (ir);
if (valorIR == HIGH)
{
motor1.write(180); //el motor gira 180º en un sentido
delay(2000);
}
else
{
motor1.write(0); //el motor gira -180º y se coloca en la
posición inicial
}
}
El ángulo de giro que programamos nos define el sentido de giro y la velocidad (0 - 180º ).
0 90 180
Motor parado Giro en el otro sentido a
Giro en un sentido a
(Hay casos en que hay que máxima velocidad
máxima velocidad
ajustar este valor, ej.100)
0-89 91-180
Giro en un sentido disminuyendo la Giro en el otro sentido aumentando la
velocidad al aumentar el número velocidad al aumentar el número
Cuando programamos con arduino debemos incluir una librería llamada “servo.h”. Y creamos un
objeto “Servo” con el nombre que queramos dar a nuestro motor.
8
TPR 3ºESO. Departamento de Tecnología. IES Nuestra Señora de la Almudena Mª Jesús Saiz
void setup() {
motor1.attach(8); //coloca el servo en el pin 8
pinMode(pulsador, INPUT); //define el pin del pulsador como de entrada
}
void loop() {
valorpulsador = digitalRead (pulsador);
if (valorpulsador == HIGH)
{
motor1.write(180); //el motor gira a velocidad máx en un sentido 5s
delay(5000);
motor1.write(100); //el motor para 2s
delay(2000);
motor1.write(0); //el motor gira a velocidad máx en el otro sentido 5s
delay(5000);
}
else
{
motor1.write(100); //el motor para
}
}
9..- Cambia el programa para que el motor gire 3 s a velocidad máxima. Luego gire otros 3 s a
velocidad lenta. Pare 2 s. Cambie el sentido de giro y gire a velocidad lenta durante 3 s. Luego gire 3
s a velocidad máxima. Y pare el motor.
10..- Cambia el programa para que al accionar un pulsador el motor gire 3 s a velocidad máxima y se
encienda un led verde. Y al accionar otro pulsador cambie el sentido de giro y gire a velocidad máxima
durante 3 s.