Category Archives: Technology

A Modernized Bridge Design Contest


Modernizing An Old Classic

We have just completed the second project in the Academy for the 2014-15 school year. It was a huge success! This project takes a classic physics project and “upgrades” it by incorporating modern engineering design technology and fabrication techniques.

We started with a great project that is now available online through Engineering Encounters. This was a project that was originally published by Stephen J. Ressler of the United States Military Academy. It is a rigorous approach to designing and building bridges from file folders:

Its a great project with an incredible set of resources, background information, and step by step instructions. Unlike less rigorous and involved bridge design projects (using toothpicks for example), this project has the students building compression members (beams) and tension members (cords) and gussets to better model real world designs and to give the students the opportunity to learn and make decisions about which members to use in different parts of their own designs.

The only issue that we had with this project is that it requires the rather tedious process of having students trace out the unfolded beam designs onto file folder material and then use scissors and  blades to cut out each beam and cord. But we have a laser cutter! There had to be a way to incorporate both 3D CAD design and our laser cutter in order to modernize this process. We also knew that Autodesk Inventor had some really amazing tools for analyzing design structures.

From Sheet Metal To Manila Folders

Autodesk Inventor has an amazing set of tools for designing sheet metal parts. Using these tools, an engineer can construct 3D models made of folded metal parts made from just about any thickness of metal stock. Once you have designed the folded metal part, Inventor will create a flat pattern design for you that you could then send to a CNC plasma cutter to cut from sheet metal stock. You would then fold the part up manually and you would have your folded part.

Inventor gives you the ability to custom define the thickness of your stock, and some of the parameters around how it can be bent. We defined our stock to be as thick as manila folder paper. The next step is a bit tricky, but with the help of a great video I came across from Rob Cohee, we were able to define custom folded paper beam stock that the students could then use to build out their frames. Once again, Inventor has an amazing set of tools for defining structural frames (called The Frame Generator) that can then be populated with any kind of structural beam. You can also define your own structural beams that can be used to populate your frame.

I have included a video below that we use with the students to help guide them through this process:

Using the frame generator tool in Inventor also allows the student to miter and trim the beam members, which allows the students to focus on design rather than getting lost in the time consuming process of calculating the cut angles. The following video shows you how this can be done:

Once the students had designed the bridges, it was time to prepare the flat patterns and have the laser cutter do the work of cutting them out.

Fold, Glue, Repeat. (Some Assembly Required)


The students prepare their flat pattern cut-outs for the laser cutter and then you let the laser “rip”! Its awesome to sit back and watch this machine cut. I never get sick of watching it! Having the students do this would take SO much longer, the cut parts would be less accurate, and as all CTE teachers know, one of the most dangerous tools in the shop is an Exacto blade.


Some might argue that the “manual” process of cutting all these beams out by hand is “good for the students”, but we feel that saving time here allows us to use that time in other areas, such as virtual testing.  Before the students get to build their design, we ask them to use Inventor’s frame analysis tools to help them analyze potential weaknesses in their designs. The following video shows just how amazing this tool is:

Once the students have done their analysis and cut their construction members, its time for folding and gluing, and folding, and gluing, and … At this point our project does not differ from the Engineering Encounters project. The students use a sheet of paper (actually two 11 x 17 sheets) with an elevation view (printed from Inventor as a CAD drawing) glued to a board as a guide for assembling the beams, cords and gussets:



This process goes relatively quickly as the students have done all the prep work to make sure that the pieces all fit together. Once again, this really demonstrates how modern technology can allow the students to focus their attention on design.

To Break Or Not To Break

Once the bridges are assembled, its time to test them out. The performance metrics for the contest are not actually based on the strongest bridge but rather a more realistic approach. We have attached a monetary value to each beam, gusset and cord. The bridges are then tested to a set value – the required load. The bridge that holds that load and is “manufactured” least amount of money is then given the highest marks.

Once the bridge has been tested at the required load, we then give the students the choice to see just how much the bridges can hold before catastrophic failure. Most students (encouraged by both peers and staff!) decide to take their bridge to the limit.

Its always a fun way to end the project!

Simulating Planetary Motion (Using Code!)

Simulating Newton’s Law of Universal Law of Gravity

Interactive simulations (like those created by the University of Colorado – PhET) can be really nice for impressing students, and giving them a way to explore the dynamics of a simulation. If incorporated into a lesson well, they can add to the active learning process. The question that I always struggle with though is “are the students learning how the simulation works, or are they learning how nature works?”

I have a nagging feeling that the students would possibly get more out of being able to see the simulation source code, specifically the rules of behavior of the simulation, and then through “tweaking” the code, see how those rules govern behavior. I would like to develop curriculum that would allow my students more opportunities to explore the code “behind” the simulations. This presents a few challenges that have been identified by other great physics educators, and if you are thinking about doing the same thing – I would suggest reviewing their insights. I include a quote from Ruth Chabay’s brief, but very interesting article on this topic:

To integrate computation, especially programming, into an introductory course, it is necessary to minimize the amount of non-physics related material that must be taught. To do so it is necessary to teach a minimal subset of programming constructs; employ an environment and language that are easy to learn and use; ensure that program constructs match key physics constructs; provide a structured set of scaffolded activities that introduce students to programming in the con- text of solving physics problems

This was my first attempt at doing just this, and I had some success and realized that I have some work to do.

Which Code?

A popular programming language in the Physics Modeling community is VPython. I have chosen to use a different language to use called Processing. There are reasons I chose this language, but I am sure there are reasons one would choose VPython (or other languages). At this point, I have not had the opportunity to work with VPython, so this post will not attempt to compare Processing to other languages. Perhaps I will do so in the future…

Here are some general reasons why I like Processing:

  1. It’s free and open source.
  2. Because its built on a visual programming interface, its really easy for the students to create visual content on the screen, and it is very easy to create visual animations due to the embedded “draw” loop.
  3. The official website has great examples and tutorials. It is full of great code samples and quick tutorials. You can loose yourself for hours (or days!) just having fun exploring the examples and tutorials.
  4. The IDE is simple and very similar to the Arduino IDE, so if you plan on doing any Arduino programming, the similarity is nice for the students.
  5. There is a nice vector library for doing vector operations (.add, .mult, .norm, .dot, etc.)
  6. Its object oriented so that you can have the added benefit of teaching important programming concepts – though this might be why some people might not like it.

The Simulation

The simulation that the students were introduced to was a simulation that modeled Newton’s Law of Universal Gravitation. The students were given some instructions on the basic structure of the program, and I made sure that there was some guiding comments embedded in the code. This program was inspired/adapted from a similar program created by Daniel Shiffman who has also written an amazing book on simulating nature through code called Nature of Code.

The program defines two classes. First, there is the parent class called Particle. This class defines some basic attributes like location, velocity and acceleration as well as mass. It also has some basic functions that allow it to move and allow it to respond to a force. The second class is the child class called Planet. It can do everything that a Particle can (because it inherits from the Particle class), but it can also exert an attractive force on other Planets.  Here is the code below:

/* A parent class for all moving particles
class Particle {
  PVector location;
  PVector velocity;
  PVector acceleration;
  float mass;

  Particle(float x, float y, float m) {
    mass = m;
    location = new PVector(x, y);
    velocity = new PVector(0, 0);
    acceleration = new PVector(0, 0);
  void applyForce(PVector force) {
    // Newton’s second law at its simplest.
    PVector f = PVector.div(force,mass);

  void move() {

 This class defines an object that behaves like a planet.
 Planet objects extend Mover objects, so they can move. They
 also can attract other planet objects.
class Planet extends Particle {

  float size;
  float G = 1;

  // To create a planet, you need to supply coordinates, mass, and size
  Planet(float x, float y, float m, float s) {
    super(x, y, m);
    size = s;

  // This function allows a planet to exert an attractive force on another planet.
  PVector attract(Planet p) {

    // We first have to figure out the direction of the force
    // This creates a unit vector for the direction
    PVector force = PVector.sub(this.location, p.location);
    float distance = force.mag();
    distance = constrain(distance,size + p.size,500);

    // This is where we use Newton's Law of Universal Gravitation!
    // The stength of the attraction force is proportional to the
    // product of the mass of this planet and the mass of the other planet
    // as well as the value of G. It is also inverseley proportional to
    // the distance squared.
    float strength = (G * mass * p.mass) / (distance * distance);
    // To get the final force vector, we need to 
    // multiply the unit vector by the scalar strength

    // Return the force so that it can be applied!
    return force;
  // Just displays the planet as a circle (ellipse)
  void display() {
    fill(255, 100);
    ellipse(location.x, location.y, size/2, size/2);

  This program simulates the gravitational interaction between planet objects
Planet planet1;
Planet planet2;

void setup() {
  // Inputs for each planet:
  // (x, y, mass, radius)
  planet1 = new Planet(width/2,height/4,6000,60);
  planet2 = new Planet(width/2,height/1.25,6000,60);
  // This is where you can change the initial velocities of the planets.
  planet1.velocity.x = 0;
  planet1.velocity.y = 0;
  planet2.velocity.x = 0;
  planet2.velocity.y = 0;

void draw() {
  // f1 is a force vector that is created by calling the planet's attract function
  PVector f1 = planet1.attract(planet2); 
  // Now apply that force on the other planet.
  // Now deal with the opposite force pair
  PVector f2 = PVector.mult(f1, -1);
  // Allow the planets to now move.
  // Display the planets

Experimenting With The Code

The students could change the initial values of the planets, such as the starting positions, the masses and radii by changing the input values of these two lines of code:

planet1 = new Planet(width/2,height/4,6000,60);
planet2 = new Planet(width/2,height/1.25,6000,60);

The planets initial velocities could also be modified by changing the values assigned in these four lines of code:

planet1.velocity.x = 0;
planet1.velocity.y = 0;
planet2.velocity.x = 0;
planet2.velocity.y = 0;

The code that actually guides the strength of the gravitational attraction between the two planets is actually very simple. This is the magnitude of the force as defined by Newton’s Law of Universal Gravity in code:

float strength = (G * mass * p.mass) / (distance * distance);

There is some slightly complicated code that controls the direction of the force and how that force is then applied to the planet object’s state of motion, but I didn’t have the time to explain this, which was a bit disappointing (see below).

For The Future

I am currently really interested in incorporating programming into the academy program, but have found myself a bit intimidated by the challenges identified by Ruth Chabay. The most significant challenge is time:

In an already full introductory physics curriculum, there is little or no time to teach major programming skills. Students who are new to programming are also new to the process of debugging; teaching debugging strategies requires even more time…Working on programming activities only once a week in a lab or recitation section may not be adequate to keep knowledge of syntax and program structure fresh in the students’ minds.

I plan on taking some time this summer to see how I could integrate computer programming more significantly into the curriculum without causing the learning of Physics to suffer – that would of course defeat the purpose!

We Have Lift Off!

15414703973_b0258a08ca_h  15846865828_b08d8515cd_h 16033503742_be978fd9ca_h

This is a follow up post to Modeling A Rocket’s Journey – A Synthesis where I described how the students in the first year program were engaged in creating a predictive report for their model rockets. I want to emphasize that these model rockets were not kits. Each rocket was designed using 3D CAD software, and each component was either fabricated from raw material, or was created from material that was not intended for use in model rocketry. The only exception to this is the actual rocket motor.

The next step was to launch the rockets and have the altimeter payload collect altitude data.

Launch Conditions – A Bit Soggy

Unfortunately the week of our scheduled launch happened to be a week of some pretty hefty rains. We rescheduled the launch twice before finally accepting the soggy launch conditions. With umbrellas and rain jackets, we trudged out to the baseball diamond and got to work setting up for the launch. We had some minor difficulties in the wet weather, but eventually had a very successful launch day.

Most of the rockets were able to launch and deploy their valuable payload – the Pnut Altimeter.


The students seemed very excited to finally see the rockets launch, and to see the successful deployment of the parachutes. Although we all got a little wet and muddy, we had a great time!

The Altimeter Data

The altimeters use a small barometric pressure sensor to collect altitude data (the altimeters also contain a small temperature sensor and voltage sensor). The altitude is recorded in feet every .05 seconds. Here is an example of one rocket’s recorded flight data:


The students were then asked to use the data to create a comparative analysis report. I will detail how the assignment was set up and also discuss how the students performed on this assignment. That will be for another post.

I want to also thank Mr. Kainz for his amazing photos that are displayed here.

Testing Motors For The Solar Dragster Race

Torque/Speed Curves

In this post I’m going to describe our attempt to measure the power curve for the DC motors used in the Solar Dragster race this year. I’m going to be honest, our efforts weren’t really that successful, but I can at least say that I learned some things that might help for next year, and I think the students were able to do some authentic device testing – a part of being an engineer.

Last year I was a bit concerned that the DC motors that we were using in the Solar Dragster Race were not actually outputting the same power. I wanted to devise a way to measure the motor power, and then have each team do their own analysis. I wanted the students to do this without understanding the electrical power parameters involved because we were at this point only looking at motors as being a black box that gets energy from a source and transfers that energy into a rotational device – i.e. an axle, then to a gear, then to another axle, and finally to a wheel. I looked into getting a torque sensor, but quickly found out that these cost a fortune!

I came across this interesting website from MIT, which was a nice resource for the theory about DC motor performance. The site does a nice job in explaining torque/speed curves, and how the graph of torque vs angular speed is essentially linear for DC motors. That meant that all the students really needed to do was to measure stall torque and the no load speed of their motors and then we would have the torque/speed curve. The website identifies a device that they custom built for testing motors, and it looks interesting, but I didn’t have time to reverse engineer what they had built and unfortunately the images and videos aren’t clear enough to easily understand how the device works – something perhaps for summer tinkering…

One of the issues with the little DC motors that you buy is that the arbor is really small, and it has no index, so its really hard to attach anything. Generally, you have to go with a friction fitting, and I was worried that doing a stall torque test was going to be difficult. Mr. Holt and I designed and printed out a little lever arm to attach to the motors. This little arm could then be attached to a force meter to measure the stall torque and then also used to help measure the rotational velocity using a Photogate. The final “test-bench” looked like this:

Torque-speed test bench

The motors were clamped to a lab stand that was then placed so that the little lever arm would rotate and block the Photogate laser as it spun. This is how the students measured the no load speeds. Then they attached a string to the little hole in the arm, and then attached this to a force meter to get the stall torque. All the motors were tested with essentially the same power source – two AA batteries.

I then had the students share their data using a Google Spreadsheet and I compiled the data – here it is on Plotly:


There is obviously some variability in the motor performance, but its hard to tell if any of the motors give a distinctive advantage over the others because I suspect that the data is not that reliable unfortunately. I do suspect that the angular speed data might be inaccurate due to the fact that we were getting some very differing results from the Photogate. Although we made the sampling rate as rapid as possible, I still am not confident that the Photogate was able to read the blocking of the laser accurately – the motors spin VERY fast (upwards of 5000 RPM’s when not loaded). I’m also not sure if the data then could then be used in any instructive way to help students make design decisions about their dragsters.

Although this may seem like a failure, it did allow the students to identify at least two motors that we knew were malfunctioning, so we were able to swap those out before the competition.

For Next Year

I think at this point I would want to make some changes to this activity. Although it was somewhat helpful in giving the students a direct interaction with data associated with the performance of a DC motor, and how that performance is calculated at the product of the torque and angular velocity, I’m not sure that the activity supplied data that was good enough to then use as an input factor in the competition. For example, I didn’t feel confident about allowing students to use the calculated maximum input power as a scaling factor for their dragster race time.

Perhaps next year, we can find the funds to purchase a high precision, digital torque meter, or find the time and money to build our own “analog” torque/speed meter like the one that MIT designed. All in all, I’d say this activity was partially successful.

Building The Net Torque Model – Part 2

Investigating An Unbalanced Net Torque

We started by looking at the fact that a disk experiencing a net unbalanced torque also experienced a change in rotational or angular velocity. The students used a rotary motion sensor to measure the angular position and the angular velocity of a disk experiencing a constant torque and the students immediately recognized the similarity between a particle experiencing constant linear acceleration and a rigid body experiencing constant angular acceleration.


So, the natural next step in our investigation was to determine the causal relationship between a net unbalanced torque and the angular motion state of a rigid body. The students discussed how we might set up an investigation that would help us understand this relationship, and I helped guide them towards a final investigation design where we used a rotary motion sensor attached to the wooden disk we had used in a previous investigation.

The rotary sensors from Vernier are rather expensive, but also quite nice. They come with a plastic spindle with three different pulley radii. The only issue that I have with these is that they do not include a useful screw for attaching objects to the pulley – they expect you to purchase their completely over priced accessory kit. I don’t suggest this. Instead, you can create your own and then use a 6/32 screw to attach them to the pulley – just be careful not strip the threads!


Working off a similar investigation when studying the causal relationship between a net unbalanced force and linear acceleration, the students recognized that we needed to include a force sensor for measuring the applied force. The students then had LoggerPro plot the points for the calculated torque (using a calculated column) and the measured angular acceleration.  The data isn’t super clean, but its good enough for the students to conclude that the relationship is most likely linear.

Dimensional Analysis – Inferring Rotational Inertia

I was amazed to discover that some students in the class set off to understand what the units of the slope could be reduced to. They immediately saw that the proportional constant (slope) included kg (mass) but that wasn’t all. After some work, the class had determined that the units for the slope were kg * m^2.

This led to a qualitative discussion about the inertia of rotating objects. We discussed hoops and disks primarily, and the class seemed to agree that the units made sense. Although I didn’t have any hoop-disk sets like the ones you can buy from various vendors, we did perform some thought experiments around mass distribution and rotation, but we needed to be sure that we were on the right track.

A Better Variable Inertia Disk

So last year I was looking for an investigation that would really help the students discover the importance of mass distribution for a rotating object. Reading the material on the AMTA website regarding the unit on rotational motion, the researches stressed the importance of connecting mass distribution to the rotational inertia. I found this variable inertia disk from Fischer Scientific and decided to purchase it. I commend these guys on making this, but frankly I decided that I could make a better one.

My colleague and I set about redesigning these disks. The improvements we made included a) better compartments for the metal marbles so that they didn’t move around, b) an index and lip so that the two sides fit more securely together, and c) more compartments so that we can test more mass configurations. After we made our designs, we used our Makerbot 3D printer to print out ten copies of the disks.

IMG_0707 IMG_0708

With these disks attached to the rotary motion sensors, the students were able to confirm that although the total mass of the disk did not change, the angular acceleration declined as the mass was moved outward from the radius of rotation. This was more of a qualitative investigation, but I think the students were able to clearly see how moving the mass farther from the axis affected the rotational inertia of the disk.

Deploying The Model (So far)

Now that the students had built a predictive model that described the quantitative relationship between rotational inertia, angular acceleration and net torque, they were ready to test it.

We returned to the investigation setup with the disk, but this time attached a hanging mass to the string and they attempted to predict the angular acceleration. The students immediately made the mistake (as I thought they might) in considering only the disk in the system. This gave me a chance to review with them the following process:

  1. Identify the system schema (now it includes things that can rotate!)
  2. Draw your force vector (free body/particle) diagrams and now also your force-moment arm (rigid body) diagrams.
  3. Write the summation of forces AND the summation of torques for the system.
  4. Do some algebra.

The trickiest part to figuring this out is getting the signs right due to interaction pairs and making sure that they agree. I ask the students to start with a diagram and then go through and label each force + or – by picking a force and then finding its partner and then making sure that the rest of the force directions agree.

Once they were able to get a prediction that we all agreed seemed correct, they ran the experiment. The class was able to predict the angular acceleration within about 10% error. We discussed the possible reason for discrepancy which led to some interesting discussions around modeling the rotational inertia of the attachment screw and washer, and also the frictional forces at work.

The students were pretty convinced that the model worked, and so next stop – energy and momentum in systems with rotational motion.