MINDSTORMS EV3 coreset

Maak een cruisecontrol-systeem

Ontwerp een cruisecontrol-systeem waarmee met een druk op de knop de snelheid van een voertuig verandert.

120+ min.
Gevorderd
Het derde tot zesde jaar
set-cruise-controle

Lesplan

Voorbereiden

  • Lees deze informatie voor jou als docent door.
  • Als je denkt dat het nodig is, bereid dan een les voor met behulp van het ‘Aan de slag’-materiaal in de EV3 Labsoftware of EV3-programmeerapp. Daardoor raken je leerlingen vertrouwd met LEGO® MINDSTORMS® Education EV3.

Activeren (30 min.)

  • Maak gebruik van de ideeën in het deel Start een gesprek hieronder om met je leerlingen een gesprek over dit project te voeren.
  • Leg het project uit.
  • Verdeel de klas in teams van twee leerlingen.
  • Laat de leerlingen enige tijd brainstormen.

Onderzoeken (30 min.)

  • Laat de leerlingen meerdere prototypes maken.
  • Moedig ze aan om zowel het bouwen als het programmeren uit te proberen.
  • Laat elk duo twee oplossingen bouwen en testen.

Uitleggen (60 min.)

  • Vraag de leerlingen om hun oplossingen te testen en de beste te kiezen.
  • Zorg ervoor dat ze hun eigen testtabellen kunnen maken.
  • Geef de teams wat tijd om hun project af te ronden en om gegevens te verzamelen voor een verslag over hun werk.

Uitbreiden (60 min.)

  • Geef de leerlingen wat tijd om hun definitieve verslag te maken.
  • Organiseer een bespreekmoment waarin elk team zijn resultaten presenteert.

Evalueren

  • Geef elke leerling feedback over zijn of haar prestaties.
  • Je kunt gebruikmaken van de meegeleverde suggestie voor evaluatierubrieken om dit eenvoudiger te maken.

Start een gesprek

De cruisecontrol in personenauto‘s is een systeem waarmee de snelheid van het voertuig automatisch wordt geregeld. Deze technologie lijkt heel modern, maar werd al in 1958 voor het eerst geïntroduceerd. Maar hoe werkt het?

set-cruise-controle

Moedig een actief brainstormproces aan.

Vraag de leerlingen na te denken over deze vragen:

  • Wat is het doel van cruisecontrol in een auto?
  • Hoe kan cruisecontrol een chauffeur helpen tijdens lange ritten?
  • Wat valt er nog te verbeteren aan cruisecontrol?
  • Hoe zou een met een knoppen bedienbaar cruisecontrol-systeem worden gebruikt door bestuurders?
  • Welke elementen moet je in het programma opnemen om een druk op een knop om te zetten naar een verandering van de motorsnelheid?

Geef de leerlingen wat tijd om deze vragen te beantwoorden.

Moedig de leerlingen aan om hun eerste ideeën op te schrijven en uit te leggen waarom ze kiezen voor de oplossing die ze voor hun eerste prototype gaan gebruiken. Vraag ze om te beschrijven hoe ze hun ideeën tijdens het project gaan evalueren. Daardoor hebben ze achteraf specifieke informatie die ze kunnen gebruiken voor het evalueren van hun oplossing en om te kunnen beslissen of deze al dan niet efficiënt was.

Bouwtips

Begin met het bouwen van het voertuig. De leerlingen kunnen een van de voorgestelde LEGO® MINDSTORMS® EV3 Rijbasismodellen gebruiken of zelf een model ontwerpen. Zorg ervoor dat ze in hun ontwerp knoppen opnemen die dezelfde functie hebben als de knoppen aan het stuur van een auto met cruisecontrol.

ev3-robot-color-sensor

** Het gebruik van twee tastsensoren**

Leg uit dat de leerlingen in de les van vandaag gebruik zullen maken van twee tastsensoren, om de snelheid van hun rijdende model te regelen en op peil te houden.

Programmeertips

De leerlingen gebruiken zeer waarschijnlijk een blok Variabele voor dit project. Een blok Variabele is een programmeerblok dat gegevens op kan slaan (d.w.z., tekst, een logische waarde, een numerieke waarde, of reeksen) die op ieder moment tijdens het uitvoeren van het programma kunnen worden overschreven.

Een variabele is een manier om waarden, die nog kunnen veranderen, in een programma op te slaan. De waarde die in een variabele is opgeslagen, kan telkens opnieuw worden overschreven zolang het programma wordt uitgevoerd.

De snelheid verhogen met programma Variabele

coding-07-01

Uitleg van het programma

  1. Start het programma.

  2. Maak een blok Variabele met de naam ‘Snelheid’ en voer een waarde van 0 in.

  3. Als de tastsensor wordt ingedrukt:

    a. lees de variabele met de naam ‘Snelheid’.
    b. tel ‘10’ op bij de leeswaarde.
    c. schrijf het resultaat in de variabele met de naam ‘Snelheid’.
    d. lees de variabele met de naam ‘Snelheid’.
    e. start motoren B en C met een snelheid die is ingesteld op de waarde opgeslagen in de variabele met de naam ‘Snelheid’ ANDERS (doe niets).

  4. Blijf stap 3a tot en met 3e steeds herhalen.

De snelheid vergroten en verminderen met Variabele

coding-07-02

Uitleg van het programma

  1. Start het programma.
  2. Maak een blok Variabele met de naam ‘Snelheid’, voer een waarde van 0 in en start twee taken.

Taak 1
3. Als tastsensor 1 wordt ingedrukt:

a. lees de variabele met de naam ‘Snelheid’.
b. tel ‘10’ op bij de leeswaarde.
c. schrijf het resultaat in de variabele met de naam ‘Snelheid’.
d. lees de variabele met de naam ‘Snelheid’.
e. start motoren B en C met een snelheid die is ingesteld op de waarde opgeslagen in de variabele met de naam ‘Snelheid’ ANDERS (doe niets).

  1. Blijf stap 3a tot en met 3e steeds herhalen.

Taak 2
5. Als tastsensor 2 wordt ingedrukt:

a. lees de variabele met de naam ‘Snelheid’.
b. trek ‘10’ af van de leeswaarde.
c. schrijf het resultaat in de variabele met de naam ‘Snelheid’.
d. lees de variabele met de naam ‘Snelheid’.
e. start motoren B en C met een snelheid die is ingesteld op de waarde opgeslagen in de variabele met de naam ‘Snelheid’ ANDERS (doe niets).

  1. Blijf stap 5a tot en met 5e steeds herhalen.

De snelheid vergroten en verminderen met Variabele en Weergeven
Laat de leerlingen gebruikmaken van het blok Weergeven om de snelheid van de rijdende basis weer te geven.

coding-07-03

Uitleg van het programma

  1. Start het programma.
  2. Maak een blok Variabele met de naam ‘Snelheid’, voer een waarde van 0 in en start drie taken.

Taak 1
3. Start Mijn blok ‘Versnelling’.

Taak 2
4. Start Mijn blok ‘Vertraging’.

Taak 3
5. lees de variabele met de naam ‘Snelheid’.
6. Geef de waarde opgeslagen in de variabele met de naam ‘Snelheid’ weer.
7. Blijf stappen 5 en 6 steeds herhalen.

DOWNLOAD VOORBEELDPROGRAMMA‘S15 KB, EV3 Labsoftware vereist

EV3 MicroPython programmeeroplossingen

De snelheid verhogen met een variabele (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)

De snelheid vergroten en verminderen met Variabele

#!/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)

De snelheid vergroten en verminderen met Variabele en Weergeven

#!/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)

Uitbreidingen

Taaluitbreiding

Optie 1
Laat de leerlingen voor de ontwikkeling van hun taalvaardigheid:

  • gebruikmaken van hun aantekeningen, schetsen, en/of foto's om hun ontwerpproces samen te vatten en een eindverslag te maken.
  • een video maken, waarin hun ontwerpproces te volgen is, vanaf hun eerste ideeën tot het voltooide project.
  • een presentatie maken over hun programma.
  • een presentatie maken waarin zij hun project vergelijken met realistische toepassingen van soortgelijke systemen en waarin ze beschrijven welke nieuwe uitvindingen kunnen worden gedaan op basis van wat ze hebben gemaakt.

Optie 2
In deze les hebben je leerlingen een interface voor snelheidsbesturing gemaakt. Individuen en instanties verzamelen snelheidsgegevens van voertuigen om verkeersomstandigheden vast te leggen en de kans op verkeersongevallen te verkleinen.
Laat de leerlingen voor de ontwikkeling van hun taalvaardigheid:

  • een betoog schrijven waarin ze het standpunt onderbouwen dat individuen en instanties die snelheidsgegevens van motorvoertuigen verzamelen om de verkeersveiligheid in de gaten te houden, het aantal verkeersongevallen daadwerkelijk kunnen verminderen
  • Daag ze uit om ook het tegenovergestelde standpunt in te nemen en te betogen dat met deze werkwijze de privacy betreffende persoonlijke gegevens ernstig wordt geschonden en laat ze bewijs aandragen om de sterke en zwakke kanten van beide standpunten te belichten

Rekenuitbreiding

In deze les hebben je leerlingen een interface voor snelheidsbesturing gemaakt. Mensen die een voertuig besturen, zijn in staat de verkeersomstandigheden in te schatten en hun snelheid daaraan aan te passen. Zelfrijdende voertuigen moeten hier echter in worden getraind.
Laat de leerlingen voor de ontwikkeling van hun rekenvaardigheid en inzicht in de kunstmatige intelligentie achter zelfrijdende voertuigen:

  • nadenken over de verschillende variabelen die ze zouden moeten onderzoeken om het verband tussen verkeersomstandigheden en het effect op het rijgedrag en de prestaties van een voertuig te bepalen
  • drie of vier van deze variabelen kiezen voor een wiskundig model over verkeersomstandigheden en laat ze een gegevenstabel maken om de verbanden tussen deze variabelen en de ideale snelheid van het voertuig weer te geven
  • variabelen in verkeersomstandigheden opstellen voor droge, natte en besneeuwde wegen, waarbij ze rekening houden met het feit dat zelfrijdende voertuigen gebruikmaken van het machine-learningproces om de verbanden tussen de variabelen in verkeersomstandigheden en de snelheid van het voertuig te bepalen en bij te werken. Laat ze vervolgens voorspellen wat het verband is tussen deze variabelen en een veilige snelheid (een variabele voor een droge weg zou de ruwheid van het wegdek kunnen zijn)

Evaluatiemogelijkheden

Observatiechecklist docent
Maak naar eigen inzicht een schaalverdeling, bijvoorbeeld:

  1. Gedeeltelijk uitgevoerd
  2. Volledig uitgevoerd
  3. Boven verwachting uitgevoerd

Gebruik de volgende criteria om de ontwikkeling van je leerlingen te beoordelen:

  • Leerlingen kunnen de belangrijkste onderdelen van een probleem identificeren.
  • Leerlingen kunnen zelfstandig een werkende en creatieve oplossing ontwikkelen.
  • Leerlingen kunnen hun ideeën duidelijk communiceren.

Zelfevaluatie
Geef de leerlingen de tijd om over hun oplossingen na te denken als ze eenmaal een aantal gegevens over de prestaties van hun oplossingen hebben verzameld. Help ze daarbij door vragen te stellen als:

  • Voldoet jullie oplossing aan de criteria uit het Ontwerpplan?
  • Is het mogelijk de robot nauwkeuriger te laten bewegen?
  • Welke oplossingen hebben anderen gebruikt?

Vraag de leerlingen om te brainstormen en twee manieren op te schrijven waarmee ze hun oplossingen zouden kunnen verbeteren.

Feedback van elkaar
Laat leerlingen elkaars werk evalueren en maak elk team verantwoordelijk voor de evaluatie van zowel hun eigen project als het project van anderen. Dit evaluatieproces kan de leerlingen helpen bij het ontwikkelen van vaardigheden voor het geven van opbouwende kritiek en bij het verbeteren van hun analysevaardigheden en het gebruik van objectieve gegevens ter ondersteuning van een argument.

Leerlingen die deze les leuk vonden, zijn misschien geïnteresseerd in een van de studierichtingen:

  • Business and Finance (ondernemerschap)
  • Productie en techniek (pre-engineering)

Ondersteuning voor de leraar

De leerlingen:

  • passen het ontwerpproces toe om een realistisch probleem op te lossen

HAVO/VWO Natuurkunde/NLT

A6.6 De kandidaat kan in contexten op basis van een gesteld probleem een technisch ontwerp voorbereiden, uitvoeren, testen en evalueren en daarbij relevante begrippen, theorie en vaardigheden en valide en consistente redeneringen hanteren.

VMBO NASK1

NASK1/K/3: natuurkundige apparatuur gebruiken, daarmee experimenten uitvoeren en de resultaten interpreteren en

  • de computer gebruiken om met meetprogramma’s experimenten uit te voeren en te interpreteren, om met applets en simulaties onderzoek te doen en om natuurkundige informatie te selecteren en te verwerken.
  • een onderzoek doen en een ontwerpproces uitvoeren en evalueren, daarbij ook rekening houdend met de veiligheid.

Materiaal voor de leerlingen

Leerlingenwerkblad

Download to view and share the student worksheet.

Download, bekijk of deel het leerlingenwerkblad als HTML-pagina of als PDF om zelf te printen.

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.