Lego Roller coaster

I always wanted to build a Lego Roller Coaster, but I only got to know the possibilities with the 31084 Pirate Roller Coaster set. This set triggered me to design my own roller coaster.

Source: Lego site

I decided to use two real-life roller coasters of the Bellewaerde theme park as inspiration:

The Boomerang

The Boomerang first launches you through a set of loopings. And just when you think you’re done, it launches you back… but this time in reverse. This reverse-idea is so cool that I’ve used it in my roller coaster design.

Source: Bellewaerde site

The Wakala

This brand new roller coaster has a moving track: You first pass a straight piece of track to end up over the water. But a bit later this straight piece swaps places with a turn, guiding you back to the starting point. I certainly wanted those moving tracks in my design (even though it turned out to be quite hard!)

Source: Bellewaerde site

The design

The ramp

For the ramp, I had a look at the 10261 Lego Roller Coaster set. I mainly followed the design of that set. I don’t own the set, but I’ve ordered most of the track parts separately via the Lego shop.

And as you can see, I copied the yellow-red design for the roller coaster cart from my favorite roller coaster: The Boomerang.

The moving track

The moving track contains a small chain to pull the cart until the button. Once the button is pressed, the complete track starts moving. And then you can continue the ride in reverse.

This was by far the hardest part of the design. I tried multiple ways to pull the cart, but in the end the chain worked best.

The full ride

Programming

I typically use MicroPython for programming my Mindstorms EV3. Here’s the coding:

#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
from time import sleep


# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.


# Create your objects here.
ev3 = EV3Brick()
chain_motor = Motor(Port.D) 
track_motor = Motor(Port.B)
touch_sensor = TouchSensor(Port.S1)

# Variables
normal_speed = 70 # % of max speed
high_speed = 85 # % of max speed
chain_rotating_time = 5 #seconds
wait_time_until_repeat = 20 #seconds


# Write your program here.
ev3.speaker.beep()

while True:

    #The chain keeps on running forward, until the button is pressed
    while not touch_sensor.pressed():
        chain_motor.dc(normal_speed)

    chain_motor.dc(0)

    #After a button press, the chain is stopped and the track moves
    track_motor.run_until_stalled(-180,then=Stop.HOLD,duty_limit=40)

    #The chain reverses at high speed for a couple of seconds
    chain_motor.dc(-1*high_speed)
    sleep(chain_rotating_time)
    chain_motor.dc(0)

    #The track goes back to its original position
    track_motor.run_until_stalled(180,then=Stop.HOLD,duty_limit=40)

    #after some time, it all starts over again
    sleep(wait_time_until_repeat)

In action

Here’s the roller coaster in action:

More projects

Check out my other Lego Mindstorms EV3 projects:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s