Set principal MINDSTORMS EV3

Crear un Sistema de control de velocidad

Diseñar un sistema de control de velocidad de crucero que cambie la velocidad de un vehículo al tocar un botón.

120+ min.
Intermedio
Ciclo superior de primaria
set-cruise-controle

Plan de la lección

Preparar

  • Lea este material para el profesor.
  • Si lo considera necesario, prepare una lección con el material de primeros pasos que hay en la Aplicación de programación EV3 o el Software de Laboratorio EV3. Así, los alumnos pueden ir familiarizándose con LEGO® MINDSTORMS® Education EV3.

Despertar el interés (30 min.)

  • Aproveche las ideas de la sección Debate abierto para animar a los alumnos a hablar sobre temas relacionados con este proyecto.
  • Explique el proyecto.
  • Ponga a los alumnos en parejas.
  • Deles tiempo para que piensen en todas las ideas que se les ocurran.

Explorar (30 min.)

  • Pida a los alumnos que creen varios prototipos.
  • Anímeles a explorar tanto el montaje como la programación.
  • Haga que cada pareja monte y pruebe dos soluciones.

Explicar (60 min.)

  • Pida a los alumnos que prueben sus soluciones y elijan la mejor.
  • Asegúrese de que son capaces de crear sus propias tablas de prueba.
  • Deje tiempo para que cada equipo termine su proyecto y reúna datos para documentar su trabajo.

Desarrollar (60 min.)

  • Dé a los alumnos tiempo para que preparen sus informes finales.
  • Organice una sesión en la que cada equipo presente sus resultados.

Evaluar

  • Valore el trabajo que ha hecho cada alumno.
  • Puede usar las rúbricas de evaluación facilitadas para simplificar el proceso.

Debate abierto

El control de velocidad de crucero en los coches de particulares es un sistema que controla automáticamente la velocidad del vehículo. Aunque parezca tecnología moderna, esta función se presentó por primera vez en 1958. ¿Cómo funciona?

set-cruise-controle

Anime a los alumnos a hacer una lluvia de ideas.

Pídales que se planteen estas preguntas:

  • ¿Para qué sirve un control de velocidad de crucero en un coche?
  • ¿Cómo ayuda el control de velocidad de crucero al conductor en viajes largos?
  • ¿Cómo podría mejorarse aún más el control de velocidad de crucero?
  • ¿Cómo podría un conductor usar un sistema de control de velocidad de crucero con botones táctiles?
  • ¿Qué elementos hay que incluir en el programa para que al presionar un botón cambie la velocidad del motor?

Dé a los alumnos tiempo para que contesten estas preguntas:

Anímeles a que documenten sus ideas iniciales y expliquen por qué han elegido la solución que van a usar para hacer su primer prototipo. Pídales que describan cómo van a evaluar sus ideas durante el proyecto. Así, mientras revisan y comprueban su trabajo, tendrán información específica que pueden usar para evaluar su solución y decidir si es o no efectiva.

Consejos de montaje

Lo primero es montar un vehículo. Los alumnos pueden usar cualquiera de los modelos sugeridos para la base de conducción LEGO® MINDSTORMS® EV3 o diseñar el suyo propio. Compruebe que incluyen botones similares a los que se pueden encontrar en el volante de un coche con control de velocidad de crucero.

ev3-robot-color-sensor

Uso de dos sensores de contacto

Explique a los alumnos que, en la lección de hoy, van a usar dos sensores de contacto para controlar y mantener la velocidad de su modelo de base de conducción.

Consejos de programación

Lo más probable es que los alumnos usen un Bloque Variable en este proyecto. Un Bloque Variable es un bloque de programación que puede almacenar datos (es decir, texto, lógicos, un valor numérico o matrices), que se pueden sobrescribir en cualquier momento mientras se está ejecutando el programa.

Una variable es una forma de guardar valores actualizables en un programa. Se puede sobrescribir repetidas veces el valor guardado en una variable, siempre y cuando se esté ejecutando el programa.

Aumentar Velocidad con Programa Variable

coding-07-01

Explicación del Programa

  1. Iniciar el programa.
  2. Crear un Bloque Variable llamado «Velocidad» e introducir un valor 0.
  3. Si el Sensor de contacto está presionado:

    a. Leer la variable «Velocidad».
    b. Añadir «10» al valor leído.
    c. Escribir el resultado en la variable «Velocidad».
    d. Leer la variable «Velocidad».
    e. Poner en marcha los motores B y C estableciendo una velocidad igual al valor guardado en la variable «Velocidad» ELSE (no hacer nada).

  4. Repetir los pasos 3a-3e para siempre.

Aumentar y Reducir Velocidad con Variable

coding-07-02

Explicación del Programa

  1. Iniciar el programa.
  2. Crear un Bloque Variable llamado «Velocidad», introducir un valor 0 e iniciar dos tareas.

Tarea 1
3. Si el Sensor de contacto 1 está presionado:

a. Leer la variable «Velocidad».
b. Añadir «10» al valor leído.
c. Escribir el resultado en la variable «Velocidad».
d. Leer la variable «Velocidad».
e. Poner en marcha los motores B y C estableciendo una velocidad igual al valor guardado en la variable «Velocidad» ELSE (no hacer nada).
4. Repetir los pasos 3a-3e para siempre.

Tarea 2
5. Si el Sensor de contacto 2 está presionado:

a. Leer la variable «Velocidad».
b. Restar «10» al valor leído.
c. Escribir el resultado en la variable «Velocidad».
d. Leer la variable «Velocidad».
e. Poner en marcha los motores B y C estableciendo una velocidad igual al valor guardado en la variable «Velocidad» ELSE (no hacer nada).
6. Repetir los pasos 5a-5e para siempre.

Aumentar y Reducir Velocidad con Variable y Pantalla
Pida a los alumnos que usen el Bloque Pantalla para mostrar la velocidad de la base de conducción.

coding-07-03

Explicación del Programa

  1. Iniciar el programa.
  2. Crear un Bloque Variable llamado «Velocidad», introducir un valor 0 e iniciar tres tareas.

Tarea 1
3. Iniciar Mi bloque «Aceleración».

Tarea 2
4. Iniciar Mi bloque «Desaceleración».

Tarea 3
5. Leer la variable «Velocidad».
6. Mostrar el valor guardado en la variable «Velocidad».
7. Repetir los pasos 5 y 6 para siempre.

DESCARGAR PROGRAMAS DE MUESTRA15 KB, precisa Software de Laboratorio EV3

Soluciones de programa MicroPython EV3

Aumentar Velocidad con Variable

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
while True:

    # Check whether the Touch Sensor is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Aumentar y Reducir Velocidad con Variable

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Aumentar y Reducir Velocidad con Variable y Pantalla

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor, TouchSensor
from pybricks.parameters import Port, Stop, Button
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Set up the Touch Sensor on Port 1.  It is used to increase the speed
# of the robot.
increase_touch_sensor = TouchSensor(Port.S1)

# Set up the Touch Sensor on Port 2.  It is used to decrease the speed
# of the robot.
decrease_touch_sensor = TouchSensor(Port.S2)

# Initialize the "old_speed" variable to "None."  It is used to check
# whether the speed variable has changed.  Setting it to "None" ensures
# this check will be "True" when the speed variable is initialized with
# a value.
old_speed = None

# Initialize the speed variable to 0.
speed = 0

# This is the main part of the program.  It is a loop that repeats
# endlessly.
#
# First, increase the speed variable if Touch Sensor 1 is pressed.
# Second, decrease the speed variable if Touch Sensor 2 is pressed.
# Finally, the robot updates its speed if the speed variable was
# changed, and displays it on the screen.
#
# Then the loop starts over after a brief pause.
while True:

    # Check whether Touch Sensor 1 is pressed, and increase the speed
    # variable by 10 mm per second if it is.
    if increase_touch_sensor.pressed():
        speed += 10

    # Check whether Touch Sensor 2 is pressed, and decrease the speed
    # variable by 10 mm per second if it is.
    if decrease_touch_sensor.pressed():
        speed -= 10

    # If the speed variable has changed, update the speed of the robot
    # and display the new speed in the center of the screen.
    if speed != old_speed:
        old_speed = speed
        robot.drive(speed, 0)
        brick.display.clear()
        brick.display.text(speed, (85, 70))

    # Wait 200 milliseconds before starting the loop again.
    wait(200)

Extensiones

Extensiones de lengua castellana

Opción 1
Para incluir el desarrollo de habilidades en lengua castellana, anime a los alumnos a:

  • Usar su trabajo escrito, bocetos o fotos para resumir su proceso de diseño y crear un informe final.
  • Crear un vídeo que muestre su proceso de diseño, desde sus ideas iniciales hasta su proyecto final.
  • Crear una presentación de su programa.
  • Hacer una presentación que relacione su proyecto con aplicaciones reales de sistemas similares y describa nuevos inventos que podrían realizarse tomando como base lo que han creado.

Opción 2
En esta lección, los alumnos han creado una interfaz de control de velocidad. Personas y organismos recogen datos de velocidad de los vehículos para informar sobre las condiciones del tráfico y reducir la posibilidad de accidentes.
Para incluir el desarrollo de habilidades en lengua castellana, anime a los alumnos a:

  • Escribir a favor del argumento de que, si personas individuales u organismos recogen datos de velocidad de los vehículos para supervisar la seguridad del tráfico, ello podría reducir de manera eficaz la frecuencia de los accidentes de tráfico
  • Aventurarse a abordar el argumento opuesto que afirma que tal práctica es una violación importante de la privacidad de los datos personales y a utilizar pruebas específicas para ponderar los puntos fuertes y débiles de estos argumentos contrapuestos

Actividades adicionales de matemáticas

En esta lección, los alumnos han creado una interfaz de control de velocidad. Los conductores humanos son hábiles en la lectura de las condiciones de la carretera y adaptan su velocidad en consecuencia. Sin embargo, los sistemas sin conductor necesitan entrenamiento para ello.
Para incorporar el desarrollo de habilidades matemáticas y explorar la inteligencia artificial en que se basan los coches sin conductor, anime a los alumnos a:

  • Poner en consideración las diversas variables que deben examinar para determinar la relación entre las condiciones de la carretera y su efecto en el manejo y rendimiento de un vehículo
  • Escoger tres o cuatro de estas variables para incluirlas en un modelo de condiciones de la carretera y crear una tabla de datos para organizar las relaciones entre estas variables y la velocidad ideal del vehículo
  • Teniendo en cuenta que los coches sin conductor utilizan el procedimiento de aprendizaje automático para identificar y actualizar las relaciones entre las variables de condiciones de la carretera y la velocidad del vehículo, identificar variables de condiciones de la carretera para terrenos secos, húmedos o nevados y, a continuación, predecir la relación entre tales variables y las velocidades seguras (por ejemplo, una variable de terreno seco puede ser cuánto de seco esté)

Opciones de evaluación

Lista de comprobación de la observación del profesor
Cree una escala que se ajuste a sus necesidades, por ejemplo:

  1. Parcialmente superado
  2. Totalmente superado
  3. Superado con creces

Use estos criterios de logro de resultados para evaluar el progreso de los alumnos:

  • Los alumnos son capaces de identificar los elementos clave de un problema.
  • Los alumnos son autónomos a la hora de desarrollar una solución creativa que funciona.
  • Los alumnos son capaces de expresar sus ideas con claridad.

Autoevaluación
Cuando los alumnos hayan reunido varios datos sobre el funcionamiento, deles tiempo para que analicen sus soluciones. Ayúdeles planteando preguntas como:

  • ¿Cumple tu solución con los criterios de Presentación del diseño?
  • ¿Puedes hacer que los movimientos del robot sean más precisos?
  • ¿Cómo han resuelto otros este problema?

Pida a los alumnos que hagan una lluvia de ideas y documenten dos formas de mejorar sus soluciones.

Comentarios de los compañeros
Facilite un proceso de revisión con los compañeros en el que cada grupo tenga que evaluar sus propios proyectos y los de otros. Este proceso de revisión puede ayudar a los alumnos a desarrollar habilidades de crítica constructiva y mejorar sus habilidades de análisis y capacidad de usar datos objetivos para justificar un argumento.

Vínculos con carreras profesionales

Es posible que a los alumnos que han disfrutado con la lección les interese explorar estas carreras profesionales:

  • Empresariales y Economía (emprendimiento)
  • Fabricación e Ingeniería (pre-ingeniería)

Apoyo docente

Los alumnos van a:

  • Usar el proceso de diseño para resolver un problema del mundo real

ANEXO I Materias del bloque de asignaturas troncales
Ciencias Aplicadas a la Actividad Profesional. 4º ESO

  • Bloque 3. Investigación, Desarrollo e Innovación (I+D+i), pg.57
  • Bloque 4. Proyecto de investigación, pg.58

Física y Química. 2º, 3º y 4º ESO, 1º y 2º Bachillerato

  • Bloque 1. La actividad científica, pg.90, 95, 100 y 105
  • Bloque 4. El movimiento y las fuerzas, pg.93 y 98

Lengua Castellana y Literatura. 4º ESO, 1º y 2º Bachillerato

  • Bloque 1. Comunicación oral: escuchar y hablar, pg.197, 203 y 207
  • Bloque 2. Comunicación escrita: leer y escribir, pg.199, 204 y 208

Matemáticas orientadas a las enseñanzas académicas y aplicadas. 3º y 4º ESO

  • Bloque 1. Procesos, métodos y actitudes en matemáticas, pg.223, 227, 231 y 236
  • Bloque 4. Funciones, pg.226, 229, 234 y 238

Matemáticas I. y II. 1º y 2º Bachillerato

  • Bloque 1. Procesos, métodos y actitudes en matemáticas, pg.246 y 251

Tecnología. 4º ESO

  • Bloque 1. Tecnologías de la información y de la comunicación, pg.284
  • Bloque 3. Electrónica, pg.285
  • Bloque 4. Control y robótica, pg.285
  • Bloque 6. Tecnología y sociedad, pg.285

ANEXO II Materias del bloque de asignaturas específicas
Tecnología Industrial I. 1º Bachillerato

  • Bloque 1. Productos tecnológicos: diseño, producción y comercialización, pg.359
  • Bloque 3. Máquinas y sistemas, pg.360

Tecnología Industrial II. 2º Bachillerato

  • Bloque 2. Principios de máquinas, pg.360
  • Bloque 3. Máquinas y sistemas, pg.360
  • Bloque 3. Sistemas automáticos, pg.361
  • Bloque 4. Circuitos y sistemas lógicos, pg.361
  • Bloque 5. Control y programación de sistemas automáticos, pg.361

Tecnologías de la Información y la Comunicación. 4º ESO

  • Bloque 3. Organización, diseño y producción de información digital, pg.364
  • Bloque 5. Publicación y difusión de contenidos, pg.364

Tecnologías de la Información y la Comunicación I. 1º Bachillerato

  • Bloque 3. Software para sistemas informáticos, pg.365
  • Bloque 5. Programación, pg.365

Tecnologías de la Información y la Comunicación II. 2º Bachillerato

  • Bloque 1. Programación, pg.366
  • Bloque 2. Publicación y difusión de contenidos, pg.366

Material para los estudiantes

HOJA DE TRABAJO PARA EL ALUMNO

Download to view and share the student worksheet.

Descargar, ver o compartir la Hoja de trabajo para estudiante, bien en una página HTML o en un PDF para imprimir.

Compartir con:

Google ClassroomGoogle Classroom
LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2020 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.